azure 0.6.0 → 0.6.1

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 (283) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -11
  3. data/.travis.yml +11 -33
  4. data/ChangeLog.txt +20 -5
  5. data/Gemfile +15 -15
  6. data/README.md +541 -537
  7. data/Rakefile +129 -127
  8. data/azure.gemspec +43 -42
  9. data/lib/azure.rb +52 -51
  10. data/lib/azure/base_management/affinity_group.rb +32 -32
  11. data/lib/azure/base_management/base_management_service.rb +234 -234
  12. data/lib/azure/base_management/location.rb +27 -27
  13. data/lib/azure/base_management/management_http_request.rb +171 -148
  14. data/lib/azure/base_management/serialization.rb +129 -129
  15. data/lib/azure/base_management/sql_management_http_request.rb +45 -0
  16. data/lib/azure/blob/blob.rb +31 -31
  17. data/lib/azure/blob/blob_service.rb +1423 -1423
  18. data/lib/azure/blob/block.rb +30 -30
  19. data/lib/azure/blob/container.rb +31 -31
  20. data/lib/azure/blob/serialization.rb +284 -284
  21. data/lib/azure/cloud_service_management/cloud_service.rb +38 -31
  22. data/lib/azure/cloud_service_management/cloud_service_management_service.rb +134 -125
  23. data/lib/azure/cloud_service_management/serialization.rb +101 -63
  24. data/lib/azure/core.rb +39 -36
  25. data/lib/azure/core/auth/authorizer.rb +36 -36
  26. data/lib/azure/core/auth/shared_key.rb +110 -110
  27. data/lib/azure/core/auth/shared_key_lite.rb +48 -48
  28. data/lib/azure/core/auth/signer.rb +48 -48
  29. data/lib/azure/core/configuration.rb +211 -184
  30. data/lib/azure/core/error.rb +22 -22
  31. data/lib/azure/core/filtered_service.rb +43 -43
  32. data/lib/azure/core/http/debug_filter.rb +35 -35
  33. data/lib/azure/core/http/http_error.rb +88 -88
  34. data/lib/azure/core/http/http_filter.rb +52 -52
  35. data/lib/azure/core/http/http_request.rb +157 -157
  36. data/lib/azure/core/http/http_response.rb +140 -140
  37. data/lib/azure/core/http/retry_policy.rb +73 -73
  38. data/lib/azure/core/http/signer_filter.rb +33 -33
  39. data/lib/azure/core/service.rb +62 -62
  40. data/lib/azure/core/signed_service.rb +42 -42
  41. data/lib/azure/core/utility.rb +190 -190
  42. data/lib/azure/queue/message.rb +29 -29
  43. data/lib/azure/queue/queue.rb +28 -28
  44. data/lib/azure/queue/queue_service.rb +567 -567
  45. data/lib/azure/queue/serialization.rb +106 -106
  46. data/lib/azure/service/access_policy.rb +25 -25
  47. data/lib/azure/service/enumeration_results.rb +20 -20
  48. data/lib/azure/service/logging.rb +31 -31
  49. data/lib/azure/service/metrics.rb +30 -30
  50. data/lib/azure/service/retention_policy.rb +24 -24
  51. data/lib/azure/service/serialization.rb +239 -239
  52. data/lib/azure/service/signed_identifier.rb +29 -29
  53. data/lib/azure/service/storage_service.rb +78 -78
  54. data/lib/azure/service/storage_service_properties.rb +31 -31
  55. data/lib/azure/service_bus/action.rb +21 -21
  56. data/lib/azure/service_bus/auth/wrap_service.rb +88 -88
  57. data/lib/azure/service_bus/auth/wrap_signer.rb +68 -68
  58. data/lib/azure/service_bus/brokered_message.rb +123 -123
  59. data/lib/azure/service_bus/brokered_message_serializer.rb +159 -159
  60. data/lib/azure/service_bus/correlation_filter.rb +45 -45
  61. data/lib/azure/service_bus/empty_rule_action.rb +29 -29
  62. data/lib/azure/service_bus/false_filter.rb +38 -38
  63. data/lib/azure/service_bus/filter.rb +21 -21
  64. data/lib/azure/service_bus/interval.rb +103 -103
  65. data/lib/azure/service_bus/queue.rb +229 -229
  66. data/lib/azure/service_bus/resource.rb +108 -108
  67. data/lib/azure/service_bus/rule.rb +97 -97
  68. data/lib/azure/service_bus/rule_aspect.rb +34 -34
  69. data/lib/azure/service_bus/serialization.rb +160 -160
  70. data/lib/azure/service_bus/service_bus_service.rb +828 -828
  71. data/lib/azure/service_bus/sql_filter.rb +50 -50
  72. data/lib/azure/service_bus/sql_rule_action.rb +50 -50
  73. data/lib/azure/service_bus/subscription.rb +183 -183
  74. data/lib/azure/service_bus/topic.rb +186 -186
  75. data/lib/azure/service_bus/true_filter.rb +38 -38
  76. data/lib/azure/sql_database_management/serialization.rb +111 -90
  77. data/lib/azure/sql_database_management/sql_database.rb +31 -31
  78. data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -202
  79. data/lib/azure/storage_management/serialization.rb +190 -50
  80. data/lib/azure/storage_management/storage_account.rb +40 -29
  81. data/lib/azure/storage_management/storage_management_service.rb +166 -99
  82. data/lib/azure/table/auth/shared_key.rb +92 -92
  83. data/lib/azure/table/auth/shared_key_lite.rb +44 -44
  84. data/lib/azure/table/batch.rb +329 -329
  85. data/lib/azure/table/batch_response.rb +118 -118
  86. data/lib/azure/table/edmtype.rb +126 -126
  87. data/lib/azure/table/entity.rb +30 -30
  88. data/lib/azure/table/guid.rb +23 -23
  89. data/lib/azure/table/query.rb +111 -111
  90. data/lib/azure/table/serialization.rb +107 -107
  91. data/lib/azure/table/table_service.rb +559 -559
  92. data/lib/azure/version.rb +30 -30
  93. data/lib/azure/virtual_machine_image_management/serialization.rb +49 -49
  94. data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +27 -27
  95. data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +27 -27
  96. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +66 -66
  97. data/lib/azure/virtual_machine_management/serialization.rb +257 -247
  98. data/lib/azure/virtual_machine_management/virtual_machine.rb +41 -57
  99. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +317 -304
  100. data/lib/azure/virtual_network_management/serialization.rb +186 -186
  101. data/lib/azure/virtual_network_management/virtual_network.rb +36 -36
  102. data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -109
  103. data/test/fixtures/affinity_group.xml +33 -33
  104. data/test/fixtures/all_containers.xml +20 -20
  105. data/test/fixtures/all_tables.xml +22 -22
  106. data/test/fixtures/certificate.pem +21 -21
  107. data/test/fixtures/container_acl.xml +11 -11
  108. data/test/fixtures/create_sql_database_server.xml +1 -1
  109. data/test/fixtures/create_storage_desc_error.xml +5 -0
  110. data/test/fixtures/create_storage_extendedprop_error.xml +8 -0
  111. data/test/fixtures/create_storage_extendedpropname_error.xml +6 -0
  112. data/test/fixtures/create_storage_full_error.xml +6 -0
  113. data/test/fixtures/create_storage_label_error.xml +5 -0
  114. data/test/fixtures/create_storage_location_error.xml +5 -0
  115. data/test/fixtures/create_storage_name_error.xml +6 -0
  116. data/test/fixtures/create_table_response_entry.xml +15 -15
  117. data/test/fixtures/delete_storage_container_error.xml +5 -0
  118. data/test/fixtures/delete_storage_error.xml +5 -0
  119. data/test/fixtures/deployment_error.xml +5 -5
  120. data/test/fixtures/get_storage_account_error.xml +5 -0
  121. data/test/fixtures/get_storage_account_properties.xml +32 -0
  122. data/test/fixtures/get_storage_account_properties_new.xml +32 -0
  123. data/test/fixtures/http_error.xml +5 -5
  124. data/test/fixtures/insert_entity_response_entry.xml +25 -25
  125. data/test/fixtures/list_affinity_groups.xml +22 -22
  126. data/test/fixtures/list_blobs.xml +120 -120
  127. data/test/fixtures/list_block_all_with_none_committed.xml +21 -21
  128. data/test/fixtures/list_blocks_all.xml +22 -22
  129. data/test/fixtures/list_blocks_committed.xml +12 -12
  130. data/test/fixtures/list_cloud_services.xml +38 -28
  131. data/test/fixtures/list_containers.xml +37 -37
  132. data/test/fixtures/list_firewall_management_endpoint.xml +27 -0
  133. data/test/fixtures/list_images.xml +110 -110
  134. data/test/fixtures/list_locations.xml +62 -62
  135. data/test/fixtures/list_page_ranges.xml +10 -10
  136. data/test/fixtures/list_sql_database.xml +36 -36
  137. data/test/fixtures/list_sql_server_firewall.xml +23 -23
  138. data/test/fixtures/list_storage_accounts.xml +45 -45
  139. data/test/fixtures/list_virtual_networks.xml +92 -92
  140. data/test/fixtures/logging.xml +11 -11
  141. data/test/fixtures/management_certificate.pem +55 -55
  142. data/test/fixtures/messages.xml +12 -12
  143. data/test/fixtures/metrics.xml +10 -10
  144. data/test/fixtures/privatekey.key +28 -28
  145. data/test/fixtures/query_entities_empty_response.xml +7 -7
  146. data/test/fixtures/query_entities_response.xml +45 -45
  147. data/test/fixtures/queue_service_properties.xml +22 -22
  148. data/test/fixtures/queue_service_properties_original.xml +19 -19
  149. data/test/fixtures/queues.xml +16 -16
  150. data/test/fixtures/retention_policy.xml +5 -5
  151. data/test/fixtures/sb_default_create_queue_response.xml +23 -23
  152. data/test/fixtures/sb_default_create_topic_response.xml +18 -18
  153. data/test/fixtures/sb_get_access_token_response.txt +1 -1
  154. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -9
  155. data/test/fixtures/storage_service_properties.xml +23 -23
  156. data/test/fixtures/update_storage_account.xml +16 -0
  157. data/test/fixtures/update_storage_error.xml +5 -0
  158. data/test/fixtures/updated_storage_accounts.xml +53 -0
  159. data/test/fixtures/virtual_machine.xml +108 -107
  160. data/test/fixtures/windows_virtual_machine.xml +106 -106
  161. data/test/integration/affinity_group/Affinity_test.rb +55 -55
  162. data/test/integration/affinity_group/Create_Affinity_test.rb +63 -63
  163. data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -56
  164. data/test/integration/affinity_group/List_Affinity_test.rb +41 -41
  165. data/test/integration/affinity_group/Update_Affinity_test.rb +82 -82
  166. data/test/integration/blob/blob_gb18030_test.rb +199 -199
  167. data/test/integration/blob/blob_metadata_test.rb +75 -75
  168. data/test/integration/blob/blob_pages_test.rb +119 -119
  169. data/test/integration/blob/blob_properties_test.rb +77 -77
  170. data/test/integration/blob/block_blob_test.rb +254 -254
  171. data/test/integration/blob/container/container_acl_test.rb +69 -69
  172. data/test/integration/blob/container/container_metadata_test.rb +50 -50
  173. data/test/integration/blob/container/create_container_test.rb +60 -60
  174. data/test/integration/blob/container/delete_container_test.rb +39 -39
  175. data/test/integration/blob/container/get_container_properties_test.rb +48 -48
  176. data/test/integration/blob/container/list_containers_test.rb +79 -79
  177. data/test/integration/blob/container/root_container_test.rb +53 -53
  178. data/test/integration/blob/copy_blob_test.rb +113 -113
  179. data/test/integration/blob/create_blob_snapshot_test.rb +80 -80
  180. data/test/integration/blob/create_page_blob_test.rb +83 -83
  181. data/test/integration/blob/delete_blob_test.rb +159 -159
  182. data/test/integration/blob/get_blob_test.rb +65 -65
  183. data/test/integration/blob/informative_errors_test.rb +38 -38
  184. data/test/integration/blob/lease/acquire_lease_test.rb +36 -36
  185. data/test/integration/blob/lease/break_lease_test.rb +40 -40
  186. data/test/integration/blob/lease/release_lease_test.rb +40 -40
  187. data/test/integration/blob/lease/renew_lease_test.rb +42 -42
  188. data/test/integration/blob/list_blobs_test.rb +113 -113
  189. data/test/integration/database/create_sql_server_firewall_test.rb +86 -86
  190. data/test/integration/database/create_sql_server_test.rb +53 -57
  191. data/test/integration/database/delete_sql_server_firewall_test.rb +70 -72
  192. data/test/integration/database/delete_sql_server_test.rb +58 -63
  193. data/test/integration/database/list_sql_server_firewall_test.rb +45 -46
  194. data/test/integration/database/list_sql_servers_test.rb +44 -45
  195. data/test/integration/database/reset_password_sql_server_test.rb +55 -56
  196. data/test/integration/location/Location_List_test.rb +39 -39
  197. data/test/integration/queue/clear_messages_test.rb +42 -42
  198. data/test/integration/queue/create_message_test.rb +75 -75
  199. data/test/integration/queue/create_queue_test.rb +50 -50
  200. data/test/integration/queue/delete_message_test.rb +67 -67
  201. data/test/integration/queue/delete_queue_test.rb +45 -45
  202. data/test/integration/queue/informative_errors_test.rb +41 -41
  203. data/test/integration/queue/list_messages_encoded_test.rb +79 -79
  204. data/test/integration/queue/list_messages_test.rb +79 -79
  205. data/test/integration/queue/list_queues_test.rb +44 -44
  206. data/test/integration/queue/peek_messages_test.rb +59 -59
  207. data/test/integration/queue/queue_gb18030_test.rb +131 -131
  208. data/test/integration/queue/queue_metadata_test.rb +40 -40
  209. data/test/integration/queue/update_message_test.rb +74 -74
  210. data/test/integration/service_bus/informative_errors_test.rb +36 -36
  211. data/test/integration/service_bus/queues_scenario_test.rb +200 -200
  212. data/test/integration/service_bus/queues_test.rb +265 -265
  213. data/test/integration/service_bus/rules_test.rb +144 -144
  214. data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -182
  215. data/test/integration/service_bus/scenario_test.rb +101 -101
  216. data/test/integration/service_bus/subscriptions_test.rb +211 -211
  217. data/test/integration/service_bus/topics_scenario_test.rb +406 -406
  218. data/test/integration/service_bus/topics_test.rb +129 -129
  219. data/test/integration/storage_management/storage_management_test.rb +160 -0
  220. data/test/integration/table/create_table_test.rb +35 -35
  221. data/test/integration/table/delete_entity_batch_test.rb +106 -106
  222. data/test/integration/table/delete_entity_test.rb +93 -93
  223. data/test/integration/table/delete_table_test.rb +39 -39
  224. data/test/integration/table/get_table_test.rb +36 -36
  225. data/test/integration/table/informative_errors_test.rb +38 -38
  226. data/test/integration/table/insert_entity_batch_test.rb +99 -99
  227. data/test/integration/table/insert_entity_test.rb +87 -87
  228. data/test/integration/table/insert_or_merge_entity_batch_test.rb +158 -158
  229. data/test/integration/table/insert_or_merge_entity_test.rb +142 -142
  230. data/test/integration/table/insert_or_replace_entity_batch_test.rb +151 -151
  231. data/test/integration/table/insert_or_replace_entity_test.rb +136 -136
  232. data/test/integration/table/merge_entity_batch_test.rb +127 -127
  233. data/test/integration/table/merge_entity_test.rb +112 -112
  234. data/test/integration/table/query_entities_test.rb +194 -194
  235. data/test/integration/table/query_tables_test.rb +42 -42
  236. data/test/integration/table/query_test.rb +250 -250
  237. data/test/integration/table/table_acl_test.rb +51 -51
  238. data/test/integration/table/table_gb18030_test.rb +355 -355
  239. data/test/integration/table/update_entity_batch_test.rb +148 -148
  240. data/test/integration/table/update_entity_test.rb +130 -130
  241. data/test/integration/test_helper.rb +42 -44
  242. data/test/integration/vm/VM_Create_test.rb +213 -235
  243. data/test/integration/vm/VM_Delete_test.rb +55 -55
  244. data/test/integration/vm/VM_List_test.rb +71 -71
  245. data/test/integration/vm/VM_ShutDown_test.rb +59 -59
  246. data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -37
  247. data/test/integration/vm_image/virtual_machine_image_test.rb +36 -36
  248. data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -122
  249. data/test/integration/vnet/Virtual_Network_list_test.rb +53 -53
  250. data/test/support/env.rb +19 -19
  251. data/test/support/fixtures.rb +36 -36
  252. data/test/support/name_generator.rb +160 -160
  253. data/test/support/stubs.rb +42 -42
  254. data/test/support/virtual_machine_name_generator.rb +117 -127
  255. data/test/support/virtual_network_helper.rb +73 -73
  256. data/test/test_helper.rb +52 -52
  257. data/test/unit/affinity_group/affinity_group_test.rb +192 -192
  258. data/test/unit/affinity_group/serialization_test.rb +88 -88
  259. data/test/unit/base_management/location_test.rb +57 -57
  260. data/test/unit/blob/blob_service_test.rb +1946 -1946
  261. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -94
  262. data/test/unit/cloud_service_management/serialization_test.rb +169 -76
  263. data/test/unit/core/auth/shared_key_lite_test.rb +51 -51
  264. data/test/unit/core/auth/shared_key_test.rb +58 -58
  265. data/test/unit/core/auth/signer_test.rb +30 -30
  266. data/test/unit/core/http/http_error_test.rb +57 -57
  267. data/test/unit/core/http/http_request_test.rb +66 -66
  268. data/test/unit/core/http/http_response_test.rb +45 -45
  269. data/test/unit/core/http/retry_policy_test.rb +23 -23
  270. data/test/unit/database/serialization_test.rb +97 -95
  271. data/test/unit/database/sql_database_server_service_test.rb +288 -152
  272. data/test/unit/service/serialization_test.rb +501 -501
  273. data/test/unit/service/storage_service_test.rb +290 -290
  274. data/test/unit/storage_management/serialization_test.rb +232 -65
  275. data/test/unit/storage_management/storage_management_service_test.rb +233 -94
  276. data/test/unit/table/edmtype_test.rb +107 -107
  277. data/test/unit/virtual_machine_image_management/serialization_test.rb +34 -34
  278. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +60 -60
  279. data/test/unit/virtual_machine_management/serialization_test.rb +119 -116
  280. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +383 -386
  281. data/test/unit/vnet/serialization_test.rb +187 -187
  282. data/test/unit/vnet/virtual_network_management_service_test.rb +131 -131
  283. metadata +55 -23
