fog-azure-rm 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/.arclint +8 -0
  3. data/CHANGELOG.md +10 -0
  4. data/CONTRIBUTORS.md +4 -0
  5. data/lib/fog/azurerm/compute.rb +1 -0
  6. data/lib/fog/azurerm/docs/application_gateway.md +6 -7
  7. data/lib/fog/azurerm/docs/compute.md +45 -11
  8. data/lib/fog/azurerm/docs/dns.md +4 -1
  9. data/lib/fog/azurerm/docs/key_vault.md +3 -0
  10. data/lib/fog/azurerm/docs/network.md +18 -13
  11. data/lib/fog/azurerm/docs/resources.md +11 -8
  12. data/lib/fog/azurerm/docs/sql.md +18 -16
  13. data/lib/fog/azurerm/docs/storage.md +13 -78
  14. data/lib/fog/azurerm/docs/traffic_manager.md +7 -6
  15. data/lib/fog/azurerm/models/application_gateway/gateway.rb +5 -1
  16. data/lib/fog/azurerm/models/compute/availability_set.rb +4 -1
  17. data/lib/fog/azurerm/models/compute/creation_data.rb +4 -2
  18. data/lib/fog/azurerm/models/compute/data_disk.rb +26 -0
  19. data/lib/fog/azurerm/models/compute/managed_disk.rb +4 -4
  20. data/lib/fog/azurerm/models/compute/server.rb +31 -5
  21. data/lib/fog/azurerm/models/key_vault/vault.rb +3 -1
  22. data/lib/fog/azurerm/models/network/load_balancer.rb +3 -1
  23. data/lib/fog/azurerm/models/network/local_network_gateway.rb +3 -1
  24. data/lib/fog/azurerm/models/network/network_interface.rb +3 -1
  25. data/lib/fog/azurerm/models/network/network_security_group.rb +4 -2
  26. data/lib/fog/azurerm/models/network/public_ip.rb +4 -2
  27. data/lib/fog/azurerm/models/network/virtual_network.rb +4 -2
  28. data/lib/fog/azurerm/models/resources/resource_group.rb +3 -1
  29. data/lib/fog/azurerm/models/sql/sql_database.rb +3 -3
  30. data/lib/fog/azurerm/models/sql/sql_server.rb +3 -2
  31. data/lib/fog/azurerm/models/storage/storage_account.rb +4 -1
  32. data/lib/fog/azurerm/models/traffic_manager/traffic_manager_profile.rb +3 -1
  33. data/lib/fog/azurerm/requests/application_gateway/create_or_update_application_gateway.rb +1 -0
  34. data/lib/fog/azurerm/requests/compute/attach_data_disk_to_vm.rb +49 -13
  35. data/lib/fog/azurerm/requests/compute/create_availability_set.rb +4 -2
  36. data/lib/fog/azurerm/requests/compute/create_virtual_machine.rb +38 -36
  37. data/lib/fog/azurerm/requests/compute/detach_data_disk_from_vm.rb +1 -2
  38. data/lib/fog/azurerm/requests/dns/create_or_update_zone.rb +1 -2
  39. data/lib/fog/azurerm/requests/key_vault/create_or_update_vault.rb +1 -0
  40. data/lib/fog/azurerm/requests/network/check_express_route_cir_auth_exists.rb +1 -1
  41. data/lib/fog/azurerm/requests/network/create_load_balancer.rb +4 -4
  42. data/lib/fog/azurerm/requests/network/create_or_update_express_route_circuit.rb +1 -1
  43. data/lib/fog/azurerm/requests/network/create_or_update_local_network_gateway.rb +1 -2
  44. data/lib/fog/azurerm/requests/network/create_or_update_network_interface.rb +4 -3
  45. data/lib/fog/azurerm/requests/network/create_or_update_network_security_group.rb +4 -3
  46. data/lib/fog/azurerm/requests/network/create_or_update_public_ip.rb +5 -3
  47. data/lib/fog/azurerm/requests/network/create_or_update_virtual_network.rb +4 -3
  48. data/lib/fog/azurerm/requests/network/create_or_update_virtual_network_gateway_connection.rb +1 -1
  49. data/lib/fog/azurerm/requests/resources/check_azure_resource_exists.rb +1 -1
  50. data/lib/fog/azurerm/requests/resources/create_resource_group.rb +2 -1
  51. data/lib/fog/azurerm/requests/resources/delete_resource_tag.rb +4 -4
  52. data/lib/fog/azurerm/requests/resources/tag_resource.rb +4 -4
  53. data/lib/fog/azurerm/requests/sql/create_or_update_database.rb +13 -10
  54. data/lib/fog/azurerm/requests/sql/create_or_update_sql_server.rb +8 -5
  55. data/lib/fog/azurerm/requests/storage/create_storage_account.rb +4 -2
  56. data/lib/fog/azurerm/requests/traffic_manager/create_or_update_traffic_manager_profile.rb +13 -3
  57. data/lib/fog/azurerm/storage.rb +0 -19
  58. data/lib/fog/azurerm/version.rb +1 -1
  59. data/test/api_stub.rb +0 -2
  60. data/test/api_stub/models/compute/server.rb +62 -0
  61. data/test/api_stub/requests/compute/virtual_machine.rb +75 -0
  62. data/test/api_stub/requests/resources/resource_group.rb +1 -1
  63. data/test/integration/application_gateway.rb +8 -1
  64. data/test/integration/availability_set.rb +9 -2
  65. data/test/integration/external_load_balancer.rb +2 -1
  66. data/test/integration/internal_load_balancer.rb +2 -1
  67. data/test/integration/key_vault.rb +2 -1
  68. data/test/integration/managed_disk.rb +10 -5
  69. data/test/integration/network_interface.rb +2 -1
  70. data/test/integration/network_security_group.rb +2 -1
  71. data/test/integration/public_ip.rb +2 -1
  72. data/test/integration/resource_group.rb +5 -2
  73. data/test/integration/resource_tag.rb +4 -2
  74. data/test/integration/server.rb +81 -3
  75. data/test/integration/sql_server.rb +10 -2
  76. data/test/integration/storage_account.rb +32 -20
  77. data/test/integration/traffic_manager.rb +6 -1
  78. data/test/integration/virtual_network.rb +2 -1
  79. data/test/integration/virtual_network_gateway_connection.rb +3 -3
  80. data/test/models/application_gateway/test_gateway.rb +2 -1
  81. data/test/models/compute/test_availability_set.rb +2 -1
  82. data/test/models/{storage → compute}/test_data_disk.rb +2 -2
  83. data/test/models/compute/test_managed_disk.rb +2 -1
  84. data/test/models/compute/test_server.rb +31 -2
  85. data/test/models/dns/test_zone.rb +2 -1
  86. data/test/models/key_vault/test_vault.rb +2 -1
  87. data/test/models/network/test_load_balancer.rb +2 -1
  88. data/test/models/network/test_network_interface.rb +2 -1
  89. data/test/models/network/test_network_security_group.rb +2 -1
  90. data/test/models/network/test_public_ip.rb +2 -1
  91. data/test/models/network/test_virtual_network.rb +2 -1
  92. data/test/models/resources/test_resource_group.rb +2 -1
  93. data/test/models/sql/test_database.rb +2 -1
  94. data/test/models/sql/test_sql_server.rb +2 -1
  95. data/test/models/storage/test_storage_account.rb +2 -1
  96. data/test/models/traffic_manager/test_traffic_manager_profile.rb +2 -1
  97. data/test/requests/compute/test_attach_data_disk_to_vm.rb +21 -6
  98. data/test/requests/network/test_check_express_route_cir_auth_exists.rb +1 -1
  99. data/test/requests/network/test_create_load_balancer.rb +3 -2
  100. data/test/requests/network/test_create_network_interface.rb +4 -3
  101. data/test/requests/network/test_create_or_update_network_security_group.rb +3 -2
  102. data/test/requests/network/test_create_or_update_virtual_network.rb +5 -3
  103. data/test/requests/network/test_create_public_ip.rb +3 -2
  104. data/test/requests/network/test_update_public_ip.rb +3 -2
  105. data/test/requests/resources/test_create_resource_group.rb +3 -2
  106. data/test/requests/resources/test_delete_resource_tag.rb +3 -3
  107. data/test/requests/resources/test_tag_resource.rb +3 -3
  108. data/test/test_helper.rb +0 -14
  109. metadata +5 -36
  110. data/lib/fog/azurerm/models/storage/data_disk.rb +0 -27
  111. data/lib/fog/azurerm/models/storage/recovery_vault.rb +0 -50
  112. data/lib/fog/azurerm/models/storage/recovery_vaults.rb +0 -27
  113. data/lib/fog/azurerm/requests/storage/create_or_update_recovery_vault.rb +0 -54
  114. data/lib/fog/azurerm/requests/storage/delete_recovery_vault.rb +0 -35
  115. data/lib/fog/azurerm/requests/storage/disable_backup_protection.rb +0 -60
  116. data/lib/fog/azurerm/requests/storage/enable_backup_protection.rb +0 -61
  117. data/lib/fog/azurerm/requests/storage/get_all_backup_jobs.rb +0 -56
  118. data/lib/fog/azurerm/requests/storage/get_backup_container.rb +0 -53
  119. data/lib/fog/azurerm/requests/storage/get_backup_item.rb +0 -58
  120. data/lib/fog/azurerm/requests/storage/get_backup_job_for_vm.rb +0 -53
  121. data/lib/fog/azurerm/requests/storage/get_backup_protection_policy.rb +0 -64
  122. data/lib/fog/azurerm/requests/storage/get_recovery_vault.rb +0 -49
  123. data/lib/fog/azurerm/requests/storage/list_recovery_vaults.rb +0 -48
  124. data/lib/fog/azurerm/requests/storage/set_recovery_vault_context.rb +0 -36
  125. data/lib/fog/azurerm/requests/storage/start_backup.rb +0 -54
  126. data/test/api_stub/models/storage/recovery_vault.rb +0 -23
  127. data/test/api_stub/requests/storage/recovery_vault.rb +0 -189
  128. data/test/models/storage/test_recovery_vault.rb +0 -61
  129. data/test/models/storage/test_recovery_vaults.rb +0 -47
  130. data/test/requests/storage/test_create_recovery_vault.rb +0 -35
  131. data/test/requests/storage/test_delete_recovery_vault.rb +0 -34
  132. data/test/requests/storage/test_disable_backup_protection.rb +0 -52
  133. data/test/requests/storage/test_enable_backup_protection.rb +0 -66
  134. data/test/requests/storage/test_get_all_backup_jobs.rb +0 -35
  135. data/test/requests/storage/test_get_backup_container.rb +0 -35
  136. data/test/requests/storage/test_get_backup_item.rb +0 -35
  137. data/test/requests/storage/test_get_backup_job_for_vm.rb +0 -26
  138. data/test/requests/storage/test_get_backup_protection_policy.rb +0 -35
  139. data/test/requests/storage/test_get_recovery_vault.rb +0 -35
  140. data/test/requests/storage/test_list_recovery_vault.rb +0 -35
  141. data/test/requests/storage/test_set_recovery_vault_context.rb +0 -34
  142. data/test/requests/storage/test_start_backup.rb +0 -55
