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

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