diff --git a/azurerm/internal/services/logic/data_source_logic_app_workflow.go b/azurerm/internal/services/logic/data_source_logic_app_workflow.go index f872365177ec..091b80191874 100644 --- a/azurerm/internal/services/logic/data_source_logic_app_workflow.go +++ b/azurerm/internal/services/logic/data_source_logic_app_workflow.go @@ -56,15 +56,25 @@ func dataSourceArmLogicAppWorkflow() *schema.Resource { Computed: true, }, - "endpoint_configuration": { + "connector_endpoint_ip_addresses": { Type: schema.TypeList, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "workflow": buildFlowEndpointsSchema(), - "connector": buildFlowEndpointsSchema(), - }, - }, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "connector_outbound_ip_addresses": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "workflow_endpoint_ip_addresses": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "workflow_outbound_ip_addresses": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, }, "tags": tags.SchemaDataSource(), @@ -102,8 +112,20 @@ func dataSourceArmLogicAppWorkflowRead(d *schema.ResourceData, meta interface{}) d.Set("access_endpoint", props.AccessEndpoint) - if err := d.Set("endpoint_configuration", flattenFlowEndpointsConfiguration(props.EndpointsConfiguration)); err != nil { - return fmt.Errorf("Error setting `endpoint_configuration`: %+v", err) + if props.EndpointsConfiguration == nil || props.EndpointsConfiguration.Connector == nil { + d.Set("connector_endpoint_ip_addresses", []interface{}{}) + d.Set("connector_outbound_ip_addresses", []interface{}{}) + } else { + d.Set("connector_endpoint_ip_addresses", flattenIPAddresses(props.EndpointsConfiguration.Connector.AccessEndpointIPAddresses)) + d.Set("connector_outbound_ip_addresses", flattenIPAddresses(props.EndpointsConfiguration.Connector.OutgoingIPAddresses)) + } + + if props.EndpointsConfiguration == nil || props.EndpointsConfiguration.Workflow == nil { + d.Set("workflow_endpoint_ip_addresses", []interface{}{}) + d.Set("workflow_outbound_ip_addresses", []interface{}{}) + } else { + d.Set("workflow_endpoint_ip_addresses", flattenIPAddresses(props.EndpointsConfiguration.Workflow.AccessEndpointIPAddresses)) + d.Set("workflow_outbound_ip_addresses", flattenIPAddresses(props.EndpointsConfiguration.Workflow.OutgoingIPAddresses)) } if definition := props.Definition; definition != nil { diff --git a/azurerm/internal/services/logic/resource_arm_logic_app_workflow.go b/azurerm/internal/services/logic/resource_arm_logic_app_workflow.go index d7c4f1053660..593607c87ef9 100644 --- a/azurerm/internal/services/logic/resource_arm_logic_app_workflow.go +++ b/azurerm/internal/services/logic/resource_arm_logic_app_workflow.go @@ -19,27 +19,6 @@ import ( var logicAppResourceName = "azurerm_logic_app" -func buildFlowEndpointsSchema() *schema.Schema { - return &schema.Schema{ - Type: schema.TypeList, - Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "outgoing_ip_addresses": { - Type: schema.TypeSet, - Computed: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, - "access_endpoint_ip_addresses": { - Type: schema.TypeSet, - Computed: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, - }, - }, - } -} - func resourceArmLogicAppWorkflow() *schema.Resource { return &schema.Resource{ Create: resourceArmLogicAppWorkflowCreate, @@ -96,15 +75,25 @@ func resourceArmLogicAppWorkflow() *schema.Resource { Computed: true, }, - "endpoint_configuration": { + "connector_endpoint_ip_addresses": { Type: schema.TypeList, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "workflow": buildFlowEndpointsSchema(), - "connector": buildFlowEndpointsSchema(), - }, - }, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "connector_outbound_ip_addresses": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "workflow_endpoint_ip_addresses": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "workflow_outbound_ip_addresses": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, }, "tags": tags.Schema(), @@ -261,10 +250,21 @@ func resourceArmLogicAppWorkflowRead(d *schema.ResourceData, meta interface{}) e d.Set("access_endpoint", props.AccessEndpoint) - if err := d.Set("endpoint_configuration", flattenFlowEndpointsConfiguration(props.EndpointsConfiguration)); err != nil { - return fmt.Errorf("Error setting `endpoint_configuration`: %+v", err) + if props.EndpointsConfiguration == nil || props.EndpointsConfiguration.Connector == nil { + d.Set("connector_endpoint_ip_addresses", []interface{}{}) + d.Set("connector_outbound_ip_addresses", []interface{}{}) + } else { + d.Set("connector_endpoint_ip_addresses", flattenIPAddresses(props.EndpointsConfiguration.Connector.AccessEndpointIPAddresses)) + d.Set("connector_outbound_ip_addresses", flattenIPAddresses(props.EndpointsConfiguration.Connector.OutgoingIPAddresses)) } + if props.EndpointsConfiguration == nil || props.EndpointsConfiguration.Workflow == nil { + d.Set("workflow_endpoint_ip_addresses", []interface{}{}) + d.Set("workflow_outbound_ip_addresses", []interface{}{}) + } else { + d.Set("workflow_endpoint_ip_addresses", flattenIPAddresses(props.EndpointsConfiguration.Workflow.AccessEndpointIPAddresses)) + d.Set("workflow_outbound_ip_addresses", flattenIPAddresses(props.EndpointsConfiguration.Workflow.OutgoingIPAddresses)) + } if definition := props.Definition; definition != nil { if v, ok := definition.(map[string]interface{}); ok { d.Set("workflow_schema", v["$schema"].(string)) @@ -335,40 +335,14 @@ func flattenLogicAppWorkflowParameters(input map[string]*logic.WorkflowParameter return output } -func flattenFlowEndpointsConfiguration(input *logic.FlowEndpointsConfiguration) []interface{} { +func flattenIPAddresses(input *[]logic.IPAddress) []interface{} { if input == nil { return []interface{}{} } - return []interface{}{ - map[string]interface{}{ - "workflow": flattenFlowEndpoint(input.Workflow), - "connector": flattenFlowEndpoint(input.Connector), - }, - } -} -func flattenFlowEndpoint(input *logic.FlowEndpoints) []interface{} { - if input == nil { - return []interface{}{} - } - - outgoingIpAddresses := []string{} - if input.OutgoingIPAddresses != nil { - for _, addr := range *input.OutgoingIPAddresses { - outgoingIpAddresses = append(outgoingIpAddresses, *addr.Address) - } - } - accessEndpointIpAddresses := []string{} - if input.AccessEndpointIPAddresses != nil { - for _, addr := range *input.AccessEndpointIPAddresses { - accessEndpointIpAddresses = append(accessEndpointIpAddresses, *addr.Address) - } - } - - return []interface{}{ - map[string]interface{}{ - "outgoing_ip_addresses": outgoingIpAddresses, - "access_endpoint_ip_addresses": accessEndpointIpAddresses, - }, + var addresses []interface{} + for _, addr := range *input { + addresses = append(addresses, *addr.Address) } + return addresses } diff --git a/azurerm/internal/services/logic/tests/data_source_logic_app_workflow_test.go b/azurerm/internal/services/logic/tests/data_source_logic_app_workflow_test.go index 2b0e86bcfff1..e5a1c4ab107b 100644 --- a/azurerm/internal/services/logic/tests/data_source_logic_app_workflow_test.go +++ b/azurerm/internal/services/logic/tests/data_source_logic_app_workflow_test.go @@ -21,10 +21,10 @@ func TestAccDataSourceAzureRMLogicAppWorkflow_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testCheckAzureRMLogicAppWorkflowExists(data.ResourceName), resource.TestCheckResourceAttr(data.ResourceName, "parameters.%", "0"), - resource.TestCheckResourceAttrSet(data.ResourceName, "endpoint_configuration.0.workflow.0.access_endpoint_ip_addresses.#"), - resource.TestCheckResourceAttrSet(data.ResourceName, "endpoint_configuration.0.workflow.0.outgoing_ip_addresses.#"), - resource.TestCheckResourceAttrSet(data.ResourceName, "endpoint_configuration.0.connector.0.access_endpoint_ip_addresses.#"), - resource.TestCheckResourceAttrSet(data.ResourceName, "endpoint_configuration.0.connector.0.outgoing_ip_addresses.#"), + resource.TestCheckResourceAttrSet(data.ResourceName, "connector_endpoint_ip_addresses.#"), + resource.TestCheckResourceAttrSet(data.ResourceName, "connector_outbound_ip_addresses.#"), + resource.TestCheckResourceAttrSet(data.ResourceName, "workflow_endpoint_ip_addresses.#"), + resource.TestCheckResourceAttrSet(data.ResourceName, "workflow_outbound_ip_addresses.#"), resource.TestCheckResourceAttr(data.ResourceName, "tags.%", "0"), ), }, diff --git a/azurerm/internal/services/logic/tests/resource_arm_logic_app_workflow_test.go b/azurerm/internal/services/logic/tests/resource_arm_logic_app_workflow_test.go index 3970af6f3911..a2cb53160d0c 100644 --- a/azurerm/internal/services/logic/tests/resource_arm_logic_app_workflow_test.go +++ b/azurerm/internal/services/logic/tests/resource_arm_logic_app_workflow_test.go @@ -26,10 +26,10 @@ func TestAccAzureRMLogicAppWorkflow_empty(t *testing.T) { testCheckAzureRMLogicAppWorkflowExists(data.ResourceName), resource.TestCheckResourceAttr(data.ResourceName, "parameters.%", "0"), resource.TestCheckResourceAttr(data.ResourceName, "tags.%", "0"), - resource.TestCheckResourceAttrSet(data.ResourceName, "endpoint_configuration.0.workflow.0.access_endpoint_ip_addresses.#"), - resource.TestCheckResourceAttrSet(data.ResourceName, "endpoint_configuration.0.workflow.0.outgoing_ip_addresses.#"), - resource.TestCheckResourceAttrSet(data.ResourceName, "endpoint_configuration.0.connector.0.access_endpoint_ip_addresses.#"), - resource.TestCheckResourceAttrSet(data.ResourceName, "endpoint_configuration.0.connector.0.outgoing_ip_addresses.#"), + resource.TestCheckResourceAttrSet(data.ResourceName, "connector_endpoint_ip_addresses.#"), + resource.TestCheckResourceAttrSet(data.ResourceName, "connector_outbound_ip_addresses.#"), + resource.TestCheckResourceAttrSet(data.ResourceName, "workflow_endpoint_ip_addresses.#"), + resource.TestCheckResourceAttrSet(data.ResourceName, "workflow_outbound_ip_addresses.#"), ), }, data.ImportStep(), diff --git a/website/docs/d/logic_app_workflow.html.markdown b/website/docs/d/logic_app_workflow.html.markdown index 4515cff41533..0da4bb97eb55 100644 --- a/website/docs/d/logic_app_workflow.html.markdown +++ b/website/docs/d/logic_app_workflow.html.markdown @@ -49,23 +49,13 @@ The following attributes are exported: * `access_endpoint` - The Access Endpoint for the Logic App Workflow -* `endpoint_configuration` - The Endpoint Configuration for the Logic App Workflow as defined below. +* `connector_endpoint_ip_addresses` - The list of access endpoint ip addresses of connector. ---- - -A `endpoint_configuration` block supports the following: - -* `workflow` - The Flow Endpoints Configuration applied to workflow as defined below. - -* `connector` - The Flow Endpoints Configuration applied to connector as defined below. - ---- - -A `workflow`/`connector` block supports the following: +* `connector_outbound_ip_addresses` - The list of outgoing ip addresses of connector. -* `outgoing_ip_addresses` - A set of the outgoing ip addresses. +* `workflow_endpoint_ip_addresses` - The list of access endpoint ip addresses of workflow. -* `access_endpoint_ip_addresses` - A set of the access endpoint ip addresses. +* `workflow_outbound_ip_addresses` - The list of outgoing ip addresses of workflow. ## Timeouts diff --git a/website/docs/r/logic_app_workflow.html.markdown b/website/docs/r/logic_app_workflow.html.markdown index 5668438b58b0..3d959438cb08 100644 --- a/website/docs/r/logic_app_workflow.html.markdown +++ b/website/docs/r/logic_app_workflow.html.markdown @@ -53,24 +53,13 @@ The following attributes are exported: * `access_endpoint` - The Access Endpoint for the Logic App Workflow. -* `endpoint_configuration` - The Endpoint Configuration for the Logic App Workflow as defined below. +* `connector_endpoint_ip_addresses` - The list of access endpoint ip addresses of connector. ---- - -A `endpoint_configuration` block supports the following: - -* `workflow` - The Flow Endpoints Configuration applied to workflow as defined below. - -* `connector` - The Flow Endpoints Configuration applied to connector as defined below. - ---- - -A `workflow`/`connector` block supports the following: - -* `outgoing_ip_addresses` - A set of the outgoing ip addresses. +* `connector_outbound_ip_addresses` - The list of outgoing ip addresses of connector. -* `access_endpoint_ip_addresses` - A set of the access endpoint ip addresses. +* `workflow_endpoint_ip_addresses` - The list of access endpoint ip addresses of workflow. +* `workflow_outbound_ip_addresses` - The list of outgoing ip addresses of workflow. ## Timeouts