@@ -143,6 +143,81 @@ module ApiStub
143
143
  }
144
144
  end
145
145
 
146
+ def self.get_managed_disk_response(compute_client)
147
+ body = {
148
+ 'id' => '/subscriptions/{subscription_id}/resourceGroups/ManagedRG/providers/Microsoft.Compute/disks/ManagedDataDisk1',
149
+ 'name' => 'ManagedDataDisk1',
150
+ 'type' => 'Microsoft.Compute/disks',
151
+ 'location' => 'eastus',
152
+ 'account_type' => 'Premium_LRS',
153
+
154
+ 'time_created' => {
155
+ 'datetime' => '((2458025j,52461s,709327300n),+0s,2299161j)'
156
+ },
157
+
158
+ 'creation_data' => {
159
+ 'create_option' => 'Empty'
160
+ },
161
+
162
+ 'disk_size_gb' => 100,
163
+ 'provisioning_state' => 'Succeeded'
164
+ }
165
+ vm_mapper = Azure::ARM::Compute::Models::Disk.mapper
166
+ compute_client.deserialize(vm_mapper, body, 'result.body')
167
+ end
168
+
169
+ def self.get_vm_with_managed_disk_response(compute_client)
170
+ body = {
171
+ 'id' => '/subscriptions/{subscription_id}/resourceGroups/ManagedRG/providers/Microsoft.Compute/virtualMachines/ManagedVM',
172
+ 'name' => 'ManagedVM',
173
+ 'type' => 'Microsoft.Compute/virtualMachines',
174
+ 'location' => 'eastus',
175
+ 'hardware_profile' => {
176
+ 'vm_size' => 'Standard_D2s_v3'
177
+ },
178
+ 'storage_profile' => {
179
+ 'image_reference' => {
180
+ 'publisher' => 'Canonical',
181
+ 'offer' => 'UbuntuServer',
182
+ 'sku' => '16.04-LTS',
183
+ 'version' => 'latest'
184
+ },
185
+ 'os_disk' => {
186
+ 'os_type' => 'Linux',
187
+ 'name' => 'ManagedVM_OsDisk_1_d00cc277b8904c79ae5a777aa3fa5ac3',
188
+ 'caching' => 'ReadWrite',
189
+ 'create_option' => 'FromImage',
190
+ 'disk_size_gb' => 30,
191
+ 'managed_disk' => {
192
+ 'id' => '/subscriptions/{subscription_id}/resourceGroups/ManagedRG/providers/Microsoft.Compute/disks/ManagedVM_OsDisk_1_d00cc277b8904c79ae5a777aa3fa5ac3',
193
+ 'storage_account_type' => 'Premium_LRS'
194
+ }
195
+ },
196
+ 'data_disks' => [{
197
+ 'lun' => 0,
198
+ 'name' => 'ManagedDataDisk1',
199
+ 'caching' => 'None',
200
+ 'create_option' => 'Attach',
201
+ 'disk_size_gb' => 100,
202
+ 'managed_disk' => {
203
+ 'id' => '/subscriptions/{subscription_id}/resourceGroups/MANAGEDRG/providers/Microsoft.Compute/disks/ManagedDataDisk1',
204
+ 'storage_account_type' => 'Premium_LRS'
205
+ }
206
+ }]
207
+ },
208
+ 'network_profile' => {
209
+ 'network_interfaces' => [{
210
+ 'id' => '/subscriptions/{subscription_id}/resourceGroups/ManagedRG/providers/Microsoft.Network/networkInterfaces/managedvm992'
211
+ }]
212
+ },
213
+ 'provisioning_state' => 'Succeeded',
214
+ 'vm_id' => '73f38ae6-4767-4325-bd78-9ba4e74337d9'
215
+ }
216
+
217
+ vm_mapper = Azure::ARM::Compute::Models::VirtualMachine.mapper
218
+ compute_client.deserialize(vm_mapper, body, 'result.body')
219
+ end
220
+
146
221
  def self.create_virtual_machine_response(compute_client)
