azurex 0.6.5

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 (299) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.travis.yml +11 -0
  4. data/ChangeLog.txt +40 -0
  5. data/Gemfile +16 -0
  6. data/README.md +606 -0
  7. data/Rakefile +125 -0
  8. data/azurex.gemspec +47 -0
  9. data/lib/azure.rb +52 -0
  10. data/lib/azure/base_management/affinity_group.rb +32 -0
  11. data/lib/azure/base_management/base_management_service.rb +238 -0
  12. data/lib/azure/base_management/location.rb +27 -0
  13. data/lib/azure/base_management/management_http_request.rb +244 -0
  14. data/lib/azure/base_management/serialization.rb +129 -0
  15. data/lib/azure/base_management/sql_management_http_request.rb +45 -0
  16. data/lib/azure/blob/blob.rb +32 -0
  17. data/lib/azure/blob/blob_service.rb +1424 -0
  18. data/lib/azure/blob/block.rb +31 -0
  19. data/lib/azure/blob/container.rb +32 -0
  20. data/lib/azure/blob/serialization.rb +285 -0
  21. data/lib/azure/cloud_service_management/cloud_service.rb +38 -0
  22. data/lib/azure/cloud_service_management/cloud_service_management_service.rb +361 -0
  23. data/lib/azure/cloud_service_management/configuration_set.rb +28 -0
  24. data/lib/azure/cloud_service_management/deployment.rb +64 -0
  25. data/lib/azure/cloud_service_management/input_endpoint.rb +29 -0
  26. data/lib/azure/cloud_service_management/instance_endpoint.rb +31 -0
  27. data/lib/azure/cloud_service_management/persistent_vm_downtime.rb +29 -0
  28. data/lib/azure/cloud_service_management/role.rb +30 -0
  29. data/lib/azure/cloud_service_management/role_instance.rb +40 -0
  30. data/lib/azure/cloud_service_management/serialization.rb +329 -0
  31. data/lib/azure/cloud_service_management/virtual_ip.rb +29 -0
  32. data/lib/azure/core.rb +39 -0
  33. data/lib/azure/core/auth/authorizer.rb +36 -0
  34. data/lib/azure/core/auth/shared_key.rb +110 -0
  35. data/lib/azure/core/auth/shared_key_lite.rb +48 -0
  36. data/lib/azure/core/auth/signer.rb +48 -0
  37. data/lib/azure/core/configuration.rb +211 -0
  38. data/lib/azure/core/error.rb +22 -0
  39. data/lib/azure/core/filtered_service.rb +44 -0
  40. data/lib/azure/core/http/debug_filter.rb +36 -0
  41. data/lib/azure/core/http/http_error.rb +88 -0
  42. data/lib/azure/core/http/http_filter.rb +53 -0
  43. data/lib/azure/core/http/http_request.rb +159 -0
  44. data/lib/azure/core/http/http_response.rb +140 -0
  45. data/lib/azure/core/http/retry_policy.rb +74 -0
  46. data/lib/azure/core/http/signer_filter.rb +34 -0
  47. data/lib/azure/core/service.rb +63 -0
  48. data/lib/azure/core/signed_service.rb +43 -0
  49. data/lib/azure/core/utility.rb +190 -0
  50. data/lib/azure/queue/message.rb +30 -0
  51. data/lib/azure/queue/queue.rb +29 -0
  52. data/lib/azure/queue/queue_service.rb +568 -0
  53. data/lib/azure/queue/serialization.rb +106 -0
  54. data/lib/azure/service/access_policy.rb +26 -0
  55. data/lib/azure/service/enumeration_results.rb +21 -0
  56. data/lib/azure/service/logging.rb +32 -0
  57. data/lib/azure/service/metrics.rb +31 -0
  58. data/lib/azure/service/retention_policy.rb +25 -0
  59. data/lib/azure/service/serialization.rb +240 -0
  60. data/lib/azure/service/signed_identifier.rb +30 -0
  61. data/lib/azure/service/storage_service.rb +79 -0
  62. data/lib/azure/service/storage_service_properties.rb +32 -0
  63. data/lib/azure/service_bus/action.rb +21 -0
  64. data/lib/azure/service_bus/auth/wrap_service.rb +89 -0
  65. data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
  66. data/lib/azure/service_bus/brokered_message.rb +124 -0
  67. data/lib/azure/service_bus/brokered_message_serializer.rb +159 -0
  68. data/lib/azure/service_bus/correlation_filter.rb +45 -0
  69. data/lib/azure/service_bus/empty_rule_action.rb +30 -0
  70. data/lib/azure/service_bus/false_filter.rb +38 -0
  71. data/lib/azure/service_bus/filter.rb +21 -0
  72. data/lib/azure/service_bus/interval.rb +104 -0
  73. data/lib/azure/service_bus/queue.rb +230 -0
  74. data/lib/azure/service_bus/resource.rb +109 -0
  75. data/lib/azure/service_bus/rule.rb +98 -0
  76. data/lib/azure/service_bus/rule_aspect.rb +34 -0
  77. data/lib/azure/service_bus/serialization.rb +160 -0
  78. data/lib/azure/service_bus/service_bus_service.rb +829 -0
  79. data/lib/azure/service_bus/sql_filter.rb +50 -0
  80. data/lib/azure/service_bus/sql_rule_action.rb +50 -0
  81. data/lib/azure/service_bus/subscription.rb +184 -0
  82. data/lib/azure/service_bus/topic.rb +187 -0
  83. data/lib/azure/service_bus/true_filter.rb +38 -0
  84. data/lib/azure/sql_database_management/serialization.rb +111 -0
  85. data/lib/azure/sql_database_management/sql_database.rb +31 -0
  86. data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -0
  87. data/lib/azure/storage_management/serialization.rb +206 -0
  88. data/lib/azure/storage_management/storage_account.rb +47 -0
  89. data/lib/azure/storage_management/storage_management_service.rb +211 -0
  90. data/lib/azure/table/auth/shared_key.rb +92 -0
  91. data/lib/azure/table/auth/shared_key_lite.rb +44 -0
  92. data/lib/azure/table/batch.rb +330 -0
  93. data/lib/azure/table/batch_response.rb +118 -0
  94. data/lib/azure/table/edmtype.rb +127 -0
  95. data/lib/azure/table/entity.rb +31 -0
  96. data/lib/azure/table/guid.rb +24 -0
  97. data/lib/azure/table/query.rb +112 -0
  98. data/lib/azure/table/serialization.rb +108 -0
  99. data/lib/azure/table/table_service.rb +560 -0
  100. data/lib/azure/version.rb +31 -0
  101. data/lib/azure/virtual_machine_image_management/serialization.rb +52 -0
  102. data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -0
  103. data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -0
  104. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +66 -0
  105. data/lib/azure/virtual_machine_management/serialization.rb +450 -0
  106. data/lib/azure/virtual_machine_management/virtual_machine.rb +45 -0
  107. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +562 -0
  108. data/lib/azure/virtual_network_management/serialization.rb +192 -0
  109. data/lib/azure/virtual_network_management/virtual_network.rb +37 -0
  110. data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -0
  111. data/test/fixtures/32px-fulls-black.jpg +0 -0
  112. data/test/fixtures/affinity_group.xml +33 -0
  113. data/test/fixtures/all_containers.xml +20 -0
  114. data/test/fixtures/all_tables.xml +22 -0
  115. data/test/fixtures/certificate.pem +21 -0
  116. data/test/fixtures/container_acl.xml +11 -0
  117. data/test/fixtures/create_sql_database_server.xml +2 -0
  118. data/test/fixtures/create_storage_desc_error.xml +5 -0
  119. data/test/fixtures/create_storage_extendedprop_error.xml +8 -0
  120. data/test/fixtures/create_storage_extendedpropname_error.xml +6 -0
  121. data/test/fixtures/create_storage_full_error.xml +6 -0
  122. data/test/fixtures/create_storage_label_error.xml +5 -0
  123. data/test/fixtures/create_storage_location_error.xml +5 -0
  124. data/test/fixtures/create_storage_name_error.xml +6 -0
  125. data/test/fixtures/create_table_response_entry.xml +15 -0
  126. data/test/fixtures/delete_storage_container_error.xml +5 -0
  127. data/test/fixtures/delete_storage_error.xml +5 -0
  128. data/test/fixtures/deployment_error.xml +5 -0
  129. data/test/fixtures/empty_xml_file +0 -0
  130. data/test/fixtures/get_deployment.xml +94 -0
  131. data/test/fixtures/get_deployment_existing.xml +94 -0
  132. data/test/fixtures/get_deployment_missing.xml +5 -0
  133. data/test/fixtures/get_storage_account_error.xml +5 -0
  134. data/test/fixtures/get_storage_account_properties.xml +32 -0
  135. data/test/fixtures/get_storage_account_properties_new.xml +32 -0
  136. data/test/fixtures/http_error.xml +5 -0
  137. data/test/fixtures/insert_entity_response_entry.xml +25 -0
  138. data/test/fixtures/list_affinity_groups.xml +22 -0
  139. data/test/fixtures/list_blobs.xml +121 -0
  140. data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
  141. data/test/fixtures/list_blocks_all.xml +23 -0
  142. data/test/fixtures/list_blocks_committed.xml +13 -0
  143. data/test/fixtures/list_cloud_services.xml +39 -0
  144. data/test/fixtures/list_containers.xml +38 -0
  145. data/test/fixtures/list_firewall_management_endpoint.xml +27 -0
  146. data/test/fixtures/list_images.xml +110 -0
  147. data/test/fixtures/list_locations.xml +62 -0
  148. data/test/fixtures/list_page_ranges.xml +11 -0
  149. data/test/fixtures/list_sql_database.xml +36 -0
  150. data/test/fixtures/list_sql_server_firewall.xml +23 -0
  151. data/test/fixtures/list_storage_account_single.xml +25 -0
  152. data/test/fixtures/list_storage_accounts.xml +46 -0
  153. data/test/fixtures/list_virtual_networks.xml +92 -0
  154. data/test/fixtures/logging.xml +11 -0
  155. data/test/fixtures/management_certificate.pem +55 -0
  156. data/test/fixtures/messages.xml +12 -0
  157. data/test/fixtures/metrics.xml +10 -0
  158. data/test/fixtures/privatekey.key +28 -0
  159. data/test/fixtures/query_entities_empty_response.xml +7 -0
  160. data/test/fixtures/query_entities_response.xml +45 -0
  161. data/test/fixtures/queue_service_properties.xml +22 -0
  162. data/test/fixtures/queue_service_properties_original.xml +19 -0
  163. data/test/fixtures/queues.xml +16 -0
  164. data/test/fixtures/retention_policy.xml +5 -0
  165. data/test/fixtures/sb_default_create_queue_response.xml +23 -0
  166. data/test/fixtures/sb_default_create_topic_response.xml +18 -0
  167. data/test/fixtures/sb_get_access_token_response.txt +1 -0
  168. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -0
  169. data/test/fixtures/storage_service_keys.xml +8 -0
  170. data/test/fixtures/storage_service_properties.xml +23 -0
  171. data/test/fixtures/update_storage_account.xml +16 -0
  172. data/test/fixtures/update_storage_error.xml +5 -0
  173. data/test/fixtures/updated_storage_accounts.xml +53 -0
  174. data/test/fixtures/virtual_machine.xml +115 -0
  175. data/test/fixtures/windows_virtual_machine.xml +106 -0
  176. data/test/integration/affinity_group/Affinity_test.rb +55 -0
  177. data/test/integration/affinity_group/Create_Affinity_test.rb +63 -0
  178. data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -0
  179. data/test/integration/affinity_group/List_Affinity_test.rb +41 -0
  180. data/test/integration/affinity_group/Update_Affinity_test.rb +82 -0
  181. data/test/integration/blob/blob_gb18030_test.rb +199 -0
  182. data/test/integration/blob/blob_metadata_test.rb +75 -0
  183. data/test/integration/blob/blob_pages_test.rb +119 -0
  184. data/test/integration/blob/blob_properties_test.rb +77 -0
  185. data/test/integration/blob/block_blob_test.rb +254 -0
  186. data/test/integration/blob/container/container_acl_test.rb +69 -0
  187. data/test/integration/blob/container/container_metadata_test.rb +50 -0
  188. data/test/integration/blob/container/create_container_test.rb +60 -0
  189. data/test/integration/blob/container/delete_container_test.rb +39 -0
  190. data/test/integration/blob/container/get_container_properties_test.rb +48 -0
  191. data/test/integration/blob/container/list_containers_test.rb +79 -0
  192. data/test/integration/blob/container/root_container_test.rb +54 -0
  193. data/test/integration/blob/copy_blob_test.rb +113 -0
  194. data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
  195. data/test/integration/blob/create_page_blob_test.rb +83 -0
  196. data/test/integration/blob/delete_blob_test.rb +159 -0
  197. data/test/integration/blob/get_blob_test.rb +65 -0
  198. data/test/integration/blob/informative_errors_test.rb +39 -0
  199. data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
  200. data/test/integration/blob/lease/break_lease_test.rb +40 -0
  201. data/test/integration/blob/lease/release_lease_test.rb +40 -0
  202. data/test/integration/blob/lease/renew_lease_test.rb +42 -0
  203. data/test/integration/blob/list_blobs_test.rb +113 -0
  204. data/test/integration/cloud_service/Cloud_Create_test.rb +44 -0
  205. data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -0
  206. data/test/integration/database/create_sql_server_firewall_test.rb +86 -0
  207. data/test/integration/database/create_sql_server_test.rb +53 -0
  208. data/test/integration/database/delete_sql_server_firewall_test.rb +70 -0
  209. data/test/integration/database/delete_sql_server_test.rb +58 -0
  210. data/test/integration/database/list_sql_server_firewall_test.rb +45 -0
  211. data/test/integration/database/list_sql_servers_test.rb +44 -0
  212. data/test/integration/database/reset_password_sql_server_test.rb +55 -0
  213. data/test/integration/location/Location_List_test.rb +39 -0
  214. data/test/integration/queue/clear_messages_test.rb +42 -0
  215. data/test/integration/queue/create_message_test.rb +75 -0
  216. data/test/integration/queue/create_queue_test.rb +50 -0
  217. data/test/integration/queue/delete_message_test.rb +67 -0
  218. data/test/integration/queue/delete_queue_test.rb +45 -0
  219. data/test/integration/queue/informative_errors_test.rb +42 -0
  220. data/test/integration/queue/list_messages_encoded_test.rb +79 -0
  221. data/test/integration/queue/list_messages_test.rb +79 -0
  222. data/test/integration/queue/list_queues_test.rb +44 -0
  223. data/test/integration/queue/peek_messages_test.rb +59 -0
  224. data/test/integration/queue/queue_gb18030_test.rb +131 -0
  225. data/test/integration/queue/queue_metadata_test.rb +40 -0
  226. data/test/integration/queue/update_message_test.rb +74 -0
  227. data/test/integration/service_bus/informative_errors_test.rb +37 -0
  228. data/test/integration/service_bus/queues_scenario_test.rb +200 -0
  229. data/test/integration/service_bus/queues_test.rb +266 -0
  230. data/test/integration/service_bus/rules_test.rb +145 -0
  231. data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -0
  232. data/test/integration/service_bus/scenario_test.rb +101 -0
  233. data/test/integration/service_bus/subscriptions_test.rb +211 -0
  234. data/test/integration/service_bus/topics_scenario_test.rb +406 -0
  235. data/test/integration/service_bus/topics_test.rb +129 -0
  236. data/test/integration/storage_management/storage_management_test.rb +177 -0
  237. data/test/integration/table/create_table_test.rb +36 -0
  238. data/test/integration/table/delete_entity_batch_test.rb +107 -0
  239. data/test/integration/table/delete_entity_test.rb +94 -0
  240. data/test/integration/table/delete_table_test.rb +40 -0
  241. data/test/integration/table/get_table_test.rb +37 -0
  242. data/test/integration/table/informative_errors_test.rb +39 -0
  243. data/test/integration/table/insert_entity_batch_test.rb +100 -0
  244. data/test/integration/table/insert_entity_test.rb +88 -0
  245. data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
  246. data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
  247. data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
  248. data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
  249. data/test/integration/table/merge_entity_batch_test.rb +128 -0
  250. data/test/integration/table/merge_entity_test.rb +113 -0
  251. data/test/integration/table/query_entities_test.rb +195 -0
  252. data/test/integration/table/query_tables_test.rb +43 -0
  253. data/test/integration/table/query_test.rb +251 -0
  254. data/test/integration/table/table_acl_test.rb +52 -0
  255. data/test/integration/table/table_gb18030_test.rb +355 -0
  256. data/test/integration/table/update_entity_batch_test.rb +149 -0
  257. data/test/integration/table/update_entity_test.rb +131 -0
  258. data/test/integration/test_helper.rb +42 -0
  259. data/test/integration/vm/VM_Create_test.rb +260 -0
  260. data/test/integration/vm/VM_Delete_test.rb +53 -0
  261. data/test/integration/vm/VM_Operations_test.rb +172 -0
  262. data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -0
  263. data/test/integration/vm_image/virtual_machine_image_test.rb +37 -0
  264. data/test/integration/vnet/Virtual_Network_Create_test.rb +116 -0
  265. data/test/integration/vnet/Virtual_Network_list_test.rb +48 -0
  266. data/test/support/env.rb +19 -0
  267. data/test/support/fixtures.rb +36 -0
  268. data/test/support/name_generator.rb +160 -0
  269. data/test/support/stubs.rb +42 -0
  270. data/test/support/virtual_machine_name_generator.rb +102 -0
  271. data/test/support/virtual_network_helper.rb +73 -0
  272. data/test/test_helper.rb +53 -0
  273. data/test/unit/affinity_group/affinity_group_test.rb +192 -0
  274. data/test/unit/affinity_group/serialization_test.rb +88 -0
  275. data/test/unit/base_management/location_test.rb +57 -0
  276. data/test/unit/blob/blob_service_test.rb +1947 -0
  277. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +248 -0
  278. data/test/unit/cloud_service_management/serialization_test.rb +169 -0
  279. data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
  280. data/test/unit/core/auth/shared_key_test.rb +58 -0
  281. data/test/unit/core/auth/signer_test.rb +30 -0
  282. data/test/unit/core/http/http_error_test.rb +57 -0
  283. data/test/unit/core/http/http_request_test.rb +66 -0
  284. data/test/unit/core/http/http_response_test.rb +45 -0
  285. data/test/unit/core/http/retry_policy_test.rb +23 -0
  286. data/test/unit/database/serialization_test.rb +97 -0
  287. data/test/unit/database/sql_database_server_service_test.rb +288 -0
  288. data/test/unit/service/serialization_test.rb +502 -0
  289. data/test/unit/service/storage_service_test.rb +291 -0
  290. data/test/unit/storage_management/serialization_test.rb +245 -0
  291. data/test/unit/storage_management/storage_management_service_test.rb +261 -0
  292. data/test/unit/table/edmtype_test.rb +108 -0
  293. data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -0
  294. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -0
  295. data/test/unit/virtual_machine_management/serialization_test.rb +256 -0
  296. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +442 -0
  297. data/test/unit/vnet/serialization_test.rb +187 -0
  298. data/test/unit/vnet/virtual_network_management_service_test.rb +131 -0
  299. metadata +471 -0
