azure-multistorage 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (287) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +11 -0
  4. data/ChangeLog.txt +40 -0
  5. data/Gemfile +16 -0
  6. data/README.md +590 -0
  7. data/Rakefile +129 -0
  8. data/azure.gemspec +42 -0
  9. data/lib/azure.rb +52 -0
  10. data/lib/azure/base_management/affinity_group.rb +32 -0
  11. data/lib/azure/base_management/base_management_service.rb +234 -0
  12. data/lib/azure/base_management/location.rb +27 -0
  13. data/lib/azure/base_management/management_http_request.rb +172 -0
  14. data/lib/azure/base_management/serialization.rb +129 -0
  15. data/lib/azure/base_management/sql_management_http_request.rb +45 -0
  16. data/lib/azure/blob/blob.rb +32 -0
  17. data/lib/azure/blob/blob_service.rb +1424 -0
  18. data/lib/azure/blob/block.rb +31 -0
  19. data/lib/azure/blob/container.rb +32 -0
  20. data/lib/azure/blob/serialization.rb +285 -0
  21. data/lib/azure/cloud_service_management/cloud_service.rb +38 -0
  22. data/lib/azure/cloud_service_management/cloud_service_management_service.rb +140 -0
  23. data/lib/azure/cloud_service_management/serialization.rb +117 -0
  24. data/lib/azure/core.rb +39 -0
  25. data/lib/azure/core/auth/authorizer.rb +36 -0
  26. data/lib/azure/core/auth/shared_key.rb +110 -0
  27. data/lib/azure/core/auth/shared_key_lite.rb +48 -0
  28. data/lib/azure/core/auth/signer.rb +48 -0
  29. data/lib/azure/core/configuration.rb +211 -0
  30. data/lib/azure/core/error.rb +22 -0
  31. data/lib/azure/core/filtered_service.rb +44 -0
  32. data/lib/azure/core/http/debug_filter.rb +36 -0
  33. data/lib/azure/core/http/http_error.rb +88 -0
  34. data/lib/azure/core/http/http_filter.rb +53 -0
  35. data/lib/azure/core/http/http_request.rb +157 -0
  36. data/lib/azure/core/http/http_response.rb +140 -0
  37. data/lib/azure/core/http/retry_policy.rb +74 -0
  38. data/lib/azure/core/http/signer_filter.rb +34 -0
  39. data/lib/azure/core/service.rb +63 -0
  40. data/lib/azure/core/signed_service.rb +43 -0
  41. data/lib/azure/core/utility.rb +190 -0
  42. data/lib/azure/queue/message.rb +30 -0
  43. data/lib/azure/queue/queue.rb +29 -0
  44. data/lib/azure/queue/queue_service.rb +568 -0
  45. data/lib/azure/queue/serialization.rb +106 -0
  46. data/lib/azure/service/access_policy.rb +26 -0
  47. data/lib/azure/service/enumeration_results.rb +21 -0
  48. data/lib/azure/service/logging.rb +32 -0
  49. data/lib/azure/service/metrics.rb +31 -0
  50. data/lib/azure/service/retention_policy.rb +25 -0
  51. data/lib/azure/service/serialization.rb +240 -0
  52. data/lib/azure/service/signed_identifier.rb +30 -0
  53. data/lib/azure/service/storage_service.rb +79 -0
  54. data/lib/azure/service/storage_service_properties.rb +32 -0
  55. data/lib/azure/service_bus/action.rb +21 -0
  56. data/lib/azure/service_bus/auth/wrap_service.rb +89 -0
  57. data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
  58. data/lib/azure/service_bus/brokered_message.rb +124 -0
  59. data/lib/azure/service_bus/brokered_message_serializer.rb +159 -0
  60. data/lib/azure/service_bus/correlation_filter.rb +45 -0
  61. data/lib/azure/service_bus/empty_rule_action.rb +30 -0
  62. data/lib/azure/service_bus/false_filter.rb +38 -0
  63. data/lib/azure/service_bus/filter.rb +21 -0
  64. data/lib/azure/service_bus/interval.rb +104 -0
  65. data/lib/azure/service_bus/queue.rb +230 -0
  66. data/lib/azure/service_bus/resource.rb +109 -0
  67. data/lib/azure/service_bus/rule.rb +98 -0
  68. data/lib/azure/service_bus/rule_aspect.rb +34 -0
  69. data/lib/azure/service_bus/serialization.rb +160 -0
  70. data/lib/azure/service_bus/service_bus_service.rb +829 -0
  71. data/lib/azure/service_bus/sql_filter.rb +50 -0
  72. data/lib/azure/service_bus/sql_rule_action.rb +50 -0
  73. data/lib/azure/service_bus/subscription.rb +184 -0
  74. data/lib/azure/service_bus/topic.rb +187 -0
  75. data/lib/azure/service_bus/true_filter.rb +38 -0
  76. data/lib/azure/sql_database_management/serialization.rb +111 -0
  77. data/lib/azure/sql_database_management/sql_database.rb +31 -0
  78. data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -0
  79. data/lib/azure/storage_management/serialization.rb +184 -0
  80. data/lib/azure/storage_management/storage_account.rb +40 -0
  81. data/lib/azure/storage_management/storage_management_service.rb +166 -0
  82. data/lib/azure/table/auth/shared_key.rb +92 -0
  83. data/lib/azure/table/auth/shared_key_lite.rb +44 -0
  84. data/lib/azure/table/batch.rb +330 -0
  85. data/lib/azure/table/batch_response.rb +118 -0
  86. data/lib/azure/table/edmtype.rb +127 -0
  87. data/lib/azure/table/entity.rb +31 -0
  88. data/lib/azure/table/guid.rb +24 -0
  89. data/lib/azure/table/query.rb +112 -0
  90. data/lib/azure/table/serialization.rb +108 -0
  91. data/lib/azure/table/table_service.rb +561 -0
  92. data/lib/azure/version.rb +31 -0
  93. data/lib/azure/virtual_machine_image_management/serialization.rb +51 -0
  94. data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -0
  95. data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -0
  96. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +66 -0
  97. data/lib/azure/virtual_machine_management/serialization.rb +436 -0
  98. data/lib/azure/virtual_machine_management/virtual_machine.rb +42 -0
  99. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +549 -0
  100. data/lib/azure/virtual_network_management/serialization.rb +186 -0
  101. data/lib/azure/virtual_network_management/virtual_network.rb +36 -0
  102. data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -0
  103. data/test/fixtures/32px-fulls-black.jpg +0 -0
  104. data/test/fixtures/affinity_group.xml +33 -0
  105. data/test/fixtures/all_containers.xml +20 -0
  106. data/test/fixtures/all_tables.xml +22 -0
  107. data/test/fixtures/certificate.pem +21 -0
  108. data/test/fixtures/container_acl.xml +11 -0
  109. data/test/fixtures/create_sql_database_server.xml +2 -0
  110. data/test/fixtures/create_storage_desc_error.xml +5 -0
  111. data/test/fixtures/create_storage_extendedprop_error.xml +8 -0
  112. data/test/fixtures/create_storage_extendedpropname_error.xml +6 -0
  113. data/test/fixtures/create_storage_full_error.xml +6 -0
  114. data/test/fixtures/create_storage_label_error.xml +5 -0
  115. data/test/fixtures/create_storage_location_error.xml +5 -0
  116. data/test/fixtures/create_storage_name_error.xml +6 -0
  117. data/test/fixtures/create_table_response_entry.xml +15 -0
  118. data/test/fixtures/delete_storage_container_error.xml +5 -0
  119. data/test/fixtures/delete_storage_error.xml +5 -0
  120. data/test/fixtures/deployment_error.xml +5 -0
  121. data/test/fixtures/empty_xml_file +0 -0
  122. data/test/fixtures/get_storage_account_error.xml +5 -0
  123. data/test/fixtures/get_storage_account_properties.xml +32 -0
  124. data/test/fixtures/get_storage_account_properties_new.xml +32 -0
  125. data/test/fixtures/http_error.xml +5 -0
  126. data/test/fixtures/insert_entity_response_entry.xml +25 -0
  127. data/test/fixtures/list_affinity_groups.xml +22 -0
  128. data/test/fixtures/list_blobs.xml +121 -0
  129. data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
  130. data/test/fixtures/list_blocks_all.xml +23 -0
  131. data/test/fixtures/list_blocks_committed.xml +13 -0
  132. data/test/fixtures/list_cloud_services.xml +39 -0
  133. data/test/fixtures/list_containers.xml +38 -0
  134. data/test/fixtures/list_firewall_management_endpoint.xml +27 -0
  135. data/test/fixtures/list_images.xml +110 -0
  136. data/test/fixtures/list_locations.xml +62 -0
  137. data/test/fixtures/list_page_ranges.xml +11 -0
  138. data/test/fixtures/list_sql_database.xml +36 -0
  139. data/test/fixtures/list_sql_server_firewall.xml +23 -0
  140. data/test/fixtures/list_storage_account_single.xml +25 -0
  141. data/test/fixtures/list_storage_accounts.xml +46 -0
  142. data/test/fixtures/list_virtual_networks.xml +92 -0
  143. data/test/fixtures/logging.xml +11 -0
  144. data/test/fixtures/management_certificate.pem +55 -0
  145. data/test/fixtures/messages.xml +12 -0
  146. data/test/fixtures/metrics.xml +10 -0
  147. data/test/fixtures/privatekey.key +28 -0
  148. data/test/fixtures/query_entities_empty_response.xml +7 -0
  149. data/test/fixtures/query_entities_response.xml +45 -0
  150. data/test/fixtures/queue_service_properties.xml +22 -0
  151. data/test/fixtures/queue_service_properties_original.xml +19 -0
  152. data/test/fixtures/queues.xml +16 -0
  153. data/test/fixtures/retention_policy.xml +5 -0
  154. data/test/fixtures/sb_default_create_queue_response.xml +23 -0
  155. data/test/fixtures/sb_default_create_topic_response.xml +18 -0
  156. data/test/fixtures/sb_get_access_token_response.txt +1 -0
  157. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -0
  158. data/test/fixtures/storage_service_properties.xml +23 -0
  159. data/test/fixtures/update_storage_account.xml +16 -0
  160. data/test/fixtures/update_storage_error.xml +5 -0
  161. data/test/fixtures/updated_storage_accounts.xml +53 -0
  162. data/test/fixtures/virtual_machine.xml +113 -0
  163. data/test/fixtures/windows_virtual_machine.xml +106 -0
  164. data/test/integration/affinity_group/Affinity_test.rb +55 -0
  165. data/test/integration/affinity_group/Create_Affinity_test.rb +63 -0
  166. data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -0
  167. data/test/integration/affinity_group/List_Affinity_test.rb +41 -0
  168. data/test/integration/affinity_group/Update_Affinity_test.rb +82 -0
  169. data/test/integration/blob/blob_gb18030_test.rb +199 -0
  170. data/test/integration/blob/blob_metadata_test.rb +75 -0
  171. data/test/integration/blob/blob_pages_test.rb +119 -0
  172. data/test/integration/blob/blob_properties_test.rb +77 -0
  173. data/test/integration/blob/block_blob_test.rb +254 -0
  174. data/test/integration/blob/container/container_acl_test.rb +69 -0
  175. data/test/integration/blob/container/container_metadata_test.rb +50 -0
  176. data/test/integration/blob/container/create_container_test.rb +60 -0
  177. data/test/integration/blob/container/delete_container_test.rb +39 -0
  178. data/test/integration/blob/container/get_container_properties_test.rb +48 -0
  179. data/test/integration/blob/container/list_containers_test.rb +79 -0
  180. data/test/integration/blob/container/root_container_test.rb +54 -0
  181. data/test/integration/blob/copy_blob_test.rb +113 -0
  182. data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
  183. data/test/integration/blob/create_page_blob_test.rb +83 -0
  184. data/test/integration/blob/delete_blob_test.rb +159 -0
  185. data/test/integration/blob/get_blob_test.rb +65 -0
  186. data/test/integration/blob/informative_errors_test.rb +39 -0
  187. data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
  188. data/test/integration/blob/lease/break_lease_test.rb +40 -0
  189. data/test/integration/blob/lease/release_lease_test.rb +40 -0
  190. data/test/integration/blob/lease/renew_lease_test.rb +42 -0
  191. data/test/integration/blob/list_blobs_test.rb +113 -0
  192. data/test/integration/cloud_service/Cloud_Create_test.rb +44 -0
  193. data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -0
  194. data/test/integration/database/create_sql_server_firewall_test.rb +86 -0
  195. data/test/integration/database/create_sql_server_test.rb +53 -0
  196. data/test/integration/database/delete_sql_server_firewall_test.rb +70 -0
  197. data/test/integration/database/delete_sql_server_test.rb +58 -0
  198. data/test/integration/database/list_sql_server_firewall_test.rb +45 -0
  199. data/test/integration/database/list_sql_servers_test.rb +44 -0
  200. data/test/integration/database/reset_password_sql_server_test.rb +55 -0
  201. data/test/integration/location/Location_List_test.rb +39 -0
  202. data/test/integration/queue/clear_messages_test.rb +42 -0
  203. data/test/integration/queue/create_message_test.rb +75 -0
  204. data/test/integration/queue/create_queue_test.rb +50 -0
  205. data/test/integration/queue/delete_message_test.rb +67 -0
  206. data/test/integration/queue/delete_queue_test.rb +45 -0
  207. data/test/integration/queue/informative_errors_test.rb +42 -0
  208. data/test/integration/queue/list_messages_encoded_test.rb +79 -0
  209. data/test/integration/queue/list_messages_test.rb +79 -0
  210. data/test/integration/queue/list_queues_test.rb +44 -0
  211. data/test/integration/queue/peek_messages_test.rb +59 -0
  212. data/test/integration/queue/queue_gb18030_test.rb +131 -0
  213. data/test/integration/queue/queue_metadata_test.rb +40 -0
  214. data/test/integration/queue/update_message_test.rb +74 -0
  215. data/test/integration/service_bus/informative_errors_test.rb +37 -0
  216. data/test/integration/service_bus/queues_scenario_test.rb +200 -0
  217. data/test/integration/service_bus/queues_test.rb +266 -0
  218. data/test/integration/service_bus/rules_test.rb +145 -0
  219. data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -0
  220. data/test/integration/service_bus/scenario_test.rb +101 -0
  221. data/test/integration/service_bus/subscriptions_test.rb +211 -0
  222. data/test/integration/service_bus/topics_scenario_test.rb +406 -0
  223. data/test/integration/service_bus/topics_test.rb +129 -0
  224. data/test/integration/storage_management/storage_management_test.rb +160 -0
  225. data/test/integration/table/create_table_test.rb +36 -0
  226. data/test/integration/table/delete_entity_batch_test.rb +107 -0
  227. data/test/integration/table/delete_entity_test.rb +94 -0
  228. data/test/integration/table/delete_table_test.rb +40 -0
  229. data/test/integration/table/get_table_test.rb +37 -0
  230. data/test/integration/table/informative_errors_test.rb +39 -0
  231. data/test/integration/table/insert_entity_batch_test.rb +100 -0
  232. data/test/integration/table/insert_entity_test.rb +88 -0
  233. data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
  234. data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
  235. data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
  236. data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
  237. data/test/integration/table/merge_entity_batch_test.rb +128 -0
  238. data/test/integration/table/merge_entity_test.rb +113 -0
  239. data/test/integration/table/query_entities_test.rb +195 -0
  240. data/test/integration/table/query_tables_test.rb +43 -0
  241. data/test/integration/table/query_test.rb +251 -0
  242. data/test/integration/table/table_acl_test.rb +52 -0
  243. data/test/integration/table/table_gb18030_test.rb +355 -0
  244. data/test/integration/table/update_entity_batch_test.rb +149 -0
  245. data/test/integration/table/update_entity_test.rb +131 -0
  246. data/test/integration/test_helper.rb +42 -0
  247. data/test/integration/vm/VM_Create_test.rb +260 -0
  248. data/test/integration/vm/VM_Delete_test.rb +55 -0
  249. data/test/integration/vm/VM_Operations_test.rb +173 -0
  250. data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -0
  251. data/test/integration/vm_image/virtual_machine_image_test.rb +37 -0
  252. data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -0
  253. data/test/integration/vnet/Virtual_Network_list_test.rb +53 -0
  254. data/test/support/env.rb +19 -0
  255. data/test/support/fixtures.rb +36 -0
  256. data/test/support/name_generator.rb +160 -0
  257. data/test/support/stubs.rb +42 -0
  258. data/test/support/virtual_machine_name_generator.rb +102 -0
  259. data/test/support/virtual_network_helper.rb +73 -0
  260. data/test/test_helper.rb +53 -0
  261. data/test/unit/affinity_group/affinity_group_test.rb +192 -0
  262. data/test/unit/affinity_group/serialization_test.rb +88 -0
  263. data/test/unit/base_management/location_test.rb +57 -0
  264. data/test/unit/blob/blob_service_test.rb +1947 -0
  265. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -0
  266. data/test/unit/cloud_service_management/serialization_test.rb +169 -0
  267. data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
  268. data/test/unit/core/auth/shared_key_test.rb +58 -0
  269. data/test/unit/core/auth/signer_test.rb +30 -0
  270. data/test/unit/core/http/http_error_test.rb +57 -0
  271. data/test/unit/core/http/http_request_test.rb +66 -0
  272. data/test/unit/core/http/http_response_test.rb +45 -0
  273. data/test/unit/core/http/retry_policy_test.rb +23 -0
  274. data/test/unit/database/serialization_test.rb +97 -0
  275. data/test/unit/database/sql_database_server_service_test.rb +288 -0
  276. data/test/unit/service/serialization_test.rb +502 -0
  277. data/test/unit/service/storage_service_test.rb +291 -0
  278. data/test/unit/storage_management/serialization_test.rb +232 -0
  279. data/test/unit/storage_management/storage_management_service_test.rb +261 -0
  280. data/test/unit/table/edmtype_test.rb +108 -0
  281. data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -0
  282. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -0
  283. data/test/unit/virtual_machine_management/serialization_test.rb +247 -0
  284. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -0
  285. data/test/unit/vnet/serialization_test.rb +187 -0
  286. data/test/unit/vnet/virtual_network_management_service_test.rb +131 -0
  287. metadata +456 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7dfd2c74d5b1285001a02fc2a5694739d8aed80e