147
222
  body = '{
148
223
  "id":"/subscriptions/{subscription-id}/resourceGroups/fog-test-rg/providers/Microsoft.Compute/virtualMachines/fog-test-server",
@@ -9,7 +9,7 @@ module ApiStub
9
9
  "name": "fog-test-rg",
10
10
  "location": "westus",
11
11
  "tags": {
12
- "tagname1": "tagvalue1"
12
+ "tagkey1": "tagvalue1"
13
13
  },
14
14
  "properties": {
15
15
  "provisioning_state": "Succeeded"
@@ -28,12 +28,13 @@ network = Fog::Network::AzureRM.new(
28
28
  client_secret: azure_credentials['client_secret'],
29
29
  subscription_id: azure_credentials['subscription_id']
30
30
  )
31
+
31
32
  ########################################################################################################################
32
33
  ###################### Resource names #####################
33
34
  ########################################################################################################################
34
35
 
35
36
  time = current_time
36
- resource_group_name = "AG-RG-#{time}"
37
+ resource_group_name = "TestRG-AG-#{time}"
37
38
  virtual_network_name = "Vnet#{time}"
38
39
  subnet_name = "Sub#{time}"
39
40
  public_ip_name = "Pip#{time}"
@@ -82,10 +83,13 @@ begin
82
83
  ##################### Create Application Gateway ######################
83
84
  #######################################################################################################################
84
85
 
86
+ tags = { key1: 'value1', key2: 'value2' }
87
+
85
88
  app_gateway = application_gateway.gateways.create(
86
89
  name: app_gateway_name,
87
90
  location: LOCATION,
88
91
  resource_group: resource_group_name,
92
+ tags: tags,
89
93
  sku_name: 'Standard_Medium',
90
94
  sku_tier: 'Standard',
91
95
  sku_capacity: '2',
@@ -151,6 +155,7 @@ begin
151
155
  ]
152
156
  )
