Skip to content

Commit

Permalink
New Data Source: azurerm_logic_app_workflow
Browse files Browse the repository at this point in the history
```
$ acctests azurerm TestAccDataSourceAzureRMLogicAppWorkflow_
=== RUN   TestAccDataSourceAzureRMLogicAppWorkflow_basic
--- PASS: TestAccDataSourceAzureRMLogicAppWorkflow_basic (69.73s)
=== RUN   TestAccDataSourceAzureRMLogicAppWorkflow_tags
--- PASS: TestAccDataSourceAzureRMLogicAppWorkflow_tags (67.28s)
PASS
ok  	github.com/terraform-providers/terraform-provider-azurerm/azurerm	137.042s
```
  • Loading branch information
tombuildsstuff committed Jul 17, 2018
1 parent 1496768 commit 70762ae
Show file tree
Hide file tree
Showing 8 changed files with 246 additions and 7 deletions.
108 changes: 108 additions & 0 deletions azurerm/data_source_logic_app_workflow.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
package azurerm

import (
"fmt"

"github.com/Azure/azure-sdk-for-go/services/logic/mgmt/2016-06-01/logic"
"github.com/hashicorp/terraform/helper/schema"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
)

func dataSourceArmLogicAppWorkflow() *schema.Resource {
return &schema.Resource{
Read: dataSourceArmLogicAppWorkflowRead,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},

Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Required: true,
},

"resource_group_name": resourceGroupNameForDataSourceSchema(),

"location": locationForDataSourceSchema(),

// TODO: should Parameters be split out into their own object to allow validation on the different sub-types?
"parameters": {
Type: schema.TypeMap,
Computed: true,
},

"workflow_schema": {
Type: schema.TypeString,
Computed: true,
},

"workflow_version": {
Type: schema.TypeString,
Computed: true,
},

"tags": tagsForDataSourceSchema(),

"access_endpoint": {
Type: schema.TypeString,
Computed: true,
},
},
}
}
func dataSourceArmLogicAppWorkflowRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*ArmClient).logicWorkflowsClient
ctx := meta.(*ArmClient).StopContext

name := d.Get("name").(string)
resourceGroup := d.Get("resource_group_name").(string)

resp, err := client.Get(ctx, resourceGroup, name)
if err != nil {
if utils.ResponseWasNotFound(resp.Response) {
d.SetId("")
return nil
}
return fmt.Errorf("[ERROR] Error making Read request on Logic App Workflow %q (Resource Group %q): %+v", name, resourceGroup, err)
}

d.SetId(*resp.ID)

if location := resp.Location; location != nil {
d.Set("location", azureRMNormalizeLocation(*location))
}

if props := resp.WorkflowProperties; props != nil {
parameters := flattenLogicAppDataSourceWorkflowParameters(props.Parameters)
if err := d.Set("parameters", parameters); err != nil {
return fmt.Errorf("Error flattening `parameters`: %+v", err)
}

d.Set("access_endpoint", props.AccessEndpoint)

if definition := props.Definition; definition != nil {
if v, ok := definition.(map[string]interface{}); ok {
schema := v["$schema"].(string)
version := v["contentVersion"].(string)
d.Set("workflow_schema", schema)
d.Set("workflow_version", version)
}
}
}

flattenAndSetTags(d, resp.Tags)

return nil
}

func flattenLogicAppDataSourceWorkflowParameters(input map[string]*logic.WorkflowParameter) map[string]interface{} {
output := make(map[string]interface{}, 0)

for k, v := range input {
if v != nil {
output[k] = v.Value.(string)
}
}

return output
}
80 changes: 80 additions & 0 deletions azurerm/data_source_logic_app_workflow_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package azurerm

import (
"fmt"
"testing"

"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
)

func TestAccDataSourceAzureRMLogicAppWorkflow_basic(t *testing.T) {
dataSourceName := "data.azurerm_logic_app_workflow.test"
ri := acctest.RandInt()
location := testLocation()
config := testAccDataSourceAzureRMLogicAppWorkflow_basic(ri, location)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testCheckAzureRMLogicAppWorkflowDestroy,
Steps: []resource.TestStep{
{
Config: config,
Check: resource.ComposeTestCheckFunc(
testCheckAzureRMLogicAppWorkflowExists(dataSourceName),
resource.TestCheckResourceAttr(dataSourceName, "parameters.%", "0"),
resource.TestCheckResourceAttr(dataSourceName, "tags.%", "0"),
),
},
},
})
}

func TestAccDataSourceAzureRMLogicAppWorkflow_tags(t *testing.T) {
dataSourceName := "data.azurerm_logic_app_workflow.test"
ri := acctest.RandInt()
location := testLocation()
config := testAccDataSourceAzureRMLogicAppWorkflow_tags(ri, location)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testCheckAzureRMLogicAppWorkflowDestroy,
Steps: []resource.TestStep{
{
Config: config,
Check: resource.ComposeTestCheckFunc(
testCheckAzureRMLogicAppWorkflowExists(dataSourceName),
resource.TestCheckResourceAttr(dataSourceName, "parameters.%", "0"),
resource.TestCheckResourceAttr(dataSourceName, "tags.%", "1"),
resource.TestCheckResourceAttr(dataSourceName, "tags.Source", "AcceptanceTests"),
),
},
},
})
}

