fog-azure-rm 0.0.6 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/lib/fog/azurerm/compute.rb +6 -0
  4. data/lib/fog/azurerm/docs/compute.md +67 -11
  5. data/lib/fog/azurerm/docs/network.md +59 -0
  6. data/lib/fog/azurerm/docs/storage.md +107 -35
  7. data/lib/fog/azurerm/models/compute/server.rb +15 -9
  8. data/lib/fog/azurerm/models/compute/virtual_machine_extension.rb +78 -0
  9. data/lib/fog/azurerm/models/compute/virtual_machine_extensions.rb +30 -0
  10. data/lib/fog/azurerm/models/network/express_route_circuit.rb +21 -21
  11. data/lib/fog/azurerm/models/network/express_route_circuit_peering.rb +21 -21
  12. data/lib/fog/azurerm/models/network/express_route_service_provider.rb +8 -8
  13. data/lib/fog/azurerm/models/network/network_security_rule.rb +27 -0
  14. data/lib/fog/azurerm/models/network/network_security_rules.rb +31 -0
  15. data/lib/fog/azurerm/models/network/subnet.rb +16 -12
  16. data/lib/fog/azurerm/models/network/virtual_network_gateway.rb +6 -6
  17. data/lib/fog/azurerm/models/storage/{containers.rb → directories.rb} +10 -10
  18. data/lib/fog/azurerm/models/storage/{container.rb → directory.rb} +13 -13
  19. data/lib/fog/azurerm/models/storage/file.rb +151 -0
  20. data/lib/fog/azurerm/models/storage/files.rb +31 -0
  21. data/lib/fog/azurerm/network.rb +6 -0
  22. data/lib/fog/azurerm/requests/compute/create_or_update_vm_extension.rb +63 -0
  23. data/lib/fog/azurerm/requests/compute/create_virtual_machine.rb +45 -8
  24. data/lib/fog/azurerm/requests/compute/delete_vm_extension.rb +28 -0
  25. data/lib/fog/azurerm/requests/compute/get_vm_extension.rb +46 -0
  26. data/lib/fog/azurerm/requests/network/create_or_update_express_route_circuit.rb +44 -31
  27. data/lib/fog/azurerm/requests/network/create_or_update_express_route_circuit_peering.rb +23 -13
  28. data/lib/fog/azurerm/requests/network/create_or_update_network_security_rule.rb +59 -0
  29. data/lib/fog/azurerm/requests/network/create_or_update_virtual_network_gateway.rb +23 -15
  30. data/lib/fog/azurerm/requests/network/delete_network_security_rule.rb +30 -0
  31. data/lib/fog/azurerm/requests/network/get_available_ipaddresses_count.rb +23 -0
  32. data/lib/fog/azurerm/requests/network/get_network_security_rule.rb +47 -0
  33. data/lib/fog/azurerm/requests/network/list_network_security_groups.rb +1 -1
  34. data/lib/fog/azurerm/requests/network/list_network_security_rules.rb +51 -0
  35. data/lib/fog/azurerm/requests/storage/acquire_blob_lease.rb +29 -0
  36. data/lib/fog/azurerm/requests/storage/acquire_container_lease.rb +29 -0
  37. data/lib/fog/azurerm/requests/storage/check_blob_exist.rb +25 -0
  38. data/lib/fog/azurerm/requests/storage/compare_blob.rb +73 -0
  39. data/lib/fog/azurerm/requests/storage/copy_blob.rb +30 -0
  40. data/lib/fog/azurerm/requests/storage/copy_blob_from_uri.rb +30 -0
  41. data/lib/fog/azurerm/requests/storage/delete_blob.rb +27 -0
  42. data/lib/fog/azurerm/requests/storage/download_blob_to_file.rb +56 -0
  43. data/lib/fog/azurerm/requests/storage/get_blob_metadata.rb +37 -9
  44. data/lib/fog/azurerm/requests/storage/get_blob_properties.rb +53 -0
  45. data/lib/fog/azurerm/requests/storage/get_container_metadata.rb +2 -2
  46. data/lib/fog/azurerm/requests/storage/list_blobs.rb +82 -0
  47. data/lib/fog/azurerm/requests/storage/list_containers.rb +1 -1
  48. data/lib/fog/azurerm/requests/storage/release_blob_lease.rb +27 -0
  49. data/lib/fog/azurerm/requests/storage/release_container_lease.rb +27 -0
  50. data/lib/fog/azurerm/requests/storage/set_blob_metadata.rb +4 -4
  51. data/lib/fog/azurerm/requests/storage/set_blob_properties.rb +26 -0
  52. data/lib/fog/azurerm/requests/storage/set_container_metadata.rb +3 -3
  53. data/lib/fog/azurerm/requests/storage/upload_block_blob_from_file.rb +60 -0
  54. data/lib/fog/azurerm/storage.rb +26 -8
  55. data/lib/fog/azurerm/utilities/general.rb +14 -1
  56. data/lib/fog/azurerm/version.rb +1 -1
  57. data/test/api_stub.rb +8 -4
  58. data/test/api_stub/models/compute/virtual_machine_extension.rb +31 -0
  59. data/test/api_stub/models/network/network_security_rule.rb +30 -0
  60. data/test/api_stub/models/storage/{container.rb → directory.rb} +1 -1
  61. data/test/api_stub/models/storage/file.rb +178 -0
  62. data/test/api_stub/requests/compute/virtual_machine.rb +119 -0
  63. data/test/api_stub/requests/compute/virtual_machine_extension.rb +46 -0
  64. data/test/api_stub/requests/network/network_security_rule.rb +72 -0
  65. data/test/api_stub/requests/storage/{container.rb → directory.rb} +2 -2
  66. data/test/api_stub/requests/storage/file.rb +164 -0
  67. data/test/integration/availability_set.rb +6 -0
  68. data/test/integration/blob.rb +205 -0
  69. data/test/integration/credentials/azure.yml +4 -4
  70. data/test/integration/deployment.rb +9 -0
  71. data/test/integration/external_load_balancer.rb +9 -0
  72. data/test/integration/internal_load_balancer.rb +8 -0
  73. data/test/integration/network_security_group.rb +9 -0
  74. data/test/integration/network_security_rule.rb +86 -0
  75. data/test/integration/server.rb +62 -9
  76. data/test/integration/server_custom_image.rb +118 -0
  77. data/test/integration/subnet.rb +12 -1
  78. data/test/integration/virtual_machine_extension.rb +148 -0
  79. data/test/integration/virtual_network.rb +9 -1
  80. data/test/integration/virtual_network_gateway.rb +7 -29
  81. data/test/integration/virtual_network_gateway_connection_to_express_route.rb +116 -0
  82. data/test/models/compute/test_virtual_machine_extension.rb +61 -0
  83. data/test/models/compute/test_virtual_machine_extensions.rb +36 -0
  84. data/test/models/network/test_express_route_circuit.rb +4 -10
  85. data/test/models/network/test_express_route_circuit_peering.rb +4 -10
  86. data/test/models/network/test_network_interface.rb +4 -8
  87. data/test/models/network/test_network_security_rule.rb +14 -0
  88. data/test/models/network/test_network_security_rules.rb +42 -0
  89. data/test/models/network/test_subnet.rb +5 -0
  90. data/test/models/storage/test_directories.rb +106 -0
  91. data/test/models/storage/test_directory.rb +125 -0
  92. data/test/models/storage/test_file.rb +258 -0
  93. data/test/models/storage/test_files.rb +67 -0
  94. data/test/models/storage/test_storage_account.rb +2 -4
  95. data/test/requests/compute/test_create_virtual_machine.rb +19 -5
  96. data/test/requests/compute/test_create_vm_extension.rb +35 -0
  97. data/test/requests/compute/test_get_vm_extension.rb +26 -0
  98. data/test/requests/compute/test_update_vm_extension.rb +35 -0
  99. data/test/requests/network/test_create_or_update_network_security_rule.rb +28 -0
  100. data/test/requests/network/test_delete_network_security_rule.rb +25 -0
  101. data/test/requests/network/test_get_available_ipaddresses_count.rb +18 -0
  102. data/test/requests/network/test_get_network_security_rule.rb +26 -0
  103. data/test/requests/network/test_list_network_security_groups.rb +2 -2
  104. data/test/requests/network/test_list_network_security_rules.rb +26 -0
  105. data/test/requests/storage/test_acquire_blob_lease.rb +17 -0
  106. data/test/requests/storage/test_acquire_container_lease.rb +17 -0
  107. data/test/requests/storage/test_check_blob_exist.rb +17 -0
  108. data/test/requests/storage/test_compare_blob.rb +17 -0
  109. data/test/requests/storage/test_copy_blob.rb +17 -0
  110. data/test/requests/storage/test_copy_blob_from_uri.rb +17 -0
  111. data/test/requests/storage/test_create_container.rb +2 -2
  112. data/test/requests/storage/test_delete_blob.rb +22 -0
  113. data/test/requests/storage/test_delete_container.rb +1 -1
  114. data/test/requests/storage/test_download_blob_to_file.rb +25 -0
  115. data/test/requests/storage/test_get_blob_metadata.rb +2 -2
  116. data/test/requests/storage/test_get_blob_properties.rb +23 -0
  117. data/test/requests/storage/test_get_container_access_control_list.rb +2 -2
  118. data/test/requests/storage/test_get_container_metadata.rb +2 -2
  119. data/test/requests/storage/test_get_container_properties.rb +2 -2
  120. data/test/requests/storage/test_list_blobs_in_container.rb +23 -0
  121. data/test/requests/storage/test_list_containers.rb +2 -2
  122. data/test/requests/storage/test_release_blob_lease.rb +16 -0
  123. data/test/requests/storage/test_release_container_lease.rb +16 -0
  124. data/test/requests/storage/test_set_blob_metadata.rb +1 -1
  125. data/test/requests/storage/test_set_blob_properties.rb +16 -0
  126. data/test/requests/storage/test_set_container_metadata.rb +1 -1
  127. data/test/requests/storage/test_upload_block_blob_from_file.rb +23 -0
  128. data/test/test_helper.rb +116 -3
  129. metadata +73 -15
  130. data/.DS_Store +0 -0
  131. data/lib/fog/azurerm/fog_azure_rm_exception.rb +0 -13
  132. data/lib/fog/azurerm/models/storage/blob.rb +0 -13
  133. data/lib/fog/azurerm/models/storage/blobs.rb +0 -22
  134. data/test/api_stub/models/storage/blob.rb +0 -17
  135. data/test/api_stub/requests/storage/blob.rb +0 -24
  136. data/test/models/storage/test_blobs.rb +0 -32
  137. data/test/models/storage/test_container.rb +0 -67
  138. data/test/models/storage/test_containers.rb +0 -56