153
157
  puts "Created application gateway #{app_gateway.name}"
158
+
154
159
  ########################################################################################################################
155
160
  ###################### Get Application Gateway ######################
156
161
  ########################################################################################################################
@@ -217,6 +222,7 @@ begin
217
222
  unhealthy_threshold: 5
218
223
  )
219
224
  puts 'Added probe in application gateway'
225
+
220
226
  app_gateway.remove_probe(
221
227
  name: 'Probe1',
222
228
  protocol: 'http',
@@ -246,6 +252,7 @@ begin
246
252
 
247
253
  resource_group = resource.resource_groups.get(resource_group_name)
248
254
  resource_group.destroy
255
+
249
256
  puts 'Integration Test for application gateway ran successfully'
250
257
  rescue
251
258
  puts 'Integration Test for application gateway is failing'
@@ -29,7 +29,7 @@ compute = Fog::Compute::AzureRM.new(
29
29
  ########################################################################################################################
30
30
 
31
31
  time = current_time
32
- resource_group_name = "AS-RG-#{time}"
32
+ resource_group_name = "TestRG-AS-#{time}"
33
33
  unmanaged_as_name_default = "ASUnmanagedDefault#{time}"
34
34
  unmanaged_as_name_custom = "ASUnmanagedCustom#{time}"
35
35
  managed_as_name_default = "ASManagedDefault#{time}"
@@ -71,11 +71,14 @@ begin
71
71
  ###################### Create Unmanaged Availability Set (Default) ######################
72
72
  ########################################################################################################################
73
73
 
74
+ tags = { key1: 'value1', key2: 'value2' }
75
+
74
76
  puts "Create unmanaged default availability set (#{unmanaged_as_name_default}):"
75
77
  avail_set = compute.availability_sets.create(
76
78
  name: unmanaged_as_name_default,
77
79
  location: LOCATION,
78
- resource_group: resource_group_name
80
+ resource_group: resource_group_name,
81
+ tags: tags
79
82
  )
80
83
  name = avail_set.name
81
84
  fault_domains = avail_set.platform_fault_domain_count
@@ -91,6 +94,7 @@ begin
91
94
  name: unmanaged_as_name_custom,
92
95
  location: LOCATION,
93
96
  resource_group: resource_group_name,
97
+ tags: tags,
94
98
  platform_fault_domain_count: 3,
95
99
  platform_update_domain_count: 10
96
100
  )
@@ -108,6 +112,7 @@ begin
108
112
  name: managed_as_name_default,
109
113
  location: LOCATION,
110
114
  resource_group: resource_group_name,
115
+ tags: tags,
111
116
  use_managed_disk: true
112
117
  )
