diff --git a/builtin/providers/azurerm/resource_arm_resource_group.go b/builtin/providers/azurerm/resource_arm_resource_group.go index b367d9dd39..27c19b76c5 100644 --- a/builtin/providers/azurerm/resource_arm_resource_group.go +++ b/builtin/providers/azurerm/resource_arm_resource_group.go @@ -17,6 +17,7 @@ func resourceArmResourceGroup() *schema.Resource { return &schema.Resource{ Create: resourceArmResourceGroupCreate, Read: resourceArmResourceGroupRead, + Update: resourceArmResourceGroupUpdate, Exists: resourceArmResourceGroupExists, Delete: resourceArmResourceGroupDelete, @@ -33,6 +34,8 @@ func resourceArmResourceGroup() *schema.Resource { ForceNew: true, StateFunc: azureRMNormalizeLocation, }, + + "tags": tagsSchema(), }, } } @@ -55,16 +58,39 @@ func validateArmResourceGroupName(v interface{}, k string) (ws []string, es []er return } +func resourceArmResourceGroupUpdate(d *schema.ResourceData, meta interface{}) error { + client := meta.(*ArmClient) + resGroupClient := client.resourceGroupClient + + if !d.HasChange("tags") { + return nil + } + + name := d.Get("name").(string) + + newTags := d.Get("tags").(map[string]interface{}) + _, err := resGroupClient.Patch(name, resources.ResourceGroup{ + Tags: expandTags(newTags), + }) + if err != nil { + return fmt.Errorf("Error issuing Azure ARM create request to update resource group %q: %s", name, err) + } + + return resourceArmResourceGroupRead(d, meta) +} + func resourceArmResourceGroupCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*ArmClient) resGroupClient := client.resourceGroupClient name := d.Get("name").(string) location := d.Get("location").(string) + tags := d.Get("tags").(map[string]interface{}) rg := resources.ResourceGroup{ Name: &name, Location: &location, + Tags: expandTags(tags), } resp, err := resGroupClient.CreateOrUpdate(name, rg) @@ -109,6 +135,8 @@ func resourceArmResourceGroupRead(d *schema.ResourceData, meta interface{}) erro d.Set("name", res.Name) d.Set("location", res.Location) + flattenAndSetTags(d, res.Tags) + return nil } diff --git a/builtin/providers/azurerm/resource_arm_virtual_network.go b/builtin/providers/azurerm/resource_arm_virtual_network.go index 3c748c8ba3..964a1baa75 100644 --- a/builtin/providers/azurerm/resource_arm_virtual_network.go +++ b/builtin/providers/azurerm/resource_arm_virtual_network.go @@ -75,6 +75,8 @@ func resourceArmVirtualNetwork() *schema.Resource { Required: true, ForceNew: true, }, + + "tags": tagsSchema(), }, } } @@ -88,11 +90,13 @@ func resourceArmVirtualNetworkCreate(d *schema.ResourceData, meta interface{}) e name := d.Get("name").(string) location := d.Get("location").(string) resGroup := d.Get("resource_group_name").(string) + tags := d.Get("tags").(map[string]interface{}) vnet := network.VirtualNetwork{ Name: &name, Location: &location, Properties: getVirtualNetworkProperties(d), + Tags: expandTags(tags), } resp, err := vnetClient.CreateOrUpdate(resGroup, name, vnet) @@ -162,6 +166,8 @@ func resourceArmVirtualNetworkRead(d *schema.ResourceData, meta interface{}) err } d.Set("dns_servers", dnses) + flattenAndSetTags(d, resp.Tags) + return nil }