Skip to content

Commit

Permalink
azurerm_synapse_firewall_rule - ensure the firewall is ready (#19227)
Browse files Browse the repository at this point in the history
fixes #13510
  • Loading branch information
ms-henglu authored Nov 14, 2022
1 parent d570cf6 commit 9658dd0
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions internal/services/synapse/synapse_firewall_rule_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,33 @@ func resourceSynapseFirewallRuleCreateUpdate(d *pluginsdk.ResourceData, meta int
return fmt.Errorf("waiting on creation/update of %s: %+v", id, err)
}

deadline, ok := ctx.Deadline()
if !ok {
return fmt.Errorf("context had no deadline")
}

// The firewall is not taking effect immediately after firewall creation.
// Firewall has a cache and will refresh every 1 minute, so if requests sent before firewall refreshes, it will meet ClientIpAddressNotAuthorized.
// Issue: https://github.com/Azure/azure-rest-api-specs/issues/21516
stateChangeConf := &pluginsdk.StateChangeConf{
Pending: []string{string(synapse.ProvisioningStateProvisioning)},
Target: []string{string(synapse.ProvisioningStateSucceeded)},
Refresh: func() (result interface{}, state string, err error) {
resp, err := client.Get(ctx, id.ResourceGroup, id.WorkspaceName, id.Name)
if err != nil {
return nil, "Error", err
}
return resp, string(resp.ProvisioningState), err
},
MinTimeout: 30 * time.Second,
ContinuousTargetOccurence: 3,
Timeout: time.Until(deadline),
}

if _, err = stateChangeConf.WaitForStateContext(ctx); err != nil {
return fmt.Errorf("waiting for %s to be ready", id)
}

d.SetId(id.ID())
return resourceSynapseFirewallRuleRead(d, meta)
}
Expand Down

0 comments on commit 9658dd0

Please sign in to comment.