Skip to content

Commit 9e5627d

Browse files
committed
new resource /data source: azurerm_firewall_policy_rule_collection_group
1 parent 7d5d28f commit 9e5627d

13 files changed

+1680
-25
lines changed

azurerm/internal/services/network/client/client.go

+5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ type Client struct {
1818
ExpressRouteGatewaysClient *network.ExpressRouteGatewaysClient
1919
ExpressRoutePeeringsClient *network.ExpressRouteCircuitPeeringsClient
2020
FirewallPolicyClient *network.FirewallPoliciesClient
21+
FirewallPolicyRuleGroupClient *network.FirewallPolicyRuleCollectionGroupsClient
2122
HubVirtualNetworkConnectionClient *network.HubVirtualNetworkConnectionsClient
2223
InterfacesClient *network.InterfacesClient
2324
IPGroupsClient *network.IPGroupsClient
@@ -88,6 +89,9 @@ func NewClient(o *common.ClientOptions) *Client {
8889
FirewallPolicyClient := network.NewFirewallPoliciesClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
8990
o.ConfigureClient(&FirewallPolicyClient.Client, o.ResourceManagerAuthorizer)
9091

92+
FirewallPolicyRuleGroupClient := network.NewFirewallPolicyRuleCollectionGroupsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
93+
o.ConfigureClient(&FirewallPolicyRuleGroupClient.Client, o.ResourceManagerAuthorizer)
94+
9195
HubVirtualNetworkConnectionClient := network.NewHubVirtualNetworkConnectionsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
9296
o.ConfigureClient(&HubVirtualNetworkConnectionClient.Client, o.ResourceManagerAuthorizer)
9397

@@ -202,6 +206,7 @@ func NewClient(o *common.ClientOptions) *Client {
202206
ExpressRouteGatewaysClient: &ExpressRouteGatewaysClient,
203207
ExpressRoutePeeringsClient: &ExpressRoutePeeringsClient,
204208
FirewallPolicyClient: &FirewallPolicyClient,
209+
FirewallPolicyRuleGroupClient: &FirewallPolicyRuleGroupClient,
205210
HubVirtualNetworkConnectionClient: &HubVirtualNetworkConnectionClient,
206211
InterfacesClient: &InterfacesClient,
207212
IPGroupsClient: &IpGroupsClient,

azurerm/internal/services/network/firewall_policy_resource.go

+9
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"time"
77

88
"github.com/hashicorp/go-azure-helpers/response"
9+
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/locks"
910

1011
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/location"
1112

@@ -23,6 +24,8 @@ import (
2324
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
2425
)
2526

27+
const azureFirewallPolicyResourceName = "azurerm_firewall_policy"
28+
2629
func resourceArmFirewallPolicy() *schema.Resource {
2730
return &schema.Resource{
2831
Create: resourceArmFirewallPolicyCreateUpdate,
@@ -192,6 +195,9 @@ func resourceArmFirewallPolicyCreateUpdate(d *schema.ResourceData, meta interfac
192195
props.FirewallPolicyPropertiesFormat.BasePolicy = &network.SubResource{ID: utils.String(id.(string))}
193196
}
194197

198+
locks.ByName(name, azureFirewallPolicyResourceName)
199+
defer locks.UnlockByName(name, azureFirewallPolicyResourceName)
200+
195201
if _, err := client.CreateOrUpdate(ctx, resourceGroup, name, props); err != nil {
196202
return fmt.Errorf("creating Firewall Policy %q (Resource Group %q): %+v", name, resourceGroup, err)
197203
}
@@ -276,6 +282,9 @@ func resourceArmFirewallPolicyDelete(d *schema.ResourceData, meta interface{}) e
276282
return err
277283
}
278284

285+
locks.ByName(id.Name, azureFirewallPolicyResourceName)
286+
defer locks.UnlockByName(id.Name, azureFirewallPolicyResourceName)
287+
279288
future, err := client.Delete(ctx, id.ResourceGroup, id.Name)
280289
if err != nil {
281290
return fmt.Errorf("deleting Firewall Policy %q (Resource Group %q): %+v", id.Name, id.ResourceGroup, err)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package network
2+
3+
import (
4+
"fmt"
5+
"time"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
8+
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients"
9+
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/network/parse"
10+
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/network/validate"
11+
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/timeouts"
12+
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
13+
)
14+
15+
func dataSourceArmFirewallPolicyRuleCollectionGroup() *schema.Resource {
16+
return &schema.Resource{
17+
Read: dataSourceArmFirewallPolicyRuleCollectionGroupRead,
18+
19+
Timeouts: &schema.ResourceTimeout{
20+
Read: schema.DefaultTimeout(5 * time.Minute),
21+
},
22+
23+
Schema: map[string]*schema.Schema{
24+
"name": {
25+
Type: schema.TypeString,
26+
Required: true,
27+
ValidateFunc: validate.FirewallPolicyRuleCollectionGroupName(),
28+
},
29+
30+
"firewall_policy_id": {
31+
Type: schema.TypeString,
32+
Required: true,
33+
ForceNew: true,
34+
ValidateFunc: validate.FirewallPolicyID,
35+
},
36+
},
37+
}
38+
}
39+
40+
func dataSourceArmFirewallPolicyRuleCollectionGroupRead(d *schema.ResourceData, meta interface{}) error {
41+
client := meta.(*clients.Client).Network.FirewallPolicyRuleGroupClient
42+
ctx, cancel := timeouts.ForCreateUpdate(meta.(*clients.Client).StopContext, d)
43+
defer cancel()
44+
45+
name := d.Get("name").(string)
46+
policyId, err := parse.FirewallPolicyID(d.Get("firewall_policy_id").(string))
47+
if err != nil {
48+
return err
49+
}
50+
51+
resp, err := client.Get(ctx, policyId.ResourceGroup, policyId.Name, name)
52+
if err != nil {
53+
if utils.ResponseWasNotFound(resp.Response) {
54+
return fmt.Errorf("Firewall Policy Rule Collection Group %q (Resource Group %q / Policy %q) was not found", name, policyId.ResourceGroup, policyId.Name)
55+
}
56+
57+
return fmt.Errorf("retrieving Firewall Policy Rule Collection Group %q (Resource Group %q / Policy %q): %+v", name, policyId.ResourceGroup, policyId.Name, err)
58+
}
59+
60+
if resp.ID == nil || *resp.ID == "" {
61+
return fmt.Errorf("empty or nil ID returned for Firewall Policy Rule Collection Group %q (Resource Group %q / Policy %q) ID", name, policyId.ResourceGroup, policyId.Name)
62+
}
63+
64+
d.SetId(*resp.ID)
65+
66+
return nil
67+
}

0 commit comments

Comments
 (0)