@@ -0,0 +1,172 @@
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
+ require 'integration/test_helper'
16
+
17
+ describe Azure::VirtualMachineManagementService do
18
+ let(:vm_name) { 'test-operation-vm' }
19
+ let(:csn) { vm_name + '-service-qwert' }
20
+ subject { Azure::VirtualMachineManagementService.new }
21
+
22
+ before do
23
+ Loggerx.expects(:puts).returns(nil).at_least(0)
24
+ params = {
25
+ vm_name: vm_name,
26
+ vm_user: 'user',
27
+ image: LinuxImage.name,
28
+ password: 'User123',
29
+ location: LinuxImageLocation
30
+ }
31
+ options = {
32
+ storage_account_name: StorageAccountName,
33
+ cloud_service_name: csn,
34
+ }
35
+ vm = subject.get_virtual_machine(vm_name, csn)
36
+ if vm.nil?
37
+ subject.create_virtual_machine(params, options)
38
+ end
39
+ end
40
+
41
+ describe 'Operations on virtual machine' do
42
+
43
+ describe '#shutdown_virtual_machine' do
44
+ it 'shuts down virtual machine' do
45
+ subject.shutdown_virtual_machine(vm_name, csn)
46
+ vm = subject.get_virtual_machine(vm_name, csn)
47
+ %w(StoppedVM StoppedDeallocated).must_include vm.status
48
+
49
+ msg = subject.shutdown_virtual_machine(vm_name, csn)
50
+ emsg = 'Cannot perform the shutdown operation on a stopped virtual machine'
51
+ assert_match(/#{emsg}/, msg)
52
+ end
53
+
54
+ it 'raises an error if virtual machine doesn\'t exists' do
55
+ name = 'test-shutdown'
56
+ msg = subject.shutdown_virtual_machine(name, csn)
57
+ assert_match(/Cannot find virtual machine \"#{name}\" under cloud service \"#{csn}\"/, msg)
58
+ end
59
+
60
+ end
61
+
62
+ describe '#start_virtual_machine' do
63
+ before do
64
+ subject.shutdown_virtual_machine(vm_name, csn)
65
+ end
66
+
67
+ it 'starts virtual machine' do
68
+ subject.start_virtual_machine(vm_name, csn)
69
+ vm = subject.get_virtual_machine(vm_name, csn)
70
+ statuses = %w(ReadyRole Provisioning CreatingVM RoleStateUnknown)
71
+ statuses.must_include vm.status
72
+ end
73
+
74
+ end
75
+
76
+ describe '#restart_virtual_machine' do
77
+ before do
78
+ subject.restart_virtual_machine(vm_name, csn)
79
+ end
80
+
81
+ it 'restarts virtual machine' do
82
+ vm = subject.get_virtual_machine(vm_name, csn)
83
+ %w(ReadyRole Provisioning RoleStateUnknown).must_include vm.status
84
+ end
85
+ end
86
+
87
+ describe '#get_virtual_machine' do
88
+ it 'should return virtual machine object' do
89
+ vm = subject.get_virtual_machine(vm_name, csn)
90
+ vm.vm_name.must_equal vm_name
91
+ vm.cloud_service_name.must_equal csn
92
+ end
93
+ end
94
+
95
+ describe '#list_virtual_machines' do
96
+ it 'returns a list of virtual machines' do
97
+ vms = subject.list_virtual_machines
98
+ vms.wont_be_nil
99
+ vms.must_be_kind_of Array
100
+ vm = vms.first
101
+ vm.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
102
+ vm_names = vms.map(&:vm_name)
103
+ vm_names.must_include vm.vm_name
104
+ end
105
+ end
106
+
107
+ describe '#add_data_disk' do
108
+ it 'add data disk to virtual machine' do
109
+ others = { disk_size: 100 }
110
+ subject.add_data_disk(vm_name, csn, others)
111
+ dms = VirtualMachineDiskManagementService.new
112
+ disks = dms.list_virtual_machine_disks
113
+ disks = disks.select { |x| (/#{csn}/ =~ x.name) && x.os_type.empty? }
114
+ assert_operator disks.size, :>=, 1
115
+ disks.first.size.must_equal others[:disk_size].to_s
116
+ end
117
+ end
118
+
119
+ describe 'Add, Update, Delete endpoints' do
120
+
121
+ it 'should add endpoints to virtual machine.' do
122
+ ep1 = {
123
+ name: 'endpoint-1',
124
+ public_port: 777,
125
+ local_port: 777,
126
+ protocol: 'UDP',
127
+ }
128
+ ep2 = {
129
+ name: 'endpoint-2',
130
+ public_port: 888,
131
+ local_port: 889,
132
+ protocol: 'UDP',
133
+ load_balancer_name: 'lb',
134
+ load_balancer: { protocol: 'http', path: 'mypath' }
135
+ }
136
+ subject.update_endpoints(vm_name, csn, ep1, ep2)
137
+ vm = subject.get_virtual_machine(vm_name, csn)
138
+ vm.udp_endpoints.size.must_equal 2
139
+ vm.udp_endpoints.first[:name].must_equal 'endpoint-1'
140
+ vm.udp_endpoints.last[:name].must_equal 'endpoint-2'
141
+ end
142
+
143
+ it 'should update existing endpoints of virtual machine.' do
144
+ ep1 = {
145
+ name: 'SSH',
146
+ public_port: 2222,
147
+ local_port: 22,
148
+ protocol: 'TCP',
149
+ }
150
+ subject.update_endpoints(vm_name, csn, ep1)
151
+ vm = subject.get_virtual_machine(vm_name, csn)
152
+ vm.tcp_endpoints.size.must_equal 1
153
+ vm.tcp_endpoints.first[:name].must_equal 'SSH'
154
+ vm.tcp_endpoints.first[:public_port].must_equal '2222'
155
+ end
156
+
157
+ it 'should delete endpoint of virtual machine.' do
158
+ subject.delete_endpoint(vm_name, csn, 'SSH')
159
+ vm = subject.get_virtual_machine(vm_name, csn)
160
+ vm.tcp_endpoints.size.must_equal 0
161
+ ep1 = {
162
+ name: 'SSH',
163
+ public_port: 22,
164
+ local_port: 22,
165
+ protocol: 'TCP',
166
+ }
167
+ subject.update_endpoints(vm_name, csn, ep1)
168
+ end
169
+ end
170
+
171
+ end
172
+ end # end
@@ -0,0 +1,37 @@
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 "integration/test_helper"
16
+
17
+ describe Azure::VirtualMachineImageManagement::VirtualMachineDiskManagementService do
18
+
19
+ subject {
20
+ Azure::VirtualMachineImageManagement::VirtualMachineDiskManagementService.new
21
+ }
22
+
23
+ describe "#list_virtual_machine_disks" do
24
+
25
+ it "returns a list of virtual machine disks" do
26
+ vm_disks = subject.list_virtual_machine_disks
27
+ vm_disks.wont_be_nil
28
+ vm_disks.must_be_kind_of Array
29
+ disk = vm_disks.first
30
+ disk.must_be_kind_of Azure::VirtualMachineImageManagement::VirtualMachineDisk
31
+ disk.name.wont_be_nil
32
+ [true, false].must_include disk.attached
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,37 @@
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 "integration/test_helper"
16
+
17
+ describe Azure::VirtualMachineImageManagementService do
18
+
19
+ subject { Azure::VirtualMachineImageManagementService.new }
20
+
21
+ describe "#virtual_machine_images" do
22
+
23
+ it "returns a list of virtual machine images" do
24
+ virtualImages = subject.list_virtual_machine_images
25
+ virtualImages.wont_be_nil
26
+ virtualImages.must_be_kind_of Array
27
+ image = virtualImages.first
28
+ image.must_be_kind_of Azure::VirtualMachineImageManagement::VirtualMachineImage
29
+ image.os_type.wont_be_nil
30
+ image.category.wont_be_nil
31
+ image.name.wont_be_nil
32
+ refute_equal virtualImages.length, 0
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,116 @@
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
+ require 'integration/test_helper'
16
+ require 'support/virtual_network_helper'
17
+
18
+ describe Azure::VirtualNetworkManagement::VirtualNetwork do
19
+ let(:in_vnet_name) { 'newvnet' }
20
+ let(:location) { 'West US' }
21
+ let(:in_address_space) { ['172.16.0.0/12'] }
22
+ let(:invalid_address_space) { ['', ''] }
23
+ let(:invalid_cidr_address_space) { ['10.0.0.0'] }
24
+ let(:created_state) { 'Created' }
25
+ let(:xml_err_msg) { 'XML Schema validation error in network configuration' }
26
+
27
+ inputoptions = {
28
+ subnet: [{ name: 'Subnet-1', ip_address: '172.16.0.0', cidr: 12 }],
29
+ dns: [{ name: 'DNS', ip_address: '1.2.3.4' }]
30
+ }
31
+
32
+ subject { Azure::VirtualNetworkManagementService.new }
33
+
34
+ before do
35
+ Loggerx.expects(:puts).returns(nil).at_least(0)
36
+ end
37
+
38
+ describe 'Create virtual network valid params' do
39
+ it 'Create virtual network with valid params' do
40
+ subject.set_network_configuration(in_vnet_name,
41
+ location,
42
+ in_address_space,
43
+ inputoptions)
44
+
45
+ VirtualNetworkHelper.check_config(subject.list_virtual_networks,
46
+ in_vnet_name,
47
+ location,
48
+ created_state,
49
+ in_address_space,
50
+ inputoptions)
51
+ end
52
+ end
53
+
54
+ describe 'Create virtual network with invalid subnet' do
55
+ it 'checks for invalid subnet and throws an exception' do
56
+ options = {
57
+ subnet: [{ name: 'Subnet-1', ip_address: '10.0.0.0/8', cidr: 12 }],
58
+ dns: [{ name: 'demodns', ip_address: '2.3.4.5' }]
59
+ }
60
+
61
+ exception = assert_raises(RuntimeError) do
62
+ subject.set_network_configuration(in_vnet_name,
63
+ location,
64
+ in_address_space,
65
+ options)
66
+ end
67
+ #assert_match(xml_err_msg, exception.message)
68
+ end
69
+ end
70
+
71
+ describe 'Create virtual network with no address space provided options ' do
72
+ it 'Create virtual network with invalid options' do
73
+ exception = assert_raises(RuntimeError) do
74
+ subject.set_network_configuration(in_vnet_name,
75
+ location,
76
+ invalid_address_space,
77
+ inputoptions)
78
+ end
79
+ assert_match(xml_err_msg, exception.message)
80
+ end
81
+ end
82
+
83
+ describe 'Update virtual network valid params ' do
84
+ it 'Update virtual network with valid params' do
85
+ update_address_space = ['10.0.0.0/8']
86
+ update_options = {
87
+ subnet: [{ name: 'Subnet-1', ip_address: '10.0.0.0', cidr: 16 }],
88
+ dns: [{ name: 'DNS', ip_address: '1.2.3.4' }]
89
+ }
90
+
91
+ subject.set_network_configuration(in_vnet_name,
92
+ location,
93
+ update_address_space,
94
+ update_options)
95
+ VirtualNetworkHelper.check_config(subject.list_virtual_networks,
96
+ in_vnet_name,
97
+ location,
98
+ created_state,
99
+ update_address_space,
100
+ update_options)
101
+ end
102
+ end
103
+
104
+ describe 'Create virtual network invalid cidr' do
105
+ it 'Create virtual network with invalid options' do
106
+ exception = assert_raises(RuntimeError) do
107
+ subject.set_network_configuration(in_vnet_name,
108
+ location,
109
+ invalid_cidr_address_space,
110
+ inputoptions)
111
+ end
112
+ assert_match("Cidr is invalid for IP #{invalid_cidr_address_space[0]}",
113
+ exception.message)
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,48 @@
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
+ require 'integration/test_helper'
16
+
17
+ describe Azure::VirtualNetworkManagement::VirtualNetwork do
18
+
19
+ subject { Azure::VirtualNetworkManagementService.new }
20
+
21
+ let(:affinity_group_name) { 'my-affinity-group' }
22
+ let(:location) { 'West US' }
23
+ let(:vnet_name) { 'vnet-integration-test' }
24
+
25
+ before do
26
+ Loggerx.expects(:puts).returns(nil).at_least(0)
27
+ address_space = %w(172.16.0.0/12 10.0.0.0/8 192.168.0.0/24)
28
+ unless subject.list_virtual_networks.map(&:name).include?(vnet_name)
29
+ subject.set_network_configuration(
30
+ vnet_name,
31
+ location,
32
+ address_space
33
+ )
34
+ end
35
+ end
36
+
37
+ describe '#list_virtual_networks' do
38
+ it 'Gets a list of virtual networks for the current subscription.' do
39
+ virtual_networks = subject.list_virtual_networks
40
+ virtual_networks.wont_be_nil
41
+ virtual_networks.must_be_kind_of Array
42
+ virtual_networks.first.must_be_kind_of(
43
+ Azure::VirtualNetworkManagement::VirtualNetwork
44
+ )
45
+ assert_operator virtual_networks.size, :>=, 1
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,19 @@
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
+ def skip_if_emulator
16
+ if Azure.config.storage_table_host =~ /localhost/
17
+ skip "This test will only run in Live environment"
18
+ end
19
+ end
@@ -0,0 +1,36 @@
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 "pathname"
16
+
17
+ Fixtures = Hash.new do |hash, fixture|
18
+ if path = Fixtures.xml?(fixture)
19
+ hash[fixture] = path.read
20
+ elsif path = Fixtures.file?(fixture)
21
+ hash[fixture] = path
22
+ end
23
+ end
24
+
25
+ def Fixtures.root
26
+ Pathname("../../fixtures").expand_path(__FILE__)
27
+ end
28
+
29
+ def Fixtures.file?(fixture)
30
+ path = root.join(fixture)
31
+ path.file? && path
32
+ end
33
+
34
+ def Fixtures.xml?(fixture)
35
+ file?("#{fixture}.xml")
36
+ end