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.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.travis.yml +11 -0
- data/ChangeLog.txt +40 -0
- data/Gemfile +16 -0
- data/README.md +590 -0
- data/Rakefile +129 -0
- data/azure.gemspec +47 -0
- data/lib/azure.rb +52 -0
- data/lib/azure/base_management/affinity_group.rb +32 -0
- data/lib/azure/base_management/base_management_service.rb +238 -0
- data/lib/azure/base_management/location.rb +27 -0
- data/lib/azure/base_management/management_http_request.rb +244 -0
- data/lib/azure/base_management/serialization.rb +129 -0
- data/lib/azure/base_management/sql_management_http_request.rb +45 -0
- data/lib/azure/blob/blob.rb +32 -0
- data/lib/azure/blob/blob_service.rb +1424 -0
- data/lib/azure/blob/block.rb +31 -0
- data/lib/azure/blob/container.rb +32 -0
- data/lib/azure/blob/serialization.rb +285 -0
- data/lib/azure/cloud_service_management/cloud_service.rb +38 -0
- data/lib/azure/cloud_service_management/cloud_service_management_service.rb +361 -0
- data/lib/azure/cloud_service_management/configuration_set.rb +28 -0
- data/lib/azure/cloud_service_management/deployment.rb +64 -0
- data/lib/azure/cloud_service_management/input_endpoint.rb +29 -0
- data/lib/azure/cloud_service_management/instance_endpoint.rb +31 -0
- data/lib/azure/cloud_service_management/persistent_vm_downtime.rb +29 -0
- data/lib/azure/cloud_service_management/role.rb +30 -0
- data/lib/azure/cloud_service_management/role_instance.rb +40 -0
- data/lib/azure/cloud_service_management/serialization.rb +329 -0
- data/lib/azure/cloud_service_management/virtual_ip.rb +29 -0
- data/lib/azure/core.rb +39 -0
- data/lib/azure/core/auth/authorizer.rb +36 -0
- data/lib/azure/core/auth/shared_key.rb +110 -0
- data/lib/azure/core/auth/shared_key_lite.rb +48 -0
- data/lib/azure/core/auth/signer.rb +48 -0
- data/lib/azure/core/configuration.rb +211 -0
- data/lib/azure/core/error.rb +22 -0
- data/lib/azure/core/filtered_service.rb +44 -0
- data/lib/azure/core/http/debug_filter.rb +36 -0
- data/lib/azure/core/http/http_error.rb +88 -0
- data/lib/azure/core/http/http_filter.rb +53 -0
- data/lib/azure/core/http/http_request.rb +159 -0
- data/lib/azure/core/http/http_response.rb +140 -0
- data/lib/azure/core/http/retry_policy.rb +74 -0
- data/lib/azure/core/http/signer_filter.rb +34 -0
- data/lib/azure/core/service.rb +63 -0
- data/lib/azure/core/signed_service.rb +43 -0
- data/lib/azure/core/utility.rb +190 -0
- data/lib/azure/queue/message.rb +30 -0
- data/lib/azure/queue/queue.rb +29 -0
- data/lib/azure/queue/queue_service.rb +568 -0
- data/lib/azure/queue/serialization.rb +106 -0
- data/lib/azure/service/access_policy.rb +26 -0
- data/lib/azure/service/enumeration_results.rb +21 -0
- data/lib/azure/service/logging.rb +32 -0
- data/lib/azure/service/metrics.rb +31 -0
- data/lib/azure/service/retention_policy.rb +25 -0
- data/lib/azure/service/serialization.rb +240 -0
- data/lib/azure/service/signed_identifier.rb +30 -0
- data/lib/azure/service/storage_service.rb +79 -0
- data/lib/azure/service/storage_service_properties.rb +32 -0
- data/lib/azure/service_bus/action.rb +21 -0
- data/lib/azure/service_bus/auth/wrap_service.rb +89 -0
- data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
- data/lib/azure/service_bus/brokered_message.rb +124 -0
- data/lib/azure/service_bus/brokered_message_serializer.rb +159 -0
- data/lib/azure/service_bus/correlation_filter.rb +45 -0
- data/lib/azure/service_bus/empty_rule_action.rb +30 -0
- data/lib/azure/service_bus/false_filter.rb +38 -0
- data/lib/azure/service_bus/filter.rb +21 -0
- data/lib/azure/service_bus/interval.rb +104 -0
- data/lib/azure/service_bus/queue.rb +230 -0
- data/lib/azure/service_bus/resource.rb +109 -0
- data/lib/azure/service_bus/rule.rb +98 -0
- data/lib/azure/service_bus/rule_aspect.rb +34 -0
- data/lib/azure/service_bus/serialization.rb +160 -0
- data/lib/azure/service_bus/service_bus_service.rb +829 -0
- data/lib/azure/service_bus/sql_filter.rb +50 -0
- data/lib/azure/service_bus/sql_rule_action.rb +50 -0
- data/lib/azure/service_bus/subscription.rb +184 -0
- data/lib/azure/service_bus/topic.rb +187 -0
- data/lib/azure/service_bus/true_filter.rb +38 -0
- data/lib/azure/sql_database_management/serialization.rb +111 -0
- data/lib/azure/sql_database_management/sql_database.rb +31 -0
- data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -0
- data/lib/azure/storage_management/serialization.rb +184 -0
- data/lib/azure/storage_management/storage_account.rb +40 -0
- data/lib/azure/storage_management/storage_management_service.rb +166 -0
- data/lib/azure/table/auth/shared_key.rb +92 -0
- data/lib/azure/table/auth/shared_key_lite.rb +44 -0
- data/lib/azure/table/batch.rb +330 -0
- data/lib/azure/table/batch_response.rb +118 -0
- data/lib/azure/table/edmtype.rb +127 -0
- data/lib/azure/table/entity.rb +31 -0
- data/lib/azure/table/guid.rb +24 -0
- data/lib/azure/table/query.rb +112 -0
- data/lib/azure/table/serialization.rb +108 -0
- data/lib/azure/table/table_service.rb +560 -0
- data/lib/azure/version.rb +31 -0
- data/lib/azure/virtual_machine_image_management/serialization.rb +51 -0
- data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -0
- data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -0
- data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +66 -0
- data/lib/azure/virtual_machine_management/serialization.rb +436 -0
- data/lib/azure/virtual_machine_management/virtual_machine.rb +42 -0
- data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +549 -0
- data/lib/azure/virtual_network_management/serialization.rb +186 -0
- data/lib/azure/virtual_network_management/virtual_network.rb +36 -0
- data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -0
- data/test/fixtures/32px-fulls-black.jpg +0 -0
- data/test/fixtures/affinity_group.xml +33 -0
- data/test/fixtures/all_containers.xml +20 -0
- data/test/fixtures/all_tables.xml +22 -0
- data/test/fixtures/certificate.pem +21 -0
- data/test/fixtures/container_acl.xml +11 -0
- data/test/fixtures/create_sql_database_server.xml +2 -0
- data/test/fixtures/create_storage_desc_error.xml +5 -0
- data/test/fixtures/create_storage_extendedprop_error.xml +8 -0
- data/test/fixtures/create_storage_extendedpropname_error.xml +6 -0
- data/test/fixtures/create_storage_full_error.xml +6 -0
- data/test/fixtures/create_storage_label_error.xml +5 -0
- data/test/fixtures/create_storage_location_error.xml +5 -0
- data/test/fixtures/create_storage_name_error.xml +6 -0
- data/test/fixtures/create_table_response_entry.xml +15 -0
- data/test/fixtures/delete_storage_container_error.xml +5 -0
- data/test/fixtures/delete_storage_error.xml +5 -0
- data/test/fixtures/deployment_error.xml +5 -0
- data/test/fixtures/empty_xml_file +0 -0
- data/test/fixtures/get_deployment.xml +94 -0
- data/test/fixtures/get_deployment_existing.xml +94 -0
- data/test/fixtures/get_deployment_missing.xml +5 -0
- data/test/fixtures/get_storage_account_error.xml +5 -0
- data/test/fixtures/get_storage_account_properties.xml +32 -0
- data/test/fixtures/get_storage_account_properties_new.xml +32 -0
- data/test/fixtures/http_error.xml +5 -0
- data/test/fixtures/insert_entity_response_entry.xml +25 -0
- data/test/fixtures/list_affinity_groups.xml +22 -0
- data/test/fixtures/list_blobs.xml +121 -0
- data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
- data/test/fixtures/list_blocks_all.xml +23 -0
- data/test/fixtures/list_blocks_committed.xml +13 -0
- data/test/fixtures/list_cloud_services.xml +39 -0
- data/test/fixtures/list_containers.xml +38 -0
- data/test/fixtures/list_firewall_management_endpoint.xml +27 -0
- data/test/fixtures/list_images.xml +110 -0
- data/test/fixtures/list_locations.xml +62 -0
- data/test/fixtures/list_page_ranges.xml +11 -0
- data/test/fixtures/list_sql_database.xml +36 -0
- data/test/fixtures/list_sql_server_firewall.xml +23 -0
- data/test/fixtures/list_storage_account_single.xml +25 -0
- data/test/fixtures/list_storage_accounts.xml +46 -0
- data/test/fixtures/list_virtual_networks.xml +92 -0
- data/test/fixtures/logging.xml +11 -0
- data/test/fixtures/management_certificate.pem +55 -0
- data/test/fixtures/messages.xml +12 -0
- data/test/fixtures/metrics.xml +10 -0
- data/test/fixtures/privatekey.key +28 -0
- data/test/fixtures/query_entities_empty_response.xml +7 -0
- data/test/fixtures/query_entities_response.xml +45 -0
- data/test/fixtures/queue_service_properties.xml +22 -0
- data/test/fixtures/queue_service_properties_original.xml +19 -0
- data/test/fixtures/queues.xml +16 -0
- data/test/fixtures/retention_policy.xml +5 -0
- data/test/fixtures/sb_default_create_queue_response.xml +23 -0
- data/test/fixtures/sb_default_create_topic_response.xml +18 -0
- data/test/fixtures/sb_get_access_token_response.txt +1 -0
- data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -0
- data/test/fixtures/storage_service_properties.xml +23 -0
- data/test/fixtures/update_storage_account.xml +16 -0
- data/test/fixtures/update_storage_error.xml +5 -0
- data/test/fixtures/updated_storage_accounts.xml +53 -0
- data/test/fixtures/virtual_machine.xml +113 -0
- data/test/fixtures/windows_virtual_machine.xml +106 -0
- data/test/integration/affinity_group/Affinity_test.rb +55 -0
- data/test/integration/affinity_group/Create_Affinity_test.rb +63 -0
- data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -0
- data/test/integration/affinity_group/List_Affinity_test.rb +41 -0
- data/test/integration/affinity_group/Update_Affinity_test.rb +82 -0
- data/test/integration/blob/blob_gb18030_test.rb +199 -0
- data/test/integration/blob/blob_metadata_test.rb +75 -0
- data/test/integration/blob/blob_pages_test.rb +119 -0
- data/test/integration/blob/blob_properties_test.rb +77 -0
- data/test/integration/blob/block_blob_test.rb +254 -0
- data/test/integration/blob/container/container_acl_test.rb +69 -0
- data/test/integration/blob/container/container_metadata_test.rb +50 -0
- data/test/integration/blob/container/create_container_test.rb +60 -0
- data/test/integration/blob/container/delete_container_test.rb +39 -0
- data/test/integration/blob/container/get_container_properties_test.rb +48 -0
- data/test/integration/blob/container/list_containers_test.rb +79 -0
- data/test/integration/blob/container/root_container_test.rb +54 -0
- data/test/integration/blob/copy_blob_test.rb +113 -0
- data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
- data/test/integration/blob/create_page_blob_test.rb +83 -0
- data/test/integration/blob/delete_blob_test.rb +159 -0
- data/test/integration/blob/get_blob_test.rb +65 -0
- data/test/integration/blob/informative_errors_test.rb +39 -0
- data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
- data/test/integration/blob/lease/break_lease_test.rb +40 -0
- data/test/integration/blob/lease/release_lease_test.rb +40 -0
- data/test/integration/blob/lease/renew_lease_test.rb +42 -0
- data/test/integration/blob/list_blobs_test.rb +113 -0
- data/test/integration/cloud_service/Cloud_Create_test.rb +44 -0
- data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -0
- data/test/integration/database/create_sql_server_firewall_test.rb +86 -0
- data/test/integration/database/create_sql_server_test.rb +53 -0
- data/test/integration/database/delete_sql_server_firewall_test.rb +70 -0
- data/test/integration/database/delete_sql_server_test.rb +58 -0
- data/test/integration/database/list_sql_server_firewall_test.rb +45 -0
- data/test/integration/database/list_sql_servers_test.rb +44 -0
- data/test/integration/database/reset_password_sql_server_test.rb +55 -0
- data/test/integration/location/Location_List_test.rb +39 -0
- data/test/integration/queue/clear_messages_test.rb +42 -0
- data/test/integration/queue/create_message_test.rb +75 -0
- data/test/integration/queue/create_queue_test.rb +50 -0
- data/test/integration/queue/delete_message_test.rb +67 -0
- data/test/integration/queue/delete_queue_test.rb +45 -0
- data/test/integration/queue/informative_errors_test.rb +42 -0
- data/test/integration/queue/list_messages_encoded_test.rb +79 -0
- data/test/integration/queue/list_messages_test.rb +79 -0
- data/test/integration/queue/list_queues_test.rb +44 -0
- data/test/integration/queue/peek_messages_test.rb +59 -0
- data/test/integration/queue/queue_gb18030_test.rb +131 -0
- data/test/integration/queue/queue_metadata_test.rb +40 -0
- data/test/integration/queue/update_message_test.rb +74 -0
- data/test/integration/service_bus/informative_errors_test.rb +37 -0
- data/test/integration/service_bus/queues_scenario_test.rb +200 -0
- data/test/integration/service_bus/queues_test.rb +266 -0
- data/test/integration/service_bus/rules_test.rb +145 -0
- data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -0
- data/test/integration/service_bus/scenario_test.rb +101 -0
- data/test/integration/service_bus/subscriptions_test.rb +211 -0
- data/test/integration/service_bus/topics_scenario_test.rb +406 -0
- data/test/integration/service_bus/topics_test.rb +129 -0
- data/test/integration/storage_management/storage_management_test.rb +160 -0
- data/test/integration/table/create_table_test.rb +36 -0
- data/test/integration/table/delete_entity_batch_test.rb +107 -0
- data/test/integration/table/delete_entity_test.rb +94 -0
- data/test/integration/table/delete_table_test.rb +40 -0
- data/test/integration/table/get_table_test.rb +37 -0
- data/test/integration/table/informative_errors_test.rb +39 -0
- data/test/integration/table/insert_entity_batch_test.rb +100 -0
- data/test/integration/table/insert_entity_test.rb +88 -0
- data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
- data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
- data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
- data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
- data/test/integration/table/merge_entity_batch_test.rb +128 -0
- data/test/integration/table/merge_entity_test.rb +113 -0
- data/test/integration/table/query_entities_test.rb +195 -0
- data/test/integration/table/query_tables_test.rb +43 -0
- data/test/integration/table/query_test.rb +251 -0
- data/test/integration/table/table_acl_test.rb +52 -0
- data/test/integration/table/table_gb18030_test.rb +355 -0
- data/test/integration/table/update_entity_batch_test.rb +149 -0
- data/test/integration/table/update_entity_test.rb +131 -0
- data/test/integration/test_helper.rb +42 -0
- data/test/integration/vm/VM_Create_test.rb +260 -0
- data/test/integration/vm/VM_Delete_test.rb +55 -0
- data/test/integration/vm/VM_Operations_test.rb +173 -0
- data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -0
- data/test/integration/vm_image/virtual_machine_image_test.rb +37 -0
- data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -0
- data/test/integration/vnet/Virtual_Network_list_test.rb +53 -0
- data/test/support/env.rb +19 -0
- data/test/support/fixtures.rb +36 -0
- data/test/support/name_generator.rb +160 -0
- data/test/support/stubs.rb +42 -0
- data/test/support/virtual_machine_name_generator.rb +102 -0
- data/test/support/virtual_network_helper.rb +73 -0
- data/test/test_helper.rb +53 -0
- data/test/unit/affinity_group/affinity_group_test.rb +192 -0
- data/test/unit/affinity_group/serialization_test.rb +88 -0
- data/test/unit/base_management/location_test.rb +57 -0
- data/test/unit/blob/blob_service_test.rb +1947 -0
- data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +276 -0
- data/test/unit/cloud_service_management/serialization_test.rb +169 -0
- data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
- data/test/unit/core/auth/shared_key_test.rb +58 -0
- data/test/unit/core/auth/signer_test.rb +30 -0
- data/test/unit/core/http/http_error_test.rb +57 -0
- data/test/unit/core/http/http_request_test.rb +66 -0
- data/test/unit/core/http/http_response_test.rb +45 -0
- data/test/unit/core/http/retry_policy_test.rb +23 -0
- data/test/unit/database/serialization_test.rb +97 -0
- data/test/unit/database/sql_database_server_service_test.rb +288 -0
- data/test/unit/service/serialization_test.rb +502 -0
- data/test/unit/service/storage_service_test.rb +291 -0
- data/test/unit/storage_management/serialization_test.rb +232 -0
- data/test/unit/storage_management/storage_management_service_test.rb +261 -0
- data/test/unit/table/edmtype_test.rb +108 -0
- data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -0
- data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -0
- data/test/unit/virtual_machine_management/serialization_test.rb +247 -0
- data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -0
- data/test/unit/vnet/serialization_test.rb +187 -0
- data/test/unit/vnet/virtual_network_management_service_test.rb +131 -0
- metadata +470 -0
data/Rakefile
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#--------------------------------------------------------------------------
|
|
15
|
+
require "rake/testtask"
|
|
16
|
+
require "rubygems/package_task"
|
|
17
|
+
|
|
18
|
+
gem_spec = eval(File.read("./azure.gemspec"))
|
|
19
|
+
Gem::PackageTask.new(gem_spec) do |pkg|
|
|
20
|
+
pkg.need_zip = false
|
|
21
|
+
pkg.need_tar = false
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
namespace :test do
|
|
25
|
+
task :require_environment do
|
|
26
|
+
unset_environment = [
|
|
27
|
+
ENV.fetch("AZURE_STORAGE_ACCOUNT", nil),
|
|
28
|
+
ENV.fetch("AZURE_STORAGE_ACCESS_KEY", nil),
|
|
29
|
+
# ENV.fetch("AZURE_STORAGE_TABLE_HOST", nil),
|
|
30
|
+
# ENV.fetch("AZURE_STORAGE_BLOB_HOST", nil),
|
|
31
|
+
# ENV.fetch("AZURE_STORAGE_QUEUE_HOST", nil),
|
|
32
|
+
ENV.fetch("AZURE_SERVICEBUS_NAMESPACE", nil),
|
|
33
|
+
ENV.fetch("AZURE_SERVICEBUS_ACCESS_KEY", nil),
|
|
34
|
+
# ENV.fetch("AZURE_SERVICEBUS_ISSUER", nil)
|
|
35
|
+
ENV.fetch('AZURE_MANAGEMENT_CERTIFICATE', nil),
|
|
36
|
+
ENV.fetch('AZURE_SUBSCRIPTION_ID', nil)
|
|
37
|
+
].include?(nil)
|
|
38
|
+
|
|
39
|
+
abort "[ABORTING] Configure your environment to run the integration tests" if unset_environment
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
Rake::TestTask.new :unit do |t|
|
|
43
|
+
t.pattern = "test/unit/**/*_test.rb"
|
|
44
|
+
t.verbose = true
|
|
45
|
+
t.libs = ["lib", "test"]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
namespace :unit do
|
|
49
|
+
def component_task(component)
|
|
50
|
+
Rake::TestTask.new component do |t|
|
|
51
|
+
t.pattern = "test/unit/#{component}/**/*_test.rb"
|
|
52
|
+
t.verbose = true
|
|
53
|
+
t.libs = ["lib", "test"]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
task component => "test:require_environment"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
component_task :affinity_group
|
|
60
|
+
component_task :base_management
|
|
61
|
+
component_task :blob
|
|
62
|
+
component_task :cloud_service_management
|
|
63
|
+
component_task :core
|
|
64
|
+
component_task :database
|
|
65
|
+
component_task :service
|
|
66
|
+
component_task :storage_management
|
|
67
|
+
component_task :table
|
|
68
|
+
component_task :virtual_machine_image_management
|
|
69
|
+
component_task :virtual_machine_management
|
|
70
|
+
component_task :vnet
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
Rake::TestTask.new :integration do |t|
|
|
74
|
+
t.pattern = "test/integration/**/*_test.rb"
|
|
75
|
+
t.verbose = true
|
|
76
|
+
t.libs = ["lib", "test"]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
task :integration => :require_environment
|
|
80
|
+
|
|
81
|
+
namespace :integration do
|
|
82
|
+
def component_task(component)
|
|
83
|
+
Rake::TestTask.new component do |t|
|
|
84
|
+
t.pattern = "test/integration/#{component}/**/*_test.rb"
|
|
85
|
+
t.verbose = true
|
|
86
|
+
t.libs = ["lib", "test"]
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
task component => "test:require_environment"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
component_task :affinity_group
|
|
93
|
+
component_task :blob
|
|
94
|
+
component_task :database
|
|
95
|
+
component_task :location
|
|
96
|
+
component_task :queue
|
|
97
|
+
component_task :service_bus
|
|
98
|
+
component_task :storage_management
|
|
99
|
+
component_task :table
|
|
100
|
+
component_task :vm
|
|
101
|
+
component_task :vm_image
|
|
102
|
+
component_task :vnet
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
task :cleanup => :require_environment do
|
|
106
|
+
$:.unshift "lib"
|
|
107
|
+
require 'azure'
|
|
108
|
+
|
|
109
|
+
Azure.configure do |config|
|
|
110
|
+
config.access_key = ENV.fetch("AZURE_STORAGE_ACCESS_KEY")
|
|
111
|
+
config.account_name = ENV.fetch("AZURE_STORAGE_ACCOUNT")
|
|
112
|
+
# config.table_host = ENV.fetch("AZURE_STORAGE_TABLE_HOST")
|
|
113
|
+
# config.blob_host = ENV.fetch("AZURE_STORAGE_BLOB_HOST")
|
|
114
|
+
# config.queue_host = ENV.fetch("AZURE_STORAGE_QUEUE_HOST")
|
|
115
|
+
|
|
116
|
+
config.acs_namespace = ENV.fetch("AZURE_SERVICEBUS_NAMESPACE")
|
|
117
|
+
config.sb_access_key = ENV.fetch("AZURE_SERVICEBUS_ACCESS_KEY")
|
|
118
|
+
# config.sb_issuer = ENV.fetch("AZURE_SERVICEBUS_ISSUER")
|
|
119
|
+
config.management_certificate = ENV.fetch('AZURE_MANAGEMENT_CERTIFICATE')
|
|
120
|
+
config.management_endpoint = ENV.fetch("AZURE_MANAGEMENT_ENDPOINT")
|
|
121
|
+
config.sql_database_management_endpoint = ENV.fetch("AZURE_SQL_DATABASE_MANAGEMENT_ENDPOINT")
|
|
122
|
+
config.subscription_id = ENV.fetch("AZURE_SUBSCRIPTION_ID")
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
task :test => ["test:unit", "test:integration"]
|
|
128
|
+
|
|
129
|
+
task :default => :test
|
data/azure.gemspec
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#--------------------------------------------------------------------------
|
|
15
|
+
require "date"
|
|
16
|
+
|
|
17
|
+
require File.expand_path('../lib/azure/version', __FILE__)
|
|
18
|
+
|
|
19
|
+
Gem::Specification.new do |s|
|
|
20
|
+
s.name = "azure-plus"
|
|
21
|
+
s.version = Azure::Version
|
|
22
|
+
|
|
23
|
+
s.authors = ["Microsoft Corporation", "AppFog"]
|
|
24
|
+
s.email = "azureruby@microsoft.com"
|
|
25
|
+
s.description = "Windows Azure Client Library for Ruby"
|
|
26
|
+
s.summary = "Non-Official ruby client library to consume Windows Azure services.
|
|
27
|
+
As of June 2014, the official gem witten by Microsoft(0.6.4) only covers a few methods
|
|
28
|
+
from the vast Azure REST API. I needed more support(e.g. swapping, differentiating between
|
|
29
|
+
'production' and 'staging' deployment, deploying .cspkg to new/existing cloud service, ...).
|
|
30
|
+
This project is a fork of https://github.com/nicolasdao/azure-sdk-for-ruby.git"
|
|
31
|
+
s.homepage = "https://github.com/nicolasdao/azure-sdk-for-ruby.git"
|
|
32
|
+
s.license = 'Apache License, Version 2.0'
|
|
33
|
+
s.files = `git ls-files`.split("\n")
|
|
34
|
+
|
|
35
|
+
s.required_ruby_version = '>= 1.9.3'
|
|
36
|
+
|
|
37
|
+
s.add_runtime_dependency('nokogiri', "~> 1.5")
|
|
38
|
+
s.add_runtime_dependency("mime-types", "~> 1.0")
|
|
39
|
+
s.add_runtime_dependency('json', '~> 1.8')
|
|
40
|
+
s.add_runtime_dependency('uuid', '~> 2.0')
|
|
41
|
+
s.add_runtime_dependency('systemu', '~> 2.6')
|
|
42
|
+
|
|
43
|
+
s.add_development_dependency("rake", '~> 10.0')
|
|
44
|
+
s.add_development_dependency("minitest", "~> 3.0")
|
|
45
|
+
s.add_development_dependency('mocha', '~> 1.0')
|
|
46
|
+
s.add_development_dependency('turn', '~> 0.9')
|
|
47
|
+
end
|
data/lib/azure.rb
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#--------------------------------------------------------------------------
|
|
15
|
+
module Azure; end
|
|
16
|
+
|
|
17
|
+
require 'azure/core'
|
|
18
|
+
require 'azure/blob/blob_service'
|
|
19
|
+
require 'azure/queue/queue_service'
|
|
20
|
+
require 'azure/service_bus/service_bus_service'
|
|
21
|
+
require 'azure/service_bus/empty_rule_action'
|
|
22
|
+
require 'azure/service_bus/sql_rule_action'
|
|
23
|
+
require 'azure/service_bus/sql_filter'
|
|
24
|
+
require 'azure/service_bus/true_filter'
|
|
25
|
+
require 'azure/service_bus/correlation_filter'
|
|
26
|
+
require 'azure/table/table_service'
|
|
27
|
+
require 'azure/table/batch'
|
|
28
|
+
require 'azure/table/query'
|
|
29
|
+
require 'azure/core/utility'
|
|
30
|
+
require 'azure/base_management/management_http_request'
|
|
31
|
+
require 'azure/base_management/sql_management_http_request'
|
|
32
|
+
require 'azure/base_management/base_management_service'
|
|
33
|
+
require 'azure/virtual_machine_image_management/virtual_machine_image_management_service'
|
|
34
|
+
require 'azure/virtual_machine_management/virtual_machine_management_service'
|
|
35
|
+
require 'azure/storage_management/storage_management_service'
|
|
36
|
+
require 'azure/cloud_service_management/cloud_service_management_service'
|
|
37
|
+
require 'azure/base_management/location'
|
|
38
|
+
require 'azure/sql_database_management/sql_database_management_service'
|
|
39
|
+
require 'azure/virtual_network_management/virtual_network_management_service'
|
|
40
|
+
|
|
41
|
+
# add some aliases for convenience
|
|
42
|
+
Azure::BlobService = Azure::Blob::BlobService
|
|
43
|
+
Azure::QueueService = Azure::Queue::QueueService
|
|
44
|
+
Azure::TableService = Azure::Table::TableService
|
|
45
|
+
Azure::ServiceBusService = Azure::ServiceBus::ServiceBusService
|
|
46
|
+
Azure::VirtualMachineImageManagementService = Azure::VirtualMachineImageManagement::VirtualMachineImageManagementService
|
|
47
|
+
Azure::BaseManagementService = Azure::BaseManagement::BaseManagementService
|
|
48
|
+
Azure::CloudServiceManagementService = Azure::CloudServiceManagement::CloudServiceManagementService
|
|
49
|
+
Azure::StorageManagementService = Azure::StorageManagement::StorageManagementService
|
|
50
|
+
Azure::VirtualMachineManagementService = Azure::VirtualMachineManagement::VirtualMachineManagementService
|
|
51
|
+
Azure::SqlDatabaseManagementService = Azure::SqlDatabaseManagement::SqlDatabaseManagementService
|
|
52
|
+
Azure::VirtualNetworkManagementService = Azure::VirtualNetworkManagement::VirtualNetworkManagementService
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#-------------------------------------------------------------------------
|
|
2
|
+
# Copyright 2013 Microsoft Open Technologies, Inc.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
#--------------------------------------------------------------------------
|
|
15
|
+
module Azure
|
|
16
|
+
module BaseManagement
|
|
17
|
+
# Represents an AffinityGroup
|
|
18
|
+
class AffinityGroup
|
|
19
|
+
def initialize
|
|
20
|
+
yield self if block_given?
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
attr_accessor :name
|
|
24
|
+
attr_accessor :label
|
|
25
|
+
attr_accessor :description
|
|
26
|
+
attr_accessor :location
|
|
27
|
+
attr_accessor :hosted_services
|
|
28
|
+
attr_accessor :storage_services
|
|
29
|
+
attr_accessor :capability
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,238 @@
|
|
|
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 'rubygems'
|
|
16
|
+
require 'nokogiri'
|
|
17
|
+
require 'base64'
|
|
18
|
+
require 'openssl'
|
|
19
|
+
require 'uri'
|
|
20
|
+
require 'rexml/document'
|
|
21
|
+
require 'azure/base_management/serialization'
|
|
22
|
+
require 'azure/base_management/location'
|
|
23
|
+
require 'azure/base_management/affinity_group'
|
|
24
|
+
|
|
25
|
+
include Azure::BaseManagement
|
|
26
|
+
include Azure::Core::Utility
|
|
27
|
+
Loggerx = Azure::Core::Logger
|
|
28
|
+
|
|
29
|
+
module Azure
|
|
30
|
+
module BaseManagement
|
|
31
|
+
class BaseManagementService
|
|
32
|
+
def initialize
|
|
33
|
+
validate_configuration
|
|
34
|
+
cert_file = nil
|
|
35
|
+
begin
|
|
36
|
+
if Azure.config.management_certificate =~ /(pem)$/
|
|
37
|
+
cert_file = File.read(Azure.config.management_certificate)
|
|
38
|
+
certificate_key = OpenSSL::X509::Certificate.new(cert_file)
|
|
39
|
+
private_key = OpenSSL::PKey::RSA.new(cert_file)
|
|
40
|
+
else
|
|
41
|
+
# Parse pfx content
|
|
42
|
+
File.open(Azure.config.management_certificate, "rb") do |f|
|
|
43
|
+
cert_file = f.read
|
|
44
|
+
end
|
|
45
|
+
cert_content = OpenSSL::PKCS12.new(cert_file)
|
|
46
|
+
certificate_key = OpenSSL::X509::Certificate.new(
|
|
47
|
+
cert_content.certificate.to_pem
|
|
48
|
+
)
|
|
49
|
+
private_key = OpenSSL::PKey::RSA.new(cert_content.key.to_pem)
|
|
50
|
+
end
|
|
51
|
+
rescue Exception => e
|
|
52
|
+
raise "Management certificate not valid. Error: #{e.message}"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
Azure.configure do |config|
|
|
56
|
+
config.http_certificate_key = certificate_key
|
|
57
|
+
config.http_private_key = private_key
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def validate_configuration
|
|
62
|
+
subs_id = Azure.config.subscription_id
|
|
63
|
+
error_message = 'Subscription ID not valid.'
|
|
64
|
+
raise error_message if subs_id.nil? || subs_id.empty?
|
|
65
|
+
|
|
66
|
+
m_ep = Azure.config.management_endpoint
|
|
67
|
+
error_message = 'Management endpoint not valid.'
|
|
68
|
+
raise error_message if m_ep.nil? || m_ep.empty?
|
|
69
|
+
|
|
70
|
+
m_cert = Azure.config.management_certificate
|
|
71
|
+
error_message = "Could not read from file '#{m_cert}'."
|
|
72
|
+
raise error_message unless test('r', m_cert)
|
|
73
|
+
|
|
74
|
+
m_cert = Azure.config.management_certificate
|
|
75
|
+
error_message = 'Management certificate expects a .pem or .pfx file.'
|
|
76
|
+
raise error_message unless m_cert =~ /(pem|pfx)$/
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Public: Gets a list of regional data center locations from the server
|
|
80
|
+
#
|
|
81
|
+
# Returns an array of Azure::BaseManagement::Location objects
|
|
82
|
+
def list_locations
|
|
83
|
+
request = ManagementHttpRequest.new(:get, '/locations')
|
|
84
|
+
response = request.call
|
|
85
|
+
Serialization.locations_from_xml(response)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Public: Gets a lists the affinity groups associated with
|
|
89
|
+
# the specified subscription.
|
|
90
|
+
#
|
|
91
|
+
# See http://msdn.microsoft.com/en-us/library/windowsazure/ee460797.aspx
|
|
92
|
+
#
|
|
93
|
+
# Returns an array of Azure::BaseManagement::AffinityGroup objects
|
|
94
|
+
def list_affinity_groups
|
|
95
|
+
request_path = '/affinitygroups'
|
|
96
|
+
request = ManagementHttpRequest.new(:get, request_path, nil)
|
|
97
|
+
response = request.call
|
|
98
|
+
Serialization.affinity_groups_from_xml(response)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Public: Creates a new affinity group for the specified subscription.
|
|
102
|
+
#
|
|
103
|
+
# ==== Attributes
|
|
104
|
+
#
|
|
105
|
+
# * +name+ - String. Affinity Group name.
|
|
106
|
+
# * +location+ - String. The location where the affinity group will
|
|
107
|
+
# be created.
|
|
108
|
+
# * +label+ - String. Name for the affinity specified as a
|
|
109
|
+
# base-64 encoded string.
|
|
110
|
+
#
|
|
111
|
+
# ==== Options
|
|
112
|
+
#
|
|
113
|
+
# Accepted key/value pairs are:
|
|
114
|
+
# * +:description+ - String. A description for the affinity group.
|
|
115
|
+
# (optional)
|
|
116
|
+
#
|
|
117
|
+
# See http://msdn.microsoft.com/en-us/library/windowsazure/gg715317.aspx
|
|
118
|
+
#
|
|
119
|
+
# Returns: None
|
|
120
|
+
def create_affinity_group(name, location, label, options = {})
|
|
121
|
+
if name.nil? || name.strip.empty?
|
|
122
|
+
raise 'Affinity Group name cannot be empty'
|
|
123
|
+
elsif list_affinity_groups.map(&:name).include?(name)
|
|
124
|
+
raise Azure::Error::Error.new(
|
|
125
|
+
'ConflictError',
|
|
126
|
+
409,
|
|
127
|
+
"An affinity group #{name}"\
|
|
128
|
+
" already exists in the current subscription."
|
|
129
|
+
)
|
|
130
|
+
else
|
|
131
|
+
validate_location(location)
|
|
132
|
+
body = Serialization.affinity_group_to_xml(name,
|
|
133
|
+
location,
|
|
134
|
+
label,
|
|
135
|
+
options)
|
|
136
|
+
request_path = '/affinitygroups'
|
|
137
|
+
request = ManagementHttpRequest.new(:post, request_path, body)
|
|
138
|
+
request.call
|
|
139
|
+
Loggerx.info "Affinity Group #{name} is created."
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Public: updates the label and/or the description for an affinity group
|
|
144
|
+
# for the specified subscription.
|
|
145
|
+
#
|
|
146
|
+
# ==== Attributes
|
|
147
|
+
#
|
|
148
|
+
# * +name+ - String. Affinity Group name.
|
|
149
|
+
# * +label+ - String. Name for the affinity specified as a
|
|
150
|
+
# base-64 encoded string.
|
|
151
|
+
#
|
|
152
|
+
# ==== Options
|
|
153
|
+
#
|
|
154
|
+
# Accepted key/value pairs are:
|
|
155
|
+
# * +:description+ - String. A description for the affinity group.
|
|
156
|
+
# (optional)
|
|
157
|
+
#
|
|
158
|
+
# See http://msdn.microsoft.com/en-us/library/windowsazure/gg715316.aspx
|
|
159
|
+
#
|
|
160
|
+
# Returns: None
|
|
161
|
+
def update_affinity_group(name, label, options = {})
|
|
162
|
+
raise 'Label name cannot be empty' if label.nil? || label.empty?
|
|
163
|
+
if affinity_group(name)
|
|
164
|
+
body = Serialization.resource_to_xml(label, options)
|
|
165
|
+
request_path = "/affinitygroups/#{name}"
|
|
166
|
+
request = ManagementHttpRequest.new(:put, request_path, body)
|
|
167
|
+
request.call
|
|
168
|
+
Loggerx.info "Affinity Group #{name} is updated."
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Public: Deletes an affinity group in the specified subscription
|
|
173
|
+
#
|
|
174
|
+
# ==== Attributes
|
|
175
|
+
#
|
|
176
|
+
# * +name+ - String. Affinity Group name.
|
|
177
|
+
#
|
|
178
|
+
# See http://msdn.microsoft.com/en-us/library/windowsazure/gg715314.aspx
|
|
179
|
+
#
|
|
180
|
+
# Returns: None
|
|
181
|
+
def delete_affinity_group(name)
|
|
182
|
+
if affinity_group(name)
|
|
183
|
+
request_path = "/affinitygroups/#{name}"
|
|
184
|
+
request = ManagementHttpRequest.new(:delete, request_path)
|
|
185
|
+
request.call
|
|
186
|
+
Loggerx.info "Deleted affinity group #{name}."
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# Public: returns the system properties associated with the specified
|
|
191
|
+
# affinity group.
|
|
192
|
+
#
|
|
193
|
+
# ==== Attributes
|
|
194
|
+
#
|
|
195
|
+
# * +name+ - String. Affinity Group name.
|
|
196
|
+
#
|
|
197
|
+
# See http://msdn.microsoft.com/en-us/library/windowsazure/ee460789.aspx
|
|
198
|
+
#
|
|
199
|
+
# Returns: Azure::BaseManagement::AffinityGroup object
|
|
200
|
+
def get_affinity_group(name)
|
|
201
|
+
if affinity_group(name)
|
|
202
|
+
request_path = "/affinitygroups/#{name}"
|
|
203
|
+
request = ManagementHttpRequest.new(:get, request_path)
|
|
204
|
+
response = request.call
|
|
205
|
+
Serialization.affinity_group_from_xml(response)
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
private
|
|
210
|
+
|
|
211
|
+
def affinity_group(affinity_group_name)
|
|
212
|
+
if affinity_group_name.nil? ||\
|
|
213
|
+
affinity_group_name.empty? ||\
|
|
214
|
+
!list_affinity_groups.map { |x| x.name.downcase }.include?(
|
|
215
|
+
affinity_group_name.downcase
|
|
216
|
+
)
|
|
217
|
+
error = Azure::Error::Error.new('AffinityGroupNotFound',
|
|
218
|
+
404,
|
|
219
|
+
'The affinity group does not exist.')
|
|
220
|
+
raise error
|
|
221
|
+
else
|
|
222
|
+
true
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def validate_location(location_name)
|
|
227
|
+
base_mgmt_service = Azure::BaseManagementService.new
|
|
228
|
+
locations = base_mgmt_service.list_locations.map(&:name)
|
|
229
|
+
unless locations.map(&:downcase).include?(location_name.downcase)
|
|
230
|
+
error = "Value '#{location_name}' specified for parameter"\
|
|
231
|
+
" 'location' is invalid."\
|
|
232
|
+
" Allowed values are #{locations.join(',')}"
|
|
233
|
+
raise error
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
end
|