113
118
  name = avail_set.name
@@ -124,6 +129,7 @@ begin
124
129
  name: managed_as_name_custom,
125
130
  location: LOCATION,
126
131
  resource_group: resource_group_name,
132
+ tags: tags,
127
133
  platform_fault_domain_count: 2,
128
134
  platform_update_domain_count: 10,
129
135
  use_managed_disk: true
@@ -170,6 +176,7 @@ begin
170
176
 
171
177
  rg = rs.resource_groups.get(resource_group_name)
172
178
  rg.destroy
179
+
173
180
  puts 'Integration test for availability set ran successfully!'
174
181
  rescue
175
182
  puts 'Integration Test for availability set is failing!!!'
@@ -104,7 +104,8 @@ begin
104
104
  frontend_port: 3389,
105
105
  backend_port: 3389
106
106
  }
107
- ]
107
+ ],
108
+ tags: { key: 'value' }
108
109
  )
109
110
  puts "Created external load balancer: #{load_balancer.name}"
110
111
 
@@ -107,7 +107,8 @@ begin
107
107
  interval_in_seconds: 15,
108
108
  number_of_probes: 2
109
109
  }
110
- ]
110
+ ],
111
+ tags: { key: 'value' }
111
112
  )
112
113
  puts "Created internal load balancer: #{load_balancer.name}"