@@ -0,0 +1,205 @@
1
+ require 'fog/azurerm'
2
+ require 'yaml'
3
+
4
+ ########################################################################################################################
5
+ ###################### Services object required by all actions ######################
6
+ ###################### Keep it Uncommented! ######################
7
+ ########################################################################################################################
8
+
9
+ azure_credentials = YAML.load_file('credentials/azure.yml')
10
+
11
+ rs = Fog::Resources::AzureRM.new(
12
+ tenant_id: azure_credentials['tenant_id'],
13
+ client_id: azure_credentials['client_id'],
14
+ client_secret: azure_credentials['client_secret'],
15
+ subscription_id: azure_credentials['subscription_id']
16
+ )
17
+
18
+ storage = Fog::Storage::AzureRM.new(
19
+ tenant_id: azure_credentials['tenant_id'],
20
+ client_id: azure_credentials['client_id'],
21
+ client_secret: azure_credentials['client_secret'],
22
+ subscription_id: azure_credentials['subscription_id']
23
+ )
24
+
25
+ ########################################################################################################################
26
+ ###################### Prerequisites ######################
27
+ ########################################################################################################################
28
+
29
+ resource_group = rs.resource_groups.create(
30
+ name: 'TestRG-VM',
31
+ location: 'eastus'
32
+ )
33
+
34
+ storage_account = storage.storage_accounts.create(
35
+ name: 'storageaccounttestblob',
36
+ location: 'eastus',
37
+ resource_group: 'TestRG-VM'
38
+ )
39
+
40
+ access_key = storage_account.get_access_keys[0].value
41
+ Fog::Logger.debug access_key.inspect
42
+ storage_data = Fog::Storage.new(
43
+ provider: 'AzureRM',
44
+ azure_storage_account_name: storage_account.name,
45
+ azure_storage_access_key: access_key
46
+ )
47
+
48
+ container_name = 'fogcontainertestblob'
49
+ test_container_name = 'testcontainer'
50
+
51
+ ########################################################################################################################
52
+ ###################### Create Container ######################
53
+ ########################################################################################################################
54
+
55
+ storage_data.directories.create(
56
+ key: container_name
57
+ )
58
+
59
+ storage_data.directories.create(
60
+ key: test_container_name
61
+ )
62
+
63
+ ########################################################################################################################
64
+ ###################### Get Container Properties ######################
65
+ ########################################################################################################################
66
+
67
+ container = storage_data.directories.get(container_name)
68
+ container.get_properties
69
+
70
+ ########################################################################################################################
71
+ ###################### Get container access control List ######################
72
+ ########################################################################################################################
73
+
74
+ container.access_control_list
75
+
76
+ ########################################################################################################################
77
+ ###################### Create a small blob ######################
78
+ ########################################################################################################################
79
+
80
+ small_file_name = 'small_test_file.dat'
81
+ small_blob_name = small_file_name
82
+ content = Array.new(1024 * 1024) { [*'0'..'9', *'a'..'z'].sample }.join
83
+ small_file = File.new(small_file_name, 'w')
84
+ small_file.puts(content)
85
+ small_file.close
86
+
87
+ storage_data.files.get(container_name, small_blob_name).create(file_path: small_file_name)
88
+
89
+ File.delete(small_file_name)
90
+
91
+ ########################################################################################################################
92
+ ###################### Create a large blob ######################
93
+ ########################################################################################################################
94
+
95
+ large_file_name = 'large_test_file.dat'
96
+ large_blob_name = large_file_name
97
+ large_file = File.new(large_file_name, 'w')
98
+ 33.times do
99
+ large_file.puts(content)
100
+ end
101
+ large_file.close
102
+
103
+ storage_data.files.get(container_name, large_blob_name).create(file_path: large_file_name)
104
+
105
+ File.delete(large_file_name)
106
+
107
+ ########################################################################################################################
108
+ ###################### Copy Blob ########################
109
+ ########################################################################################################################
110
+
111
+ Fog::Logger.debug storage_data.copy_blob(test_container_name, small_blob_name, container_name, small_blob_name)
112
+
113
+ ########################################################################################################################
114
+ ###################### Copy Blob from URI ########################
115
+ ########################################################################################################################
116
+ blob_uri = "http://storageaccounttestblob.blob.core.windows.net/#{container_name}/#{large_file_name}"
117
+ Fog::Logger.debug storage_data.copy_blob_from_uri(test_container_name, 'small_blob_name', blob_uri)
118
+
119
+ ########################################################################################################################
120
+ ###################### Compare Blob #####################
121
+ ########################################################################################################################
122
+
123
+ Fog::Logger.debug storage_data.compare_blob(container_name, test_container_name)
124
+
125
+ ########################################################################################################################
126
+ ###################### Blob Exist #####################
127
+ ########################################################################################################################
128
+
129
+ blob = storage_data.check_blob_exist(container_name, small_blob_name)
130
+ if blob
131
+ Fog::Logger.debug 'Blob exist'
132
+ end
133
+
134
+ ########################################################################################################################
135
+ ###################### Blob Count in a Container #####################
136
+ ########################################################################################################################
137
+
138
+ Fog::Logger.debug storage_data.list_blobs(container_name).length
139
+
140
+ ########################################################################################################################
141
+ ###################### Set blob properties ######################
142
+ ########################################################################################################################
143
+
144
+ storage_data.files.get(container_name, large_blob_name).set_properties(content_encoding: 'utf-8')
145
+
146
+ ########################################################################################################################
147
+ ###################### Get blob properties ######################
148
+ ########################################################################################################################
149
+
150
+ storage_data.files.get(container_name, large_blob_name).get_properties
151
+
152
+ ########################################################################################################################
153
+ ###################### Downlaod blob ######################
154
+ ########################################################################################################################
155
+
156
+ downloaded_file_name = 'downloaded_' + small_blob_name
157
+ storage_data.files.get(container_name, large_blob_name).save_to_file(downloaded_file_name)
158
+ File.delete(downloaded_file_name)
159
+
160
+ ########################################################################################################################
161
+ ###################### Lease Blob ######################
162
+ ########################################################################################################################
163
+
164
+ lease_id_blob = storage_data.acquire_blob_lease(container_name, large_blob_name)
165
+ Fog::Logger.debug lease_id_blob
166
+
167
+ ########################################################################################################################
168
+ ###################### Release Leased Blob ######################
169
+ ########################################################################################################################
170
+
171
+ storage_data.release_blob_lease(container_name, large_blob_name, lease_id_blob)
172
+
173
+ ########################################################################################################################
174
+ ###################### Delete Blob ######################
175
+ ########################################################################################################################
176
+
177
+ blob_object = storage_data.files.get(container_name, large_blob_name).get_properties
178
+ blob_object.destroy
179
+
180
+ ########################################################################################################################
181
+ ###################### Lease Container ######################
182
+ ########################################################################################################################
183
+
184
+ lease_id_container = storage_data.acquire_container_lease(container_name)
185
+ Fog::Logger.debug lease_id_container
186
+
187
+ ########################################################################################################################
188
+ ###################### Release Leased Container ######################
189
+ ########################################################################################################################
190
+
191
+ storage_data.release_container_lease(container_name, lease_id_container)
192
+
193
+ ########################################################################################################################
194
+ ###################### Delete Container ######################
195
+ ########################################################################################################################
196
+
197
+ container.destroy
198
+
199
+ ########################################################################################################################
200
+ ###################### CleanUp ######################
201
+ ########################################################################################################################
202
+
203
+ storage_account.destroy
204
+
205
+ resource_group.destroy
@@ -1,4 +1,4 @@
1
- client_id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
2
- client_secret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3
- subscription_id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
4
- tenant_id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
1
+ client_id: c5da4c42-3066-49a0-80c8-b34696047080
2
+ client_secret: 9kVr6u4LNu6hQnWv7RYv9sd6ACxXI//Z/OJxrOc2v00=
3
+ subscription_id: 67f2116d-4ea2-4c6c-b20a-f92183dbe3cb
4
+ tenant_id: 5ad58990-1a8e-439a-9de6-804ed6e5f511
@@ -35,6 +35,15 @@ resources.deployments.create(
35
35
  parameters_link: 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-azure-dns-new-zone/azuredeploy.parameters.json'
36
36
  )
