azure-plus 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 (298) 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 +590 -0
  7. data/Rakefile +129 -0
  8. data/azure.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 +184 -0
  88. data/lib/azure/storage_management/storage_account.rb +40 -0
  89. data/lib/azure/storage_management/storage_management_service.rb +166 -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 +51 -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 +436 -0
  106. data/lib/azure/virtual_machine_management/virtual_machine.rb +42 -0
  107. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +549 -0
  108. data/lib/azure/virtual_network_management/serialization.rb +186 -0
  109. data/lib/azure/virtual_network_management/virtual_network.rb +36 -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_properties.xml +23 -0
  170. data/test/fixtures/update_storage_account.xml +16 -0
  171. data/test/fixtures/update_storage_error.xml +5 -0
  172. data/test/fixtures/updated_storage_accounts.xml +53 -0
  173. data/test/fixtures/virtual_machine.xml +113 -0
  174. data/test/fixtures/windows_virtual_machine.xml +106 -0
  175. data/test/integration/affinity_group/Affinity_test.rb +55 -0
  176. data/test/integration/affinity_group/Create_Affinity_test.rb +63 -0
  177. data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -0
  178. data/test/integration/affinity_group/List_Affinity_test.rb +41 -0
  179. data/test/integration/affinity_group/Update_Affinity_test.rb +82 -0
  180. data/test/integration/blob/blob_gb18030_test.rb +199 -0
  181. data/test/integration/blob/blob_metadata_test.rb +75 -0
  182. data/test/integration/blob/blob_pages_test.rb +119 -0
  183. data/test/integration/blob/blob_properties_test.rb +77 -0
  184. data/test/integration/blob/block_blob_test.rb +254 -0
  185. data/test/integration/blob/container/container_acl_test.rb +69 -0
  186. data/test/integration/blob/container/container_metadata_test.rb +50 -0
  187. data/test/integration/blob/container/create_container_test.rb +60 -0
  188. data/test/integration/blob/container/delete_container_test.rb +39 -0
  189. data/test/integration/blob/container/get_container_properties_test.rb +48 -0
  190. data/test/integration/blob/container/list_containers_test.rb +79 -0
  191. data/test/integration/blob/container/root_container_test.rb +54 -0
  192. data/test/integration/blob/copy_blob_test.rb +113 -0
  193. data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
  194. data/test/integration/blob/create_page_blob_test.rb +83 -0
  195. data/test/integration/blob/delete_blob_test.rb +159 -0
  196. data/test/integration/blob/get_blob_test.rb +65 -0
  197. data/test/integration/blob/informative_errors_test.rb +39 -0
  198. data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
  199. data/test/integration/blob/lease/break_lease_test.rb +40 -0
  200. data/test/integration/blob/lease/release_lease_test.rb +40 -0
  201. data/test/integration/blob/lease/renew_lease_test.rb +42 -0
  202. data/test/integration/blob/list_blobs_test.rb +113 -0
  203. data/test/integration/cloud_service/Cloud_Create_test.rb +44 -0
  204. data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -0
  205. data/test/integration/database/create_sql_server_firewall_test.rb +86 -0
  206. data/test/integration/database/create_sql_server_test.rb +53 -0
  207. data/test/integration/database/delete_sql_server_firewall_test.rb +70 -0
  208. data/test/integration/database/delete_sql_server_test.rb +58 -0
  209. data/test/integration/database/list_sql_server_firewall_test.rb +45 -0
  210. data/test/integration/database/list_sql_servers_test.rb +44 -0
  211. data/test/integration/database/reset_password_sql_server_test.rb +55 -0
  212. data/test/integration/location/Location_List_test.rb +39 -0
  213. data/test/integration/queue/clear_messages_test.rb +42 -0
  214. data/test/integration/queue/create_message_test.rb +75 -0
  215. data/test/integration/queue/create_queue_test.rb +50 -0
  216. data/test/integration/queue/delete_message_test.rb +67 -0
  217. data/test/integration/queue/delete_queue_test.rb +45 -0
  218. data/test/integration/queue/informative_errors_test.rb +42 -0
  219. data/test/integration/queue/list_messages_encoded_test.rb +79 -0
  220. data/test/integration/queue/list_messages_test.rb +79 -0
  221. data/test/integration/queue/list_queues_test.rb +44 -0
  222. data/test/integration/queue/peek_messages_test.rb +59 -0
  223. data/test/integration/queue/queue_gb18030_test.rb +131 -0
  224. data/test/integration/queue/queue_metadata_test.rb +40 -0
  225. data/test/integration/queue/update_message_test.rb +74 -0
  226. data/test/integration/service_bus/informative_errors_test.rb +37 -0
  227. data/test/integration/service_bus/queues_scenario_test.rb +200 -0
  228. data/test/integration/service_bus/queues_test.rb +266 -0
  229. data/test/integration/service_bus/rules_test.rb +145 -0
  230. data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -0
  231. data/test/integration/service_bus/scenario_test.rb +101 -0
  232. data/test/integration/service_bus/subscriptions_test.rb +211 -0
  233. data/test/integration/service_bus/topics_scenario_test.rb +406 -0
  234. data/test/integration/service_bus/topics_test.rb +129 -0
  235. data/test/integration/storage_management/storage_management_test.rb +160 -0
  236. data/test/integration/table/create_table_test.rb +36 -0
  237. data/test/integration/table/delete_entity_batch_test.rb +107 -0
  238. data/test/integration/table/delete_entity_test.rb +94 -0
  239. data/test/integration/table/delete_table_test.rb +40 -0
  240. data/test/integration/table/get_table_test.rb +37 -0
  241. data/test/integration/table/informative_errors_test.rb +39 -0
  242. data/test/integration/table/insert_entity_batch_test.rb +100 -0
  243. data/test/integration/table/insert_entity_test.rb +88 -0
  244. data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
  245. data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
  246. data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
  247. data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
  248. data/test/integration/table/merge_entity_batch_test.rb +128 -0
  249. data/test/integration/table/merge_entity_test.rb +113 -0
  250. data/test/integration/table/query_entities_test.rb +195 -0
  251. data/test/integration/table/query_tables_test.rb +43 -0
  252. data/test/integration/table/query_test.rb +251 -0
  253. data/test/integration/table/table_acl_test.rb +52 -0
  254. data/test/integration/table/table_gb18030_test.rb +355 -0
  255. data/test/integration/table/update_entity_batch_test.rb +149 -0
  256. data/test/integration/table/update_entity_test.rb +131 -0
  257. data/test/integration/test_helper.rb +42 -0
  258. data/test/integration/vm/VM_Create_test.rb +260 -0
  259. data/test/integration/vm/VM_Delete_test.rb +55 -0
  260. data/test/integration/vm/VM_Operations_test.rb +173 -0
  261. data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -0
  262. data/test/integration/vm_image/virtual_machine_image_test.rb +37 -0
  263. data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -0
  264. data/test/integration/vnet/Virtual_Network_list_test.rb +53 -0
  265. data/test/support/env.rb +19 -0
  266. data/test/support/fixtures.rb +36 -0
  267. data/test/support/name_generator.rb +160 -0
  268. data/test/support/stubs.rb +42 -0
  269. data/test/support/virtual_machine_name_generator.rb +102 -0
  270. data/test/support/virtual_network_helper.rb +73 -0
  271. data/test/test_helper.rb +53 -0
  272. data/test/unit/affinity_group/affinity_group_test.rb +192 -0
  273. data/test/unit/affinity_group/serialization_test.rb +88 -0
  274. data/test/unit/base_management/location_test.rb +57 -0
  275. data/test/unit/blob/blob_service_test.rb +1947 -0
  276. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +276 -0
  277. data/test/unit/cloud_service_management/serialization_test.rb +169 -0
  278. data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
  279. data/test/unit/core/auth/shared_key_test.rb +58 -0
  280. data/test/unit/core/auth/signer_test.rb +30 -0
  281. data/test/unit/core/http/http_error_test.rb +57 -0
  282. data/test/unit/core/http/http_request_test.rb +66 -0
  283. data/test/unit/core/http/http_response_test.rb +45 -0
  284. data/test/unit/core/http/retry_policy_test.rb +23 -0
  285. data/test/unit/database/serialization_test.rb +97 -0
  286. data/test/unit/database/sql_database_server_service_test.rb +288 -0
  287. data/test/unit/service/serialization_test.rb +502 -0
  288. data/test/unit/service/storage_service_test.rb +291 -0
  289. data/test/unit/storage_management/serialization_test.rb +232 -0
  290. data/test/unit/storage_management/storage_management_service_test.rb +261 -0
  291. data/test/unit/table/edmtype_test.rb +108 -0
  292. data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -0
  293. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -0
  294. data/test/unit/virtual_machine_management/serialization_test.rb +247 -0
  295. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -0
  296. data/test/unit/vnet/serialization_test.rb +187 -0
  297. data/test/unit/vnet/virtual_network_management_service_test.rb +131 -0
  298. metadata +470 -0
