lib/azure/cloud_service_management/serialization.rb in azure-0.6.0 vs lib/azure/cloud_service_management/serialization.rb in azure-0.6.1
- old
+ new
@@ -1,63 +1,101 @@
-#-------------------------------------------------------------------------
-# Copyright 2013 Microsoft Open Technologies, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#--------------------------------------------------------------------------
-require 'base64'
-require 'azure/cloud_service_management/cloud_service'
-
-module Azure
- module CloudServiceManagement
- module Serialization
-
- def self.cloud_services_to_xml(name, options={})
- builder = Nokogiri::XML::Builder.new do |xml|
- xml.CreateHostedService('xmlns'=>'http://schemas.microsoft.com/windowsazure') {
- xml.ServiceName name
- xml.Label Base64.encode64(name)
- xml.Description options[:description] || 'Explicitly created cloud service'
- if !options[:affinity_group_name].nil?
- xml.AffinityGroup options[:affinity_group_name]
- else
- xml.Location options[:location]
- end
- }
- end
- builder.doc.to_xml
- end
-
- def self.cloud_services_from_xml(cloudXML)
- clouds = []
- cloud_services_xml = cloudXML.css('HostedServices HostedService')
- cloud_services_xml.each do |cloud_service_xml|
- cloud = CloudService.new
- cloud.name = xml_content(cloud_service_xml, 'ServiceName')
- cloud.affinity_group = xml_content(cloud_service_xml, 'HostedServiceProperties AffinityGroup')
- clouds << cloud
- end
- clouds.compact
- end
-
- def self.add_certificate_to_xml(data)
- builder = Nokogiri::XML::Builder.new do |xml|
- xml.CertificateFile('xmlns'=>'http://schemas.microsoft.com/windowsazure') {
- xml.Data data
- xml.CertificateFormat 'pfx'
- xml.Password nil
- }
- end
- builder.doc.to_xml
- end
-
- end
- end
-end
+#-------------------------------------------------------------------------
+# Copyright 2013 Microsoft Open Technologies, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#--------------------------------------------------------------------------
+require 'base64'
+require 'azure/cloud_service_management/cloud_service'
+
+module Azure
+ module CloudServiceManagement
+ module Serialization
+ def self.cloud_services_to_xml(name, options = {})
+ options[:label] = options[:label] || name
+
+ builder = Nokogiri::XML::Builder.new do |xml|
+ xml.CreateHostedService(
+ 'xmlns' => 'http://schemas.microsoft.com/windowsazure'
+ ) do
+ xml.ServiceName(name)
+ xml.Label(Base64.encode64(options[:label]))
+ xml.Description(options[:description]) unless\
+ options[:description].nil? || options[:description].empty?
+
+ unless options[:affinity_group_name].nil?
+ xml.AffinityGroup(options[:affinity_group_name])
+ else
+ xml.Location(options[:location])
+ end
+
+ xml.ExtendedProperties do
+ options[:extended_properties].each do |prop_name, prop_value|
+ xml.ExtendedProperty do
+ xml.Name(prop_name)
+ xml.Value(prop_value)
+ end unless (prop_name.nil? || prop_name.empty?)\
+ || (prop_value.nil? || prop_value.empty?)
+ end
+ end unless options[:extended_properties].nil?\
+ || options[:extended_properties].empty?
+ end
+ end
+ builder.doc.to_xml
+ end
+
+ def self.cloud_services_from_xml(cloud_xml)
+ clouds = []
+ cloud_services_xml = cloud_xml.css('HostedServices HostedService')
+ cloud_services_xml.each do |cloud_service_xml|
+ cloud = CloudService.new
+ cloud.url = xml_content(cloud_service_xml, 'Url')
+ cloud.name = xml_content(cloud_service_xml, 'ServiceName')
+
+ props_xml = cloud_service_xml.css('HostedServiceProperties')
+
+ cloud.label = Base64.decode64(xml_content(props_xml, 'Label'))
+ cloud.description = xml_content(props_xml, 'Description')
+ cloud.location = xml_content(props_xml, 'Location')
+ cloud.affinity_group = xml_content(props_xml, 'AffinityGroup')
+ cloud.status = xml_content(props_xml, 'Status')
+ cloud.date_created = xml_content(props_xml, 'DateCreated')
+ cloud.date_modified = xml_content(props_xml, 'DateLastModified')
+
+ cloud.extended_properties = {}
+ props_xml.css('ExtendedProperties ExtendedProperty').map do |prop|
+ p_name = xml_content(prop, 'Name')
+ p_value = xml_content(prop, 'Value')
+ cloud.extended_properties[p_name] = p_value
+ end
+
+ cloud.default_winrm_certificate_thumbprint = xml_content(
+ cloud_service_xml, 'DefaultWinRMCertificateThumbprint'
+ )
+
+ clouds << cloud
+ end
+ clouds.compact
+ end
+
+ def self.add_certificate_to_xml(data)
+ builder = Nokogiri::XML::Builder.new do |xml|
+ xml.CertificateFile('xmlns'=>'http://schemas.microsoft.com/windowsazure') {
+ xml.Data data
+ xml.CertificateFormat 'pfx'
+ xml.Password nil
+ }
+ end
+ builder.doc.to_xml
+ end
+
+ end
+ end
+end