113
114
 
@@ -61,7 +61,8 @@ begin
61
61
  tenant_id: azure_credentials['tenant_id'],
62
62
  sku_family: 'A',
63
63
  sku_name: 'standard',
64
- access_policies: access_policies_arr
64
+ access_policies: access_policies_arr,
65
+ tags: { key: 'value' }
65
66
  )
66
67
 
67
68
  ########################################################################################################################
@@ -28,9 +28,9 @@ compute = Fog::Compute::AzureRM.new(
28
28
  ###################### Resource names #####################
29
29
  ########################################################################################################################
30
30
 
31
- time = current_time
32
- resource_group_name = "MD-RG-#{time}"
33
- disk_name = "MD#{time}diskunique"
31
+ time = current_time
32
+ resource_group_name = "TestRG-MD-#{time}"
33
+ disk_name = "MD#{time}"
34
34
 
35
35
  ########################################################################################################################
36
36
  ###################### Prerequisites ######################
@@ -53,10 +53,13 @@ begin
53
53
  ###################### Create Managed Disk ######################
54
54
  ########################################################################################################################
55
55
 
56
+ tags = { key1: 'value1', key2: 'value2' }
57
+
56
58
  disk = compute.managed_disks.create(
57
59
  name: disk_name,
58
60
  location: LOCATION,
59
61
  resource_group_name: resource_group_name,
62
+ tags: tags,
60
63
  account_type: 'Premium_LRS',
61
64
  disk_size_gb: 1023,
62
65
  creation_data: {
@@ -78,6 +81,7 @@ begin
78
81
  ########################################################################################################################
79
82
  ###################### List Managed Disks ######################
80
83
  ########################################################################################################################
84
+
81
85
  puts 'List managed disks:'
82
86
  compute.managed_disks(resource_group: resource_group_name).each do |managed_disk|
83
87
  puts managed_disk.name
@@ -106,8 +110,9 @@ begin
106
110
 
107
111
  rg = rs.resource_groups.get(resource_group_name)
108
112
  rg.destroy
109
- puts 'Integration Test for managed disk ran successfully'
113
+
114
+ puts 'Integration Test for managed disk ran successfully!'
110
115
  rescue
111
- puts 'Integration Test for managed disk is failing'
116
+ puts 'Integration Test for managed disk is failing!'
112
117
  resource_group.destroy unless resource_group.nil?
113
118
  end
@@ -106,7 +106,8 @@ begin
106
106
  subnet_id: "/subscriptions/#{azure_credentials['subscription_id']}/resourceGroups/TestRG-NI/providers/Microsoft.Network/virtualNetworks/testVnet/subnets/mysubnet",
107
107
  public_ip_address_id: "/subscriptions/#{azure_credentials['subscription_id']}/resourceGroups/TestRG-NI/providers/Microsoft.Network/publicIPAddresses/mypubip",
108
108
  ip_configuration_name: 'testIpConfiguration',
109
- private_ip_allocation_method: 'Dynamic'
109
+ private_ip_allocation_method: 'Dynamic',
110
+ tags: { key: 'value' }
110
111
  )
111
112
  puts "Created network interface: #{network_interface.name}"
112
113
 
@@ -57,7 +57,8 @@ begin
57
57
  access: Fog::ARM::Network::Models::SecurityRuleAccess::Allow,
58
58
  priority: '100',
59
59
  direction: Fog::ARM::Network::Models::SecurityRuleDirection::Inbound
60
- }]
60
+ }],
61
+ tags: { key: 'value' }
61
62
  )
62
63
  puts "Created network security group: #{network_security_group.name}"
63
64
 
@@ -47,7 +47,8 @@ begin
47
47
  name: 'mypubip',
48
48
  resource_group: 'TestRG-PB',
49
49
  location: LOCATION,
50
- public_ip_allocation_method: Fog::ARM::Network::Models::IPAllocationMethod::Dynamic
50
+ public_ip_allocation_method: Fog::ARM::Network::Models::IPAllocationMethod::Dynamic,
51
+ tags: { key: 'value' }
51
52
  )
52
53
  puts "Created public ip: #{public_ip.name}"
53
54
 
@@ -29,12 +29,15 @@ begin
29
29
  ###################### Create Resource Group ######################
