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
|
@@ -0,0 +1,106 @@
|
|
|
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 'azure/service/serialization'
|
|
16
|
+
require 'azure/service/enumeration_results'
|
|
17
|
+
|
|
18
|
+
require 'azure/queue/queue'
|
|
19
|
+
require 'azure/queue/message'
|
|
20
|
+
|
|
21
|
+
module Azure
|
|
22
|
+
module Queue
|
|
23
|
+
module Serialization
|
|
24
|
+
include Service::Serialization
|
|
25
|
+
|
|
26
|
+
def self.queue_messages_from_xml(xml, decode)
|
|
27
|
+
xml = slopify(xml)
|
|
28
|
+
|
|
29
|
+
expect_node("QueueMessagesList", xml)
|
|
30
|
+
results = []
|
|
31
|
+
return results unless (xml > "QueueMessage").any?
|
|
32
|
+
|
|
33
|
+
if xml.QueueMessage.count == 0
|
|
34
|
+
results.push(queue_message_from_xml(xml.QueueMessage, decode))
|
|
35
|
+
else
|
|
36
|
+
xml.QueueMessage.each { |message_node|
|
|
37
|
+
results.push(queue_message_from_xml(message_node, decode))
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
results
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.queue_message_from_xml(xml, decode)
|
|
45
|
+
xml = slopify(xml)
|
|
46
|
+
expect_node("QueueMessage", xml)
|
|
47
|
+
|
|
48
|
+
Message.new do |msg|
|
|
49
|
+
msg.id = xml.MessageId.text if (xml > "MessageId").any?
|
|
50
|
+
msg.insertion_time = xml.InsertionTime.text if (xml > "InsertionTime").any?
|
|
51
|
+
msg.expiration_time = xml.ExpirationTime.text if (xml > "ExpirationTime").any?
|
|
52
|
+
msg.dequeue_count = xml.DequeueCount.text.to_i if (xml > "DequeueCount").any?
|
|
53
|
+
msg.message_text = xml.MessageText.text if (xml > "MessageText").any?
|
|
54
|
+
msg.time_next_visible = xml.TimeNextVisible.text if (xml > "TimeNextVisible").any?
|
|
55
|
+
msg.pop_receipt = xml.PopReceipt.text if (xml > "PopReceipt").any?
|
|
56
|
+
|
|
57
|
+
msg.message_text = Base64.decode64(msg.message_text) if decode
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def self.message_to_xml(message_text, encode)
|
|
62
|
+
if encode
|
|
63
|
+
builder = Nokogiri::XML::Builder.new do |xml|
|
|
64
|
+
xml.QueueMessage { xml.MessageText Base64.encode64(message_text) }
|
|
65
|
+
end
|
|
66
|
+
else
|
|
67
|
+
builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
|
|
68
|
+
xml.QueueMessage { xml.MessageText message_text.encode("utf-8") }
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
builder.to_xml
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def self.queue_enumeration_results_from_xml(xml)
|
|
75
|
+
xml = slopify(xml)
|
|
76
|
+
expect_node("EnumerationResults", xml)
|
|
77
|
+
|
|
78
|
+
results = enumeration_results_from_xml(xml, Azure::Service::EnumerationResults.new)
|
|
79
|
+
|
|
80
|
+
return results unless (xml > "Queues").any? && ((xml > "Queues") > "Queue").any?
|
|
81
|
+
|
|
82
|
+
if xml.Queues.Queue.count == 0
|
|
83
|
+
results.push(queue_from_xml(xml.Queues.Queue))
|
|
84
|
+
else
|
|
85
|
+
xml.Queues.Queue.each { |queue_node|
|
|
86
|
+
results.push(queue_from_xml(queue_node))
|
|
87
|
+
}
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
results
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def self.queue_from_xml(xml)
|
|
94
|
+
xml = slopify(xml)
|
|
95
|
+
expect_node("Queue", xml)
|
|
96
|
+
|
|
97
|
+
queue = Queue.new
|
|
98
|
+
queue.name = xml.Name.text if (xml > "Name").any?
|
|
99
|
+
queue.url = xml.Url.text if (xml > "Url").any?
|
|
100
|
+
queue.metadata = metadata_from_xml(xml.Metadata) if (xml > "Metadata").any?
|
|
101
|
+
|
|
102
|
+
queue
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
|
16
|
+
module Service
|
|
17
|
+
class AccessPolicy
|
|
18
|
+
def initialize
|
|
19
|
+
yield self if block_given?
|
|
20
|
+
end
|
|
21
|
+
attr_accessor :start
|
|
22
|
+
attr_accessor :expiry
|
|
23
|
+
attr_accessor :permission
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
|
16
|
+
module Service
|
|
17
|
+
class EnumerationResults < Array
|
|
18
|
+
attr_accessor :continuation_token
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
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 'azure/service/retention_policy'
|
|
16
|
+
|
|
17
|
+
module Azure
|
|
18
|
+
module Service
|
|
19
|
+
class Logging
|
|
20
|
+
def initialize
|
|
21
|
+
@retention_policy = RetentionPolicy.new
|
|
22
|
+
yield self if block_given?
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
attr_accessor :version
|
|
26
|
+
attr_accessor :delete
|
|
27
|
+
attr_accessor :read
|
|
28
|
+
attr_accessor :write
|
|
29
|
+
attr_accessor :retention_policy
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
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 'azure/service/retention_policy'
|
|
16
|
+
|
|
17
|
+
module Azure
|
|
18
|
+
module Service
|
|
19
|
+
class Metrics
|
|
20
|
+
def initialize
|
|
21
|
+
@retention_policy = RetentionPolicy.new
|
|
22
|
+
yield self if block_given?
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
attr_accessor :version
|
|
26
|
+
attr_accessor :enabled
|
|
27
|
+
attr_accessor :include_apis
|
|
28
|
+
attr_accessor :retention_policy
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
|
16
|
+
module Service
|
|
17
|
+
class RetentionPolicy
|
|
18
|
+
def initialize
|
|
19
|
+
yield self if block_given?
|
|
20
|
+
end
|
|
21
|
+
attr_accessor :enabled
|
|
22
|
+
attr_accessor :days
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,240 @@
|
|
|
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 'nokogiri'
|
|
16
|
+
|
|
17
|
+
require 'azure/service/enumeration_results'
|
|
18
|
+
require 'azure/service/signed_identifier'
|
|
19
|
+
require 'azure/service/access_policy'
|
|
20
|
+
|
|
21
|
+
require 'azure/service/storage_service_properties'
|
|
22
|
+
require 'azure/service/logging'
|
|
23
|
+
require 'azure/service/metrics'
|
|
24
|
+
require 'azure/service/retention_policy'
|
|
25
|
+
|
|
26
|
+
module Azure
|
|
27
|
+
module Service
|
|
28
|
+
module Serialization
|
|
29
|
+
module ClassMethods
|
|
30
|
+
|
|
31
|
+
def signed_identifiers_from_xml(xml)
|
|
32
|
+
xml = slopify(xml)
|
|
33
|
+
expect_node("SignedIdentifiers", xml)
|
|
34
|
+
|
|
35
|
+
identifiers = []
|
|
36
|
+
return identifiers unless (xml > "SignedIdentifier").any?
|
|
37
|
+
|
|
38
|
+
if xml.SignedIdentifier.count == 0
|
|
39
|
+
identifiers.push(signed_identifier_from_xml(xml.SignedIdentifier))
|
|
40
|
+
else
|
|
41
|
+
xml.SignedIdentifier.each { |identifier_node|
|
|
42
|
+
identifiers.push(signed_identifier_from_xml(identifier_node))
|
|
43
|
+
}
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
identifiers
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def signed_identifiers_to_xml(signed_identifiers)
|
|
50
|
+
builder = Nokogiri::XML::Builder.new(:encoding=>"utf-8") do |xml|
|
|
51
|
+
xml.SignedIdentifiers {
|
|
52
|
+
signed_identifiers.each do |identifier|
|
|
53
|
+
xml.SignedIdentifier {
|
|
54
|
+
xml.Id identifier.id
|
|
55
|
+
xml.AccessPolicy {
|
|
56
|
+
xml.Start identifier.access_policy.start
|
|
57
|
+
xml.Expiry identifier.access_policy.expiry
|
|
58
|
+
xml.Permission identifier.access_policy.permission
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
end
|
|
62
|
+
}
|
|
63
|
+
end
|
|
64
|
+
builder.to_xml
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def signed_identifier_from_xml(xml)
|
|
68
|
+
xml = slopify(xml)
|
|
69
|
+
expect_node("SignedIdentifier", xml)
|
|
70
|
+
|
|
71
|
+
SignedIdentifier.new do |identifier|
|
|
72
|
+
identifier.id = xml.Id.text if (xml > "Id").any?
|
|
73
|
+
identifier.access_policy = access_policy_from_xml(xml.AccessPolicy) if (xml > "AccessPolicy").any?
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def access_policy_from_xml(xml)
|
|
78
|
+
xml = slopify(xml)
|
|
79
|
+
expect_node("AccessPolicy", xml)
|
|
80
|
+
|
|
81
|
+
AccessPolicy.new do |policy|
|
|
82
|
+
policy.start = xml.Start.text if (xml > "Start").any?
|
|
83
|
+
policy.expiry = xml.Expiry.text if (xml > "Expiry").any?
|
|
84
|
+
policy.permission = xml.Permission.text if (xml > "Permission").any?
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def enumeration_results_from_xml(xml, results)
|
|
89
|
+
xml = slopify(xml)
|
|
90
|
+
expect_node("EnumerationResults", xml)
|
|
91
|
+
|
|
92
|
+
results = results || EnumerationResults.new;
|
|
93
|
+
|
|
94
|
+
results.continuation_token = xml.NextMarker.text if (xml > "NextMarker").any?
|
|
95
|
+
results
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def metadata_from_xml(xml)
|
|
99
|
+
xml = slopify(xml)
|
|
100
|
+
expect_node("Metadata", xml)
|
|
101
|
+
|
|
102
|
+
metadata = {}
|
|
103
|
+
|
|
104
|
+
xml.children.each { |meta_node|
|
|
105
|
+
|
|
106
|
+
key = meta_node.name.downcase
|
|
107
|
+
if metadata.has_key? key
|
|
108
|
+
metadata[key] = [metadata[key]] unless metadata[key].respond_to? :push
|
|
109
|
+
metadata[key].push(meta_node.text)
|
|
110
|
+
else
|
|
111
|
+
metadata[key] = meta_node.text
|
|
112
|
+
end
|
|
113
|
+
}
|
|
114
|
+
metadata
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def metadata_from_headers(headers)
|
|
118
|
+
metadata = {}
|
|
119
|
+
|
|
120
|
+
headers.each { |k, v|
|
|
121
|
+
if key = k[/^x-ms-meta-(.*)/, 1]
|
|
122
|
+
if metadata.has_key? key
|
|
123
|
+
metadata[key] = [metadata[key]] unless metadata[key].respond_to? :push
|
|
124
|
+
metadata[key].push(v)
|
|
125
|
+
else
|
|
126
|
+
metadata[key] = v
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
metadata
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def retention_policy_to_xml(retention_policy, xml)
|
|
135
|
+
xml.RetentionPolicy {
|
|
136
|
+
xml.Enabled retention_policy.enabled unless retention_policy.enabled == nil
|
|
137
|
+
xml.Days retention_policy.days if retention_policy.days
|
|
138
|
+
}
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def retention_policy_from_xml(xml)
|
|
142
|
+
xml = slopify(xml)
|
|
143
|
+
expect_node("RetentionPolicy", xml)
|
|
144
|
+
|
|
145
|
+
RetentionPolicy.new do |policy|
|
|
146
|
+
policy.enabled = to_bool(xml.Enabled.text) if (xml > "Enabled").any?
|
|
147
|
+
policy.days = xml.Days.text.to_i if (xml > "Days").any?
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def metrics_to_xml(metrics, xml)
|
|
152
|
+
xml.Metrics {
|
|
153
|
+
xml.Version metrics.version if metrics.version
|
|
154
|
+
xml.Enabled metrics.enabled unless metrics.enabled == nil
|
|
155
|
+
xml.IncludeAPIs metrics.include_apis unless metrics.include_apis == nil
|
|
156
|
+
retention_policy_to_xml(metrics.retention_policy, xml) if metrics.retention_policy
|
|
157
|
+
}
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def metrics_from_xml(xml)
|
|
161
|
+
xml = slopify(xml)
|
|
162
|
+
expect_node("Metrics", xml)
|
|
163
|
+
|
|
164
|
+
Metrics.new do |metrics|
|
|
165
|
+
metrics.version = xml.Version.text if (xml > "Version").any?
|
|
166
|
+
metrics.enabled = to_bool(xml.Enabled.text) if (xml > "Enabled").any?
|
|
167
|
+
metrics.include_apis = to_bool(xml.IncludeAPIs.text) if (xml > "IncludeAPIs").any?
|
|
168
|
+
metrics.retention_policy = retention_policy_from_xml(xml.RetentionPolicy)
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def logging_to_xml(logging, xml)
|
|
173
|
+
xml.Logging {
|
|
174
|
+
xml.Version logging.version if logging.version
|
|
175
|
+
xml.Delete logging.delete unless logging.delete == nil
|
|
176
|
+
xml.Read logging.read unless logging.read == nil
|
|
177
|
+
xml.Write logging.write unless logging.write == nil
|
|
178
|
+
retention_policy_to_xml(logging.retention_policy, xml) if logging.retention_policy
|
|
179
|
+
}
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def logging_from_xml(xml)
|
|
183
|
+
xml = slopify(xml)
|
|
184
|
+
expect_node("Logging", xml)
|
|
185
|
+
|
|
186
|
+
Logging.new do |logging|
|
|
187
|
+
logging.version = xml.Version.text if (xml > "Version").any?
|
|
188
|
+
logging.delete = to_bool(xml.Delete.text) if (xml > "Delete").any?
|
|
189
|
+
logging.read = to_bool(xml.Read.text) if (xml > "Read").any?
|
|
190
|
+
logging.write = to_bool(xml.Write.text) if (xml > "Write").any?
|
|
191
|
+
logging.retention_policy = retention_policy_from_xml(xml.RetentionPolicy)
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
def service_properties_to_xml(properties)
|
|
196
|
+
builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
|
|
197
|
+
xml.StorageServiceProperties {
|
|
198
|
+
logging_to_xml(properties.logging, xml) if properties.logging
|
|
199
|
+
metrics_to_xml(properties.metrics, xml) if properties.metrics
|
|
200
|
+
xml.DefaultServiceVersion properties.default_service_version if properties.default_service_version
|
|
201
|
+
}
|
|
202
|
+
end
|
|
203
|
+
builder.to_xml
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
def service_properties_from_xml(xml)
|
|
207
|
+
xml = slopify(xml)
|
|
208
|
+
expect_node("StorageServiceProperties", xml)
|
|
209
|
+
|
|
210
|
+
StorageServiceProperties.new do |props|
|
|
211
|
+
props.default_service_version = xml.DefaultServiceVersion.text if (xml > "DefaultServiceVersion").any?
|
|
212
|
+
props.logging = logging_from_xml(xml.Logging)
|
|
213
|
+
props.metrics = metrics_from_xml(xml.Metrics)
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def to_bool(s)
|
|
218
|
+
(s || "").downcase == 'true'
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def slopify(xml)
|
|
222
|
+
node = (xml.is_a? String) ? Nokogiri.Slop(xml).root : xml
|
|
223
|
+
node.slop! if node.is_a? Nokogiri::XML::Document unless node.respond_to? :method_missing
|
|
224
|
+
node = node.root if node.is_a? Nokogiri::XML::Document
|
|
225
|
+
node
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
def expect_node(node_name, xml)
|
|
229
|
+
raise "Xml is not a #{node_name} node." unless xml.name == node_name
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
extend ClassMethods
|
|
234
|
+
|
|
235
|
+
def self.included( other )
|
|
236
|
+
other.extend( ClassMethods )
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|