stuartpreston-azure-sdk-for-ruby 0.7.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -11
  3. data/.travis.yml +10 -10
  4. data/ChangeLog.txt +70 -68
  5. data/Gemfile +15 -15
  6. data/README.md +618 -618
  7. data/Rakefile +133 -133
  8. data/azure.gemspec +44 -44
  9. data/lib/azure.rb +52 -52
  10. data/lib/azure/base_management/affinity_group.rb +32 -32
  11. data/lib/azure/base_management/base_management_service.rb +304 -304
  12. data/lib/azure/base_management/location.rb +27 -27
  13. data/lib/azure/base_management/management_http_request.rb +171 -171
  14. data/lib/azure/base_management/serialization.rb +129 -129
  15. data/lib/azure/base_management/sql_management_http_request.rb +45 -45
  16. data/lib/azure/blob/blob.rb +31 -31
  17. data/lib/azure/blob/blob_service.rb +1423 -1423
  18. data/lib/azure/blob/block.rb +30 -30
  19. data/lib/azure/blob/container.rb +31 -31
  20. data/lib/azure/blob/serialization.rb +284 -284
  21. data/lib/azure/cloud_service_management/cloud_service.rb +38 -38
  22. data/lib/azure/cloud_service_management/cloud_service_management_service.rb +140 -140
  23. data/lib/azure/cloud_service_management/serialization.rb +117 -117
  24. data/lib/azure/core.rb +39 -39
  25. data/lib/azure/core/auth/authorizer.rb +36 -36
  26. data/lib/azure/core/auth/shared_key.rb +110 -110
  27. data/lib/azure/core/auth/shared_key_lite.rb +48 -48
  28. data/lib/azure/core/auth/signer.rb +48 -48
  29. data/lib/azure/core/configuration.rb +211 -211
  30. data/lib/azure/core/error.rb +22 -22
  31. data/lib/azure/core/filtered_service.rb +43 -43
  32. data/lib/azure/core/http/debug_filter.rb +35 -35
  33. data/lib/azure/core/http/http_error.rb +88 -88
  34. data/lib/azure/core/http/http_filter.rb +52 -52
  35. data/lib/azure/core/http/http_request.rb +157 -157
  36. data/lib/azure/core/http/http_response.rb +140 -140
  37. data/lib/azure/core/http/retry_policy.rb +73 -73
  38. data/lib/azure/core/http/signer_filter.rb +33 -33
  39. data/lib/azure/core/service.rb +62 -62
  40. data/lib/azure/core/signed_service.rb +42 -42
  41. data/lib/azure/core/utility.rb +190 -190
  42. data/lib/azure/queue/message.rb +29 -29
  43. data/lib/azure/queue/queue.rb +28 -28
  44. data/lib/azure/queue/queue_service.rb +567 -567
  45. data/lib/azure/queue/serialization.rb +106 -106
  46. data/lib/azure/service/access_policy.rb +25 -25
  47. data/lib/azure/service/cors.rb +11 -11
  48. data/lib/azure/service/cors_rule.rb +15 -15
  49. data/lib/azure/service/enumeration_results.rb +20 -20
  50. data/lib/azure/service/logging.rb +31 -31
  51. data/lib/azure/service/metrics.rb +30 -30
  52. data/lib/azure/service/retention_policy.rb +24 -24
  53. data/lib/azure/service/serialization.rb +297 -297
  54. data/lib/azure/service/signed_identifier.rb +29 -29
  55. data/lib/azure/service/storage_service.rb +82 -82
  56. data/lib/azure/service/storage_service_properties.rb +37 -37
  57. data/lib/azure/service_bus/action.rb +21 -21
  58. data/lib/azure/service_bus/auth/wrap_service.rb +88 -88
  59. data/lib/azure/service_bus/auth/wrap_signer.rb +68 -68
  60. data/lib/azure/service_bus/brokered_message.rb +123 -123
  61. data/lib/azure/service_bus/brokered_message_serializer.rb +159 -159
  62. data/lib/azure/service_bus/correlation_filter.rb +45 -45
  63. data/lib/azure/service_bus/empty_rule_action.rb +29 -29
  64. data/lib/azure/service_bus/false_filter.rb +38 -38
  65. data/lib/azure/service_bus/filter.rb +21 -21
  66. data/lib/azure/service_bus/interval.rb +103 -103
  67. data/lib/azure/service_bus/queue.rb +229 -229
  68. data/lib/azure/service_bus/relay.rb +87 -87
  69. data/lib/azure/service_bus/resource.rb +108 -108
  70. data/lib/azure/service_bus/rule.rb +97 -97
  71. data/lib/azure/service_bus/rule_aspect.rb +34 -34
  72. data/lib/azure/service_bus/serialization.rb +161 -161
  73. data/lib/azure/service_bus/service_bus_service.rb +896 -896
  74. data/lib/azure/service_bus/sql_filter.rb +50 -50
  75. data/lib/azure/service_bus/sql_rule_action.rb +50 -50
  76. data/lib/azure/service_bus/subscription.rb +183 -183
  77. data/lib/azure/service_bus/topic.rb +186 -186
  78. data/lib/azure/service_bus/true_filter.rb +38 -38
  79. data/lib/azure/sql_database_management/serialization.rb +111 -111
  80. data/lib/azure/sql_database_management/sql_database.rb +31 -31
  81. data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -200
  82. data/lib/azure/storage_management/serialization.rb +184 -184
  83. data/lib/azure/storage_management/storage_account.rb +40 -40
  84. data/lib/azure/storage_management/storage_management_service.rb +166 -166
  85. data/lib/azure/table/auth/shared_key.rb +92 -92
  86. data/lib/azure/table/auth/shared_key_lite.rb +44 -44
  87. data/lib/azure/table/batch.rb +329 -329
  88. data/lib/azure/table/batch_response.rb +118 -118
  89. data/lib/azure/table/edmtype.rb +126 -126
  90. data/lib/azure/table/entity.rb +30 -30
  91. data/lib/azure/table/guid.rb +23 -23
  92. data/lib/azure/table/query.rb +111 -111
  93. data/lib/azure/table/serialization.rb +107 -107
  94. data/lib/azure/table/table_service.rb +559 -559
  95. data/lib/azure/version.rb +31 -31
  96. data/lib/azure/virtual_machine_image_management/serialization.rb +66 -66
  97. data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -25
  98. data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -25
  99. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +94 -94
  100. data/lib/azure/virtual_machine_management/serialization.rb +462 -462
  101. data/lib/azure/virtual_machine_management/virtual_machine.rb +45 -45
  102. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +588 -588
  103. data/lib/azure/virtual_network_management/serialization.rb +190 -190
  104. data/lib/azure/virtual_network_management/virtual_network.rb +37 -37
  105. data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -109
  106. data/test/fixtures/affinity_group.xml +33 -33
  107. data/test/fixtures/all_containers.xml +20 -20
  108. data/test/fixtures/all_tables.xml +22 -22
  109. data/test/fixtures/certificate.pem +21 -21
  110. data/test/fixtures/container_acl.xml +11 -11
  111. data/test/fixtures/create_sql_database_server.xml +1 -1
  112. data/test/fixtures/create_storage_desc_error.xml +5 -5
  113. data/test/fixtures/create_storage_extendedprop_error.xml +8 -8
  114. data/test/fixtures/create_storage_extendedpropname_error.xml +6 -6
  115. data/test/fixtures/create_storage_full_error.xml +6 -6
  116. data/test/fixtures/create_storage_label_error.xml +5 -5
  117. data/test/fixtures/create_storage_location_error.xml +5 -5
  118. data/test/fixtures/create_storage_name_error.xml +6 -6
  119. data/test/fixtures/create_table_response_entry.xml +15 -15
  120. data/test/fixtures/delete_storage_container_error.xml +5 -5
  121. data/test/fixtures/delete_storage_error.xml +5 -5
  122. data/test/fixtures/deployment_error.xml +5 -5
  123. data/test/fixtures/get_storage_account_error.xml +5 -5
  124. data/test/fixtures/get_storage_account_properties.xml +31 -31
  125. data/test/fixtures/get_storage_account_properties_new.xml +31 -31
  126. data/test/fixtures/http_error.xml +5 -5
  127. data/test/fixtures/insert_entity_response_entry.xml +25 -25
  128. data/test/fixtures/list_affinity_groups.xml +22 -22
  129. data/test/fixtures/list_blobs.xml +120 -120
  130. data/test/fixtures/list_block_all_with_none_committed.xml +21 -21
  131. data/test/fixtures/list_blocks_all.xml +22 -22
  132. data/test/fixtures/list_blocks_committed.xml +12 -12
  133. data/test/fixtures/list_cloud_services.xml +38 -38
  134. data/test/fixtures/list_containers.xml +37 -37
  135. data/test/fixtures/list_firewall_management_endpoint.xml +27 -27
  136. data/test/fixtures/list_images.xml +110 -110
  137. data/test/fixtures/list_locations.xml +62 -62
  138. data/test/fixtures/list_page_ranges.xml +10 -10
  139. data/test/fixtures/list_sql_database.xml +36 -36
  140. data/test/fixtures/list_sql_server_firewall.xml +23 -23
  141. data/test/fixtures/list_storage_account_single.xml +24 -24
  142. data/test/fixtures/list_storage_accounts.xml +45 -45
  143. data/test/fixtures/list_virtual_networks.xml +92 -92
  144. data/test/fixtures/logging.xml +11 -11
  145. data/test/fixtures/management_certificate.pem +55 -55
  146. data/test/fixtures/messages.xml +12 -12
  147. data/test/fixtures/metrics.xml +10 -10
  148. data/test/fixtures/privatekey.key +28 -28
  149. data/test/fixtures/query_entities_empty_response.xml +7 -7
  150. data/test/fixtures/query_entities_response.xml +45 -45
  151. data/test/fixtures/queue_service_properties.xml +22 -22
  152. data/test/fixtures/queue_service_properties_original.xml +19 -19
  153. data/test/fixtures/queues.xml +16 -16
  154. data/test/fixtures/retention_policy.xml +5 -5
  155. data/test/fixtures/sb_default_create_queue_response.xml +23 -23
  156. data/test/fixtures/sb_default_create_relay_response.xml +15 -15
  157. data/test/fixtures/sb_default_create_topic_response.xml +18 -18
  158. data/test/fixtures/sb_get_access_token_response.txt +1 -1
  159. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -9
  160. data/test/fixtures/storage_service_properties.xml +54 -54
  161. data/test/fixtures/update_storage_account.xml +16 -16
  162. data/test/fixtures/update_storage_error.xml +4 -4
  163. data/test/fixtures/updated_storage_accounts.xml +52 -52
  164. data/test/fixtures/virtual_machine.xml +113 -113
  165. data/test/fixtures/windows_virtual_machine.xml +106 -106
  166. data/test/integration/affinity_group/Affinity_test.rb +55 -55
  167. data/test/integration/affinity_group/Create_Affinity_test.rb +63 -63
  168. data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -56
  169. data/test/integration/affinity_group/List_Affinity_test.rb +41 -41
  170. data/test/integration/affinity_group/Update_Affinity_test.rb +82 -82
  171. data/test/integration/blob/blob_gb18030_test.rb +199 -199
  172. data/test/integration/blob/blob_metadata_test.rb +75 -75
  173. data/test/integration/blob/blob_pages_test.rb +119 -119
  174. data/test/integration/blob/blob_properties_test.rb +77 -77
  175. data/test/integration/blob/block_blob_test.rb +254 -254
  176. data/test/integration/blob/container/container_acl_test.rb +69 -69
  177. data/test/integration/blob/container/container_metadata_test.rb +50 -50
  178. data/test/integration/blob/container/create_container_test.rb +60 -60
  179. data/test/integration/blob/container/delete_container_test.rb +39 -39
  180. data/test/integration/blob/container/get_container_properties_test.rb +48 -48
  181. data/test/integration/blob/container/list_containers_test.rb +79 -79
  182. data/test/integration/blob/container/root_container_test.rb +53 -53
  183. data/test/integration/blob/copy_blob_test.rb +113 -113
  184. data/test/integration/blob/create_blob_snapshot_test.rb +80 -80
  185. data/test/integration/blob/create_page_blob_test.rb +83 -83
  186. data/test/integration/blob/delete_blob_test.rb +159 -159
  187. data/test/integration/blob/get_blob_test.rb +65 -65
  188. data/test/integration/blob/informative_errors_test.rb +38 -38
  189. data/test/integration/blob/lease/acquire_lease_test.rb +36 -36
  190. data/test/integration/blob/lease/break_lease_test.rb +40 -40
  191. data/test/integration/blob/lease/release_lease_test.rb +40 -40
  192. data/test/integration/blob/lease/renew_lease_test.rb +42 -42
  193. data/test/integration/blob/list_blobs_test.rb +113 -113
  194. data/test/integration/cloud_service/Cloud_Create_test.rb +44 -44
  195. data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -44
  196. data/test/integration/database/create_sql_server_firewall_test.rb +86 -86
  197. data/test/integration/database/create_sql_server_test.rb +53 -53
  198. data/test/integration/database/delete_sql_server_firewall_test.rb +70 -70
  199. data/test/integration/database/delete_sql_server_test.rb +58 -58
  200. data/test/integration/database/list_sql_server_firewall_test.rb +45 -45
  201. data/test/integration/database/list_sql_servers_test.rb +44 -44
  202. data/test/integration/database/reset_password_sql_server_test.rb +55 -55
  203. data/test/integration/location/Location_List_test.rb +39 -39
  204. data/test/integration/queue/clear_messages_test.rb +42 -42
  205. data/test/integration/queue/create_message_test.rb +75 -75
  206. data/test/integration/queue/create_queue_test.rb +50 -50
  207. data/test/integration/queue/delete_message_test.rb +67 -67
  208. data/test/integration/queue/delete_queue_test.rb +45 -45
  209. data/test/integration/queue/informative_errors_test.rb +41 -41
  210. data/test/integration/queue/list_messages_encoded_test.rb +79 -79
  211. data/test/integration/queue/list_messages_test.rb +79 -79
  212. data/test/integration/queue/list_queues_test.rb +44 -44
  213. data/test/integration/queue/peek_messages_test.rb +59 -59
  214. data/test/integration/queue/queue_gb18030_test.rb +131 -131
  215. data/test/integration/queue/queue_metadata_test.rb +40 -40
  216. data/test/integration/queue/update_message_test.rb +74 -74
  217. data/test/integration/service_bus/informative_errors_test.rb +36 -36
  218. data/test/integration/service_bus/queues_scenario_test.rb +200 -200
  219. data/test/integration/service_bus/queues_test.rb +265 -265
  220. data/test/integration/service_bus/relay_test.rb +131 -131
  221. data/test/integration/service_bus/rules_test.rb +144 -144
  222. data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -182
  223. data/test/integration/service_bus/scenario_test.rb +101 -101
  224. data/test/integration/service_bus/subscriptions_test.rb +211 -211
  225. data/test/integration/service_bus/topics_scenario_test.rb +406 -406
  226. data/test/integration/service_bus/topics_test.rb +129 -129
  227. data/test/integration/storage_management/storage_management_test.rb +160 -160
  228. data/test/integration/table/create_table_test.rb +35 -35
  229. data/test/integration/table/delete_entity_batch_test.rb +106 -106
  230. data/test/integration/table/delete_entity_test.rb +93 -93
  231. data/test/integration/table/delete_table_test.rb +39 -39
  232. data/test/integration/table/get_table_test.rb +36 -36
  233. data/test/integration/table/informative_errors_test.rb +38 -38
  234. data/test/integration/table/insert_entity_batch_test.rb +99 -99
  235. data/test/integration/table/insert_entity_test.rb +87 -87
  236. data/test/integration/table/insert_or_merge_entity_batch_test.rb +158 -158
  237. data/test/integration/table/insert_or_merge_entity_test.rb +142 -142
  238. data/test/integration/table/insert_or_replace_entity_batch_test.rb +151 -151
  239. data/test/integration/table/insert_or_replace_entity_test.rb +136 -136
  240. data/test/integration/table/merge_entity_batch_test.rb +127 -127
  241. data/test/integration/table/merge_entity_test.rb +112 -112
  242. data/test/integration/table/query_entities_test.rb +194 -194
  243. data/test/integration/table/query_tables_test.rb +42 -42
  244. data/test/integration/table/query_test.rb +250 -250
  245. data/test/integration/table/table_acl_test.rb +51 -51
  246. data/test/integration/table/table_gb18030_test.rb +355 -355
  247. data/test/integration/table/update_entity_batch_test.rb +148 -148
  248. data/test/integration/table/update_entity_test.rb +130 -130
  249. data/test/integration/test_helper.rb +42 -42
  250. data/test/integration/vm/VM_Create_test.rb +260 -260
  251. data/test/integration/vm/VM_Delete_test.rb +55 -55
  252. data/test/integration/vm/VM_Operations_test.rb +173 -173
  253. data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -37
  254. data/test/integration/vm_image/virtual_machine_image_test.rb +36 -36
  255. data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -122
  256. data/test/integration/vnet/Virtual_Network_list_test.rb +53 -53
  257. data/test/support/env.rb +19 -19
  258. data/test/support/fixtures.rb +36 -36
  259. data/test/support/name_generator.rb +168 -168
  260. data/test/support/stubs.rb +42 -42
  261. data/test/support/virtual_machine_name_generator.rb +102 -102
  262. data/test/support/virtual_network_helper.rb +73 -73
  263. data/test/test_helper.rb +53 -53
  264. data/test/unit/affinity_group/affinity_group_test.rb +192 -192
  265. data/test/unit/affinity_group/serialization_test.rb +88 -88
  266. data/test/unit/base_management/location_test.rb +57 -57
  267. data/test/unit/blob/blob_service_test.rb +1946 -1946
  268. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -94
  269. data/test/unit/cloud_service_management/serialization_test.rb +169 -169
  270. data/test/unit/core/auth/shared_key_lite_test.rb +51 -51
  271. data/test/unit/core/auth/shared_key_test.rb +58 -58
  272. data/test/unit/core/auth/signer_test.rb +30 -30
  273. data/test/unit/core/http/http_error_test.rb +57 -57
  274. data/test/unit/core/http/http_request_test.rb +66 -66
  275. data/test/unit/core/http/http_response_test.rb +45 -45
  276. data/test/unit/core/http/retry_policy_test.rb +23 -23
  277. data/test/unit/database/serialization_test.rb +97 -97
  278. data/test/unit/database/sql_database_server_service_test.rb +288 -288
  279. data/test/unit/service/serialization_test.rb +532 -532
  280. data/test/unit/service/storage_service_test.rb +292 -292
  281. data/test/unit/storage_management/serialization_test.rb +232 -232
  282. data/test/unit/storage_management/storage_management_service_test.rb +261 -261
  283. data/test/unit/table/edmtype_test.rb +107 -107
  284. data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -35
  285. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -65
  286. data/test/unit/virtual_machine_management/serialization_test.rb +258 -258
  287. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -440
  288. data/test/unit/vnet/serialization_test.rb +187 -187
  289. data/test/unit/vnet/virtual_network_management_service_test.rb +131 -131
  290. metadata +34 -27