30
30
  ########################################################################################################################
31
31
 
32
+ tags = { key1: 'value1', key2: 'value2' }
33
+
32
34
  resource_group = resource.resource_groups.create(
33
35
  name: resource_group_name,
34
- location: 'eastus'
36
+ location: 'eastus',
37
+ tags: tags
35
38
  )
36
-
37
39
  puts "Created resource group #{resource_group.name}"
40
+
38
41
  ########################################################################################################################
39
42
  ###################### Get All Resource Groups in a Subscription ######################
40
43
  ########################################################################################################################
@@ -53,7 +53,8 @@ begin
53
53
  tag_resource = resources.tag_resource(
54
54
  resource_id,
55
55
  'test-key',
56
- 'test-value'
56
+ 'test-value',
57
+ '2016-06-01'
57
58
  )
58
59
  puts "Tagged resource: #{tag_resource}"
59
60
 
@@ -77,7 +78,8 @@ begin
77
78
  resource = resources.delete_resource_tag(
78
79
  resource_id,
79
80
  'test-key',
80
- 'test-value'
81
+ 'test-value',
82
+ '2016-06-01'
81
83
  )
82
84
  puts "Removed tag from a resource: #{resource}"
83
85
  ########################################################################################################################
@@ -79,6 +79,16 @@ begin
79
79
  private_ip_allocation_method: Fog::ARM::Network::Models::IPAllocationMethod::Dynamic
80
80
  )
81
81
 
82
+ # TODO: Create new NIC for managed VM
83
+ network.network_interfaces.create(
84
+ name: 'NetInt2',
85
+ resource_group: 'TestRG-VM',
86
+ location: LOCATION,
87
+ subnet_id: "/subscriptions/#{azure_credentials['subscription_id']}/resourceGroups/TestRG-VM/providers/Microsoft.Network/virtualNetworks/testVnet/subnets/mysubnet",
88
+ ip_configuration_name: 'testIpConfiguration',
89
+ private_ip_allocation_method: Fog::ARM::Network::Models::IPAllocationMethod::Dynamic
90
+ )
91
+
82
92
  ########################################################################################################################
83
93
  ###################### Check for Virtual Machine ######################
84
94
  ########################################################################################################################
@@ -87,13 +97,16 @@ begin
87
97
  puts "Virtual Machine doesn't exist." unless flag
88
98
 
89
99
  ########################################################################################################################
90
- ###################### Create Server ######################
100
+ ###################### Create Server ######################
91
101
  ########################################################################################################################
92
102
 
103
+ tags = { key1: 'value1', key2: 'value2' }
104
+
93
105
  virtual_machine = compute.servers.create(
94
106
  name: 'TestVM',
95
107
  location: LOCATION,
96
108
  resource_group: 'TestRG-VM',
109
+ tags: tags,
97
110
  vm_size: 'Basic_A0',
98
111
  storage_account_name: storage_account_name,
99
112
  username: 'testuser',
@@ -108,7 +121,31 @@ begin
108
121
  custom_data: 'echo customData',
109
122
  os_disk_caching: Fog::ARM::Compute::Models::CachingTypes::None
110
123
  )
111
- puts "Created virtual machine: #{virtual_machine.name}"
124
+ puts "Created un-managed virtual machine: #{virtual_machine.name}"
125
+
126
+ ########################################################################################################################
127
+ ###################### Create Managed Server ######################
128
+ ########################################################################################################################
129
+ managed_vm = compute.servers.create(
130
+ name: 'TestVM-Managed',
131
+ location: LOCATION,
132
+ resource_group: 'TestRG-VM',
133
+ vm_size: 'Basic_A0',
134
+ storage_account_name: nil,
135
+ username: 'testuser',
136
+ password: 'Confiz=123',
137
+ disable_password_authentication: false,
138
+ network_interface_card_ids: ["/subscriptions/#{azure_credentials['subscription_id']}/resourceGroups/TestRG-VM/providers/Microsoft.Network/networkInterfaces/NetInt2"],
139
+ publisher: 'Canonical',
140
+ offer: 'UbuntuServer',
141
+ sku: '14.04.2-LTS',
142
+ version: 'latest',
143
+ platform: 'linux',
144
+ custom_data: 'echo customData',
145
+ os_disk_caching: Fog::ARM::Compute::Models::CachingTypes::None,
146
+ managed_disk_storage_type: Azure::ARM::Compute::Models::StorageAccountTypes::StandardLRS
147
+ )
148
+ puts "Created managed virtual machine: #{managed_vm.name}"
112
149
 