4
+ data.tar.gz: 7b026ca6467a8bda2a0b932f656c8e8197080a94
5
+ SHA512:
6
+ metadata.gz: e970e07a782c2b3f9a31ac0c8965755db4e27cd333a49e02a767987617e45042ff4918f3392752e233609fc0096669c3a223506d79de9f565bab49a8c10f7017
7
+ data.tar.gz: e867dc97955bd1d09d0480fc13594a9215999920d4812549564b56490555c8484c12f0045b5d78dbf3d917efd8872dd52721c8854c7a95005034acde6bc1303b
@@ -0,0 +1,12 @@
1
+ .rvmrc
2
+ tags
3
+ /pkg
4
+ /doc
5
+ Gemfile.lock
6
+ nbproject/*
7
+ *.gem
8
+ .idea/*
9
+ .project
10
+
11
+
12
+ .DS_Store
@@ -0,0 +1,11 @@
1
+ ---
2
+ language: ruby
3
+
4
+ rvm:
5
+ - 1.9.3
6
+ - 2.0.0
7
+
8
+ script:
9
+ - rake test:unit
10
+ - if [ "$TRAVIS_SECURE_ENV_VARS" == "true" ] ; then rake test:integration ; fi
11
+
@@ -0,0 +1,40 @@
1
+ 2014.05.06 - version 0.6.4
2
+ * Upgraded Service Management Versioning to 2014-04-01
3
+ * Created separate API for add role
4
+ * Logical Unit Number(lun) is optional argument in API add_data_disk
5
+ * Cloud service should delete only if there are no other VMs/Deployments in the cloud service
6
+ * Added more sizes(Basic_A0, Basic_A1, Basic_A2, Basic_A3, Basic_A4) options for Virtual Machine and Cloud Service.
7
+
8
+ 2014.03.28 - version 0.6.3
9
+ * Added get_cloud_service_properties method, which returns all cloud service properties (embed-detail=true), including info about all VMs
10
+ * Added winrm_http_port and winrm_https_port to get_virtual_machine method to allow the users to configure custom ports for winrm-http and winrm-https
11
+ * Checks if any ports are in use before adding a role in the existing cloud service
12
+ * Auto generate public port for add role.
13
+ * Fix issue https://github.com/WindowsAzure/azure-sdk-for-ruby/issues/130
14
+
15
+ 2014.03.15 - version 0.6.2
16
+ * Restart Virtual Machine
17
+ * Add disk to Virtual Machine
18
+ * Add/Update Virtual Machine endpoints
19
+ * Delete Virtual Machine endpoint
20
+
21
+ 2014.02.18 - version 0.6.1
22
+ * Fixed http redirection error
23
+ * Add a new role to existing deployment
24
+ * Add support for including VMs in availability sets
25
+
26
+ 2013.12.02 - version 0.6.0
27
+ * Add the following service management API
28
+ * Virtual Machine
29
+ * Virtual Machine Image
30
+ * Virtual Network
31
+ * Cloud Service
32
+ * Storage
33
+ * Sql Database
34
+ * Location and Affinity Group
35
+
36
+ 2013.04.25 - version 0.5.0
37
+ * First release
38
+ * Ruby 1.9.3 and 2.0 support
39
+ * Storage support: Blob, Table and Queue
40
+ * Service Bus support: Queue, Topic/Subscription
data/Gemfile ADDED
@@ -0,0 +1,16 @@
1
+ #-------------------------------------------------------------------------
2
+ # # Copyright (c) Microsoft and contributors. All rights reserved.
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
+ source 'https://rubygems.org'
16
+ gemspec
@@ -0,0 +1,590 @@
1
+ # Microsoft Azure SDK for Ruby
2
+ [![Build Status](https://travis-ci.org/Azure/azure-sdk-for-ruby.png?branch=dev)](https://travis-ci.org/Azure/azure-sdk-for-ruby)
3
+
4
+
5
+ This project provides a Ruby package that makes it easy to access and manage Microsoft Azure Services like Storage, Service Bus and Virtual Machines.
6
+
7
+ # Library Features
8
+ * Storage
9
+ * Blobs
10
+ * create, list, and delete containers, work with container metadata and permissions, list blobs in container
11
+ * create block and page blobs (from a stream, a file, or a string), work with blob blocks and pages, delete blobs
12
+ * work with blob properties, metadata, leases, snapshot a blob
13
+ * Tables
14
+ * create and delete tables
15
+ * create, query, insert, update, merge, and delete entities
16
+ * Queues
17
+ * create, list, and delete queues, and work with queue metadata
18
+ * create, get, peek, update, delete messages
19
+ * Service Bus
20
+ * Queues
21
+ * create, list and delete queues
22
+ * send, receive, unlock and delete messages
23
+ * Topics
24
+ * create, list, and delete topics
25
+ * send, receive, unlock and delete messages
26
+ * create, list, and delete subscriptions
27
+ * create, list, and delete rules
28
+ * Base Management
29
+ * list locations
30
+ * get, list, create, update, delete affinity groups
31
+ * Virtual Machine Management
32
+ * list images
33
+ * list, delete Disks
34
+ * Virtual Machines
35
+ * create linux based VMs and ssh with cert and key option enabled for ssh and WINRM (both http & https)enabled for windows based VMs
36
+ * list, shut down, delete, find virtual machine deployments. While shutting down your VMs the provisioning state would be deallocated and this VM will not be included in the billing cycle.
37
+ * Create VM for a specific virtual network
38
+ * Cloud Service Management
39
+ * create, list, delete cloud services
40
+ * Storage Account Management
41
+ * create, list storage accounts, list locations
42
+ * SQL Database Server Management
43
+ * list, create SQL Database servers
44
+ * reset password for a SQL Database server
45
+ * list, set, delete firewall rules for a SQL Database server
46
+ * Virtual Network Management
47
+ * List VNet
48
+ * Create VNet via parameters or xml file
49
+
50
+ # Supported Ruby Versions
51
+
52
+ * Ruby 1.9.3
53
+ * Ruby 2.0
54
+
55
+ **Notice** that Ruby 2.0 x64 on Windows is not supported due to the [lack of nokogiri](https://github.com/sparklemotion/nokogiri/issues/864).
56
+
57
+ # Getting Started
58
+
59
+ ## Install the rubygem package
60
+
61
+ You can install the azure rubygem package directly.
62
+
63
+ ```bash
64
+ gem install azure
65
+ ```
66
+
67
+ ## Download Source Code
68
+
69
+ To get the source code of the SDK via **git** just type:
70
+
71
+ ```bash
72
+ git clone https://github.com/Azure/azure-sdk-for-ruby.git
73
+ cd ./azure-sdk-for-ruby
74
+ ```
75
+ Then, run bundler to install all the gem dependencies:
76
+
77
+ ```bash
78
+ bundle install
79
+ ```
80
+
81
+ ## Generate Documentation
82
+
83
+ Running the command ``rdoc`` will generate the API documentation in the `./doc` directory.
84
+
85
+ ## Setup Connection
86
+
87
+ You can use this SDK against the Microsoft Azure Services in the cloud, or against the local Storage Emulator if you are on Windows. Service Bus and Microsoft Azure Service Management emulation are not supported. Of course, to use the Microsoft Azure Services in the cloud, you need to first [create a Microsoft Azure account](http://www.windowsazure.com/en-us/pricing/free-trial/). After that, you can get the information you need to configure Storage and Service Bus from the [Microsoft Azure Portal](https://manage.windowsazure.com).
88
+
89
+ There are two ways you can set up the connections:
90
+
91
+ 1. [via code](#via-code)
92
+ 2. [via environment variables](#via-environment-variables)
93
+
94
+ ### Via Code
95
+ * Against Microsoft Azure Services in the cloud
96
+
97
+ ```ruby
98
+ require "azure"
99
+
100
+ Azure.configure do |config|
101
+ # Configure these 2 properties to use Storage
102
+ config.storage_account_name = "<your azure storage account name>"
103
+ config.storage_access_key = "<your azure storage access key>"
104
+ # Configure these 3 properties to use Service Bus
105
+ config.sb_namespace = "<your azure service bus namespace>"
106
+ config.sb_access_key = "<your azure service bus access key>"
107
+ config.sb_issuer = "<your azure service bus issuer>"
108
+ # Configure these 3 properties to use Service Management. We support passwordless pfx & pem cert formats.
109
+ config.management_certificate = "<path to your *.pem or *.pfx>"
110
+ config.subscription_id = "<your Subscriptionid>"
111
+ config.management_endpoint = "https://management.core.windows.net"
112
+ # This property enables/disables SQL Server authentication. By default SQL Server authentication is enabled. SQL Server authentication will also be enabled if you do not set this property
113
+ config.sql_database_authentication_mode = <:management_certificate or :sql_server>
114
+ # Configure SQL Server authentication API endpoint here
115
+ config.sql_database_management_endpoint = "http://management.database.windows.net:8443"
116
+ end
117
+ ```
118
+ * Against local Emulator (Windows Only)
119
+ ```ruby
120
+ require "azure"
121
+
122
+ Azure.configure do |config|
123
+ # Configure these 2 properties to use local Storage Emulator
124
+ config.storage_account_name = "devstoreaccount1"
125
+ config.storage_access_key = "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=="
126
+ config.storage_blob_host = "http://127.0.0.1:10000/devstoreaccount1"
127
+ config.storage_queue_host = "http://127.0.0.1:10001/devstoreaccount1"
128
+ config.storage_table_host = "http://127.0.0.1:10002/devstoreaccount1"
129
+ # Local Service Bus Emulator is not supported
130
+ # Local Service Management emulation is not supported
131
+ end
132
+ ```
133
+ ### Via Environment Variables
134
+ * Against Microsoft Azure Services in the cloud
135
+ * Storage
136
+
137
+ ```bash
138
+ AZURE_STORAGE_ACCOUNT = <your azure storage account name>
139
+ AZURE_STORAGE_ACCESS_KEY = <your azure storage access key>
140
+ ```
141
+ * Service Bus
142
+
143
+ ```bash
144
+ AZURE_SERVICEBUS_NAMESPACE = <your azure service bus namespace>
145
+ AZURE_SERVICEBUS_ACCESS_KEY = <your azure service bus access key>
146
+ AZURE_SERVICEBUS_ISSUER = <your azure service bus issuer>
147
+ ```
148
+ * Service Management
149
+
150
+ ```bash
151
+ AZURE_MANAGEMENT_CERTIFICATE = <path to *.pem or *.pfx>
152
+ AZURE_SUBSCRIPTION_ID = <your subscription ID>
153
+ AZURE_MANAGEMENT_ENDPOINT = <The endpoint URL of Microsoft Azure management service>
154
+ AZURE_SQL_DATABASE_MANAGEMENT_ENDPOINT = <SQL Database Management Endpoint>
155
+ AZURE_SQL_DATABASE_AUTHENTICATION_MODE = <:management_certificate or :sql_server>
156
+ ```
157
+ * Against local Emulator (Windows Only)
158
+ * Storage
159
+
160
+ ```bash
161
+ AZURE_STORAGE_ACCOUNT = devstoreaccount1
162
+ AZURE_STORAGE_ACCESS_KEY = Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
163
+ AZURE_STORAGE_BLOB_HOST = http://127.0.0.1:10000/devstoreaccount1
164
+ AZURE_STORAGE_QUEUE_HOST = http://127.0.0.1:10001/devstoreaccount1
165
+ AZURE_STORAGE_TABLE_HOST = http://127.0.0.1:10002/devstoreaccount1
166
+ ```
167
+ * Service Bus: not supported
168
+ * Service Management: not supported
169
+ ## Run Test
170
+ You can use the following commands to run:
171
+ * all the tests: ``rake test``
172
+ * a specific suite of tests: ``rake test:integration:blob``
173
+ * one particular test file: ``ruby -I"lib:test" "<path of the test file>"``
174
+ # Usage
175
+ **For more examples, please see the [Microsoft Azure Ruby Developer Center](http://www.windowsazure.com/en-us/develop/ruby)**
176
+ ## Storage
177
+
178
+ ### Blobs
179
+
180
+ ```ruby
181
+ # Require the azure rubygem
182
+ require "azure"
183
+
184
+ # Create an azure storage blob service object
185
+ azure_blob_service = Azure::BlobService.new
186
+
187
+ # Create a container
188
+ container = azure_blob_service.create_container("test-container")
189
+
190
+ # Upload a Blob
191
+ content = File.open('test.jpg', 'rb') { |file| file.read }
192
+ azure_blob_service.create_block_blob(container.name, "image-blob", content)
193
+
194
+ # List containers
195
+ azure_blob_service.list_containers()
196
+
197
+ # List Blobs
198
+ azure_blob_service.list_blobs(container.name)
199
+
200
+ # Download a Blob
201
+ blob, content = azure_blob_service.get_blob(container.name, "image-blob")
202
+ File.open("download.png", "wb") {|f| f.write(content)}
203
+
204
+ # Delete a Blob
205
+ azure_blob_service.delete_blob(container.name, "image-blob")
206
+ ```
207
+ ### Tables
208
+
209
+ ```ruby
210
+ # Require the azure rubygem
211
+ require "azure"
212
+
213
+ # Create an azure storage table service object
214
+ azure_table_service = Azure::TableService.new
215
+
216
+ # Create a table
217
+ azure_table_service.create_table("testtable")
218
+
219
+ # Insert an entity
220
+ entity = { "content" => "test entity", :partition_key => "test-partition-key", :row_key => "1" }
221
+ azure_table_service.insert_entity("testtable", entity)
222
+
223
+ # Get an entity
224
+ result = azure_table_service.get_entity("testtable", "test-partition-key", "1")
225
+
226
+ # Update an entity
227
+ result.properties["content"] = "test entity with updated content"
228
+ azure_table_service.update_entity(result.table, result.properties)
229
+
230
+ # Query entities
231
+ query = { :filter => "content eq 'test entity'" }
232
+ result, token = azure_table_service.query_entities("testtable", query)
233
+
234
+ # Delete an entity
235
+ azure_table_service.delete_entity("testtable", "test-partition-key", "1")
236
+
237
+ # delete a table
238
+ azure_table_service.delete_table("testtable")
239
+ ```
240
+ ### Queues
241
+
242
+ ```ruby
243
+ # Require the azure rubygem
244
+ require "azure"
245
+
246
+ # Create an azure storage queue service object
247
+ azure_queue_service = Azure::QueueService.new
248
+
249
+ # Create a queue
250
+ azure_queue_service.create_queue("test-queue")
251
+
252
+ # Create a message
253
+ azure_queue_service.create_message("test-queue", "test message")
254
+
255
+ # Get one or more messages with setting the visibility timeout
256
+ result = azure_queue_service.list_messages("test-queue", 30, {:number_of_messages => 10})
257
+
258
+ # Get one or more messages without setting the visibility timeout
259
+ result = azure_queue_service.peek_messages("test-queue", {:number_of_messages => 10})
260
+
261
+ # Update a message
262
+ message = azure_queue_service.list_messages("test-queue", 30)
263
+ pop_receipt, time_next_visible = azure_queue_service.update_message("test-queue", message.id, message.pop_receipt, "updated test message", 30)
264
+
265
+ # Delete a message
266
+ message = azure_queue_service.list_messages("test-queue", 30)
267
+ azure_queue_service.delete_message("test-queue", message.id, message.pop_receipt)
268
+
269
+ # Delete a queue
270
+ azure_queue_service.delete_queue("test-queue")
271
+ ```
272
+ ## Service Bus
273
+
274
+ ```ruby
275
+ # Require the azure rubygem
276
+ require "azure"
277
+
278
+ # Create an azure service bus object
279
+ azure_service_bus = Azure::ServiceBusService.new
280
+
281
+ # Create a queue with just the queue name
282
+ queue1 = azure_service_bus.create_queue("test-queue-1")
283
+
284
+ # Create a queue with a queue object
285
+ queue2 = Azure::ServiceBus::Queue.new("test-queue-2")
286
+ queue2.max_size_in_megabytes = 2048
287
+ queue2 = azure_service_bus.create_queue(queue2)
288
+
289
+ # Send a queue message with just the message body
290
+ azure_service_bus.send_queue_message("test-queue-1", "test queue message")
291
+
292
+ # Send a queue message with a brokered message object
293
+ message = Azure::ServiceBus::BrokeredMessage.new("another test queue message")
294
+ message.correlation_id = "test-correlation-id-1"
295
+ azure_service_bus.send_queue_message("test-queue-1", message)
296
+
297
+ # Receive a queue message
298
+ message = azure_service_bus.receive_queue_message("test-queue-1")
299
+
300
+ # Delete a queue message
301
+ azure_service_bus.delete_queue_message(message)
302
+
303
+ # Delete a queue
304
+ azure_service_bus.delete_queue("test-queue-1")
305
+ ```
306
+ ### Topics
307
+
308
+ ```ruby
309
+ # Require the azure rubygem
310
+ require "azure"
311
+
312
+ # Create an azure service bus object
313
+ azure_service_bus = Azure::ServiceBusService.new
314
+
315
+ # Create a topic with just the topic name
316
+ topic1 = azure_service_bus.create_topic("test-topic-1")
317
+
318
+ # Create a topic with a topic object
319
+ topic2 = Azure::ServiceBus::Topic.new("test-topic-2")
320
+ topic2.max_size_in_megabytes = 2048
321
+ topic2 = azure_service_bus.create_topic(topic2)
322
+
323
+ # Create a subscription
324
+ subscription = Azure::ServiceBus::Subscription.new("test-subscription-1")
325
+ subscription.topic = topic1.name
326
+ subscription = azure_service_bus.create_subscription(subscription)
327
+
328
+ # Send a topic message with just the message body
329
+ azure_service_bus.send_topic_message(topic1, "test topic message")
330
+
331
+ # Send a topic message with a brokered message object
332
+ message = Azure::ServiceBus::BrokeredMessage.new("another test topic message")
333
+ message.correlation_id = "test-correlation-id-1"
334
+ azure_service_bus.send_topic_message(topic1, message)
335
+
336
+ # Receive a subscription message
337
+ message = azure_service_bus.receive_subscription_message(topic1.name, subscription.name)
338
+
339
+ # Delete a subscription message
340
+ azure_service_bus.delete_subscription_message(message)
341
+
342
+ # Delete a subscription
343
+ azure_service_bus.delete_subscription(subscription)
344
+
345
+ # Delete a topic
346
+ azure_service_bus.delete_topic(topic1)
347
+ ```
348
+ ## Virtual Machine Management
349
+
350
+ ```ruby
351
+ # Require the azure rubygem
352
+ require 'azure'
353
+
354
+ Azure.configure do |config|
355
+ # Configure these 3 properties to use Storage
356
+ config.management_certificate = "path to *.pem or *.pfx file"
357
+ config.subscription_id = "your subscription id"
358
+ config.management_endpoint = "https://management.core.windows.net"
359
+ end
360
+
361
+ #Create a virtual machine service object
362
+ virtual_machine_service = Azure::VirtualMachineManagementService.new
363
+
364
+ #Get a list of existing virtual machines in your subscription
365
+ virtual_machine_service.list_virtual_machines
366
+
367
+ #API to shutdown Virtual Machine
368
+ virtual_machine_service.shutdown_virtual_machine('vm_name', 'cloud_service_name')
369
+
370
+ #API to start Virtual Machine
371
+ virtual_machine_service.start_virtual_machine('vm_name', 'cloud_service_name')
372
+
373
+ #API to restart Virtual Machine
374
+ virtual_machine_service.restart_virtual_machine('vm_name', 'cloud_service_name')
375
+
376
+ #API for add disk to Virtual Machine
377
+ options = {
378
+ :disk_label => 'disk-label',
379
+ :disk_size => 100, #In GB
380
+ :import => false,
381
+ :disk_name => 'Disk name' #Required when import is true
382
+ }
383
+ virtual_machine_service.add_data_disk('vm_name', 'cloud_service_name', options)
384
+
385
+ #API to add/update Virtual Machine endpoints
386
+ endpoint1 = {
387
+ :name => 'ep-1',
388
+ :public_port => 996,
389
+ :local_port => 998,
390
+ :protocol => 'TCP',
391
+ }
392
+ endpoint2 = {
393
+ :name => 'ep-2',
394
+ :public_port => 997,
395
+ :local_port => 997,
396
+ :protocol => 'TCP',
397
+ :load_balancer_name => ‘lb-ep2’,
398
+ :load_balancer => {:protocol => 'http', :path => 'hello'}
399
+ }
400
+ virtual_machine_service.update_endpoints('vm_name', 'cloud_service_name', endpoint1, endpoint2)
401
+
402
+ #API to delete Virtual Machine endpoint
403
+ virtual_machine_service.delete_endpoint('vm_name', 'cloud_service_name', 'endpoint_name')
404
+
405
+ #API to delete Virtual Machine
406
+ virtual_machine_service.delete_virtual_machine('vm_name', 'cloud_service_name')
407
+
408
+ #API to start deployment
409
+ params = {
410
+ :vm_name => 'vm_name',
411
+ :vm_user => 'azureuser',
412
+ :image => '5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-63APR20130415',
413
+ :password => 'Password',
414
+ :location => 'West US'
415
+ }
416
+ options = {
417
+ :storage_account_name => 'storage_suse',
418
+ :winrm_transport => ['https','http'], #Currently http is supported. To enable https, set the transport protocol to https, simply rdp to the VM once VM is in ready state, export the certificate ( CN name would be the deployment name) from the certstore of the VM and install to your local machine and communicate WinRM via https.
419
+ :cloud_service_name => 'cloud_service_name',
420
+ :deployment_name =>'vm_name',
421
+ :tcp_endpoints => '80,3389:3390',
422
+ :private_key_file => 'c:/private_key.key', #required for ssh or winrm(https) certificate.
423
+ :certificate_file => 'c:/certificate.pem', #required for ssh or winrm(https) certificate.
424
+ :ssh_port => 2222,
425
+ :vm_size => 'Small', #valid choices are (ExtraSmall Small Medium Large ExtraLarge A5 A6 A7 Basic_A0 Basic_A1 Basic_A2 Basic_A3 Basic_A4)
426
+ :affinity_group_name => 'affinity1',
427
+ :virtual_network_name => 'xplattestvnet',
428
+ :subnet_name => 'subnet1',
429
+ :availability_set_name => 'availabiltyset1'
430
+ }
431
+ virtual_machine_service.create_virtual_machine(params,options)
432
+
433
+ #API usage to add new roles under cloud service creating VM
434
+ #API add_role create multiple roles under the same cloud service. Atleast a single deployment should be created under a hosted service.
435
+ params = {
436
+ :vm_name => 'vm_name',
437
+ :cloud_service_name => 'cloud_service_name',
438
+ :vm_user => 'azureuser',
439
+ :image => 'a699494373c04fc0bc8f2bb1389d6106__Win2K8R2SP1-Datacenter-201305.01-en.us-127GB.vhd',
440
+ :password => 'ComplexPassword',
441
+ }
442
+ options = {
443
+ :storage_account_name => 'storage_suse',
444
+ :winrm_transport => ['https','http'], #Currently http is supported. To enable https, set the transport protocol to https, simply rdp to the VM once VM is in ready state, export the certificate ( CN name would be the deployment name) from the certstore of the VM and install to your local machine and communicate WinRM via https.
445
+ :tcp_endpoints => '80,3389:3390',
446
+ :private_key_file => 'c:/private_key.key', #required for ssh or winrm(https) certificate.
447
+ :certificate_file => 'c:/certificate.pem', #required for ssh or winrm(https) certificate.
448
+ :winrm_https_port => 5999,
449
+ :winrm_http_port => 6999, #Used to open different powershell port
450
+ :vm_size => 'Small', #valid choices are (ExtraSmall Small Medium Large ExtraLarge A5 A6 A7 Basic_A0 Basic_A1 Basic_A2 Basic_A3 Basic_A4)
451
+ :availability_set_name => 'availabiltyset'
452
+ }
453
+ virtual_machine_service.add_role(params, options)
454
+
455
+ #Get a list of available virtual machine images
456
+ virtual_machine_image_service = Azure::VirtualMachineImageManagementService.new
457
+ virtual_machine_image_service.list_virtual_machine_images
458
+
459
+ #Get a list of available regional data center locations
460
+ base_management = Azure::BaseManagementService.new
461
+ base_management.list_locations
462
+ ```
463
+ ## Affinity Group Management
464
+
465
+ ```ruby
466
+ # Require the azure rubygem
467
+ require 'azure'
468
+
469
+ #Create a affinity group service object
470
+ base_management_service = Azure::BaseManagementService.new
471
+
472
+ #Get a list of affinity group that are provisioned for a subscription.
473
+ base_management_service.list_affinity_groups
474
+
475
+ #API to delete affinity group
476
+ base_management_service.delete_affinity_group('affinity-group-name')
477
+
478
+ #API to add a new affinity group to a subscription
479
+ options = {:description => 'Some Description'}
480
+ base_management_service.create_affinity_group('affinity-group-name', 'West US', 'Label Name', options)
481
+
482
+ #API to update affinity group
483
+ options = {:description => 'Some Description'}
484
+ base_management_service.update_affinity_group('affinity-group-name', 'Label Name', options)
485
+
486
+ #API to list properties associated with the specified affinity group
487
+ base_management_service.get_affinity_group('affinity-group-name')
488
+ ```
489
+ ## SQL Database Server Management
490
+
491
+ ```ruby
492
+ # Require the azure rubygem
493
+ require 'azure'
494
+
495
+ Azure.configure do |config|
496
+ config.management_certificate = "path to *.pem or *.pfx file"
497
+ config.subscription_id = "your subscription id"
498
+ config.management_endpoint = "https://management.database.windows.net:8443/"
499
+ #To access other service management apis use "https://management.core.windows.net".
500
+ end
501
+
502
+ #Create a database server service object
503
+ sql_db_service = Azure::SqlDatabaseManagementService.new
504
+
505
+ #Get a list of SQL Database servers that are provisioned for a subscription.
506
+ sql_db_service.list_servers
507
+
508
+ #API to delete SQL Database server
509
+ sql_db_service.delete_server('server_name')
510
+
511
+ #API to adds a new SQL Database server to a subscription
512
+ sql_db_service.create_server('admin-login', 'ComplexPassword', 'West US')
513
+
514
+ #API to sets the administrative password of a SQL Database server for a subscription
515
+ sql_db_service.reset_password('server-name', 'NewPassword')
516
+
517
+ #Get a list of all the server-level firewall rules for a SQL Database server that belongs to a subscription
518
+ sql_db_service.list_sql_server_firewall_rules("server-name")
519
+
520
+ #API to adds a new server-level firewall rule or updates an existing server-level firewall rule for a SQL Database server with requester’s IP address.
521
+ sql_db_service.delete_sql_server_firewall_rule("server-name", "rule-name")
522
+
523
+ #API to add/updates server-level firewall rule for a SQL Database server that belongs to a subscription
524
+ ip_range = {:start_ip_address => "0.0.0.1", :end_ip_address => "0.0.0.5"}
525
+ sql_db_service.set_sql_server_firewall_rule("server-name", "rule-name", ip_range)
526
+
527
+ # If ip_range was not specified in the above api then the IP of the machine from where the api is being called would be set as the rule.
528
+ # To toggle between the option to allow Microsoft Azure services to access db server similar to azure portal just set the fire wall rule
529
+ # with iprange to be 0.0.0.0 as start and end.Remove the rule to unset this option.
530
+ ```
531
+ ## Virtual Network Management
532
+
533
+ ```ruby
534
+ # Require the azure rubygem
535
+ require 'azure'
536
+
537
+ #Create a virtual network service object
538
+
539
+ vnet = Azure::VirtualNetworkManagementService.new
540
+
541
+ #API to get a list of virtual networks created for a subscription.
542
+
543
+ vnet.list_virtual_networks
544
+
545
+ #API to configure virtual network with required and optional parameters
546
+
547
+ address_space = ['172.16.0.0/12', '10.0.0.0/8', '192.168.0.0/24']
548
+
549
+ subnets = [{:name => 'subnet-1', :ip_address=>'172.16.0.0', :cidr=>12}, {:name => 'subnet-2', :ip_address=>'10.0.0.0', :cidr=>8}]
550
+
551
+ dns_servers = [{:name => 'dns-1', :ip_address=>'1.2.3.4'}, {:name => 'dns-2', :ip_address=>'8.7.6.5'}]
552
+
553
+ options = {:subnet => subnets, :dns => dns_servers}
554
+
555
+ vnet.set_network_configuration('virtual-network-name', 'affinity-group-name', address_space, options)
556
+
557
+ #API to configure virtual network from xml file that can be exported from management portal and customized to add or delete vnet
558
+
559
+ vnetxml = './customnetwork.xml'
560
+
561
+ vnet.set_network_configuration(vnetxml)
562
+ ```
563
+
564
+ # Useful commands for certificate operations
565
+
566
+ Currently the sdk supports *.pem or *.pfx (passwordless pfx) for service management operations. Following are the steps discussed on various cert operations.
567
+
568
+ * To create pfx, simply download the publishsettings file for your subscription, copy the contents of Management Certificate from the publishsettings and save it in a file and name the file as your cert.pfx. This pfx will be a passwordless pfx which can be supplied as a cert parameter for Service Management Commands
569
+ * Using the following openssl commands to extract the pem file and pass the pem file as management cert parameter.
570
+ * To get only private key from pfx use Openssl.exe pkcs12 -in cert.pfx -nocerts -out cert.pem
571
+ * To remove passphrase from the above private key use ``Openssl.exe rsa -in cert.pem -out certprivnopassword.pem``
572
+ * To extract both public & private keys from pfx use ``Openssl.exe pkcs12 -in cert.pfx -out certprivpub.pem``
573
+ * To extract only public key from pem use ``Openssl.exe x509 -inform pem -in certprivpub.pem -pubkey -out certpub.pem -outform pem``
574
+ * Finally copy the public key & private key to a file *.pem and pass that pem file to management cert parameter.
575
+ * To extract pem from custom certificate, export the pfx, follow the above steps to convert to pem and pass that pem file to management cert parameter.
576
+
577
+ # Need Help?
578
+
579
+ Be sure to check out the Microsoft Azure [Developer Forums on Stack Overflow and MSDN](http://go.microsoft.com/fwlink/?LinkId=234489) if you have trouble with the provided code.
580
+
581
+ # Contribute Code or Provide Feedback
582
+
583
+ If you would like to become an active contributor to this project please follow the instructions provided in [Microsoft Azure Projects Contribution Guidelines](http://windowsazure.github.com/guidelines.html).
584
+ If you encounter any bugs with the library please file an issue in the [Issues](https://github.com/Azure/azure-sdk-for-ruby/issues) section of the project.
585
+
586
+ # Learn More
587
+
588
+ For documentation on how to host Ruby applications on Microsoft Azure, please see the [Microsoft Azure Ruby Developer Center](http://www.windowsazure.com/en-us/develop/ruby/).
589
+ For documentation on Azure PowerShell CLI tool for Windows, please see our readme [here](http://github.com/azure/azure-sdk-tools).
590
+ For documentation on the Azure cross platform CLI tool for Windows, Mac and Linux, please see our readme [here](http://github.com/azure/azure-sdk-tools-xplat).