juliusl-azure-sdk-for-ruby 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. checksums.yaml +7 -0
  2. data/.env_sample +11 -0
  3. data/.gitignore +15 -0
  4. data/.travis.yml +13 -0
  5. data/ChangeLog.txt +56 -0
  6. data/Gemfile +16 -0
  7. data/LICENSE.txt +202 -0
  8. data/README.md +630 -0
  9. data/Rakefile +121 -0
  10. data/azure.gemspec +47 -0
  11. data/bin/pfxer +35 -0
  12. data/lib/azure.rb +60 -0
  13. data/lib/azure/base_management/affinity_group.rb +32 -0
  14. data/lib/azure/base_management/base_management_service.rb +245 -0
  15. data/lib/azure/base_management/location.rb +27 -0
  16. data/lib/azure/base_management/management_http_request.rb +175 -0
  17. data/lib/azure/base_management/serialization.rb +135 -0
  18. data/lib/azure/base_management/sql_management_http_request.rb +45 -0
  19. data/lib/azure/blob/auth/shared_access_signature.rb +141 -0
  20. data/lib/azure/blob/blob.rb +32 -0
  21. data/lib/azure/blob/blob_service.rb +1427 -0
  22. data/lib/azure/blob/block.rb +31 -0
  23. data/lib/azure/blob/container.rb +32 -0
  24. data/lib/azure/blob/serialization.rb +285 -0
  25. data/lib/azure/cloud_service_management/cloud_service.rb +38 -0
  26. data/lib/azure/cloud_service_management/cloud_service_management_service.rb +137 -0
  27. data/lib/azure/cloud_service_management/serialization.rb +118 -0
  28. data/lib/azure/core.rb +41 -0
  29. data/lib/azure/core/auth/authorizer.rb +36 -0
  30. data/lib/azure/core/auth/shared_key.rb +110 -0
  31. data/lib/azure/core/auth/shared_key_lite.rb +48 -0
  32. data/lib/azure/core/auth/signer.rb +52 -0
  33. data/lib/azure/core/configuration.rb +218 -0
  34. data/lib/azure/core/error.rb +22 -0
  35. data/lib/azure/core/filtered_service.rb +44 -0
  36. data/lib/azure/core/http/debug_filter.rb +36 -0
  37. data/lib/azure/core/http/http_error.rb +88 -0
  38. data/lib/azure/core/http/http_filter.rb +53 -0
  39. data/lib/azure/core/http/http_request.rb +160 -0
  40. data/lib/azure/core/http/http_response.rb +140 -0
  41. data/lib/azure/core/http/retry_policy.rb +74 -0
  42. data/lib/azure/core/http/signer_filter.rb +34 -0
  43. data/lib/azure/core/service.rb +63 -0
  44. data/lib/azure/core/signed_service.rb +43 -0
  45. data/lib/azure/core/utility.rb +242 -0
  46. data/lib/azure/queue/message.rb +30 -0
  47. data/lib/azure/queue/queue.rb +29 -0
  48. data/lib/azure/queue/queue_service.rb +568 -0
  49. data/lib/azure/queue/serialization.rb +106 -0
  50. data/lib/azure/service/access_policy.rb +26 -0
  51. data/lib/azure/service/cors.rb +11 -0
  52. data/lib/azure/service/cors_rule.rb +15 -0
  53. data/lib/azure/service/enumeration_results.rb +21 -0
  54. data/lib/azure/service/logging.rb +32 -0
  55. data/lib/azure/service/metrics.rb +31 -0
  56. data/lib/azure/service/retention_policy.rb +25 -0
  57. data/lib/azure/service/serialization.rb +299 -0
  58. data/lib/azure/service/signed_identifier.rb +30 -0
  59. data/lib/azure/service/storage_service.rb +83 -0
  60. data/lib/azure/service/storage_service_properties.rb +37 -0
  61. data/lib/azure/service_bus/action.rb +21 -0
  62. data/lib/azure/service_bus/auth/wrap_service.rb +89 -0
  63. data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
  64. data/lib/azure/service_bus/brokered_message.rb +124 -0
  65. data/lib/azure/service_bus/brokered_message_serializer.rb +159 -0
  66. data/lib/azure/service_bus/correlation_filter.rb +45 -0
  67. data/lib/azure/service_bus/empty_rule_action.rb +30 -0
  68. data/lib/azure/service_bus/false_filter.rb +38 -0
  69. data/lib/azure/service_bus/filter.rb +21 -0
  70. data/lib/azure/service_bus/interval.rb +104 -0
  71. data/lib/azure/service_bus/queue.rb +230 -0
  72. data/lib/azure/service_bus/relay.rb +88 -0
  73. data/lib/azure/service_bus/resource.rb +109 -0
  74. data/lib/azure/service_bus/rule.rb +98 -0
  75. data/lib/azure/service_bus/rule_aspect.rb +34 -0
  76. data/lib/azure/service_bus/serialization.rb +161 -0
  77. data/lib/azure/service_bus/service_bus_service.rb +895 -0
  78. data/lib/azure/service_bus/sql_filter.rb +50 -0
  79. data/lib/azure/service_bus/sql_rule_action.rb +50 -0
  80. data/lib/azure/service_bus/subscription.rb +184 -0
  81. data/lib/azure/service_bus/topic.rb +187 -0
  82. data/lib/azure/service_bus/true_filter.rb +38 -0
  83. data/lib/azure/sql_database_management/serialization.rb +112 -0
  84. data/lib/azure/sql_database_management/sql_database.rb +31 -0
  85. data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -0
  86. data/lib/azure/storage_management/serialization.rb +204 -0
  87. data/lib/azure/storage_management/storage_account.rb +48 -0
  88. data/lib/azure/storage_management/storage_management_service.rb +208 -0
  89. data/lib/azure/table/auth/shared_key.rb +92 -0
  90. data/lib/azure/table/auth/shared_key_lite.rb +44 -0
  91. data/lib/azure/table/batch.rb +330 -0
  92. data/lib/azure/table/batch_response.rb +118 -0
  93. data/lib/azure/table/edmtype.rb +127 -0
  94. data/lib/azure/table/entity.rb +31 -0
  95. data/lib/azure/table/guid.rb +24 -0
  96. data/lib/azure/table/query.rb +112 -0
  97. data/lib/azure/table/serialization.rb +108 -0
  98. data/lib/azure/table/table_service.rb +560 -0
  99. data/lib/azure/version.rb +31 -0
  100. data/lib/azure/virtual_machine_image_management/serialization.rb +70 -0
  101. data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -0
  102. data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -0
  103. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +89 -0
  104. data/lib/azure/virtual_machine_management/serialization.rb +459 -0
  105. data/lib/azure/virtual_machine_management/virtual_machine.rb +44 -0
  106. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +554 -0
  107. data/lib/azure/virtual_network_management/serialization.rb +193 -0
  108. data/lib/azure/virtual_network_management/virtual_network.rb +37 -0
  109. data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -0
  110. data/test/fixtures/32px-fulls-black.jpg +0 -0
  111. data/test/fixtures/affinity_group.xml +33 -0
  112. data/test/fixtures/all_containers.xml +20 -0
  113. data/test/fixtures/all_tables.xml +22 -0
  114. data/test/fixtures/container_acl.xml +11 -0
  115. data/test/fixtures/create_sql_database_server.xml +2 -0
  116. data/test/fixtures/create_storage_desc_error.xml +5 -0
  117. data/test/fixtures/create_storage_extendedprop_error.xml +8 -0
  118. data/test/fixtures/create_storage_extendedpropname_error.xml +6 -0
  119. data/test/fixtures/create_storage_full_error.xml +6 -0
  120. data/test/fixtures/create_storage_label_error.xml +5 -0
  121. data/test/fixtures/create_storage_location_error.xml +5 -0
  122. data/test/fixtures/create_storage_name_error.xml +6 -0
  123. data/test/fixtures/create_table_response_entry.xml +15 -0
  124. data/test/fixtures/delete_storage_container_error.xml +5 -0
  125. data/test/fixtures/delete_storage_error.xml +5 -0
  126. data/test/fixtures/deployment_error.xml +5 -0
  127. data/test/fixtures/empty_xml_file +0 -0
  128. data/test/fixtures/get_storage_account_error.xml +5 -0
  129. data/test/fixtures/get_storage_account_properties.xml +34 -0
  130. data/test/fixtures/get_storage_account_properties_new.xml +32 -0
  131. data/test/fixtures/http_error.xml +5 -0
  132. data/test/fixtures/insert_entity_response_entry.xml +25 -0
  133. data/test/fixtures/list_affinity_groups.xml +22 -0
  134. data/test/fixtures/list_blobs.xml +121 -0
  135. data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
  136. data/test/fixtures/list_blocks_all.xml +23 -0
  137. data/test/fixtures/list_blocks_committed.xml +13 -0
  138. data/test/fixtures/list_cloud_services.xml +39 -0
  139. data/test/fixtures/list_containers.xml +38 -0
  140. data/test/fixtures/list_firewall_management_endpoint.xml +27 -0
  141. data/test/fixtures/list_locations.xml +212 -0
  142. data/test/fixtures/list_os_images.xml +110 -0
  143. data/test/fixtures/list_page_ranges.xml +11 -0
  144. data/test/fixtures/list_sql_database.xml +36 -0
  145. data/test/fixtures/list_sql_server_firewall.xml +23 -0
  146. data/test/fixtures/list_storage_account_single.xml +25 -0
  147. data/test/fixtures/list_storage_accounts.xml +48 -0
  148. data/test/fixtures/list_virtual_networks.xml +92 -0
  149. data/test/fixtures/list_vm_images.xml +21 -0
  150. data/test/fixtures/logging.xml +11 -0
  151. data/test/fixtures/messages.xml +12 -0
  152. data/test/fixtures/metrics.xml +10 -0
  153. data/test/fixtures/privatekey.key +28 -0
  154. data/test/fixtures/query_entities_empty_response.xml +7 -0
  155. data/test/fixtures/query_entities_response.xml +45 -0
  156. data/test/fixtures/queue_service_properties.xml +22 -0
  157. data/test/fixtures/queue_service_properties_original.xml +19 -0
  158. data/test/fixtures/queues.xml +16 -0
  159. data/test/fixtures/retention_policy.xml +5 -0
  160. data/test/fixtures/sb_default_create_queue_response.xml +23 -0
  161. data/test/fixtures/sb_default_create_relay_response.xml +15 -0
  162. data/test/fixtures/sb_default_create_topic_response.xml +18 -0
  163. data/test/fixtures/sb_get_access_token_response.txt +1 -0
  164. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -0
  165. data/test/fixtures/storage_service_keys.xml +8 -0
  166. data/test/fixtures/storage_service_properties.xml +55 -0
  167. data/test/fixtures/update_storage_account.xml +16 -0
  168. data/test/fixtures/update_storage_error.xml +5 -0
  169. data/test/fixtures/updated_storage_accounts.xml +55 -0
  170. data/test/fixtures/virtual_machine.xml +116 -0
  171. data/test/fixtures/windows_virtual_machine.xml +106 -0
  172. data/test/integration/affinity_group/Affinity_test.rb +55 -0
  173. data/test/integration/affinity_group/Create_Affinity_test.rb +64 -0
  174. data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -0
  175. data/test/integration/affinity_group/List_Affinity_test.rb +41 -0
  176. data/test/integration/affinity_group/Update_Affinity_test.rb +83 -0
  177. data/test/integration/blob/blob_gb18030_test.rb +199 -0
  178. data/test/integration/blob/blob_metadata_test.rb +75 -0
  179. data/test/integration/blob/blob_pages_test.rb +119 -0
  180. data/test/integration/blob/blob_properties_test.rb +77 -0
  181. data/test/integration/blob/block_blob_test.rb +254 -0
  182. data/test/integration/blob/container/container_acl_test.rb +69 -0
  183. data/test/integration/blob/container/container_metadata_test.rb +50 -0
  184. data/test/integration/blob/container/create_container_test.rb +60 -0
  185. data/test/integration/blob/container/delete_container_test.rb +39 -0
  186. data/test/integration/blob/container/get_container_properties_test.rb +48 -0
  187. data/test/integration/blob/container/list_containers_test.rb +79 -0
  188. data/test/integration/blob/container/root_container_test.rb +54 -0
  189. data/test/integration/blob/copy_blob_test.rb +113 -0
  190. data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
  191. data/test/integration/blob/create_page_blob_test.rb +83 -0
  192. data/test/integration/blob/delete_blob_test.rb +159 -0
  193. data/test/integration/blob/get_blob_test.rb +65 -0
  194. data/test/integration/blob/informative_errors_test.rb +39 -0
  195. data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
  196. data/test/integration/blob/lease/break_lease_test.rb +40 -0
  197. data/test/integration/blob/lease/release_lease_test.rb +40 -0
  198. data/test/integration/blob/lease/renew_lease_test.rb +42 -0
  199. data/test/integration/blob/list_blobs_test.rb +113 -0
  200. data/test/integration/cloud_service/Cloud_Create_test.rb +45 -0
  201. data/test/integration/cloud_service/Cloud_Delete_test.rb +45 -0
  202. data/test/integration/database/create_sql_server_firewall_test.rb +86 -0
  203. data/test/integration/database/create_sql_server_test.rb +53 -0
  204. data/test/integration/database/delete_sql_server_firewall_test.rb +70 -0
  205. data/test/integration/database/delete_sql_server_test.rb +58 -0
  206. data/test/integration/database/list_sql_server_firewall_test.rb +45 -0
  207. data/test/integration/database/list_sql_servers_test.rb +44 -0
  208. data/test/integration/database/reset_password_sql_server_test.rb +55 -0
  209. data/test/integration/location/Location_List_test.rb +39 -0
  210. data/test/integration/location/RoleSize_List_test.rb +35 -0
  211. data/test/integration/queue/clear_messages_test.rb +42 -0
  212. data/test/integration/queue/create_message_test.rb +75 -0
  213. data/test/integration/queue/create_queue_test.rb +50 -0
  214. data/test/integration/queue/delete_message_test.rb +67 -0
  215. data/test/integration/queue/delete_queue_test.rb +45 -0
  216. data/test/integration/queue/informative_errors_test.rb +42 -0
  217. data/test/integration/queue/list_messages_encoded_test.rb +79 -0
  218. data/test/integration/queue/list_messages_test.rb +79 -0
  219. data/test/integration/queue/list_queues_test.rb +44 -0
  220. data/test/integration/queue/peek_messages_test.rb +59 -0
  221. data/test/integration/queue/queue_gb18030_test.rb +131 -0
  222. data/test/integration/queue/queue_metadata_test.rb +40 -0
  223. data/test/integration/queue/update_message_test.rb +74 -0
  224. data/test/integration/service_bus/informative_errors_test.rb +37 -0
  225. data/test/integration/service_bus/queues_scenario_test.rb +200 -0
  226. data/test/integration/service_bus/queues_test.rb +266 -0
  227. data/test/integration/service_bus/relay_test.rb +132 -0
  228. data/test/integration/service_bus/rules_test.rb +145 -0
  229. data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -0
  230. data/test/integration/service_bus/scenario_test.rb +101 -0
  231. data/test/integration/service_bus/subscriptions_test.rb +211 -0
  232. data/test/integration/service_bus/topics_scenario_test.rb +406 -0
  233. data/test/integration/service_bus/topics_test.rb +129 -0
  234. data/test/integration/storage_management/storage_management_test.rb +185 -0
  235. data/test/integration/table/create_table_test.rb +36 -0
  236. data/test/integration/table/delete_entity_batch_test.rb +107 -0
  237. data/test/integration/table/delete_entity_test.rb +94 -0
  238. data/test/integration/table/delete_table_test.rb +40 -0
  239. data/test/integration/table/get_table_test.rb +37 -0
  240. data/test/integration/table/informative_errors_test.rb +39 -0
  241. data/test/integration/table/insert_entity_batch_test.rb +100 -0
  242. data/test/integration/table/insert_entity_test.rb +88 -0
  243. data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
  244. data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
  245. data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
  246. data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
  247. data/test/integration/table/merge_entity_batch_test.rb +128 -0
  248. data/test/integration/table/merge_entity_test.rb +113 -0
  249. data/test/integration/table/query_entities_test.rb +195 -0
  250. data/test/integration/table/query_tables_test.rb +43 -0
  251. data/test/integration/table/query_test.rb +251 -0
  252. data/test/integration/table/table_acl_test.rb +52 -0
  253. data/test/integration/table/table_gb18030_test.rb +355 -0
  254. data/test/integration/table/update_entity_batch_test.rb +149 -0
  255. data/test/integration/table/update_entity_test.rb +131 -0
  256. data/test/integration/test_helper.rb +38 -0
  257. data/test/integration/vm/VM_Create_test.rb +262 -0
  258. data/test/integration/vm/VM_Delete_test.rb +53 -0
  259. data/test/integration/vm/VM_Operations_test.rb +172 -0
  260. data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -0
  261. data/test/integration/vm_image/virtual_machine_image_test.rb +37 -0
  262. data/test/integration/vnet/Virtual_Network_Create_test.rb +116 -0
  263. data/test/integration/vnet/Virtual_Network_list_test.rb +48 -0
  264. data/test/support/env.rb +19 -0
  265. data/test/support/fixtures.rb +36 -0
  266. data/test/support/name_generator.rb +168 -0
  267. data/test/support/stubs.rb +42 -0
  268. data/test/support/virtual_machine_name_generator.rb +102 -0
  269. data/test/support/virtual_network_helper.rb +73 -0
  270. data/test/test_helper.rb +44 -0
  271. data/test/unit/affinity_group/affinity_group_test.rb +189 -0
  272. data/test/unit/affinity_group/serialization_test.rb +87 -0
  273. data/test/unit/base_management/location_test.rb +56 -0
  274. data/test/unit/base_management/role_size_test.rb +50 -0
  275. data/test/unit/blob/auth/shared_access_signature_test.rb +71 -0
  276. data/test/unit/blob/blob_service_test.rb +1969 -0
  277. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -0
  278. data/test/unit/cloud_service_management/serialization_test.rb +169 -0
  279. data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
  280. data/test/unit/core/auth/shared_key_test.rb +58 -0
  281. data/test/unit/core/auth/signer_test.rb +30 -0
  282. data/test/unit/core/http/http_error_test.rb +62 -0
  283. data/test/unit/core/http/http_request_test.rb +113 -0
  284. data/test/unit/core/http/http_response_test.rb +45 -0
  285. data/test/unit/core/http/retry_policy_test.rb +23 -0
  286. data/test/unit/core/utility_test.rb +122 -0
  287. data/test/unit/database/serialization_test.rb +97 -0
  288. data/test/unit/database/sql_database_server_service_test.rb +284 -0
  289. data/test/unit/service/serialization_test.rb +533 -0
  290. data/test/unit/service/storage_service_test.rb +293 -0
  291. data/test/unit/storage_management/serialization_test.rb +244 -0
  292. data/test/unit/storage_management/storage_management_service_test.rb +247 -0
  293. data/test/unit/table/edmtype_test.rb +108 -0
  294. data/test/unit/virtual_machine_image_management/serialization_test.rb +50 -0
  295. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +114 -0
  296. data/test/unit/virtual_machine_management/serialization_test.rb +316 -0
  297. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +478 -0
  298. data/test/unit/vnet/serialization_test.rb +187 -0
  299. data/test/unit/vnet/virtual_network_management_service_test.rb +131 -0
  300. metadata +512 -0