func testAccDataSourceAzureRMLogicAppWorkflow_basic(rInt int, location string) string {
resource := testAccAzureRMLogicAppWorkflow_empty(rInt, location)
return fmt.Sprintf(`
%s
data "azurerm_logic_app_workflow" "test" {
name = "${azurerm_logic_app_workflow.test.name}"
resource_group_name = "${azurerm_logic_app_workflow.test.resource_group_name}"
}
`, resource)
}

func testAccDataSourceAzureRMLogicAppWorkflow_tags(rInt int, location string) string {
resource := testAccAzureRMLogicAppWorkflow_tags(rInt, location)
return fmt.Sprintf(`
%s
data "azurerm_logic_app_workflow" "test" {
name = "${azurerm_logic_app_workflow.test.name}"
resource_group_name = "${azurerm_logic_app_workflow.test.resource_group_name}"
}
`, resource)
}
1 change: 1 addition & 0 deletions azurerm/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ func Provider() terraform.ResourceProvider {
"azurerm_key_vault_access_policy": dataSourceArmKeyVaultAccessPolicy(),
"azurerm_key_vault_secret": dataSourceArmKeyVaultSecret(),
"azurerm_kubernetes_cluster": dataSourceArmKubernetesCluster(),
"azurerm_logic_app_workflow": dataSourceArmLogicAppWorkflow(),
"azurerm_managed_disk": dataSourceArmManagedDisk(),
"azurerm_network_interface": dataSourceArmNetworkInterface(),
"azurerm_network_security_group": dataSourceArmNetworkSecurityGroup(),
Expand Down
4 changes: 0 additions & 4 deletions azurerm/resource_arm_logic_app_workflow.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,6 @@ import (

var logicAppResourceName = "azurerm_logic_app"

// azurerm_logic_app_action_custom
// azurerm_logic_app_trigger_custom
// azurerm_logic_app_condition_custom?

func resourceArmLogicAppWorkflow() *schema.Resource {
return &schema.Resource{
Create: resourceArmLogicAppWorkflowCreate,
Expand Down
2 changes: 1 addition & 1 deletion azurerm/resource_arm_logic_app_workflow_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func testCheckAzureRMLogicAppWorkflowExists(name string) resource.TestCheckFunc

resp, err := client.Get(ctx, resourceGroup, workflowName)
if err != nil {
return fmt.Errorf("Bad: Get on diskClient: %+v", err)
return fmt.Errorf("Bad: Get on logicWorkflowsClient: %+v", err)
}

if resp.StatusCode == http.StatusNotFound {
Expand Down
6 changes: 5 additions & 1 deletion website/azurerm.erb
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,11 @@
<li<%= sidebar_current("docs-azurerm-data-source-kubernetes-cluster") %>>
<a href="/docs/providers/azurerm/d/kubernetes_cluster.html">azurerm_kubernetes_cluster</a>
</li>


<li<%= sidebar_current("docs-azurerm-data-source-logic-app-workflow") %>>
<a href="/docs/providers/azurerm/d/logic_app_workflow.html">azurerm_logic_app_workflow</a>
</li>

<li<%= sidebar_current("docs-azurerm-datasource-managed-disk") %>>
<a href="/docs/providers/azurerm/d/managed_disk.html">azurerm_managed_disk</a>
</li>
Expand Down
50 changes: 50 additions & 0 deletions website/docs/d/logic_app_workflow.html.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
layout: "azurerm"
page_title: "Azure Resource Manager: azurerm_logic_app_workflow"
sidebar_current: "docs-azurerm-data-source-logic-app-workflow"
description: |-
Gets information about a Logic App Workflow.
---

# Data Source: azurerm_logic_app_workflow

Gets information about a Logic App Workflow.

## Example Usage

```hcl
data "azurerm_logic_app_workflow" "test" {
name = "workflow1"
resource_group_name = "my-resource-group"
}
output "access_endpoint" {
value = "${data.azurerm_logic_app_workflow.test.access_endpoint}"
}
```

## Argument Reference

The following arguments are supported:

* `name` - (Required) The name of the Logic App Workflow.

* `resource_group_name` - (Required) The name of the Resource Group in which the Logic App Workflow exists.

## Attributes Reference

The following attributes are exported:

* `id` - The Logic App Workflow ID.

* `location` - The Azure location where the Logic App Workflow exists.

* `workflow_schema` - The Schema used for this Logic App Workflow.

* `workflow_version` - The version of the Schema used for this Logic App Workflow. Defaults to `1.0.0.0`.

* `parameters` - A map of Key-Value pairs.

* `tags` - A mapping of tags assigned to the resource.

* `access_endpoint` - The Access Endpoint for the Logic App Workflow
2 changes: 1 addition & 1 deletion website/docs/r/logic_app_workflow.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ The following arguments are supported:

* `location` - (Required) Specifies the supported Azure location where the Logic App Workflow exists. Changing this forces a new resource to be created.

* `workflow_schema` - (Optional) Specifies the Schema to use for this Logic App Workflow. Defaults to `https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#`. Changing this forces a new resource to be create.d
* `workflow_schema` - (Optional) Specifies the Schema to use for this Logic App Workflow. Defaults to `https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#`. Changing this forces a new resource to be created.

* `workflow_version` - (Optional) Specifies the version of the Schema used for this Logic App Workflow. Defaults to `1.0.0.0`. Changing this forces a new resource to be create.d

Expand Down

0 comments on commit 70762ae

Please sign in to comment.