From f3c613aa3ed77a40950000446ff761ead2265349 Mon Sep 17 00:00:00 2001 From: Sergiu Pantiru <12131904+sergiupantiru@users.noreply.github.com> Date: Sat, 4 Jan 2020 21:06:40 +0100 Subject: [PATCH 1/9] add metadata to batch pool (#4611) --- azurerm/helpers/azure/batch_pool.go | 31 +++++++++++++++++++ .../services/batch/data_source_batch_pool.go | 11 +++++++ .../services/batch/resource_arm_batch_pool.go | 20 ++++++++++++ examples/batch/basic/main.tf | 4 +++ website/docs/r/batch_pool.html.markdown | 2 ++ 5 files changed, 68 insertions(+) diff --git a/azurerm/helpers/azure/batch_pool.go b/azurerm/helpers/azure/batch_pool.go index 1459d2d9aca1..8a13b9964cc8 100644 --- a/azurerm/helpers/azure/batch_pool.go +++ b/azurerm/helpers/azure/batch_pool.go @@ -518,3 +518,34 @@ func ValidateAzureRMBatchPoolName(v interface{}, k string) (warnings []string, e return warnings, errors } + +// ExpandMetaData expands Batch pool metadata +func ExpandMetaData(input map[string]interface{}) *[]batch.MetadataItem { + output := []batch.MetadataItem{} + + for k, v := range input { + name := k + value := v.(string) + output = append(output, batch.MetadataItem{ + Name: &name, + Value: &value, + }) + } + + return &output +} + +// FlattenMetaData flattens a Batch pool metadata +func FlattenMetaData(metadatas *[]batch.MetadataItem) map[string]interface{} { + output := make(map[string]interface{}) + + if metadatas == nil { + return output + } + + for _, metadata := range *metadatas { + output[*metadata.Name] = *metadata.Value + } + + return output +} diff --git a/azurerm/internal/services/batch/data_source_batch_pool.go b/azurerm/internal/services/batch/data_source_batch_pool.go index 24c7d09a0b62..71c77e859a7b 100644 --- a/azurerm/internal/services/batch/data_source_batch_pool.go +++ b/azurerm/internal/services/batch/data_source_batch_pool.go @@ -278,6 +278,14 @@ func dataSourceArmBatchPool() *schema.Resource { }, }, }, + "metadata": { + Type: schema.TypeMap, + Optional: true, + ForceNew: false, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, }, } } @@ -339,6 +347,9 @@ func dataSourceArmBatchPoolRead(d *schema.ResourceData, meta interface{}) error } d.Set("start_task", azure.FlattenBatchPoolStartTask(props.StartTask)) + + d.Set("metadata", azure.FlattenMetaData(props.Metadata)) + } return nil diff --git a/azurerm/internal/services/batch/resource_arm_batch_pool.go b/azurerm/internal/services/batch/resource_arm_batch_pool.go index bdc9b356c500..88691b0488df 100644 --- a/azurerm/internal/services/batch/resource_arm_batch_pool.go +++ b/azurerm/internal/services/batch/resource_arm_batch_pool.go @@ -372,6 +372,14 @@ func resourceArmBatchPool() *schema.Resource { }, }, }, + "metadata": { + Type: schema.TypeMap, + Optional: true, + ForceNew: false, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, }, } } @@ -479,6 +487,9 @@ func resourceArmBatchPoolCreate(d *schema.ResourceData, meta interface{}) error return err } + metaDataRaw := d.Get("metadata").(map[string]interface{}) + parameters.PoolProperties.Metadata = azure.ExpandMetaData(metaDataRaw) + future, err := client.Create(ctx, resourceGroup, accountName, poolName, parameters, "", "") if err != nil { return fmt.Errorf("Error creating Batch pool %q (Resource Group %q): %+v", poolName, resourceGroup, err) @@ -583,6 +594,13 @@ func resourceArmBatchPoolUpdate(d *schema.ResourceData, meta interface{}) error return err } + if d.HasChange("metadata") { + log.Printf("[DEBUG] Updating the MetaData for Batch pool %q (Account name %q / Resource Group %q)..", poolName, accountName, id.ResourceGroup) + metaDataRaw := d.Get("metadata").(map[string]interface{}) + + parameters.PoolProperties.Metadata = azure.ExpandMetaData(metaDataRaw) + } + result, err := client.Update(ctx, resourceGroup, accountName, poolName, parameters, "") if err != nil { return fmt.Errorf("Error updating Batch pool %q (Resource Group %q): %+v", poolName, resourceGroup, err) @@ -655,6 +673,8 @@ func resourceArmBatchPoolRead(d *schema.ResourceData, meta interface{}) error { } d.Set("start_task", azure.FlattenBatchPoolStartTask(props.StartTask)) + + d.Set("metadata", azure.FlattenMetaData(props.Metadata)) } return nil diff --git a/examples/batch/basic/main.tf b/examples/batch/basic/main.tf index 8edf524a4d25..258e5c5d4977 100644 --- a/examples/batch/basic/main.tf +++ b/examples/batch/basic/main.tf @@ -54,6 +54,10 @@ resource "azurerm_batch_pool" "fixed" { } } } + + metadata ={ + "tagName"= "Example tag" + } } resource "azurerm_batch_pool" "autopool" { diff --git a/website/docs/r/batch_pool.html.markdown b/website/docs/r/batch_pool.html.markdown index 8c955118d9e6..4b22c34b4ea2 100644 --- a/website/docs/r/batch_pool.html.markdown +++ b/website/docs/r/batch_pool.html.markdown @@ -143,6 +143,8 @@ The following arguments are supported: * `container_configuration` - (Optional) The container configuration used in the pool's VMs. +* `metadata` - (Optional) A map of custom batch pool metadata. + -> **NOTE:** For Windows compute nodes, the Batch service installs the certificates to the specified certificate store and location. For Linux compute nodes, the certificates are stored in a directory inside the task working directory and an environment variable `AZ_BATCH_CERTIFICATES_DIR` is supplied to the task to query for this location. For certificates with visibility of `remoteUser`, a `certs` directory is created in the user's home directory (e.g., `/home/{user-name}/certs`) and certificates are placed in that directory. ~> **Please Note:** `fixed_scale` and `auto_scale` blocks cannot be used both at the same time. From 48424d14297360a3c948f3e9d8d2b438b8747898 Mon Sep 17 00:00:00 2001 From: Sergiu Pantiru <12131904+sergiupantiru@users.noreply.github.com> Date: Sun, 5 Jan 2020 08:40:06 +0100 Subject: [PATCH 2/9] add unit test and remove whitespace --- azurerm/internal/services/batch/data_source_batch_pool.go | 1 - .../services/batch/tests/data_source_batch_pool_test.go | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/azurerm/internal/services/batch/data_source_batch_pool.go b/azurerm/internal/services/batch/data_source_batch_pool.go index 71c77e859a7b..10dc72979a1c 100644 --- a/azurerm/internal/services/batch/data_source_batch_pool.go +++ b/azurerm/internal/services/batch/data_source_batch_pool.go @@ -349,7 +349,6 @@ func dataSourceArmBatchPoolRead(d *schema.ResourceData, meta interface{}) error d.Set("start_task", azure.FlattenBatchPoolStartTask(props.StartTask)) d.Set("metadata", azure.FlattenMetaData(props.Metadata)) - } return nil diff --git a/azurerm/internal/services/batch/tests/data_source_batch_pool_test.go b/azurerm/internal/services/batch/tests/data_source_batch_pool_test.go index 919245180fe9..a9100023eebf 100644 --- a/azurerm/internal/services/batch/tests/data_source_batch_pool_test.go +++ b/azurerm/internal/services/batch/tests/data_source_batch_pool_test.go @@ -52,6 +52,7 @@ func TestAccDataSourceAzureRMBatchPool_complete(t *testing.T) { resource.TestCheckResourceAttr(data.ResourceName, "container_configuration.0.container_registries.#", "1"), resource.TestCheckResourceAttr(data.ResourceName, "container_configuration.0.container_registries.0.registry_server", "myContainerRegistry.azurecr.io"), resource.TestCheckResourceAttr(data.ResourceName, "container_configuration.0.container_registries.0.user_name", "myUserName"), + resource.TestCheckResourceAttr(data.ResourceName, "metadata.tagName", "Example tag"), ), }, }, @@ -149,6 +150,10 @@ resource "azurerm_batch_pool" "test" { } } } + + metadata = { + "tagName"= "Example tag" + } } data "azurerm_batch_pool" "test" { From bdc37df5a007eb4c8e1c82d2463f8d3f79ea525b Mon Sep 17 00:00:00 2001 From: Sergiu Pantiru <12131904+sergiupantiru@users.noreply.github.com> Date: Sun, 5 Jan 2020 18:06:26 +0100 Subject: [PATCH 3/9] metadata for datasource as computer and no empty string for resource metadata --- azurerm/internal/services/batch/data_source_batch_pool.go | 3 +-- azurerm/internal/services/batch/resource_arm_batch_pool.go | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/azurerm/internal/services/batch/data_source_batch_pool.go b/azurerm/internal/services/batch/data_source_batch_pool.go index 10dc72979a1c..a1f283f274e0 100644 --- a/azurerm/internal/services/batch/data_source_batch_pool.go +++ b/azurerm/internal/services/batch/data_source_batch_pool.go @@ -280,8 +280,7 @@ func dataSourceArmBatchPool() *schema.Resource { }, "metadata": { Type: schema.TypeMap, - Optional: true, - ForceNew: false, + Computed: true, Elem: &schema.Schema{ Type: schema.TypeString, }, diff --git a/azurerm/internal/services/batch/resource_arm_batch_pool.go b/azurerm/internal/services/batch/resource_arm_batch_pool.go index 88691b0488df..41d78bc632b6 100644 --- a/azurerm/internal/services/batch/resource_arm_batch_pool.go +++ b/azurerm/internal/services/batch/resource_arm_batch_pool.go @@ -377,7 +377,8 @@ func resourceArmBatchPool() *schema.Resource { Optional: true, ForceNew: false, Elem: &schema.Schema{ - Type: schema.TypeString, + Type: schema.TypeString, + ValidateFunc: validate.NoEmptyStrings, }, }, }, From fe382b4bf301ad2fd3334a0cb2309977506b6ae4 Mon Sep 17 00:00:00 2001 From: Sergiu Pantiru <12131904+sergiupantiru@users.noreply.github.com> Date: Mon, 6 Jan 2020 07:56:52 +0100 Subject: [PATCH 4/9] fix pr comments --- azurerm/helpers/azure/batch_pool.go | 8 ++++---- azurerm/internal/services/batch/data_source_batch_pool.go | 2 +- .../internal/services/batch/resource_arm_batch_pool.go | 7 +++---- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/azurerm/helpers/azure/batch_pool.go b/azurerm/helpers/azure/batch_pool.go index 8a13b9964cc8..700077fc0791 100644 --- a/azurerm/helpers/azure/batch_pool.go +++ b/azurerm/helpers/azure/batch_pool.go @@ -519,8 +519,8 @@ func ValidateAzureRMBatchPoolName(v interface{}, k string) (warnings []string, e return warnings, errors } -// ExpandMetaData expands Batch pool metadata -func ExpandMetaData(input map[string]interface{}) *[]batch.MetadataItem { +// ExpandBatchMetaData expands Batch pool metadata +func ExpandBatchMetaData(input map[string]interface{}) *[]batch.MetadataItem { output := []batch.MetadataItem{} for k, v := range input { @@ -535,8 +535,8 @@ func ExpandMetaData(input map[string]interface{}) *[]batch.MetadataItem { return &output } -// FlattenMetaData flattens a Batch pool metadata -func FlattenMetaData(metadatas *[]batch.MetadataItem) map[string]interface{} { +// FlattenBatchMetaData flattens a Batch pool metadata +func FlattenBatchMetaData(metadatas *[]batch.MetadataItem) map[string]interface{} { output := make(map[string]interface{}) if metadatas == nil { diff --git a/azurerm/internal/services/batch/data_source_batch_pool.go b/azurerm/internal/services/batch/data_source_batch_pool.go index a1f283f274e0..ccdce654dde2 100644 --- a/azurerm/internal/services/batch/data_source_batch_pool.go +++ b/azurerm/internal/services/batch/data_source_batch_pool.go @@ -347,7 +347,7 @@ func dataSourceArmBatchPoolRead(d *schema.ResourceData, meta interface{}) error d.Set("start_task", azure.FlattenBatchPoolStartTask(props.StartTask)) - d.Set("metadata", azure.FlattenMetaData(props.Metadata)) + d.Set("metadata", azure.FlattenBatchMetaData(props.Metadata)) } return nil diff --git a/azurerm/internal/services/batch/resource_arm_batch_pool.go b/azurerm/internal/services/batch/resource_arm_batch_pool.go index 41d78bc632b6..3c51100d9b95 100644 --- a/azurerm/internal/services/batch/resource_arm_batch_pool.go +++ b/azurerm/internal/services/batch/resource_arm_batch_pool.go @@ -375,7 +375,6 @@ func resourceArmBatchPool() *schema.Resource { "metadata": { Type: schema.TypeMap, Optional: true, - ForceNew: false, Elem: &schema.Schema{ Type: schema.TypeString, ValidateFunc: validate.NoEmptyStrings, @@ -489,7 +488,7 @@ func resourceArmBatchPoolCreate(d *schema.ResourceData, meta interface{}) error } metaDataRaw := d.Get("metadata").(map[string]interface{}) - parameters.PoolProperties.Metadata = azure.ExpandMetaData(metaDataRaw) + parameters.PoolProperties.Metadata = azure.ExpandBatchMetaData(metaDataRaw) future, err := client.Create(ctx, resourceGroup, accountName, poolName, parameters, "", "") if err != nil { @@ -599,7 +598,7 @@ func resourceArmBatchPoolUpdate(d *schema.ResourceData, meta interface{}) error log.Printf("[DEBUG] Updating the MetaData for Batch pool %q (Account name %q / Resource Group %q)..", poolName, accountName, id.ResourceGroup) metaDataRaw := d.Get("metadata").(map[string]interface{}) - parameters.PoolProperties.Metadata = azure.ExpandMetaData(metaDataRaw) + parameters.PoolProperties.Metadata = azure.ExpandBatchMetaData(metaDataRaw) } result, err := client.Update(ctx, resourceGroup, accountName, poolName, parameters, "") @@ -675,7 +674,7 @@ func resourceArmBatchPoolRead(d *schema.ResourceData, meta interface{}) error { d.Set("start_task", azure.FlattenBatchPoolStartTask(props.StartTask)) - d.Set("metadata", azure.FlattenMetaData(props.Metadata)) + d.Set("metadata", azure.FlattenBatchMetaData(props.Metadata)) } return nil From d0938e1e9ffd3457b2ac159bc33c239919951dbb Mon Sep 17 00:00:00 2001 From: kt Date: Tue, 7 Jan 2020 14:33:43 -0800 Subject: [PATCH 5/9] Update data_source_batch_pool.go --- azurerm/internal/services/batch/data_source_batch_pool.go | 1 - 1 file changed, 1 deletion(-) diff --git a/azurerm/internal/services/batch/data_source_batch_pool.go b/azurerm/internal/services/batch/data_source_batch_pool.go index ccdce654dde2..2e975d7de65d 100644 --- a/azurerm/internal/services/batch/data_source_batch_pool.go +++ b/azurerm/internal/services/batch/data_source_batch_pool.go @@ -346,7 +346,6 @@ func dataSourceArmBatchPoolRead(d *schema.ResourceData, meta interface{}) error } d.Set("start_task", azure.FlattenBatchPoolStartTask(props.StartTask)) - d.Set("metadata", azure.FlattenBatchMetaData(props.Metadata)) } From 30a659dd550f8b3f2333339305c60e31b6c67a01 Mon Sep 17 00:00:00 2001 From: kt Date: Tue, 7 Jan 2020 14:34:22 -0800 Subject: [PATCH 6/9] Update resource_arm_batch_pool.go --- azurerm/internal/services/batch/resource_arm_batch_pool.go | 1 - 1 file changed, 1 deletion(-) diff --git a/azurerm/internal/services/batch/resource_arm_batch_pool.go b/azurerm/internal/services/batch/resource_arm_batch_pool.go index 3c51100d9b95..258c91d87a25 100644 --- a/azurerm/internal/services/batch/resource_arm_batch_pool.go +++ b/azurerm/internal/services/batch/resource_arm_batch_pool.go @@ -673,7 +673,6 @@ func resourceArmBatchPoolRead(d *schema.ResourceData, meta interface{}) error { } d.Set("start_task", azure.FlattenBatchPoolStartTask(props.StartTask)) - d.Set("metadata", azure.FlattenBatchMetaData(props.Metadata)) } From 04d744f0358c2d0f9f5088cdc6c1ebb4145175a9 Mon Sep 17 00:00:00 2001 From: Sergiu Pantiru <12131904+sergiupantiru@users.noreply.github.com> Date: Wed, 8 Jan 2020 14:55:37 +0100 Subject: [PATCH 7/9] skip when metadata Name or Value is nil Co-Authored-By: Tom Harvey --- azurerm/helpers/azure/batch_pool.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/azurerm/helpers/azure/batch_pool.go b/azurerm/helpers/azure/batch_pool.go index 700077fc0791..391b5f0b7470 100644 --- a/azurerm/helpers/azure/batch_pool.go +++ b/azurerm/helpers/azure/batch_pool.go @@ -544,6 +544,10 @@ func FlattenBatchMetaData(metadatas *[]batch.MetadataItem) map[string]interface{ } for _, metadata := range *metadatas { + if metadata.Name == nil || metadata.Value == nil { + continue + } + output[*metadata.Name] = *metadata.Value } From c7a20a1cc092e7efc152d5c1dc44b67ce36b0947 Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Wed, 8 Jan 2020 16:45:24 +0100 Subject: [PATCH 8/9] fixing the linting --- azurerm/helpers/azure/batch_pool.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azurerm/helpers/azure/batch_pool.go b/azurerm/helpers/azure/batch_pool.go index 391b5f0b7470..861a737cb6a5 100644 --- a/azurerm/helpers/azure/batch_pool.go +++ b/azurerm/helpers/azure/batch_pool.go @@ -547,7 +547,7 @@ func FlattenBatchMetaData(metadatas *[]batch.MetadataItem) map[string]interface{ if metadata.Name == nil || metadata.Value == nil { continue } - + output[*metadata.Name] = *metadata.Value } From 35a85a5279506e502b5e64ccbbd044be510a2d3e Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Wed, 8 Jan 2020 17:27:50 +0100 Subject: [PATCH 9/9] r/batch_pool: adding a test to cover setting metadata --- .../services/batch/tests/data_source_batch_pool_test.go | 2 +- .../services/batch/tests/resource_arm_batch_pool_test.go | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/azurerm/internal/services/batch/tests/data_source_batch_pool_test.go b/azurerm/internal/services/batch/tests/data_source_batch_pool_test.go index a9100023eebf..2c2fac837941 100644 --- a/azurerm/internal/services/batch/tests/data_source_batch_pool_test.go +++ b/azurerm/internal/services/batch/tests/data_source_batch_pool_test.go @@ -152,7 +152,7 @@ resource "azurerm_batch_pool" "test" { } metadata = { - "tagName"= "Example tag" + tagName = "Example tag" } } diff --git a/azurerm/internal/services/batch/tests/resource_arm_batch_pool_test.go b/azurerm/internal/services/batch/tests/resource_arm_batch_pool_test.go index 673b6d4276b0..4c468740a36a 100644 --- a/azurerm/internal/services/batch/tests/resource_arm_batch_pool_test.go +++ b/azurerm/internal/services/batch/tests/resource_arm_batch_pool_test.go @@ -479,6 +479,10 @@ resource "azurerm_batch_pool" "test" { sku = "16.04.0-LTS" version = "latest" } + + metadata = { + tagName = "Example tag" + } } `, data.RandomInteger, data.Locations.Primary, data.RandomString, data.RandomString, data.RandomString) }