113
150
  ########################################################################################################################
114
151
  ###################### Create Server Async ####################
@@ -118,6 +155,7 @@ begin
118
155
  name: 'TestVM',
119
156
  location: LOCATION,
120
157
  resource_group: 'TestRG-VM',
158
+ tags: tags,
121
159
  vm_size: 'Basic_A0',
122
160
  storage_account_name: storage_account_name,
123
161
  username: 'testuser',
@@ -132,6 +170,7 @@ begin
132
170
  custom_data: 'echo customData',
133
171
  os_disk_caching: Fog::ARM::Compute::Models::CachingTypes::None
134
172
  )
173
+
135
174
  loop do
136
175
  puts async_response.state
137
176
 
@@ -157,7 +196,7 @@ begin
157
196
  puts 'Attached Data Disk to VM'
158
197
 
159
198
  ########################################################################################################################
160
- ###################### Detach Data Disk from VM ######################
199
+ ###################### Detach Data Disk from VM ######################
161
200
  ########################################################################################################################
162
201
 
163
202
  virtual_machine = compute.servers.get('TestRG-VM', 'TestVM')
@@ -176,6 +215,40 @@ begin
176
215
  )
177
216
  puts "Deleted data disk: #{storage_data.delete_disk('datadisk1')}"
178
217
 
218
+ ########################################################################################################################
219
+ ###################### Create a Managed Data Disk ######################
220
+ ########################################################################################################################
221
+ managed_disk = compute.managed_disks.create(
222
+ name: 'ManagedDataDisk',
223
+ location: LOCATION,
224
+ resource_group_name: 'TestRG-VM',
225
+ account_type: 'Standard_LRS',
226
+ disk_size_gb: 100,
227
+ creation_data: {
228
+ create_option: 'Empty'
229
+ }
230
+ )
231
+ puts "Created Managed Disk: #{managed_disk.name}"
232
+
233
+ ########################################################################################################################
234
+ ###################### Attach Managed Data Disk to VM ######################
235
+ ########################################################################################################################
236
+ managed_vm.attach_managed_disk('ManagedDataDisk', 'TestRG-VM')
237
+ puts 'Attached Managed Data Disk to VM'
238
+
239
+ ########################################################################################################################
240
+ ###################### Detach Data Disk from VM ######################
241
+ ########################################################################################################################
242
+
243
+ managed_vm.detach_managed_disk('ManagedDataDisk')
244
+ puts 'Detached Managed Data Disk from VM'
245
+
246
+ ########################################################################################################################
247
+ ###################### Delete Managed Data Disk ######################
248
+ ########################################################################################################################
249
+ managed_disk.destroy
250
+ puts 'Deleted managed data disk'
251
+
179
252
  ########################################################################################################################
180
253
  ###################### List VM in a resource group ######################
181
254
  ########################################################################################################################
@@ -243,6 +316,7 @@ begin
243
316
  ########################################################################################################################
244
317
 
245
318
  puts "Deleted virtual machine: #{virtual_machine.destroy}"
319
+ puts "Deleted virutal machine: #{managed_vm.destroy}"
246
320
 
247
321
  ########################################################################################################################
248
322
  ###################### CleanUp ######################
@@ -251,6 +325,9 @@ begin
251
325
  nic = network.network_interfaces.get('TestRG-VM', 'NetInt')
252
326
  nic.destroy
253
327
 
328
+ nic = network.network_interfaces.get('TestRG-VM', 'NetInt2')
329
+ nic.destroy
330
+
254
331
  vnet = network.virtual_networks.get('TestRG-VM', 'testVnet')
255
332
  vnet.destroy
256
333
 
@@ -259,6 +336,7 @@ begin
259
336
 
260
337
  resource_group = rs.resource_groups.get('TestRG-VM')
261
338
  resource_group.destroy
339
+
262
340
  puts 'Integration Test for virtual machine ran successfully'
263
341
  rescue
264
342
  puts 'Integration Test for virtual machine is failing'