@@ -211,7 +211,7 @@ opsman-configuration:
211211						"--private-ip-address" , "10.0.0.3" ,
212212						"--storage-sku" , "Standard_LRS" ,
213213						"--image" , "/some/resource/id/image" ,
214- 						"--tags" , "Project=ECommerce  CostCenter=00123  Team=Web" ,
214+ 						"--tags" , "Project=ECommerce"  ,  " CostCenter=00123" ,  " Team=Web" ,
215215					},
216216					{
217217						"storage" , "blob" , "delete-batch" ,
@@ -227,6 +227,68 @@ opsman-configuration:
227227				}
228228			})
229229
230+ 			It ("passes multiple tags as separate arguments" , func () {
231+ 				const  configWithMultipleTags  =  ` 
232+ opsman-configuration: 
233+   azure: 
234+     vm_name: vm-name 
235+     subscription_id: subscription 
236+     resource_group: rg 
237+     tenant_id: tenant 
238+     client_id: client 
239+     client_secret: secret 
240+     location: %s 
241+     public_ip: 1.2.3.4 
242+     private_ip: 10.0.0.3 
243+     container: opsman_container 
244+     boot_disk_size: 200 
245+     network_security_group: nsg 
246+     subnet_id: /subscriptions/sub-guid/resourceGroups/network-resource-group/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/sub1 
247+     storage_account: account 
248+     storage_key: key 
249+     ssh_public_key: asdfasdfs 
250+     cloud_name: AzureGermanCloud 
251+     tags: "foo 'bar=single quote' \"key=double quote\" key1=\"value\" key2=value2 key3=\"value with spaces\" key4='value with single quotes' key5=simple key6=\"quoted=equals\" key7='single=equals'" 
252+ ` 
253+ 				setupCommand (configWithMultipleTags )
254+ 				status , stateInfo , err  :=  command .CreateVM ()
255+ 				Expect (err ).ToNot (HaveOccurred ())
256+ 				Expect (status ).To (Equal (vmmanagers .Success ))
257+ 				Expect (stateInfo ).To (Equal (vmmanagers.StateInfo {IAAS : "azure" , ID : "vm-name" }))
258+ 
259+ 				// Find the vm create command call 
260+ 				var  vmCreateArgs  []interface {}
261+ 				for  i  :=  0 ; i  <  runner .ExecuteWithEnvVarsCallCount (); i ++  {
262+ 					_ , args  :=  runner .ExecuteWithEnvVarsArgsForCall (i )
263+ 					if  len (args ) >  0  &&  args [0 ] ==  "vm"  &&  args [1 ] ==  "create"  {
264+ 						vmCreateArgs  =  args 
265+ 						break 
266+ 					}
267+ 				}
268+ 				Expect (vmCreateArgs ).ToNot (BeNil ())
269+ 
270+ 				// Verify that tags are passed as separate arguments 
271+ 				Expect (vmCreateArgs ).To (ContainElement ("--tags" ))
272+ 
273+ 				// Test key without value 
274+ 				Expect (vmCreateArgs ).To (ContainElement ("foo" ))
275+ 
276+ 				// Test simple key=value pairs 
277+ 				Expect (vmCreateArgs ).To (ContainElement ("key2=value2" ))
278+ 				Expect (vmCreateArgs ).To (ContainElement ("key5=simple" ))
279+ 
280+ 				// Test single quotes 
281+ 				Expect (vmCreateArgs ).To (ContainElement ("bar=single quote" ))
282+ 				Expect (vmCreateArgs ).To (ContainElement ("key4=value with single quotes" ))
283+ 				Expect (vmCreateArgs ).To (ContainElement ("key7=single=equals" ))
284+ 
285+ 				// Test double quotes 
286+ 				Expect (vmCreateArgs ).To (ContainElement ("key=double quote" ))
287+ 				Expect (vmCreateArgs ).To (ContainElement ("key1=value" ))
288+ 				Expect (vmCreateArgs ).To (ContainElement ("key3=value with spaces" ))
289+ 				Expect (vmCreateArgs ).To (ContainElement ("key6=quoted=equals" ))
290+ 			})
291+ 
230292			Context ("DEPRECATED tests" , func () {
231293				const  configWithManagedDiskAndUnmanagedDiskStrTemplateDEPRECATED  =  ` 
232294opsman-configuration: 
0 commit comments