stuartpreston-azure-sdk-for-ruby 0.6.5

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