gitlab-fog-azure-rm 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. checksums.yaml +7 -0
  2. data/.arclint +8 -0
  3. data/.codeclimate.yml +17 -0
  4. data/.gitignore +6 -0
  5. data/.gitlab-ci.yml +17 -0
  6. data/.hound.yml +2 -0
  7. data/.rubocop.yml +5 -0
  8. data/.rubocop_todo.yml +274 -0
  9. data/.travis.yml +49 -0
  10. data/CHANGELOG.md +414 -0
  11. data/CONTRIBUTING.md +40 -0
  12. data/CONTRIBUTORS.md +12 -0
  13. data/Gemfile +3 -0
  14. data/LICENSE.md +20 -0
  15. data/README.md +100 -0
  16. data/gitlab-fog-azure-rm.gemspec +31 -0
  17. data/lib/fog/azurerm.rb +30 -0
  18. data/lib/fog/azurerm/async_response.rb +44 -0
  19. data/lib/fog/azurerm/config.rb +1 -0
  20. data/lib/fog/azurerm/constants.rb +72 -0
  21. data/lib/fog/azurerm/credentials.rb +40 -0
  22. data/lib/fog/azurerm/custom_fog_errors.rb +52 -0
  23. data/lib/fog/azurerm/docs/storage.md +398 -0
  24. data/lib/fog/azurerm/docs/structure.md +53 -0
  25. data/lib/fog/azurerm/models/resources/azure_resource.rb +25 -0
  26. data/lib/fog/azurerm/models/resources/azure_resources.rb +40 -0
  27. data/lib/fog/azurerm/models/resources/dependency.rb +27 -0
  28. data/lib/fog/azurerm/models/resources/deployment.rb +65 -0
  29. data/lib/fog/azurerm/models/resources/deployments.rb +30 -0
  30. data/lib/fog/azurerm/models/resources/provider.rb +27 -0
  31. data/lib/fog/azurerm/models/resources/provider_resource_type.rb +22 -0
  32. data/lib/fog/azurerm/models/resources/resource_group.rb +34 -0
  33. data/lib/fog/azurerm/models/resources/resource_groups.rb +29 -0
  34. data/lib/fog/azurerm/models/storage/directories.rb +75 -0
  35. data/lib/fog/azurerm/models/storage/directory.rb +151 -0
  36. data/lib/fog/azurerm/models/storage/file.rb +265 -0
  37. data/lib/fog/azurerm/models/storage/files.rb +183 -0
  38. data/lib/fog/azurerm/models/storage/kind.rb +12 -0
  39. data/lib/fog/azurerm/models/storage/sku_name.rb +15 -0
  40. data/lib/fog/azurerm/models/storage/sku_tier.rb +12 -0
  41. data/lib/fog/azurerm/models/storage/storage_account.rb +92 -0
  42. data/lib/fog/azurerm/models/storage/storage_accounts.rb +47 -0
  43. data/lib/fog/azurerm/requests/storage/acquire_blob_lease.rb +32 -0
  44. data/lib/fog/azurerm/requests/storage/acquire_container_lease.rb +32 -0
  45. data/lib/fog/azurerm/requests/storage/check_container_exists.rb +30 -0
  46. data/lib/fog/azurerm/requests/storage/commit_blob_blocks.rb +30 -0
  47. data/lib/fog/azurerm/requests/storage/compare_container_blobs.rb +148 -0
  48. data/lib/fog/azurerm/requests/storage/copy_blob.rb +30 -0
  49. data/lib/fog/azurerm/requests/storage/copy_blob_from_uri.rb +30 -0
  50. data/lib/fog/azurerm/requests/storage/copy_object.rb +20 -0
  51. data/lib/fog/azurerm/requests/storage/create_block_blob.rb +108 -0
  52. data/lib/fog/azurerm/requests/storage/create_container.rb +40 -0
  53. data/lib/fog/azurerm/requests/storage/create_disk.rb +62 -0
  54. data/lib/fog/azurerm/requests/storage/create_page_blob.rb +31 -0
  55. data/lib/fog/azurerm/requests/storage/delete_blob.rb +32 -0
  56. data/lib/fog/azurerm/requests/storage/delete_blob_https_url.rb +39 -0
  57. data/lib/fog/azurerm/requests/storage/delete_container.rb +31 -0
  58. data/lib/fog/azurerm/requests/storage/delete_disk.rb +36 -0
  59. data/lib/fog/azurerm/requests/storage/delete_object_url.rb +30 -0
  60. data/lib/fog/azurerm/requests/storage/get_blob.rb +163 -0
  61. data/lib/fog/azurerm/requests/storage/get_blob_http_url.rb +39 -0
  62. data/lib/fog/azurerm/requests/storage/get_blob_https_url.rb +39 -0
  63. data/lib/fog/azurerm/requests/storage/get_blob_properties.rb +55 -0
  64. data/lib/fog/azurerm/requests/storage/get_blob_url.rb +28 -0
  65. data/lib/fog/azurerm/requests/storage/get_container_acl.rb +30 -0
  66. data/lib/fog/azurerm/requests/storage/get_container_properties.rb +41 -0
  67. data/lib/fog/azurerm/requests/storage/get_container_url.rb +34 -0
  68. data/lib/fog/azurerm/requests/storage/get_object_url.rb +21 -0
  69. data/lib/fog/azurerm/requests/storage/list_blobs.rb +168 -0
  70. data/lib/fog/azurerm/requests/storage/list_containers.rb +73 -0
  71. data/lib/fog/azurerm/requests/storage/multipart_save_block_blob.rb +110 -0
  72. data/lib/fog/azurerm/requests/storage/put_blob_block.rb +30 -0
  73. data/lib/fog/azurerm/requests/storage/put_blob_https_url.rb +39 -0
  74. data/lib/fog/azurerm/requests/storage/put_blob_metadata.rb +31 -0
  75. data/lib/fog/azurerm/requests/storage/put_blob_pages.rb +30 -0
  76. data/lib/fog/azurerm/requests/storage/put_blob_properties.rb +31 -0
  77. data/lib/fog/azurerm/requests/storage/put_container_acl.rb +31 -0
  78. data/lib/fog/azurerm/requests/storage/put_container_metadata.rb +31 -0
  79. data/lib/fog/azurerm/requests/storage/put_object_url.rb +30 -0
  80. data/lib/fog/azurerm/requests/storage/release_blob_lease.rb +30 -0
  81. data/lib/fog/azurerm/requests/storage/release_container_lease.rb +30 -0
  82. data/lib/fog/azurerm/requests/storage/save_page_blob.rb +111 -0
  83. data/lib/fog/azurerm/requests/storage/wait_blob_copy_operation_to_finish.rb +56 -0
  84. data/lib/fog/azurerm/storage.rb +126 -0
  85. data/lib/fog/azurerm/utilities/general.rb +186 -0
  86. data/lib/fog/azurerm/utilities/logger_messages.yml +19 -0
  87. data/lib/fog/azurerm/version.rb +5 -0
  88. data/rake-script.sh +10 -0
  89. data/rakefile +29 -0
  90. data/test/api_stub.rb +147 -0
  91. data/test/api_stub/models/storage/directory.rb +178 -0
  92. data/test/api_stub/models/storage/file.rb +181 -0
  93. data/test/api_stub/requests/storage/directory.rb +89 -0
  94. data/test/api_stub/requests/storage/file.rb +252 -0
  95. data/test/integration/README.md +14 -0
  96. data/test/integration/blob.rb +297 -0
  97. data/test/integration/container.rb +160 -0
  98. data/test/integration/credentials/azure.yml +5 -0
  99. data/test/integration/storage_account.rb +135 -0
  100. data/test/models/storage/test_directories.rb +74 -0
  101. data/test/models/storage/test_directory.rb +178 -0
  102. data/test/models/storage/test_file.rb +294 -0
  103. data/test/models/storage/test_files.rb +234 -0
  104. data/test/requests/storage/test_acquire_blob_lease.rb +36 -0
  105. data/test/requests/storage/test_acquire_container_lease.rb +36 -0
  106. data/test/requests/storage/test_check_container_exists.rb +18 -0
  107. data/test/requests/storage/test_commit_blob_blocks.rb +34 -0
  108. data/test/requests/storage/test_compare_container_blobs.rb +36 -0
  109. data/test/requests/storage/test_copy_blob.rb +39 -0
  110. data/test/requests/storage/test_copy_blob_from_uri.rb +36 -0
  111. data/test/requests/storage/test_create_block_blob.rb +80 -0
  112. data/test/requests/storage/test_create_container.rb +36 -0
  113. data/test/requests/storage/test_create_disk.rb +70 -0
  114. data/test/requests/storage/test_create_page_blob.rb +34 -0
  115. data/test/requests/storage/test_delete_blob.rb +42 -0
  116. data/test/requests/storage/test_delete_blob_https_url.rb +32 -0
  117. data/test/requests/storage/test_delete_container.rb +42 -0
  118. data/test/requests/storage/test_delete_disk.rb +30 -0
  119. data/test/requests/storage/test_get_blob.rb +141 -0
  120. data/test/requests/storage/test_get_blob_http_url.rb +30 -0
  121. data/test/requests/storage/test_get_blob_https_url.rb +32 -0
  122. data/test/requests/storage/test_get_blob_properties.rb +47 -0
  123. data/test/requests/storage/test_get_blob_url.rb +75 -0
  124. data/test/requests/storage/test_get_container_acl.rb +37 -0
  125. data/test/requests/storage/test_get_container_properties.rb +45 -0
  126. data/test/requests/storage/test_get_container_url.rb +33 -0
  127. data/test/requests/storage/test_list_blobs.rb +77 -0
  128. data/test/requests/storage/test_list_containers.rb +54 -0
  129. data/test/requests/storage/test_multipart_save_block_blob.rb +105 -0
  130. data/test/requests/storage/test_put_blob_block.rb +34 -0
  131. data/test/requests/storage/test_put_blob_https_url.rb +32 -0
  132. data/test/requests/storage/test_put_blob_metadata.rb +36 -0
  133. data/test/requests/storage/test_put_blob_pages.rb +34 -0
  134. data/test/requests/storage/test_put_blob_properties.rb +39 -0
  135. data/test/requests/storage/test_put_container_acl.rb +34 -0
  136. data/test/requests/storage/test_put_container_metadata.rb +36 -0
  137. data/test/requests/storage/test_release_blob_lease.rb +34 -0
  138. data/test/requests/storage/test_release_container_lease.rb +34 -0
  139. data/test/requests/storage/test_save_page_blob.rb +115 -0
  140. data/test/requests/storage/test_wait_blob_copy_operation_to_finish.rb +148 -0
  141. data/test/smoke_tests/compute/test_resource_group_smoke.rb +37 -0
  142. data/test/test_credentials.rb +63 -0
  143. data/test/test_helper.rb +846 -0
  144. metadata +352 -0