@@ -0,0 +1,173 @@
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
+ sleep 60 # Wait to finish provision.
39
+ end
40
+ end
41
+
42
+ describe 'Operations on virtual machine' do
43
+
44
+ describe '#shutdown_virtual_machine' do
45
+ it 'shuts down virtual machine' do
46
+ subject.shutdown_virtual_machine(vm_name, csn)
47
+ vm = subject.get_virtual_machine(vm_name, csn)
48
+ %w(StoppedVM StoppedDeallocated).must_include vm.status
49
+
50
+ msg = subject.shutdown_virtual_machine(vm_name, csn)
51
+ emsg = 'Cannot perform the shutdown operation on a stopped virtual machine'
52
+ assert_match(/#{emsg}/, msg)
53
+ end
54
+
55
+ it 'raises an error if virtual machine doesn\'t exists' do
56
+ name = 'test-shutdown'
57
+ msg = subject.shutdown_virtual_machine(name, csn)
58
+ assert_match(/Cannot find virtual machine \"#{name}\" under cloud service \"#{csn}\"/, msg)
59
+ end
60
+
61
+ end
62
+
63
+ describe '#start_virtual_machine' do
64
+ before do
65
+ subject.shutdown_virtual_machine(vm_name, csn)
66
+ end
67
+
68
+ it 'starts virtual machine' do
69
+ subject.start_virtual_machine(vm_name, csn)
70
+ vm = subject.get_virtual_machine(vm_name, csn)
71
+ statuses = %w(ReadyRole Provisioning CreatingVM RoleStateUnknown)
72
+ statuses.must_include vm.status
73
+ end
74
+
75
+ end
76
+
77
+ describe '#restart_virtual_machine' do
78
+ before do
79
+ subject.restart_virtual_machine(vm_name, csn)
80
+ end
81
+
82
+ it 'restarts virtual machine' do
83
+ vm = subject.get_virtual_machine(vm_name, csn)
84
+ %w(ReadyRole Provisioning RoleStateUnknown).must_include vm.status
85
+ end
86
+ end
87
+
88
+ describe '#get_virtual_machine' do
89
+ it 'should return virtual machine object' do
90
+ vm = subject.get_virtual_machine(vm_name, csn)
91
+ vm.vm_name.must_equal vm_name
92
+ vm.cloud_service_name.must_equal csn
93
+ end
94
+ end
95
+
96
+ describe '#list_virtual_machines' do
97
+ it 'returns a list of virtual machines' do
98
+ vms = subject.list_virtual_machines
99
+ vms.wont_be_nil
100
+ vms.must_be_kind_of Array
101
+ vm = vms.first
102
+ vm.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
103
+ vm_names = vms.map(&:vm_name)
104
+ vm_names.must_include vm.vm_name
105
+ end
106
+ end
107
+
108
+ describe '#add_data_disk' do
109
+ it 'add data disk to virtual machine' do
110
+ others = { disk_size: 100 }
111
+ subject.add_data_disk(vm_name, csn, others)
112
+ dms = VirtualMachineDiskManagementService.new
113
+ disks = dms.list_virtual_machine_disks
114
+ disks = disks.select { |x| (/#{csn}/ =~ x.name) && x.os_type.empty? }
115
+ assert_operator disks.size, :>=, 1
116
+ disks.first.size.must_equal others[:disk_size].to_s
117
+ end
118
+ end
119
+
120
+ describe 'Add, Update, Delete endpoints' do
121
+
122
+ it 'should add endpoints to virtual machine.' do
123
+ ep1 = {
124
+ name: 'endpoint-1',
125
+ public_port: 777,
126
+ local_port: 777,
127
+ protocol: 'UDP',
128
+ }
129
+ ep2 = {
130
+ name: 'endpoint-2',
131
+ public_port: 888,
132
+ local_port: 889,
133
+ protocol: 'UDP',
134
+ load_balancer_name: 'lb',
135
+ load_balancer: { protocol: 'http', path: 'mypath' }
136
+ }
137
+ subject.update_endpoints(vm_name, csn, ep1, ep2)
138
+ vm = subject.get_virtual_machine(vm_name, csn)
139
+ vm.udp_endpoints.size.must_equal 2
140
+ vm.udp_endpoints.first[:name].must_equal 'endpoint-1'
141
+ vm.udp_endpoints.last[:name].must_equal 'endpoint-2'
142
+ end
143
+
144
+ it 'should update existing endpoints of virtual machine.' do
145
+ ep1 = {
146
+ name: 'SSH',
147
+ public_port: 2222,
148
+ local_port: 22,
149
+ protocol: 'TCP',
150
+ }
151
+ subject.update_endpoints(vm_name, csn, ep1)
152
+ vm = subject.get_virtual_machine(vm_name, csn)
153
+ vm.tcp_endpoints.size.must_equal 1
154
+ vm.tcp_endpoints.first[:name].must_equal 'SSH'
155
+ vm.tcp_endpoints.first[:public_port].must_equal '2222'
156
+ end
157
+
158
+ it 'should delete endpoint of virtual machine.' do
159
+ subject.delete_endpoint(vm_name, csn, 'SSH')
160
+ vm = subject.get_virtual_machine(vm_name, csn)
161
+ vm.tcp_endpoints.size.must_equal 0
162
+ ep1 = {
163
+ name: 'SSH',
164
+ public_port: 22,
165
+ local_port: 22,
166
+ protocol: 'TCP',
167
+ }
168
+ subject.update_endpoints(vm_name, csn, ep1)
169
+ end
170
+ end
171
+
172
+ end
173
+ 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,122 @@
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(:in_affinity_name) { 'integration-test-affinity-group' }
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
+
37
+ affinity_group_service = Azure::BaseManagementService.new
38
+ affinity_group_service.create_affinity_group(in_affinity_name,
39
+ WindowsImageLocation,
40
+ 'Label'
41
+ ) rescue nil
42
+ end
43
+
44
+ describe 'Create virtual network valid params' do
45
+ it 'Create virtual network with valid params' do
46
+ subject.set_network_configuration(in_vnet_name,
47
+ in_affinity_name,
48
+ in_address_space,
49
+ inputoptions)
50
+
51
+ VirtualNetworkHelper.check_config(subject.list_virtual_networks,
52
+ in_vnet_name,
53
+ in_affinity_name,
54
+ created_state,
55
+ in_address_space,
56
+ inputoptions)
57
+ end
58
+ end
59
+
60
+ describe 'Create virtual network with invalid subnet' do
61
+ it 'checks for invalid subnet and throws an exception' do
62
+ options = {
63
+ subnet: [{ name: 'Subnet-1', ip_address: '10.0.0.0/8', cidr: 12 }],
64
+ dns: [{ name: 'demodns', ip_address: '2.3.4.5' }]
65
+ }
66
+
67
+ exception = assert_raises(RuntimeError) do
68
+ subject.set_network_configuration(in_vnet_name,
69
+ in_affinity_name,
70
+ in_address_space,
71
+ options)
72
+ end
73
+ #assert_match(xml_err_msg, exception.message)
74
+ end
75
+ end
76
+
77
+ describe 'Create virtual network with no address space provided options ' do
78
+ it 'Create virtual network with invalid options' do
79
+ exception = assert_raises(RuntimeError) do
80
+ subject.set_network_configuration(in_vnet_name,
81
+ in_affinity_name,
82
+ invalid_address_space,
83
+ inputoptions)
84
+ end
85
+ assert_match(xml_err_msg, exception.message)
86
+ end
87
+ end
88
+
89
+ describe 'Update virtual network valid params ' do
90
+ it 'Update virtual network with valid params' do
91
+ update_address_space = ['10.0.0.0/8']
92
+ update_options = {
93
+ subnet: [{ name: 'Subnet-1', ip_address: '10.0.0.0', cidr: 16 }],
94
+ dns: [{ name: 'DNS', ip_address: '1.2.3.4' }]
95
+ }
96
+
97
+ subject.set_network_configuration(in_vnet_name,
98
+ in_affinity_name,
99
+ update_address_space,
100
+ update_options)
101
+ VirtualNetworkHelper.check_config(subject.list_virtual_networks,
102
+ in_vnet_name,
103
+ in_affinity_name,
104
+ created_state,
105
+ update_address_space,
106
+ update_options)
107
+ end
108
+ end
109
+
110
+ describe 'Create virtual network invalid cidr' do
111
+ it 'Create virtual network with invalid options' do
112
+ exception = assert_raises(RuntimeError) do
113
+ subject.set_network_configuration(in_vnet_name,
114
+ in_affinity_name,
115
+ invalid_cidr_address_space,
116
+ inputoptions)
117
+ end
118
+ assert_match("Cidr is invalid for IP #{invalid_cidr_address_space[0]}",
119
+ exception.message)
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,53 @@
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
+ affinity_group_service = Azure::BaseManagementService.new
28
+ affinity_group_service.create_affinity_group(affinity_group_name,
29
+ location,
30
+ 'Label Name'
31
+ ) rescue nil
32
+ address_space = %w(172.16.0.0/12 10.0.0.0/8 192.168.0.0/24)
33
+ unless subject.list_virtual_networks.map(&:name).include?(vnet_name)
34
+ subject.set_network_configuration(
35
+ vnet_name,
36
+ affinity_group_name,
37
+ address_space
38
+ )
39
+ end
40
+ end
41
+
42
+ describe '#list_virtual_networks' do
43
+ it 'Gets a list of virtual networks for the current subscription.' do
44
+ virtual_networks = subject.list_virtual_networks
45
+ virtual_networks.wont_be_nil
46
+ virtual_networks.must_be_kind_of Array
47
+ virtual_networks.first.must_be_kind_of(
48
+ Azure::VirtualNetworkManagement::VirtualNetwork
49
+ )
50
+ assert_operator virtual_networks.size, :>=, 1
51
+ end
52
+ end
53
+ 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