37
37
 
38
+ ########################################################################################################################
39
+ ###################### List Deployments ######################
40
+ ########################################################################################################################
41
+
42
+ deployments = resources.deployments(resource_group: resource_group.name)
43
+ deployments.each do |deployment|
44
+ Fog::Logger.debug deployment.name
45
+ end
46
+
38
47
  ########################################################################################################################
39
48
  ###################### List and Get Deployment #########################
40
49
  ########################################################################################################################
@@ -99,6 +99,15 @@ network.load_balancers.create(
99
99
  ]
100
100
  )
101
101
 
102
+ ########################################################################################################################
103
+ ###################### List External Load Balancers ######################
104
+ ########################################################################################################################
105
+
106
+ load_balancers = network.load_balancers(resource_group: 'TestRG-LB')
107
+ load_balancers.each do |load_balancer|
108
+ Fog::Logger.debug load_balancer.name
109
+ end
110
+
102
111
  ########################################################################################################################
103
112
  ###################### Get and Destroy Load Balancer ######################
104
113
  ########################################################################################################################
@@ -108,6 +108,14 @@ network.load_balancers.create(
108
108
  }
109
109
  ]
110
110
  )
111
+ ########################################################################################################################
112
+ ###################### List External Load Balancers ######################
113
+ ########################################################################################################################
114
+
115
+ load_balancers = network.load_balancers(resource_group: 'NRP-RG-Fog')
116
+ load_balancers.each do |load_balancer|
117
+ Fog::Logger.debug load_balancer.name
118
+ end
111
119
 
