azure 0.5.0 → 0.6.0

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