@@ -1,184 +1,184 @@
1
- #-------------------------------------------------------------------------
2
- # Copyright 2013 Microsoft Open Technologies, Inc.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- #--------------------------------------------------------------------------
15
- require 'base64'
16
- require 'azure/storage_management/storage_account'
17
-
18
- module Azure
19
- module StorageManagement
20
- # Storage management serialization module is responsible for converting
21
- # the objects to XML and vice versa.
22
- module Serialization
23
- def self.storage_services_to_xml(name, options = {})
24
- builder = Nokogiri::XML::Builder.new do |xml|
25
- xml.CreateStorageServiceInput(
26
- 'xmlns' => 'http://schemas.microsoft.com/windowsazure'
27
- ) do
28
- xml.ServiceName(name)
29
- label = options[:label] || name
30
- xml.Label(Base64.encode64(label))
31
- xml.Description options[:description]\
32
- || 'Explicitly created storage service'
33
- unless options[:affinity_group_name].nil?
34
- xml.AffinityGroup options[:affinity_group_name]
35
- else
36
- xml.Location options[:location]
37
- end
38
- add_options_to_xml(xml, options)
39
- end
40
- end
41
- builder.doc.to_xml
42
- end
43
-
44
- def self.storage_services_from_xml(storage_xml)
45
- storage_accounts = []
46
- storage_services_xml = storage_xml.css('StorageService')
47
- storage_services_xml.each do |storage_service_xml|
48
- storage_account = StorageAccount.new
49
-
50
- storage_account.url = xml_content(storage_service_xml, 'Url')
51
- storage_account.name = xml_content(
52
- storage_service_xml, 'ServiceName'
53
- )
54
-
55
- storage_service_properties = storage_service_xml.css(
56
- 'StorageServiceProperties'
57
- )
58
-
59
- storage_account.description = xml_content(
60
- storage_service_properties, 'Description'
61
- )
62
- storage_account.affinity_group = xml_content(
63
- storage_service_properties, 'AffinityGroup'
64
- )
65
- storage_account.location = xml_content(
66
- storage_service_properties, 'Location'
67
- )
68
- storage_account.label = Base64.decode64(
69
- xml_content(storage_service_properties, 'Label')
70
- )
71
- storage_account.status = xml_content(
72
- storage_service_properties, 'Status'
73
- )
74
- storage_account.endpoints = storage_service_properties.css(
75
- 'Endpoints Endpoint'
76
- ).map { |endpoint| endpoint.content }
77
- storage_account.geo_replication_enabled = xml_content(
78
- storage_service_properties, 'GeoReplicationEnabled'
79
- )
80
- storage_account.geo_primary_region = xml_content(
81
- storage_service_properties, 'GeoPrimaryRegion'
82
- )
83
- storage_account.status_of_primary = xml_content(
84
- storage_service_properties, 'StatusOfPrimary'
85
- )
86
- storage_account.last_geo_failover_time = xml_content(
87
- storage_service_properties, 'LastGeoFailoverTime'
88
- )
89
- storage_account.geo_secondary_region = xml_content(
90
- storage_service_properties, 'GeoSecondaryRegion'
91
- )
92
- storage_account.status_of_secondary = xml_content(
93
- storage_service_properties, 'StatusOfSecondary'
94
- )
95
- storage_account.creation_time = xml_content(
96
- storage_service_properties, 'CreationTime'
97
- )
98
- storage_account.extended_properties = storage_service_xml.css(
99
- 'ExtendedProperties ExtendedProperty'
100
- ).map do |prop|
101
- {
102
- name: xml_content(prop, 'Name'),
103
- value: xml_content(prop, 'Value')
104
- }
105
- end
106
-
107
- storage_accounts << storage_account
108
- end
109
-
110
- storage_accounts.compact
111
- end
112
-
113
- def self.storage_update_to_xml(options)
114
- # Cannot update if options is nil or empty
115
- fail 'No options specified' if options.nil? || options.empty?
116
-
117
- # Either one of Label, or Description is required.
118
- if (options[:label].nil? || options[:label].empty?) &&
119
- (options[:description].nil? || options[:description].empty?)
120
- fail 'Either one of Label or Description'\
121
- ' has to be provided. Both cannot be empty'
122
- end
123
-
124
- # The input param may not be nil or empty, but the values inside may
125
- # be. Check if atleast one value exists before proceeding.
126
- is_empty = true
127
- options.each do |option, value|
128
- case option
129
- when :description, :label
130
- is_empty = value.nil? || value.empty?
131
- when :geo_replication_enabled
132
- is_empty = !(value.kind_of?(TrueClass)\
133
- || value.kind_of?(FalseClass))
134
- when :extended_properties
135
- value.each do |p, v|
136
- is_empty = ((p.nil? || p.empty?) || (v.nil? || v.empty?))
137
- break unless is_empty
138
- end
139
- end
140
-
141
- break unless is_empty
142
- end
143
-
144
- # Raise a RuntimeError if no options were provided
145
- fail 'No Options Specified' if is_empty
146
-
147
- builder = Nokogiri::XML::Builder.new do |xml|
148
- xml.UpdateStorageServiceInput(
149
- 'xmlns' => 'http://schemas.microsoft.com/windowsazure'
150
- ) do
151
- # Check if label is nil. Use description only if label is nil
152
- if options[:label].nil? || options[:label].empty?
153
- desc = options[:description]
154
- xml.Description(desc) unless desc.nil? || desc.empty?
155
- else
156
- label = Base64.encode64(options[:label])
157
- xml.Label(label) unless label.nil? || label.empty?
158
- end
159
- add_options_to_xml(xml, options)
160
- end
161
- end
162
- builder.to_xml
163
- end
164
-
165
- def self.add_options_to_xml(xml, options = {})
166
- gre = options[:geo_replication_enabled]
167
- xml.GeoReplicationEnabled(
168
- gre
169
- ) unless gre.nil?\
170
- || !(gre.kind_of?(TrueClass) || gre.kind_of?(FalseClass))
171
- xml.ExtendedProperties do
172
- options[:extended_properties].each do |name, value|
173
- xml.ExtendedProperty do
174
- xml.Name name
175
- xml.Value value
176
- end unless (name.nil? || name.empty?)\
177
- || (value.nil? || value.empty?)
178
- end
179
- end unless options[:extended_properties].nil?\
180
- || options[:extended_properties].empty?
181
- end
182
- end
183
- end
184
- end
1
+ #-------------------------------------------------------------------------
2
+ # Copyright 2013 Microsoft Open Technologies, Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #--------------------------------------------------------------------------
15
+ require 'base64'
16
+ require 'azure/storage_management/storage_account'
17
+
18
+ module Azure
19
+ module StorageManagement
20
+ # Storage management serialization module is responsible for converting
21
+ # the objects to XML and vice versa.
22
+ module Serialization
23
+ def self.storage_services_to_xml(name, options = {})
24
+ builder = Nokogiri::XML::Builder.new do |xml|
25
+ xml.CreateStorageServiceInput(
26
+ 'xmlns' => 'http://schemas.microsoft.com/windowsazure'
27
+ ) do
28
+ xml.ServiceName(name)
29
+ label = options[:label] || name
30
+ xml.Label(Base64.encode64(label))
31
+ xml.Description options[:description]\
32
+ || 'Explicitly created storage service'
33
+ unless options[:affinity_group_name].nil?
34
+ xml.AffinityGroup options[:affinity_group_name]
35
+ else
36
+ xml.Location options[:location]
37
+ end
38
+ add_options_to_xml(xml, options)
39
+ end
40
+ end
41
+ builder.doc.to_xml
42
+ end
43
+
44
+ def self.storage_services_from_xml(storage_xml)
45
+ storage_accounts = []
46
+ storage_services_xml = storage_xml.css('StorageService')
47
+ storage_services_xml.each do |storage_service_xml|
48
+ storage_account = StorageAccount.new
49
+
50
+ storage_account.url = xml_content(storage_service_xml, 'Url')
51
+ storage_account.name = xml_content(
52
+ storage_service_xml, 'ServiceName'
53
+ )
54
+
55
+ storage_service_properties = storage_service_xml.css(
56
+ 'StorageServiceProperties'
57
+ )
58
+
59
+ storage_account.description = xml_content(
60
+ storage_service_properties, 'Description'
61
+ )
62
+ storage_account.affinity_group = xml_content(
63
+ storage_service_properties, 'AffinityGroup'
64
+ )
65
+ storage_account.location = xml_content(
66
+ storage_service_properties, 'Location'
67
+ )
68
+ storage_account.label = Base64.decode64(
69
+ xml_content(storage_service_properties, 'Label')
70
+ )
71
+ storage_account.status = xml_content(
72
+ storage_service_properties, 'Status'
73
+ )
74
+ storage_account.endpoints = storage_service_properties.css(
75
+ 'Endpoints Endpoint'
76
+ ).map { |endpoint| endpoint.content }
77
+ storage_account.geo_replication_enabled = xml_content(
78
+ storage_service_properties, 'GeoReplicationEnabled'
79
+ )
80
+ storage_account.geo_primary_region = xml_content(
81
+ storage_service_properties, 'GeoPrimaryRegion'
82
+ )
83
+ storage_account.status_of_primary = xml_content(
84
+ storage_service_properties, 'StatusOfPrimary'
85
+ )
86
+ storage_account.last_geo_failover_time = xml_content(
87
+ storage_service_properties, 'LastGeoFailoverTime'
88
+ )
89
+ storage_account.geo_secondary_region = xml_content(
90
+ storage_service_properties, 'GeoSecondaryRegion'
91
+ )
92
+ storage_account.status_of_secondary = xml_content(
93
+ storage_service_properties, 'StatusOfSecondary'
94
+ )
95
+ storage_account.creation_time = xml_content(
96
+ storage_service_properties, 'CreationTime'
97
+ )
98
+ storage_account.extended_properties = storage_service_xml.css(
99
+ 'ExtendedProperties ExtendedProperty'
100
+ ).map do |prop|
101
+ {
102
+ name: xml_content(prop, 'Name'),
103
+ value: xml_content(prop, 'Value')
104
+ }
105
+ end
106
+
107
+ storage_accounts << storage_account
108
+ end
109
+
110
+ storage_accounts.compact
111
+ end
112
+
113
+ def self.storage_update_to_xml(options)
114
+ # Cannot update if options is nil or empty
115
+ fail 'No options specified' if options.nil? || options.empty?
116
+
117
+ # Either one of Label, or Description is required.
118
+ if (options[:label].nil? || options[:label].empty?) &&
119
+ (options[:description].nil? || options[:description].empty?)
120
+ fail 'Either one of Label or Description'\
121
+ ' has to be provided. Both cannot be empty'
122
+ end
123
+
124
+ # The input param may not be nil or empty, but the values inside may
125
+ # be. Check if atleast one value exists before proceeding.
126
+ is_empty = true
127
+ options.each do |option, value|
128
+ case option
129
+ when :description, :label
130
+ is_empty = value.nil? || value.empty?
131
+ when :geo_replication_enabled
132
+ is_empty = !(value.kind_of?(TrueClass)\
133
+ || value.kind_of?(FalseClass))
134
+ when :extended_properties
135
+ value.each do |p, v|
136
+ is_empty = ((p.nil? || p.empty?) || (v.nil? || v.empty?))
137
+ break unless is_empty
138
+ end
139
+ end
140
+
141
+ break unless is_empty
142
+ end
143
+
144
+ # Raise a RuntimeError if no options were provided
145
+ fail 'No Options Specified' if is_empty
146
+
147
+ builder = Nokogiri::XML::Builder.new do |xml|
148
+ xml.UpdateStorageServiceInput(
149
+ 'xmlns' => 'http://schemas.microsoft.com/windowsazure'
150
+ ) do
151
+ # Check if label is nil. Use description only if label is nil
152
+ if options[:label].nil? || options[:label].empty?
153
+ desc = options[:description]
154
+ xml.Description(desc) unless desc.nil? || desc.empty?
155
+ else
156
+ label = Base64.encode64(options[:label])
157
+ xml.Label(label) unless label.nil? || label.empty?
158
+ end
159
+ add_options_to_xml(xml, options)
160
+ end
161
+ end
162
+ builder.to_xml
163
+ end
164
+
165
+ def self.add_options_to_xml(xml, options = {})
166
+ gre = options[:geo_replication_enabled]
167
+ xml.GeoReplicationEnabled(
168
+ gre
169
+ ) unless gre.nil?\
170
+ || !(gre.kind_of?(TrueClass) || gre.kind_of?(FalseClass))
171
+ xml.ExtendedProperties do
172
+ options[:extended_properties].each do |name, value|
173
+ xml.ExtendedProperty do
174
+ xml.Name name
175
+ xml.Value value
176
+ end unless (name.nil? || name.empty?)\
177
+ || (value.nil? || value.empty?)
178
+ end
179
+ end unless options[:extended_properties].nil?\
180
+ || options[:extended_properties].empty?
181
+ end
182
+ end
183
+ end
184
+ end
@@ -1,40 +1,40 @@
1
- #-------------------------------------------------------------------------
2
- # Copyright 2013 Microsoft Open Technologies, Inc.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- #--------------------------------------------------------------------------
15
- module Azure
16
- module StorageManagement
17
- # Represents a Windows Azure storage account
18
- class StorageAccount
19
- def initialize
20
- yield self if block_given?
21
- end
22
- attr_accessor :url
23
- attr_accessor :name
24
- attr_accessor :description
25
- attr_accessor :location
26
- attr_accessor :affinity_group
27
- attr_accessor :label
28
- attr_accessor :status
29
- attr_accessor :endpoints
30
- attr_accessor :geo_replication_enabled
31
- attr_accessor :geo_primary_region
32
- attr_accessor :status_of_primary
33
- attr_accessor :last_geo_failover_time
34
- attr_accessor :geo_secondary_region
35
- attr_accessor :status_of_secondary
36
- attr_accessor :creation_time
37
- attr_accessor :extended_properties
38
- end
39
- end
40
- end
1
+ #-------------------------------------------------------------------------
2
+ # Copyright 2013 Microsoft Open Technologies, Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #--------------------------------------------------------------------------
15
+ module Azure
16
+ module StorageManagement
17
+ # Represents a Windows Azure storage account
18
+ class StorageAccount
19
+ def initialize
20
+ yield self if block_given?
21
+ end
22
+ attr_accessor :url
23
+ attr_accessor :name
24
+ attr_accessor :description
25
+ attr_accessor :location
26
+ attr_accessor :affinity_group
27
+ attr_accessor :label
28
+ attr_accessor :status
29
+ attr_accessor :endpoints
30
+ attr_accessor :geo_replication_enabled
31
+ attr_accessor :geo_primary_region
32
+ attr_accessor :status_of_primary
33
+ attr_accessor :last_geo_failover_time
34
+ attr_accessor :geo_secondary_region
35
+ attr_accessor :status_of_secondary
36
+ attr_accessor :creation_time
37
+ attr_accessor :extended_properties
38
+ end
39
+ end
40
+ end
@@ -1,166 +1,166 @@
1
- #-------------------------------------------------------------------------
2
- # Copyright 2013 Microsoft Open Technologies, Inc.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- #--------------------------------------------------------------------------
15
- require 'azure/storage_management/serialization'
16
-
17
- module Azure
18
- module StorageManagement
19
- # Provides Storage Management API
20
- class StorageManagementService < BaseManagementService
21
- def initialize
22
- super()
23
- end
24
- # Public: Gets a list of storage accounts available under the
25
- # current subscription.
26
- #
27
- # Returns an array of Azure::StorageManagement::StorageAccount objects
28
- def list_storage_accounts
29
- request_path = '/services/storageservices'
30
- request = ManagementHttpRequest.new(:get, request_path, nil)
31
- response = request.call
32
- Serialization.storage_services_from_xml(response)
33
- end
34
-
35
- # Public: Checks to see if the specified storage account is available
36
- #
37
- # ==== Attributes
38
- #
39
- # * +name+ - String. Storage account name.
40
- #
41
- # Returns: A boolean value indicating whether the storage account exists.
42
- # If true, the storage account exists. If false, the storage account
43
- # does not exist.
44
- def get_storage_account(name)
45
- return false if name.nil?
46
- flag = false
47
- storage_accounts = list_storage_accounts
48
- storage_accounts.each do |storage|
49
- if storage.name == name
50
- flag = true
51
- break
52
- end
53
- end
54
- flag
55
- end
56
-
57
- # Public: Gets the properties of the storage account specified.
58
- #
59
- # ==== Attributes
60
- #
61
- # * +name+ - String. The name of the storage account. Required.
62
- #
63
- # See http://msdn.microsoft.com/en-us/library/windowsazure/ee460802.aspx
64
- #
65
- # Returns the storage account
66
- def get_storage_account_properties(name)
67
- request_path = "/services/storageservices/#{name}"
68
- request = ManagementHttpRequest.new(:get, request_path, nil)
69
- response = request.call
70
- Serialization.storage_services_from_xml(response).first
71
- end
72
-
73
- # Public: Create a new storage account in Windows Azure.
74
- #
75
- # ==== Attributes
76
- #
77
- # * +name+ - String. The name of the storage service.
78
- # * +options+ - Hash. Optional parameters.
79
- #
80
- # ==== Options
81
- #
82
- # Accepted key/value pairs in options parameter are:
83
- # * +:label+ - String. The label for this storage account. The name will
84
- # be used as label if none specified. (optional)
85
- # * +:location+ - String. The location where the storage
86
- # service will be created. Reqruied if no affinity_group_name specified.
87
- # * +:description+ - String. A description for the storage
88
- # service. (optional)
89
- # * +:affinity_group_name+ - String. The name of an existing affinity group
90
- # in the specified subscription. Required if no location specified.
91
- # * +:geo_replication_enabled+ - String. A flag indicating wheter to
92
- # turn Geo replication on or off. Values other than 'true'/'false'
93
- # will result in an error from the REST API. (optional)
94
- # * +:extended_properties+ - Hash. Key/Value pairs of extended
95
- # properties to add to the storage account. The key is used as the
96
- # property name and the value as its value. (optional)
97
- #
98
- # Returns None
99
- def create_storage_account(name, options = {})
100
- raise 'Name not specified' if !name || name.class != String || name.empty?
101
- if get_storage_account(name)
102
- Loggerx.warn "Storage Account #{name} already exists. Skipped..."
103
- else
104
- Loggerx.info "Creating Storage Account #{name}."
105
- body = Serialization.storage_services_to_xml(name, options)
106
- request_path = '/services/storageservices'
107
- request = ManagementHttpRequest.new(:post, request_path, body)
108
- request.call
109
- end
110
- end
111
-
112
- # Public: Updates an existing storage account in Windows Azure
113
- #
114
- # ==== Attributes
115
- #
116
- # * +name+ - String. The name of the storage service.
117
- # * +options+ - Hash. Optional parameters.
118
- #
119
- # ==== Options
120
- #
121
- # Accepted key/value pairs in options parameter are:
122
- # * +:label+ - String. A label for the storage service. Required if no
123
- # description is provided. If both label and description are
124
- # provided, only the label will get updated.
125
- # * +:description+ - String. A description for the storage service.
126
- # Required if no label is provided. If both label and description are
127
- # provided, only the label will get updated.
128
- # * +:geo_replication_enabled+ - Boolean (TrueClass/FalseClass). Boolean
129
- # flag indicating wheter to turn Geo replication on or off. (optional)
130
- # * +:extended_properties+ - Hash. Key/Value pairs of extended
131
- # properties to add to the storage account. The key is used as the
132
- # property name and the value as its value. (optional)
133
- #
134
- # Returns None
135
- # Fails with RuntimeError if invalid options specified
136
- def update_storage_account(name, options = {})
137
- if get_storage_account name
138
- Loggerx.info "Account '#{name}' exists, updating..."
139
- body = Serialization.storage_update_to_xml options
140
- request_path = "/services/storageservices/#{name}"
141
- request = ManagementHttpRequest.new(:put, request_path, body)
142
- request.call
143
- else
144
- Loggerx.warn "Storage Account '#{name}' does not exist. Skipped..."
145
- end
146
- end
147
-
148
- # Public: Deletes the specified storage account of given subscription id
149
- # from Windows Azure.
150
- #
151
- # ==== Attributes
152
- #
153
- # * +name+ - String. Storage account name.
154
- #
155
- # Returns: None
156
- def delete_storage_account(name)
157
- Loggerx.info "Deleting Storage Account #{name}."
158
- request_path = "/services/storageservices/#{name}"
159
- request = ManagementHttpRequest.new(:delete, request_path)
160
- request.call
161
- rescue Exception => e
162
- e.message
163
- end
164
- end
165
- end
166
- end
1
+ #-------------------------------------------------------------------------
2
+ # Copyright 2013 Microsoft Open Technologies, Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #--------------------------------------------------------------------------
15
+ require 'azure/storage_management/serialization'
16
+
17
+ module Azure
18
+ module StorageManagement
19
+ # Provides Storage Management API
20
+ class StorageManagementService < BaseManagementService
21
+ def initialize
22
+ super()
23
+ end
24
+ # Public: Gets a list of storage accounts available under the
25
+ # current subscription.
26
+ #
27
+ # Returns an array of Azure::StorageManagement::StorageAccount objects
28
+ def list_storage_accounts
29
+ request_path = '/services/storageservices'
30
+ request = ManagementHttpRequest.new(:get, request_path, nil)
31
+ response = request.call
32
+ Serialization.storage_services_from_xml(response)
33
+ end
34
+
35
+ # Public: Checks to see if the specified storage account is available
36
+ #
37
+ # ==== Attributes
38
+ #
39
+ # * +name+ - String. Storage account name.
40
+ #
41
+ # Returns: A boolean value indicating whether the storage account exists.
42
+ # If true, the storage account exists. If false, the storage account
43
+ # does not exist.
44
+ def get_storage_account(name)
45
+ return false if name.nil?
46
+ flag = false
47
+ storage_accounts = list_storage_accounts
48
+ storage_accounts.each do |storage|
49
+ if storage.name == name
50
+ flag = true
51
+ break
52
+ end
53
+ end
54
+ flag
55
+ end
56
+
57
+ # Public: Gets the properties of the storage account specified.
58
+ #
59
+ # ==== Attributes
60
+ #
61
+ # * +name+ - String. The name of the storage account. Required.
62
+ #
63
+ # See http://msdn.microsoft.com/en-us/library/windowsazure/ee460802.aspx
64
+ #
65
+ # Returns the storage account
66
+ def get_storage_account_properties(name)
67
+ request_path = "/services/storageservices/#{name}"
68
+ request = ManagementHttpRequest.new(:get, request_path, nil)
69
+ response = request.call
70
+ Serialization.storage_services_from_xml(response).first
71
+ end
72
+
73
+ # Public: Create a new storage account in Windows Azure.
74
+ #
75
+ # ==== Attributes
76
+ #
77
+ # * +name+ - String. The name of the storage service.
78
+ # * +options+ - Hash. Optional parameters.
79
+ #
80
+ # ==== Options
81
+ #
82
+ # Accepted key/value pairs in options parameter are:
83
+ # * +:label+ - String. The label for this storage account. The name will
84
+ # be used as label if none specified. (optional)
85
+ # * +:location+ - String. The location where the storage
86
+ # service will be created. Reqruied if no affinity_group_name specified.
87
+ # * +:description+ - String. A description for the storage
88
+ # service. (optional)
89
+ # * +:affinity_group_name+ - String. The name of an existing affinity group
90
+ # in the specified subscription. Required if no location specified.
91
+ # * +:geo_replication_enabled+ - String. A flag indicating wheter to
92
+ # turn Geo replication on or off. Values other than 'true'/'false'
93
+ # will result in an error from the REST API. (optional)
94
+ # * +:extended_properties+ - Hash. Key/Value pairs of extended
95
+ # properties to add to the storage account. The key is used as the
96
+ # property name and the value as its value. (optional)
97
+ #
98
+ # Returns None
99
+ def create_storage_account(name, options = {})
100
+ raise 'Name not specified' if !name || name.class != String || name.empty?
101
+ if get_storage_account(name)
102
+ Loggerx.warn "Storage Account #{name} already exists. Skipped..."
103
+ else
104
+ Loggerx.info "Creating Storage Account #{name}."
105
+ body = Serialization.storage_services_to_xml(name, options)
106
+ request_path = '/services/storageservices'
107
+ request = ManagementHttpRequest.new(:post, request_path, body)
108
+ request.call
109
+ end
110
+ end
111
+
112
+ # Public: Updates an existing storage account in Windows Azure
113
+ #
114
+ # ==== Attributes
115
+ #
116
+ # * +name+ - String. The name of the storage service.
117
+ # * +options+ - Hash. Optional parameters.
118
+ #
119
+ # ==== Options
120
+ #
121
+ # Accepted key/value pairs in options parameter are:
122
+ # * +:label+ - String. A label for the storage service. Required if no
123
+ # description is provided. If both label and description are
124
+ # provided, only the label will get updated.
125
+ # * +:description+ - String. A description for the storage service.
126
+ # Required if no label is provided. If both label and description are
127
+ # provided, only the label will get updated.
128
+ # * +:geo_replication_enabled+ - Boolean (TrueClass/FalseClass). Boolean
129
+ # flag indicating wheter to turn Geo replication on or off. (optional)
130
+ # * +:extended_properties+ - Hash. Key/Value pairs of extended
131
+ # properties to add to the storage account. The key is used as the
132
+ # property name and the value as its value. (optional)
133
+ #
134
+ # Returns None
135
+ # Fails with RuntimeError if invalid options specified
136
+ def update_storage_account(name, options = {})
137
+ if get_storage_account name
138
+ Loggerx.info "Account '#{name}' exists, updating..."
139
+ body = Serialization.storage_update_to_xml options
140
+ request_path = "/services/storageservices/#{name}"
141
+ request = ManagementHttpRequest.new(:put, request_path, body)
142
+ request.call
143
+ else
144
+ Loggerx.warn "Storage Account '#{name}' does not exist. Skipped..."
145
+ end
146
+ end
147
+
148
+ # Public: Deletes the specified storage account of given subscription id
149
+ # from Windows Azure.
150
+ #
151
+ # ==== Attributes
152
+ #
153
+ # * +name+ - String. Storage account name.
154
+ #
155
+ # Returns: None
156
+ def delete_storage_account(name)
157
+ Loggerx.info "Deleting Storage Account #{name}."
158
+ request_path = "/services/storageservices/#{name}"
159
+ request = ManagementHttpRequest.new(:delete, request_path)
160
+ request.call
161
+ rescue Exception => e
162
+ e.message
163
+ end
164
+ end
165
+ end
166
+ end