@@ -0,0 +1,14 @@
1
+ # Integration Tests
2
+
3
+ To run Integration Tests, first enter following information from your Azure subscription in **credentials\azure.yml** file:
4
+
5
+ - tenant_id
6
+ - client_id
7
+ - client_secret
8
+ - subscription_id
9
+
10
+ Then run **ruby file_name.rb** to run integration test for a specific service e.g. For integration tests of storage account, run:
11
+
12
+ **ruby storage_account.rb**
13
+
14
+ Also make sure the **DEBUG** flag is set in your fog environment to see proper logging.
@@ -0,0 +1,297 @@
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(File.expand_path('credentials/azure.yml', __dir__))
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
+ environment: azure_credentials['environment']
24
+ )
25
+
26
+ ########################################################################################################################
27
+ ###################### Resource names #####################
28
+ ########################################################################################################################
29
+
30
+ time = current_time
31
+ resource_group_name = "Blob-RG-#{time}"
32
+ storage_account_name = "sa#{time}"
33
+ container_name = "con#{time}"
34
+ test_container_name = "tcon#{time}"
35
+
36
+ ########################################################################################################################
37
+ ###################### Prerequisites ######################
38
+ ########################################################################################################################
39
+
40
+ begin
41
+ resource_group = rs.resource_groups.create(
42
+ name: resource_group_name,
43
+ location: LOCATION
44
+ )
45
+
46
+ storage_account = storage.storage_accounts.create(
47
+ name: storage_account_name,
48
+ location: LOCATION,
49
+ resource_group: resource_group_name
50
+ )
51
+
52
+ access_key = storage_account.get_access_keys[0].value
53
+ Fog::Logger.debug access_key.inspect
54
+ storage_data = Fog::Storage.new(
55
+ provider: 'AzureRM',
56
+ azure_storage_account_name: storage_account.name,
57
+ azure_storage_access_key: access_key,
58
+ environment: azure_credentials['environment']
59
+ )
60
+
61
+ ########################################################################################################################
62
+ ###################### Create Container ######################
63
+ ########################################################################################################################
64
+
65
+ storage_data.directories.create(
66
+ key: container_name,
67
+ public: true
68
+ )
69
+
70
+ storage_data.directories.create(
71
+ key: test_container_name,
72
+ public: false
73
+ )
74
+
75
+ ########################################################################################################################
76
+ ###################### Get container ######################
77
+ ########################################################################################################################
78
+
79
+ container = storage_data.directories.get(container_name)
80
+ test_container = storage_data.directories.get(test_container_name)
81
+
82
+ ########################################################################################################################
83
+ ###################### Create a small block blob ######################
84
+ ########################################################################################################################
85
+
86
+ small_blob_name = 'small_test_file.dat'
87
+ content = Array.new(1024 * 1024) { [*'0'..'9', *'a'..'z'].sample }.join
88
+
89
+ options = {
90
+ key: small_blob_name,
91
+ body: content
92
+ }
93
+ blob = container.files.create(options)
94
+ puts "Created small block blob: #{blob.key}"
95
+
96
+ ########################################################################################################################
97
+ ###################### Create a large block blob ######################
98
+ ########################################################################################################################
99
+
100
+ large_blob_name = 'large_test_file.dat'
101
+ begin
102
+ large_blob_file_name = '/tmp/large_test_file.dat'
103
+ File.open(large_blob_file_name, 'w') do |large_file|
104
+ 33.times do
105
+ large_file.puts(content)
106
+ end
107
+ end
108
+
109
+ File.open(large_blob_file_name) do |file|
110
+ options = {
111
+ key: large_blob_name,
112
+ body: file
113
+ }
114
+ blob = container.files.create(options)
115
+ puts "Created large block blob: #{blob.key}"
116
+ end
117
+ ensure
118
+ File.delete(large_blob_file_name) if File.exist?(large_blob_file_name)
119
+ end
120
+
121
+ ########################################################################################################################
122
+ ###################### Create a small page blob ######################
123
+ ########################################################################################################################
124
+
125
+ small_page_blob_name = 'small_test_file.vhd'
126
+ content = Array.new(1024 * 1024 + 512) { [*'0'..'9', *'a'..'z'].sample }.join
127
+
128
+ options = {
129
+ key: small_page_blob_name,
130
+ body: content,
131
+ blob_type: 'PageBlob'
132
+ }
133
+ blob = container.files.create(options)
134
+ puts "Created small page blob: #{blob.key}"
135
+
136
+ ########################################################################################################################
137
+ ###################### Create a large page blob ######################
138
+ ########################################################################################################################
139
+
140
+ begin
141
+ large_page_blob_file_name = '/tmp/large_test_file.vhd'
142
+ large_page_blob_name = 'large_test_file.vhd'
143
+ File.open(large_page_blob_file_name, 'w') do |large_file|
144
+ content = Array.new(1024 * 1024) { [*'0'..'9', *'a'..'z'].sample }.join
145
+ 33.times do
146
+ large_file.puts(content)
147
+ end
148
+ content = Array.new(512) { [*'0'..'9', *'a'..'z'].sample }.join
149
+ large_file.puts(content)
150
+ large_file.truncate(33 * 1024 * 1024 + 512)
151
+ end
152
+
153
+ File.open(large_page_blob_file_name) do |file|
154
+ options = {
155
+ key: large_page_blob_name,
156
+ body: file,
157
+ blob_type: 'PageBlob'
158
+ }
159
+ blob = container.files.create(options)
160
+ puts "Created large page blob: #{blob.key}"
161
+ end
162
+ ensure
163
+ File.delete(large_page_blob_file_name) if File.exist?(large_page_blob_file_name)
164
+ end
165
+
166
+ ########################################################################################################################
167
+ ###################### Copy Blob ########################
168
+ ########################################################################################################################
169
+
170
+ puts "Copy blob: #{container.files.head(small_blob_name).copy(test_container_name, small_blob_name)}"
171
+
172
+ ########################################################################################################################
173
+ ###################### Get a public URL ######################
174
+ ########################################################################################################################
175
+
176
+ blob_uri = container.files.head(large_blob_name).public_url
177
+ puts "Get blob public uri: #{blob_uri}"
178
+
179
+ ########################################################################################################################
180
+ ###################### Copy Blob from URI ########################
181
+ ########################################################################################################################
182
+
183
+ copied_blob = test_container.files.new(key: 'small_blob_name')
184
+ puts "Copy blob from uri: #{copied_blob.copy_from_uri(blob_uri)}"
185
+
186
+ ########################################################################################################################
187
+ ###################### Update blob ######################
188
+ ########################################################################################################################
189
+
190
+ copied_blob.content_encoding = 'utf-8'
191
+ copied_blob.metadata = { 'owner' => 'azure' }
192
+ copied_blob.save(update_body: false)
193
+
194
+ temp = test_container.files.head(small_blob_name)
195
+ puts 'Updated blob'
196
+ Fog::Logger.debug temp.content_encoding
197
+ Fog::Logger.debug temp.metadata
198
+
199
+ ########################################################################################################################
200
+ ###################### Compare Blob #####################
201
+ ########################################################################################################################
202
+
203
+ puts "Compare blobs: #{storage_data.compare_container_blobs(container_name, test_container_name)}"
204
+
205
+ ########################################################################################################################
206
+ ###################### Blob Exist #####################
207
+ ########################################################################################################################
208
+
209
+ puts 'Blob exist' if container.files.head(small_blob_name)
210
+
211
+ ########################################################################################################################
212
+ ###################### Blob Count in a Container #####################
213
+ ########################################################################################################################
214
+
215
+ puts "Blob count in a container: #{container.files.all.length}"
216
+
217
+ ########################################################################################################################
218
+ ###################### List Blobs in a Container #####################
219
+ ########################################################################################################################
220
+
221
+ puts 'List blobs in a container:'
222
+ container.files.each do |temp_file|
223
+ puts temp_file.key
224
+ end
225
+
226
+ ########################################################################################################################
227
+ ###################### Download a small blob ######################
228
+ ########################################################################################################################
229
+
230
+ begin
231
+ downloaded_file_name = '/tmp/downloaded_' + small_blob_name
232
+ blob = container.files.get(small_blob_name)
233
+ File.open(downloaded_file_name, 'wb') do |file|
234
+ file.write(blob.body)
235
+ end
236
+ puts 'Downloaded small blob'
237
+ ensure
238
+ File.delete(downloaded_file_name) if File.exist?(downloaded_file_name)
239
+ end
240
+
241
+ ########################################################################################################################
242
+ ###################### Download a large blob ######################
243
+ ########################################################################################################################
244
+
245
+ begin
246
+ downloaded_file_name = '/tmp/downloaded_' + large_blob_name
247
+ File.open(downloaded_file_name, 'wb') do |file|
248
+ container.files.get(large_blob_name) do |chunk, remaining_bytes, total_bytes|
249
+ Fog::Logger.debug "remaining_bytes: #{remaining_bytes}, total_bytes: #{total_bytes}"
250
+ file.write(chunk)
251
+ end
252
+ end
253
+ puts 'Downloaded large blob'
254
+ ensure
255
+ File.delete(downloaded_file_name) if File.exist?(downloaded_file_name)
256
+ end
257
+
258
+ ########################################################################################################################
259
+ ###################### Get a https URL with expires ######################
260
+ ########################################################################################################################
261
+
262
+ test_blob = test_container.files.head(small_blob_name)
263
+ puts "Get https URL with expires: #{test_blob.public?}, #{test_blob.url(Time.now + 3600)}"
264
+ Fog::Logger.debug test_blob.public?
265
+ Fog::Logger.debug test_blob.url(Time.now + 3600)
266
+
267
+ ########################################################################################################################
268
+ ###################### Get a http URL with expires ######################
269
+ ########################################################################################################################
270
+
271
+ puts "Get a http URL with expires: #{test_blob.url(Time.now + 3600, scheme: 'http')}"
272
+
273
+ ########################################################################################################################
274
+ ###################### Lease Blob ######################
275
+ ########################################################################################################################
276
+
277
+ lease_id_blob = storage_data.acquire_blob_lease(container_name, large_blob_name)
278
+ puts 'Leased blob'
279
+
280
+ ########################################################################################################################
281
+ ###################### Release Leased Blob ######################
282
+ ########################################################################################################################
283
+
284
+ storage_data.release_blob_lease(container_name, large_blob_name, lease_id_blob)
285
+ puts 'Release Leased Blob'
286
+
287
+ ########################################################################################################################
288
+ ###################### Delete Blob ######################
289
+ ########################################################################################################################
290
+
291
+ blob = container.files.head(large_blob_name)
292
+ puts "Deleted blob: #{blob.destroy}"
293
+ rescue => ex
294
+ puts "Integration Test for blob is failing: #{ex.inspect}\n#{ex.backtrace.join("\n")}"
295
+ ensure
296
+ resource_group.destroy unless resource_group.nil?
297
+ end
@@ -0,0 +1,160 @@
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(File.expand_path('credentials/azure.yml', __dir__))
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
+ environment: azure_credentials['environment']
24
+ )
25
+
26
+ ########################################################################################################################
27
+ ###################### Resource names #####################
28
+ ########################################################################################################################
29
+
30
+ time = current_time
31
+ resource_group_name = "Blob-RG-#{time}"
32
+ storage_account_name = "sa#{time}"
33
+ container_name = "con#{time}"
34
+ test_container_name = "tcon#{time}"
35
+
36
+ ########################################################################################################################
37
+ ###################### Prerequisites ######################
38
+ ########################################################################################################################
39
+
40
+ begin
41
+ resource_group = rs.resource_groups.create(
42
+ name: resource_group_name,
43
+ location: LOCATION
44
+ )
45
+
46
+ storage_account_name = "sa#{current_time}"
47
+
48
+ storage_account = storage.storage_accounts.create(
49
+ name: storage_account_name,
50
+ location: LOCATION,
51
+ resource_group: resource_group_name
52
+ )
53
+
54
+ keys = storage_account.get_access_keys
55
+ access_key = keys.first.value
56
+
57
+ storage_data = Fog::Storage::AzureRM.new(
58
+ azure_storage_account_name: storage_account.name,
59
+ azure_storage_access_key: access_key,
60
+ environment: azure_credentials['environment']
61
+ )
62
+
63
+ ########################################################################################################################
64
+ ###################### Check Container Exists ######################
65
+ ########################################################################################################################
66
+
67
+ flag = storage_data.directories.check_container_exists(container_name)
68
+ puts "Container doesn't exist." unless flag
69
+
70
+ ########################################################################################################################
71
+ ###################### Create Container ######################
72
+ ########################################################################################################################
73
+
74
+ container = storage_data.directories.create(
75
+ key: container_name
76
+ )
77
+ puts "Created container: #{container.key}"
78
+
79
+ storage_data.directories.create(
80
+ key: test_container_name,
81
+ public: true
82
+ )
83
+ puts "Created second container: #{container.key}"
84
+
85
+ ########################################################################################################################
86
+ ###################### List containers ######################
87
+ ########################################################################################################################
88
+
89
+ containers = storage_data.directories.all
90
+ puts 'List containers:'
91
+ containers.each do |a_container|
92
+ puts a_container.key
93
+ end
94
+
95
+ ########################################################################################################################
96
+ ###################### Get container acl ######################
97
+ ########################################################################################################################
98
+
99
+ container = storage_data.directories.get(container_name, max_results: 1)
100
+ puts "Get container: #{container.key}"
101
+ puts "Get container access control list: #{container.acl}"
102
+
103
+ ########################################################################################################################
104
+ ###################### Update Container ######################
105
+ ########################################################################################################################
106
+
107
+ container.acl = 'container'
108
+ container.metadata = { 'owner' => 'azure' }
109
+ container.save(is_create: false)
110
+ puts 'Updated container'
111
+
112
+ ########################################################################################################################
113
+ ###################### Get container acl ######################
114
+ ########################################################################################################################
115
+
116
+ puts "Get updated container access control list: #{container.acl}"
117
+
118
+ ########################################################################################################################
119
+ ###################### Get container metadata ######################
120
+ ########################################################################################################################
121
+
122
+ puts "Get container metadata: #{container.metadata}"
123
+
124
+ ########################################################################################################################
125
+ ###################### Get container public https url ######################
126
+ ########################################################################################################################
127
+
128
+ puts "Get container public url: #{container.public_url}"
129
+
130
+ ########################################################################################################################
131
+ ###################### Get container public http url ######################
132
+ ########################################################################################################################
133
+
134
+ puts "Get container public url having scheme http: #{container.public_url(scheme: 'http')}"
135
+
136
+ ########################################################################################################################
137
+ ###################### Lease Container ######################
138
+ ########################################################################################################################
139
+
140
+ lease_id_container = storage_data.acquire_container_lease(container_name)
141
+ Fog::Logger.debug lease_id_container
142
+ puts 'Leased Container'
143
+
144
+ ########################################################################################################################
145
+ ###################### Release Leased Container ######################
146
+ ########################################################################################################################
147
+
148
+ storage_data.release_container_lease(container_name, lease_id_container)
149
+ puts 'Release Leased Container'
150
+
151
+ ########################################################################################################################
152
+ ###################### Deleted Container ######################
153
+ ########################################################################################################################
154
+
155
+ puts "Deleted container: #{container.destroy}"
156
+ rescue => ex
157
+ puts "Integration Test for container is failing: #{ex.inspect}\n#{ex.backtrace.join("\n")}"
158
+ ensure
159
+ resource_group.destroy unless resource_group.nil?
160
+ end