azurex 0.6.5

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