112
120
  ########################################################################################################################
113
121
  ###################### Get and Destroy Internal Load Balancer ######################
@@ -74,6 +74,15 @@ nsg.update_security_rules(
74
74
  ]
75
75
  )
76
76
 
77
+ ########################################################################################################################
78
+ ###################### List Network Security Group ######################
79
+ ########################################################################################################################
80
+
81
+ network_security_groups = network.network_security_groups(resource_group: 'TestRG-NSG')
82
+ network_security_groups.each do |network_security_group|
83
+ Fog::Logger.debug network_security_group.name
84
+ end
85
+
77
86
  ########################################################################################################################
78
87
  ###################### Add and Remove Network Security Rules ######################
79
88
  ########################################################################################################################
@@ -0,0 +1,86 @@
1
+ require 'fog/azurerm'
2
+ require 'yaml'
3
+
4
+ ########################################################################################################################
5
+ ###################### Services object required by all actions ######################
6
+ ###################### Keep it Uncommented! ######################
7
+ ########################################################################################################################
8
+
9
+ azure_credentials = YAML.load_file('credentials/azure.yml')
10
+
11
+ rs = Fog::Resources::AzureRM.new(
12
+ tenant_id: azure_credentials['tenant_id'],
13
+ client_id: azure_credentials['client_id'],
14
+ client_secret: azure_credentials['client_secret'],
15
+ subscription_id: azure_credentials['subscription_id']
16
+ )
17
+
18
+ network = Fog::Network::AzureRM.new(
19
+ tenant_id: azure_credentials['tenant_id'],
20
+ client_id: azure_credentials['client_id'],
21
+ client_secret: azure_credentials['client_secret'],
22
+ subscription_id: azure_credentials['subscription_id']
23
+ )
24
+
25
+ ########################################################################################################################
26
+ ###################### Prerequisites ######################
27
+ ########################################################################################################################
28
+
29
+ rs.resource_groups.create(
30
+ name: 'TestRG-NSR',
31
+ location: 'eastus'
32
+ )
33
+
34
+ ########################################################################################################################
35
+ ###################### Create Network Security Group ######################
36
+ ########################################################################################################################
37
+
38
+ network.network_security_groups.create(
39
+ name: 'testGroup',
40
+ resource_group: 'TestRG-NSR',
41
+ location: 'eastus'
42
+ )
43
+
44
+ ########################################################################################################################
45
+ ###################### Create Network Security Rule ######################
46
+ ########################################################################################################################
47
+
48
+ network.network_security_rules.create(
49
+ name: 'testRule',
50
+ resource_group: 'TestRG-NSR',
51
+ protocol: 'tcp',
52
+ network_security_group_name: 'testGroup',
53
+ source_port_range: '22',
54
+ destination_port_range: '22',
55
+ source_address_prefix: '0.0.0.0/0',
56
+ destination_address_prefix: '0.0.0.0/0',
57
+ access: 'Allow',
58
+ priority: '100',
59
+ direction: 'Inbound'
60
+ )
61
+
62
+ ########################################################################################################################
63
+ ###################### List Network Security Rules ######################
64
+ ########################################################################################################################
65
+
66
+ network_security_rules = network.network_security_rules(resource_group: 'TestRG-NSR',
67
+ network_security_group_name: 'testGroup')
68
+ network_security_rules.each do |network_security_rule|
69
+ Fog::Logger.debug network_security_rule.name
70
+ end
71
+
72
+ ########################################################################################################################
73
+ ###################### Get Network Security Rule ######################
74
+ ########################################################################################################################
75
+
76
+ nsr = network.network_security_rules.get('TestRG-NSR', 'testGroup', 'testRule')
77
+
78
+ ########################################################################################################################
79
+ ###################### CleanUp ######################
80
+ ########################################################################################################################
81
+
82
+ nsr.destroy
83
+ nsg = network.network_security_groups.get('TestRG-NSR', 'testGroup')
84
+ nsg.destroy
85
+ rg = rs.resource_groups.get('TestRG-NSR')
86
+ rg.destroy
@@ -99,18 +99,18 @@ compute.servers.create(
99
99
  )