@@ -1,44 +1,42 @@
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 "test_helper"
16
- require "azure"
17
-
18
- Azure::Core.configure do |config|
19
- config.storage_access_key = ENV.fetch("AZURE_STORAGE_ACCESS_KEY")
20
- config.storage_account_name = ENV.fetch("AZURE_STORAGE_ACCOUNT")
21
- # config.storage_table_host = ENV.fetch("AZURE_STORAGE_TABLE_HOST")
22
- # config.storage_blob_host = ENV.fetch("AZURE_STORAGE_BLOB_HOST")
23
- # config.storage_queue_host = ENV.fetch("AZURE_STORAGE_QUEUE_HOST")
24
-
25
- config.sb_namespace = ENV.fetch("AZURE_SERVICEBUS_NAMESPACE")
26
- config.sb_access_key = ENV.fetch("AZURE_SERVICEBUS_ACCESS_KEY")
27
- # config.sb_issuer = ENV.fetch("AZURE_SERVICEBUS_ISSUER")
28
- config.management_certificate = ENV.fetch('AZURE_MANAGEMENT_CERTIFICATE')
29
- # config.management_endpoint = ENV.fetch("AZURE_MANAGEMENT_ENDPOINT")
30
- config.subscription_id = ENV.fetch("AZURE_SUBSCRIPTION_ID")
31
- end
32
-
33
- StorageAccountName = random_string('storagetest',10)
34
- SqlServerEndpoint = "https://management.database.windows.net:8443/"
35
- ManagementServiceEndpoint = Azure.config.management_endpoint
36
- Images = Azure::VirtualMachineImageManagementService.new.list_virtual_machine_images
37
- LinuxImage = Images.select{|image| image.os_type == 'Linux'}.first
38
- WindowsImage = Images.select{|image| image.os_type == 'Windows'}.first
39
- WindowsImageLocation = WindowsImage.locations.split(';').first
40
- LinuxImageLocation = LinuxImage.locations.split(';').first
41
-
42
- MiniTest::Unit.after_tests {
43
- VirtualMachineNameGenerator.cleanup
44
- }
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 "test_helper"
16
+ require "azure"
17
+
18
+ Azure::Core.configure do |config|
19
+ config.storage_access_key = ENV.fetch("AZURE_STORAGE_ACCESS_KEY")
20
+ config.storage_account_name = ENV.fetch("AZURE_STORAGE_ACCOUNT")
21
+ # config.storage_table_host = ENV.fetch("AZURE_STORAGE_TABLE_HOST")
22
+ # config.storage_blob_host = ENV.fetch("AZURE_STORAGE_BLOB_HOST")
23
+ # config.storage_queue_host = ENV.fetch("AZURE_STORAGE_QUEUE_HOST")
24
+
25
+ config.sb_namespace = ENV.fetch("AZURE_SERVICEBUS_NAMESPACE")
26
+ config.sb_access_key = ENV.fetch("AZURE_SERVICEBUS_ACCESS_KEY")
27
+ # config.sb_issuer = ENV.fetch("AZURE_SERVICEBUS_ISSUER")
28
+ config.management_certificate = ENV.fetch('AZURE_MANAGEMENT_CERTIFICATE')
29
+ # config.management_endpoint = ENV.fetch("AZURE_MANAGEMENT_ENDPOINT")
30
+ config.subscription_id = ENV.fetch("AZURE_SUBSCRIPTION_ID")
31
+ end
32
+
33
+ StorageAccountName = random_string('storagetest',10)
34
+ Images = Azure::VirtualMachineImageManagementService.new.list_virtual_machine_images
35
+ LinuxImage = Images.select{|image| image.os_type == 'Linux'}.first
36
+ WindowsImage = Images.select{|image| image.os_type == 'Windows'}.first
37
+ WindowsImageLocation = WindowsImage.locations.split(';').first
38
+ LinuxImageLocation = LinuxImage.locations.split(';').first
39
+
40
+ MiniTest::Unit.after_tests {
41
+ VirtualMachineNameGenerator.cleanup
42
+ }
@@ -1,235 +1,213 @@
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
- subject { Azure::VirtualMachineManagementService.new }
19
- let(:cloud_service) { Azure::CloudServiceManagementService.new }
20
- let(:names) { VirtualMachineNameHelper.name }
21
- let(:virtual_machine_name) { names.first }
22
- let(:cloud_service_name) { names.last }
23
- let(:storage_account_name) { StorageAccountName }
24
- let(:username) { 'adminuser' }
25
- let(:password) { 'Admin123' }
26
- let(:certificate) { Fixtures["certificate.pem"] }
27
- let(:private_key) { Fixtures["privatekey.key"] }
28
- let(:params){
29
- {
30
- :vm_name => virtual_machine_name,
31
- :vm_user => username,
32
- :image => LinuxImage.name,
33
- :password => password,
34
- :location => LinuxImageLocation
35
- }
36
- }
37
-
38
- let(:windows_params){
39
- {
40
- :vm_name => virtual_machine_name,
41
- :vm_user => username,
42
- :image => WindowsImage.name,
43
- :password => password,
44
- :location => WindowsImageLocation
45
- }
46
- }
47
-
48
- let(:in_vnet_name) { 'integration-test-virtual-network' }
49
-
50
- let(:options){
51
- {
52
- :storage_account_name => storage_account_name,
53
- :virtual_network_name => in_vnet_name,
54
- :subnet_name => 'Subnet-1'
55
- }
56
- }
57
-
58
- let(:default_options) {
59
- {
60
- :storage_account_name => storage_account_name,
61
- :cloud_service_name => cloud_service_name
62
- }
63
- }
64
-
65
- let(:in_affinity_name) { 'test-affinity-group' }
66
- let(:in_address_space) { ['172.16.0.0/12'] }
67
- inputoptions = {
68
- :subnet => [{ :name => 'Subnet-1', :ip_address => '172.16.0.0', :cidr => 12 }],
69
- :dns => [{ :name => 'DNS', :ip_address => '1.2.3.4' }]
70
- }
71
-
72
- before{
73
- Loggerx.expects(:puts).returns(nil).at_least(0)
74
-
75
- affinity_group_service = Azure::BaseManagementService.new
76
- affinity_group_service.create_affinity_group(in_affinity_name, WindowsImageLocation, 'Label') rescue nil
77
-
78
- virtual_network_service = Azure::VirtualNetworkManagementService.new
79
- virtual_network_service.set_network_configuration(in_vnet_name, in_affinity_name, in_address_space, inputoptions)
80
- }
81
-
82
- describe "#deployment" do
83
-
84
- it "should set options hash with valid cloud_service_name, deployment_name, storage_account_name and virtual network" do
85
- subject.create_virtual_machine(params, options)
86
- cloud_name = options[:cloud_service_name]
87
- virtual_machine = subject.get_virtual_machine(virtual_machine_name, cloud_name)
88
- virtual_machine.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
89
- virtual_machine.cloud_service_name.wont_be_nil
90
- virtual_machine.vm_name.must_equal virtual_machine_name
91
- virtual_machine.deployment_name.wont_be_nil
92
- virtual_machine.deployment_name.must_equal virtual_machine.cloud_service_name
93
- virtual_machine.os_type.must_equal 'Linux'
94
- options[:storage_account_name].wont_be_nil
95
- assert_match(/^#{params[:vm_name]+'-service'}*/, cloud_name)
96
- virtual_machine.virtual_network_name.must_equal in_vnet_name
97
- virtual_machine.virtual_network.must_be_kind_of Azure::VirtualNetworkManagement::VirtualNetwork
98
- end
99
-
100
- it "should creates http and https enabled winrm virtual machine without certificate." do
101
- default_options.merge!(:winrm_transport => ['https','http'])
102
- subject.create_virtual_machine(windows_params, default_options)
103
- result = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
104
- result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
105
- assert_equal(result.os_type, 'Windows',"Error in the OS type of VI created")
106
- tcp_endpoints_names = []
107
- result.tcp_endpoints.each do |tcp_endpoint|
108
- tcp_endpoints_names << tcp_endpoint["Name"]
109
- end
110
- tcp_endpoints_names.must_include "WinRm-Https"
111
- tcp_endpoints_names.must_include "WinRm-Http"
112
- sleep 30
113
- end
114
-
115
- it "should creates https enabled winrm virtual machine using certificate." do
116
- default_options.merge!(:winrm_transport => ['https'], :private_key_file => private_key, :certificate_file => certificate)
117
- subject.create_virtual_machine(windows_params, default_options)
118
- result = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
119
- result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
120
- assert_equal(result.os_type, 'Windows',"Error in the OS type of VI created")
121
- tcp_endpoints_names = []
122
- result.tcp_endpoints.each do |tcp_endpoint|
123
- tcp_endpoints_names << tcp_endpoint["Name"]
124
- end
125
- tcp_endpoints_names.must_include "WinRm-Https"
126
- end
127
-
128
- it "should creates windows virtual machine without winrm." do
129
- default_options.merge!(:winrm_transport => ['none'])
130
- subject.create_virtual_machine(windows_params, default_options)
131
- result = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
132
- result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
133
- assert_equal(result.os_type, 'Windows',"Error in the OS type of VI created")
134
- tcp_endpoints_names = []
135
- result.tcp_endpoints.each do |tcp_endpoint|
136
- tcp_endpoints_names << tcp_endpoint["Name"]
137
- end
138
- assert (not tcp_endpoints_names.include? "WinRm-Https")
139
- assert (not tcp_endpoints_names.include? "WinRm-Http")
140
- end
141
-
142
- it "created linux virtual machine should be accessible using password and certificate" do
143
- default_options.merge!(:private_key_file => private_key, :certificate_file => certificate)
144
- subject.create_virtual_machine(params, default_options)
145
- result = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
146
- result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
147
- assert_equal(result.os_type, 'Linux',"Error in the OS type of VI created")
148
- end
149
-
150
- it "ssh should be accessible using certificate on different port and virtual machine size should be Medium" do
151
- params.delete(:password)
152
- default_options.merge!(:ssh_port => '2222', :vm_size => 'Medium', :private_key_file => private_key, :certificate_file => certificate)
153
- subject.create_virtual_machine(params, default_options)
154
- result = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
155
- result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
156
- endpoints = {}
157
- result.tcp_endpoints.each do |tcp_endpoint|
158
- endpoints[tcp_endpoint["Name"]] =
159
- {
160
- "PublicPort" => tcp_endpoint["PublicPort"],
161
- "LocalPort" => tcp_endpoint["LocalPort"]
162
- }
163
- end
164
- endpoints.keys.must_include "SSH"
165
- assert_equal(endpoints["SSH"]["PublicPort"], "2222")
166
- assert_equal(endpoints["SSH"]["LocalPort"], "22")
167
- assert_equal(result.role_size, 'Medium')
168
- end
169
-
170
- it "throws Runtime error as port value is beyond or less than actual range" do
171
- default_options.merge!(:tcp_endpoints => '80,166535:166535')
172
- msg = subject.create_virtual_machine(params, default_options)
173
- assert_match(/invalid. Allowed values are 'a number between 1 to 65535'./i, msg)
174
-
175
- default_options.merge!(:tcp_endpoints => '80,0:0')
176
- msg = subject.create_virtual_machine(params, default_options)
177
- assert_match(/invalid. Allowed values are 'a number between 1 to 65535'./i, msg)
178
-
179
- cloud_service.delete_cloud_service(cloud_service_name)
180
- end
181
-
182
- it "throws error when multiple VMs created under same DNS" do
183
- subject.create_virtual_machine(params, default_options)
184
- msg = subject.create_virtual_machine(windows_params, default_options)
185
- assert_match(/The specified deployment slot Production is occupied./i,msg)
186
- end
187
-
188
- it "throws SystemExit error when vm_user not provided" do
189
- params.delete(:vm_user)
190
- msg = subject.create_virtual_machine(params)
191
- assert_match(/You did not provide a valid 'vm_user' value./i, msg)
192
- end
193
-
194
- it "throws Runtime error when image not provide" do
195
- params.delete(:image)
196
- msg = subject.create_virtual_machine(params)
197
- assert_match(/The virtual machine image source is not valid/i, msg)
198
- end
199
-
200
- it "error thrown when invalid storage account name is given" do
201
- default_options.merge!(:storage_account_name=>'storageuse_91')
202
- msg = subject.create_virtual_machine(params, default_options)
203
- assert_match(/The name is not a valid storage account name./i, msg)
204
- cloud_service.delete_cloud_service(cloud_service_name)
205
- end
206
-
207
- it "error thrown when invalid cloud name is given" do
208
- default_options.merge!(:cloud_service_name => 'cloud-server-test_91')
209
- msg = subject.create_virtual_machine(params, default_options)
210
- assert_match(/The hosted service name is invalid/i, msg)
211
- end
212
-
213
- it "error thrown when invalid deployment name provided" do
214
- default_options.merge!(:deployment_name => 'instance_B')
215
- msg = subject.create_virtual_machine(params, default_options)
216
- assert_match(/The deployment name is invalid/i, msg)
217
- cloud_service.delete_cloud_service(cloud_service_name)
218
- end
219
-
220
- it "error thrown when invalid Virtual Machine name for Windows OS provided" do
221
- windows_params.merge!(:vm_name => "MSServerInstnce01")
222
- msg = subject.create_virtual_machine(windows_params, default_options)
223
- assert_match(/The computer name cannot be more than 15 characters long, be entirely numeric, or contain the following characters/i, msg)
224
- cloud_service.delete_cloud_service(cloud_service_name)
225
- end
226
-
227
- it "error thrown when blank password for Windows OS provided" do
228
- windows_params.delete(:password)
229
- msg = subject.create_virtual_machine(windows_params, default_options)
230
- assert_match(/You did not provide a valid 'password' value./i, msg)
231
- end
232
-
233
- end #deployment
234
-
235
- end
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
+ subject { Azure::VirtualMachineManagementService.new }
19
+ let(:cloud_service) { Azure::CloudServiceManagementService.new }
20
+ let(:names) { VirtualMachineNameHelper.name }
21
+ let(:virtual_machine_name) { names.first }
22
+ let(:cloud_service_name) { names.last }
23
+ let(:storage_account_name) { StorageAccountName }
24
+ let(:username) { 'adminuser' }
25
+ let(:password) { 'Admin123' }
26
+ let(:certificate) { Fixtures['certificate.pem'] }
27
+ let(:private_key) { Fixtures['privatekey.key'] }
28
+
29
+ let(:params)do
30
+ {
31
+ vm_name: virtual_machine_name,
32
+ vm_user: username,
33
+ image: LinuxImage.name,
34
+ password: password,
35
+ location: LinuxImageLocation
36
+ }
37
+ end
38
+
39
+ let(:windows_params)do
40
+ {
41
+ vm_name: virtual_machine_name,
42
+ vm_user: username,
43
+ image: WindowsImage.name,
44
+ password: password,
45
+ location: WindowsImageLocation
46
+ }
47
+ end
48
+
49
+ let(:options)do
50
+ {
51
+ storage_account_name: storage_account_name,
52
+ cloud_service_name: cloud_service_name,
53
+ vm_size: 'Small'
54
+ }
55
+ end
56
+
57
+ let(:default_options) do
58
+ {
59
+ storage_account_name: storage_account_name,
60
+ cloud_service_name: cloud_service_name
61
+ }
62
+ end
63
+
64
+
65
+ before do
66
+ Loggerx.expects(:puts).returns(nil).at_least(0)
67
+
68
+ end
69
+
70
+ describe '#deployment' do
71
+
72
+ it 'should set options hash with valid cloud_service_name, deployment_name, storage_account_name and virtual network' do
73
+ cloud_name = options[:cloud_service_name]
74
+ options[:availability_set_name] = 'aval-set-test'
75
+ subject.create_virtual_machine(params, options, false)
76
+ virtual_machine = subject.get_virtual_machine(virtual_machine_name, cloud_name)
77
+ virtual_machine.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
78
+ virtual_machine.cloud_service_name.wont_be_nil
79
+ virtual_machine.vm_name.must_equal virtual_machine_name
80
+ virtual_machine.deployment_name.wont_be_nil
81
+ virtual_machine.deployment_name.must_equal virtual_machine.cloud_service_name
82
+ virtual_machine.os_type.must_equal 'Linux'
83
+ virtual_machine.role_size.must_equal 'Small'
84
+ virtual_machine.availability_set_name.must_equal 'aval-set-test'
85
+ options[:storage_account_name].wont_be_nil
86
+ assert_match(/^#{params[:vm_name] + '-service'}*/, cloud_name)
87
+ # Test for add role
88
+ params[:vm_name] = 'test-add-role-vm'
89
+ options[:ssh_port] = 2222
90
+ vm = subject.create_virtual_machine(params, options, true)
91
+ vm.cloud_service_name.must_equal cloud_name
92
+ vm.vm_name.must_equal params[:vm_name]
93
+ virtual_machine.deployment_name.wont_be_nil
94
+ virtual_machine.os_type.must_equal 'Linux'
95
+ end
96
+
97
+ it 'should creates http and https enabled winrm virtual machine without certificate.' do
98
+ default_options.merge!(winrm_transport: %w(https http))
99
+ subject.create_virtual_machine(windows_params, default_options)
100
+ result = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
101
+ result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
102
+ assert_equal(result.os_type, 'Windows', 'Error in the OS type of VI created')
103
+ tcp_endpoints_names = []
104
+ result.tcp_endpoints.each do |tcp_endpoint|
105
+ tcp_endpoints_names << tcp_endpoint['Name']
106
+ end
107
+ tcp_endpoints_names.must_include 'WinRm-Https'
108
+ tcp_endpoints_names.must_include 'WinRm-Http'
109
+ sleep 30
110
+ end
111
+
112
+ it 'should creates https enabled winrm virtual machine using certificate.' do
113
+ default_options.merge!(winrm_transport: ['https'], private_key_file: private_key, certificate_file: certificate)
114
+ subject.create_virtual_machine(windows_params, default_options)
115
+ result = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
116
+ result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
117
+ assert_equal(result.os_type, 'Windows', 'Error in the OS type of VI created')
118
+ tcp_endpoints_names = []
119
+ result.tcp_endpoints.each do |tcp_endpoint|
120
+ tcp_endpoints_names << tcp_endpoint['Name']
121
+ end
122
+ tcp_endpoints_names.must_include 'WinRm-Https'
123
+ end
124
+
125
+ it 'should creates windows virtual machine without winrm.' do
126
+ default_options.merge!(winrm_transport: ['none'])
127
+ subject.create_virtual_machine(windows_params, default_options)
128
+ result = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
129
+ result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
130
+ assert_equal(result.os_type, 'Windows', 'Error in the OS type of VI created')
131
+ tcp_endpoints_names = []
132
+ result.tcp_endpoints.each do |tcp_endpoint|
133
+ tcp_endpoints_names << tcp_endpoint['Name']
134
+ end
135
+ assert (!tcp_endpoints_names.include? 'WinRm-Https')
136
+ assert (!tcp_endpoints_names.include? 'WinRm-Http')
137
+ end
138
+
139
+ it 'created linux virtual machine should be accessible using password and certificate' do
140
+ default_options.merge!(private_key_file: private_key, certificate_file: certificate)
141
+ subject.create_virtual_machine(params, default_options)
142
+ result = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
143
+ result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
144
+ assert_equal(result.os_type, 'Linux', 'Error in the OS type of VI created')
145
+ sleep 30
146
+ end
147
+
148
+ it 'throws Runtime error as port value is beyond or less than actual range' do
149
+ default_options.merge!(tcp_endpoints: '80,166535:166535')
150
+ msg = subject.create_virtual_machine(params, default_options)
151
+ assert_match(/invalid. Allowed values are 'a number between 1 to 65535'./i, msg)
152
+
153
+ default_options.merge!(tcp_endpoints: '80,0:0')
154
+ msg = subject.create_virtual_machine(params, default_options)
155
+ assert_match(/invalid. Allowed values are 'a number between 1 to 65535'./i, msg)
156
+
157
+ cloud_service.delete_cloud_service(cloud_service_name)
158
+ end
159
+
160
+ it 'throws error when multiple VMs created under same DNS' do
161
+ subject.create_virtual_machine(params, default_options)
162
+ msg = subject.create_virtual_machine(windows_params, default_options)
163
+ assert_match(/The specified deployment slot Production is occupied./i, msg)
164
+ end
165
+
166
+ it 'throws SystemExit error when vm_user not provided' do
167
+ params.delete(:vm_user)
168
+ msg = subject.create_virtual_machine(params)
169
+ assert_match(/You did not provide a valid 'vm_user' value./i, msg)
170
+ end
171
+
172
+ it 'throws Runtime error when image not provide' do
173
+ params.delete(:image)
174
+ msg = subject.create_virtual_machine(params)
175
+ assert_match(/The virtual machine image source is not valid/i, msg)
176
+ end
177
+
178
+ it 'error thrown when invalid storage account name is given' do
179
+ default_options.merge!(storage_account_name: 'storageuse_91')
180
+ msg = subject.create_virtual_machine(params, default_options)
181
+ assert_match(/The name is not a valid storage account name./i, msg)
182
+ cloud_service.delete_cloud_service(cloud_service_name)
183
+ end
184
+
185
+ it 'error thrown when invalid cloud name is given' do
186
+ default_options.merge!(cloud_service_name: 'cloud-server-test_91')
187
+ msg = subject.create_virtual_machine(params, default_options)
188
+ assert_match(/The hosted service name is invalid/i, msg)
189
+ end
190
+
191
+ it 'error thrown when invalid deployment name provided' do
192
+ default_options.merge!(deployment_name: 'instance_B')
193
+ msg = subject.create_virtual_machine(params, default_options)
194
+ assert_match(/The deployment name is invalid/i, msg)
195
+ cloud_service.delete_cloud_service(cloud_service_name)
196
+ end
197
+
198
+ it 'error thrown when invalid Virtual Machine name for Windows OS provided' do
199
+ windows_params.merge!(vm_name: 'MSServerInstnce01')
200
+ msg = subject.create_virtual_machine(windows_params, default_options)
201
+ assert_match(/The computer name cannot be more than 15 characters long, be entirely numeric, or contain the following characters/i, msg)
202
+ cloud_service.delete_cloud_service(cloud_service_name)
203
+ end
204
+
205
+ it 'error thrown when blank password for Windows OS provided' do
206
+ windows_params.delete(:password)
207
+ msg = subject.create_virtual_machine(windows_params, default_options)
208
+ assert_match(/You did not provide a valid 'password' value./i, msg)
209
+ end
210
+
211
+ end # deployment
212
+
213
+ end