@@ -0,0 +1,121 @@
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
+ require 'rake/testtask'
16
+ require 'rubygems/package_task'
17
+ require 'dotenv/tasks'
18
+
19
+ gem_spec = eval(File.read('./azure.gemspec'))
20
+ Gem::PackageTask.new(gem_spec) do |pkg|
21
+ pkg.need_zip = false
22
+ pkg.need_tar = false
23
+ end
24
+
25
+ namespace :test do
26
+ task :require_environment => :dotenv do
27
+ unset_environment = [
28
+ ENV.fetch('AZURE_STORAGE_ACCOUNT', nil),
29
+ ENV.fetch('AZURE_STORAGE_ACCESS_KEY', nil),
30
+ ENV.fetch('AZURE_SERVICEBUS_NAMESPACE', nil),
31
+ ENV.fetch('AZURE_SERVICEBUS_ACCESS_KEY', nil),
32
+ ENV.fetch('AZURE_MANAGEMENT_CERTIFICATE', nil),
33
+ ENV.fetch('AZURE_SUBSCRIPTION_ID', nil)
34
+ ].include?(nil)
35
+
36
+ abort '[ABORTING] Configure your environment to run the integration tests' if unset_environment
37
+ end
38
+
39
+ Rake::TestTask.new :unit do |t|
40
+ t.pattern = 'test/unit/**/*_test.rb'
41
+ t.verbose = true
42
+ t.libs = %w(lib test)
43
+ end
44
+
45
+ namespace :unit do
46
+ def component_task(component)
47
+ Rake::TestTask.new component do |t|
48
+ t.pattern = "test/unit/#{component}/**/*_test.rb"
49
+ t.verbose = true
50
+ t.libs = %w(lib test)
51
+ end
52
+
53
+ task component => 'test:require_environment'
54
+ end
55
+
56
+ component_task :affinity_group
57
+ component_task :base_management
58
+ component_task :blob
59
+ component_task :cloud_service_management
60
+ component_task :core
61
+ component_task :database
62
+ component_task :service
63
+ component_task :storage_management
64
+ component_task :table
65
+ component_task :virtual_machine_image_management
66
+ component_task :virtual_machine_management
67
+ component_task :vnet
68
+ end
69
+
70
+ Rake::TestTask.new :integration do |t|
71
+ t.pattern = 'test/integration/**/*_test.rb'
72
+ t.verbose = true
73
+ t.libs = %w(lib test)
74
+ end
75
+
76
+ task :integration => :require_environment
77
+
78
+ namespace :integration do
79
+ def component_task(component)
80
+ Rake::TestTask.new component do |t|
81
+ t.pattern = "test/integration/#{component}/**/*_test.rb"
82
+ t.verbose = true
83
+ t.libs = %w(lib test)
84
+ end
85
+
86
+ task component => 'test:require_environment'
87
+ end
88
+
89
+ component_task :affinity_group
90
+ component_task :blob
91
+ component_task :database
92
+ component_task :location
93
+ component_task :queue
94
+ component_task :service_bus
95
+ component_task :storage_management
96
+ component_task :table
97
+ component_task :vm
98
+ component_task :vm_image
99
+ component_task :vnet
100
+ end
101
+
102
+ task :cleanup => :require_environment do
103
+ $:.unshift 'lib'
104
+ require 'azure'
105
+
106
+ Azure.configure do |config|
107
+ config.access_key = ENV.fetch('AZURE_STORAGE_ACCESS_KEY')
108
+ config.account_name = ENV.fetch('AZURE_STORAGE_ACCOUNT')
109
+ config.acs_namespace = ENV.fetch('AZURE_SERVICEBUS_NAMESPACE')
110
+ config.sb_access_key = ENV.fetch('AZURE_SERVICEBUS_ACCESS_KEY')
111
+ config.management_certificate = ENV.fetch('AZURE_MANAGEMENT_CERTIFICATE')
112
+ config.management_endpoint = ENV.fetch('AZURE_MANAGEMENT_ENDPOINT')
113
+ config.sql_database_management_endpoint = ENV.fetch('AZURE_SQL_DATABASE_MANAGEMENT_ENDPOINT')
114
+ config.subscription_id = ENV.fetch('AZURE_SUBSCRIPTION_ID')
115
+ end
116
+ end
117
+ end
118
+
119
+ task :test => %w(test:unit test:integration)
120
+
121
+ task :default => :test
@@ -0,0 +1,47 @@
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
+ require 'date'
16
+
17
+ require File.expand_path('../lib/azure/version', __FILE__)
18
+
19
+ Gem::Specification.new do |s|
20
+ s.name = 'juliusl-azure-sdk-for-ruby'
21
+ s.version = '0.7.0'
22
+ s.authors = ['Microsoft Corporation', 'AppFog']
23
+ s.email = 'juliusl@microsoft.com'
24
+ s.description = 'Windows Azure Client Library for Ruby'
25
+ s.summary = 'Juliusl fork. Unofficial ruby client library to consume Windows Azure services.'
26
+ s.homepage = 'http://github.com/juliusl/azure-sdk-for-ruby'
27
+ s.license = 'Apache License, Version 2.0'
28
+ s.files = `git ls-files`.split("\n")
29
+ s.bindir = 'bin'
30
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
31
+
32
+ s.required_ruby_version = '>= 1.9.3'
33
+
34
+ s.add_runtime_dependency('nokogiri', '~> 1.6')
35
+ s.add_runtime_dependency('mime-types', '~> 2.0')
36
+ s.add_runtime_dependency('json', '~> 1.8')
37
+ s.add_runtime_dependency('uuid', '~> 2.0')
38
+ s.add_runtime_dependency('systemu', '~> 2.6')
39
+ s.add_runtime_dependency('thor', '~> 0.19')
40
+
41
+ s.add_development_dependency('rake', '~> 10.0')
42
+ s.add_development_dependency('minitest', '~> 5')
43
+ s.add_development_dependency('minitest-reporters', '~> 1')
44
+ s.add_development_dependency('mocha', '~> 1.0')
45
+ s.add_development_dependency('timecop', '~> 0.7')
46
+ s.add_development_dependency('dotenv', '~> 2.0' )
47
+ end
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby -U
2
+
3
+ require 'azure'
4
+ require 'thor'
5
+ require 'fileutils'
6
+
7
+ module Azure
8
+ class Pfxer < Thor
9
+ desc 'transform', 'Transforms a publish settings file from Azure into a .pfx'
10
+
11
+ long_desc <<-TRANSFORM
12
+
13
+ `transform` will create a .pfx file from an Azure publish settings file. The publish settings file contains a
14
+ pfx, but the pfx is base64 encode within the publish settings xml structure. This is here to make that a little
15
+ easier.
16
+
17
+ TRANSFORM
18
+
19
+ option :in, required: true, desc: 'Path to publish settings file'
20
+ option :out, desc: 'Path to where you want your .pfx'
21
+ def transform
22
+ path = File.expand_path(options[:in])
23
+ if File.exists?(path)
24
+ pub_settings_xml = Nokogiri::XML(File.read(path))
25
+ b64_pfx = pub_settings_xml.css('PublishData PublishProfile Subscription')[0]['ManagementCertificate']
26
+ pfx = Base64.decode64(b64_pfx)
27
+ file_name = File.basename(path, '.publishsettings').downcase.gsub(' ', '_')
28
+ out_path = options[:out] || File.join(File.dirname(path), file_name + '.pfx')
29
+ File.binwrite(File.expand_path(out_path), pfx)
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ Azure::Pfxer.start(ARGV)
@@ -0,0 +1,60 @@
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
+ module Azure; end
16
+
17
+ require 'rubygems'
18
+ require 'nokogiri'
19
+ require 'base64'
20
+ require 'openssl'
21
+ require 'uri'
22
+ require 'rexml/document'
23
+
24
+ require 'azure/core'
25
+ require 'azure/blob/blob_service'
26
+ require 'azure/queue/queue_service'
27
+ require 'azure/service_bus/service_bus_service'
28
+ require 'azure/service_bus/empty_rule_action'
29
+ require 'azure/service_bus/sql_rule_action'
30
+ require 'azure/service_bus/sql_filter'
31
+ require 'azure/service_bus/true_filter'
32
+ require 'azure/service_bus/correlation_filter'
33
+ require 'azure/table/table_service'
34
+ require 'azure/table/batch'
35
+ require 'azure/table/query'
36
+ require 'azure/core/utility'
37
+ require 'azure/base_management/management_http_request'
38
+ require 'azure/base_management/sql_management_http_request'
39
+ require 'azure/base_management/base_management_service'
40
+ require 'azure/virtual_machine_image_management/virtual_machine_image_management_service'
41
+ require 'azure/virtual_machine_management/virtual_machine_management_service'
42
+ require 'azure/storage_management/storage_management_service'
43
+ require 'azure/cloud_service_management/cloud_service_management_service'
44
+ require 'azure/base_management/location'
45
+ require 'azure/sql_database_management/sql_database_management_service'
46
+ require 'azure/virtual_network_management/virtual_network_management_service'
47
+
48
+ # add some aliases for convenience
49
+ Azure::BlobService = Azure::Blob::BlobService
50
+ Azure::QueueService = Azure::Queue::QueueService
51
+ Azure::TableService = Azure::Table::TableService
52
+ Azure::ServiceBusService = Azure::ServiceBus::ServiceBusService
53
+ Azure::VirtualMachineImageManagementService = Azure::VirtualMachineImageManagement::VirtualMachineImageManagementService
54
+ Azure::BaseManagementService = Azure::BaseManagement::BaseManagementService
55
+ Azure::CloudServiceManagementService = Azure::CloudServiceManagement::CloudServiceManagementService
56
+ Azure::StorageManagementService = Azure::StorageManagement::StorageManagementService
57
+ Azure::VirtualMachineManagementService = Azure::VirtualMachineManagement::VirtualMachineManagementService
58
+ Azure::SqlDatabaseManagementService = Azure::SqlDatabaseManagement::SqlDatabaseManagementService
59
+ Azure::VirtualNetworkManagementService = Azure::VirtualNetworkManagement::VirtualNetworkManagementService
60
+ Azure::Loggerx = Azure::Core::Logger
@@ -0,0 +1,32 @@
1
+ #-------------------------------------------------------------------------
2
+ # Copyright 2013 Microsoft Open Technologies, Inc.
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
+ module Azure
16
+ module BaseManagement
17
+ # Represents an AffinityGroup
18
+ class AffinityGroup
19
+ def initialize
20
+ yield self if block_given?
21
+ end
22
+
23
+ attr_accessor :name
24
+ attr_accessor :label
25
+ attr_accessor :description
26
+ attr_accessor :location
27
+ attr_accessor :hosted_services
28
+ attr_accessor :storage_services
29
+ attr_accessor :capability
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,245 @@
1
+ #-------------------------------------------------------------------------
2
+ # Copyright 2013 Microsoft Open Technologies, Inc.
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
+
16
+ require 'azure/base_management/serialization'
17
+ require 'azure/base_management/location'
18
+ require 'azure/base_management/affinity_group'
19
+
20
+ module Azure
21
+ module BaseManagement
22
+ class BaseManagementService
23
+ def initialize
24
+ validate_configuration
25
+ cert_file = Azure.config.management_certificate
26
+ cert_file = read_cert_from_file(cert_file) if File.file?(cert_file)
27
+
28
+ begin
29
+ if cert_file =~ /-----BEGIN CERTIFICATE-----/
30
+ certificate_key = OpenSSL::X509::Certificate.new(cert_file)
31
+ private_key = OpenSSL::PKey::RSA.new(cert_file)
32
+ else
33
+ # Parse pfx content
34
+ cert_content = OpenSSL::PKCS12.new(cert_file)
35
+ certificate_key = OpenSSL::X509::Certificate.new(
36
+ cert_content.certificate.to_pem
37
+ )
38
+ private_key = OpenSSL::PKey::RSA.new(cert_content.key.to_pem)
39
+ end
40
+ rescue OpenSSL::OpenSSLError => e
41
+ raise "Management certificate not valid. Error: #{e.message}"
42
+ end
43
+
44
+ Azure.configure do |config|
45
+ config.http_certificate_key = certificate_key
46
+ config.http_private_key = private_key
47
+ end
48
+ end
49
+
50
+ def validate_configuration
51
+ subs_id = Azure.config.subscription_id
52
+ error_message = 'Subscription ID not valid.'
53
+ raise error_message if subs_id.nil? || subs_id.empty?
54
+
55
+ m_ep = Azure.config.management_endpoint
56
+ error_message = 'Management endpoint not valid.'
57
+ raise error_message if m_ep.nil? || m_ep.empty?
58
+
59
+ m_cert = Azure.config.management_certificate
60
+ if File.file?(m_cert) && File.extname(m_cert).downcase =~ /(pem|pfx)$/ # validate only if input is file path
61
+ error_message = "Could not read from file '#{m_cert}'."
62
+ raise error_message unless test('r', m_cert)
63
+ end
64
+ end
65
+
66
+ # Public: Gets a list of regional data center locations from the server
67
+ #
68
+ # Returns an array of Azure::BaseManagement::Location objects
69
+ def list_locations
70
+ request = Azure::BaseManagement::ManagementHttpRequest.new(:get, '/locations')
71
+ response = request.call
72
+ Serialization.locations_from_xml(response)
73
+ end
74
+
75
+ # Public: Gets a list of role sizes associated with the
76
+ # specified subscription.
77
+ #
78
+ # Returns an array of String values for role sizes
79
+ def list_role_sizes
80
+ role_sizes = []
81
+ locations = list_locations
82
+ locations.each do | location |
83
+ role_sizes << location.role_sizes
84
+ end
85
+ role_sizes.flatten.uniq.compact.sort
86
+ end
87
+
88
+ # Public: Gets a lists the affinity groups associated with
89
+ # the specified subscription.
90
+ #
91
+ # See http://msdn.microsoft.com/en-us/library/azure/ee460797.aspx
92
+ #
93
+ # Returns an array of Azure::BaseManagement::AffinityGroup objects
94
+ def list_affinity_groups
95
+ request_path = '/affinitygroups'
96
+ request = Azure::BaseManagement::ManagementHttpRequest.new(:get, request_path, nil)
97
+ response = request.call
98
+ Serialization.affinity_groups_from_xml(response)
99
+ end
100
+
101
+ # Public: Creates a new affinity group for the specified subscription.
102
+ #
103
+ # ==== Attributes
104
+ #
105
+ # * +name+ - String. Affinity Group name.
106
+ # * +location+ - String. The location where the affinity group will
107
+ # be created.
108
+ # * +label+ - String. Name for the affinity specified as a
109
+ # base-64 encoded string.
110
+ #
111
+ # ==== Options
112
+ #
113
+ # Accepted key/value pairs are:
114
+ # * +:description+ - String. A description for the affinity group.
115
+ # (optional)
116
+ #
117
+ # See http://msdn.microsoft.com/en-us/library/azure/gg715317.aspx
118
+ #
119
+ # Returns: None
120
+ def create_affinity_group(name, location, label, options = {})
121
+ if name.nil? || name.strip.empty?
122
+ raise 'Affinity Group name cannot be empty'
123
+ elsif list_affinity_groups.map(&:name).include?(name)
124
+ raise Azure::Error::Error.new(
125
+ 'ConflictError',
126
+ 409,
127
+ "An affinity group #{name}"\
128
+ " already exists in the current subscription."
129
+ )
130
+ else
131
+ validate_location(location)
132
+ body = Serialization.affinity_group_to_xml(name,
133
+ location,
134
+ label,
135
+ options)
136
+ request_path = '/affinitygroups'
137
+ request = Azure::BaseManagement::ManagementHttpRequest.new(:post, request_path, body)
138
+ request.call
139
+ Azure::Loggerx.info "Affinity Group #{name} is created."
140
+ end
141
+ end
142
+
143
+ # Public: updates the label and/or the description for an affinity group
144
+ # for the specified subscription.
145
+ #
146
+ # ==== Attributes
147
+ #
148
+ # * +name+ - String. Affinity Group name.
149
+ # * +label+ - String. Name for the affinity specified as a
150
+ # base-64 encoded string.
151
+ #
152
+ # ==== Options
153
+ #
154
+ # Accepted key/value pairs are:
155
+ # * +:description+ - String. A description for the affinity group.
156
+ # (optional)
157
+ #
158
+ # See http://msdn.microsoft.com/en-us/library/azure/gg715316.aspx
159
+ #
160
+ # Returns: None
161
+ def update_affinity_group(name, label, options = {})
162
+ raise 'Label name cannot be empty' if label.nil? || label.empty?
163
+ if affinity_group(name)
164
+ body = Serialization.resource_to_xml(label, options)
165
+ request_path = "/affinitygroups/#{name}"
166
+ request = Azure::BaseManagement::ManagementHttpRequest.new(:put, request_path, body)
167
+ request.call
168
+ Azure::Loggerx.info "Affinity Group #{name} is updated."
169
+ end
170
+ end
171
+
172
+ # Public: Deletes an affinity group in the specified subscription
173
+ #
174
+ # ==== Attributes
175
+ #
176
+ # * +name+ - String. Affinity Group name.
177
+ #
178
+ # See http://msdn.microsoft.com/en-us/library/azure/gg715314.aspx
179
+ #
180
+ # Returns: None
181
+ def delete_affinity_group(name)
182
+ if affinity_group(name)
183
+ request_path = "/affinitygroups/#{name}"
184
+ request = Azure::BaseManagement::ManagementHttpRequest.new(:delete, request_path)
185
+ request.call
186
+ Azure::Loggerx.info "Deleted affinity group #{name}."
187
+ end
188
+ end
189
+
190
+ # Public: returns the system properties associated with the specified
191
+ # affinity group.
192
+ #
193
+ # ==== Attributes
194
+ #
195
+ # * +name+ - String. Affinity Group name.
196
+ #
197
+ # See http://msdn.microsoft.com/en-us/library/azure/ee460789.aspx
198
+ #
199
+ # Returns: Azure::BaseManagement::AffinityGroup object
200
+ def get_affinity_group(name)
201
+ if affinity_group(name)
202
+ request_path = "/affinitygroups/#{name}"
203
+ request = Azure::BaseManagement::ManagementHttpRequest.new(:get, request_path)
204
+ response = request.call
205
+ Serialization.affinity_group_from_xml(response)
206
+ end
207
+ end
208
+
209
+ private
210
+ def read_cert_from_file(cert_file_path)
211
+ if File.extname(cert_file_path).downcase == '.pem'
212
+ File.read(cert_file_path)
213
+ else
214
+ File.binread(cert_file_path)
215
+ end
216
+ end
217
+
218
+ def affinity_group(affinity_group_name)
219
+ if affinity_group_name.nil? ||\
220
+ affinity_group_name.empty? ||\
221
+ !list_affinity_groups.map { |x| x.name.downcase }.include?(
222
+ affinity_group_name.downcase
223
+ )
224
+ error = Azure::Error::Error.new('AffinityGroupNotFound',
225
+ 404,
226
+ 'The affinity group does not exist.')
227
+ raise error
228
+ else
229
+ true
230
+ end
231
+ end
232
+
233
+ def validate_location(location_name)
234
+ base_mgmt_service = Azure::BaseManagementService.new
235
+ locations = base_mgmt_service.list_locations.map(&:name)
236
+ unless locations.map(&:downcase).include?(location_name.downcase)
237
+ error = "Value '#{location_name}' specified for parameter"\
238
+ " 'location' is invalid."\
239
+ " Allowed values are #{locations.join(',')}"
240
+ raise error
241
+ end
242
+ end
243
+ end
244
+ end
245
+ end