100
100
 
101
101
  ########################################################################################################################
102
- ###################### Attach Data Disk to Server ######################
102
+ ###################### Attach Data Disk to VM ######################
103
103
  ########################################################################################################################
104
104
 
105
- server = compute.servers(resource_group: 'TestRG-VM').get('TestVM')
106
- server.attach_data_disk('datadisk1', 10, 'fogstorageac')
105
+ virtual_machine = compute.servers.get('TestRG-VM', 'TestVM')
106
+ virtual_machine.attach_data_disk('datadisk1', 10, 'fogstorageac')
107
107
 
108
108
  ########################################################################################################################
109
- ###################### Detach Data Disk to Server ######################
109
+ ###################### Detach Data Disk from VM ######################
110
110
  ########################################################################################################################
111
111
 
112
- server = compute.servers(resource_group: 'TestRG-VM').get('TestVM')
113
- server.detach_data_disk('datadisk1')
112
+ virtual_machine = compute.servers.get('TestRG-VM', 'TestVM')
113
+ virtual_machine.detach_data_disk('datadisk1')
114
114
 
115
115
  ########################################################################################################################
116
116
  ###################### Delete Data Disk ######################
@@ -119,11 +119,64 @@ server.detach_data_disk('datadisk1')
119
119
  storage.delete_disk('TestRG-VM', 'fogstorageac', 'datadisk1')
120
120
 
121
121
  ########################################################################################################################
122
- ###################### Get and Delete Server ######################
122
+ ###################### List VM in a resource group ######################
123
123
  ########################################################################################################################
124
124
 
125
- server = compute.servers(resource_group: 'TestRG-VM').get('TestVM')
126
- server.destroy
125
+ virtual_machines = compute.servers(resource_group: 'TestRG-VM')
126
+ virtual_machines.each do |virtual_machine|
127
+ Fog::Logger.debug virtual_machine.name
128
+ end
129
+
130
+ #######################################################################################################################
131
+ ##################### Get VM ######################
132
+ #######################################################################################################################
133
+
134
+ virtual_machine = compute.servers.get('TestRG-VM', 'TestVM')
135
+
136
+ ########################################################################################################################
137
+ ###################### List available sizes in VM ######################
138
+ ########################################################################################################################
139
+
140
+ available_sizes_for_vm = virtual_machine.list_available_sizes
141
+ available_sizes_for_vm.each do |available_size|
142
+ Fog::Logger.debug available_size.inspect
143
+ end
144
+
145
+ ########################################################################################################################
146
+ ###################### Restart VM ######################
147
+ ########################################################################################################################
148
+
149
+ virtual_machine.restart
150
+
151
+ ########################################################################################################################
152
+ ###################### Redeploy VM ######################
153
+ ########################################################################################################################
154
+
155
+ virtual_machine.redeploy
156
+
157
+ ########################################################################################################################
158
+ ###################### Deallocate VM ######################
159
+ ########################################################################################################################
160
+
161
+ virtual_machine.deallocate
162
+
163
+ ########################################################################################################################
164
+ ###################### Start VM ######################
165
+ ########################################################################################################################
166
+
167
+ virtual_machine.start
168
+
169
+ ########################################################################################################################
170
+ ###################### Power Off VM ######################
171
+ ########################################################################################################################
172
+
173
+ virtual_machine.power_off
174
+
175
+ ########################################################################################################################
176
+ ###################### Delete VM ######################
177
+ ########################################################################################################################
178
+
179
+ virtual_machine.destroy
127
180
 
128
181
  ########################################################################################################################
129
182
  ###################### CleanUp ######################