module Azure::BaseManagement::Serialization

Public Class Methods

affinity_group_from_xml(affinity_xml) click to toggle source
# File lib/azure/base_management/serialization.rb, line 73
def self.affinity_group_from_xml(affinity_xml)
  hosted_services_xml = affinity_xml.css(
    'AffinityGroup HostedServices HostedService'
  )

  storage_services_xml = affinity_xml.css(
    'AffinityGroup StorageServices StorageService'
  )

  capability_xml = affinity_xml.css(
    'AffinityGroup Capabilities Capability'
  )

  AffinityGroup.new do |affinity_group|
    affinity_group.name = xml_content(
      affinity_xml,
      'AffinityGroup Name'
    )
    affinity_group.label = Base64.decode64(
      xml_content(
        affinity_xml,
        'AffinityGroup Label'
      )
    )
    affinity_group.description = xml_content(
      affinity_xml,
      'AffinityGroup Description'
    )
    affinity_group.location = xml_content(
      affinity_xml,
      'AffinityGroup Location'
    )
    affinity_group.hosted_services = []
    hosted_services_xml.each do |hosted_service_xml|
      affinity_group.hosted_services << {
        url: xml_content(hosted_service_xml, 'Url'),
        service_name: xml_content(hosted_service_xml, 'ServiceName')
      }
    end
    affinity_group.storage_services = []
    storage_services_xml.each do |storage_service_xml|
      affinity_group.storage_services << {
        url: xml_content(storage_service_xml, 'Url'),
        service_name: xml_content(storage_service_xml, 'ServiceName')
      }
    end
    affinity_group.capability = capability_xml.map { |x| x.content }
  end
end
affinity_group_to_xml(name, location, label, options = {}) click to toggle source
# File lib/azure/base_management/serialization.rb, line 39
def self.affinity_group_to_xml(name, location, label, options = {})
  builder = Nokogiri::XML::Builder.new do |xml|
    xml.CreateAffinityGroup(
      'xmlns' => 'http://schemas.microsoft.com/windowsazure'
    ) do
      xml.Name name
      xml.Label Base64.encode64(label).strip
      xml.Description options[:description]
      xml.Location location
    end
  end
  builder.doc.to_xml
end
affinity_groups_from_xml(affinity_xml) click to toggle source
# File lib/azure/base_management/serialization.rb, line 53
def self.affinity_groups_from_xml(affinity_xml)
  affinity_groups = []
  affinity_group_services_xml = affinity_xml.css(
    'AffinityGroups  AffinityGroup'
  )

  affinity_group_services_xml.each do |ag_xml|
    affinity_group = AffinityGroup.new
    affinity_group.name = xml_content(ag_xml, 'Name')
    affinity_group.label = Base64.decode64(xml_content(ag_xml, 'Label'))
    affinity_group.description = xml_content(ag_xml, 'Description')
    affinity_group.location = xml_content(ag_xml, 'Location')

    capabilities = ag_xml.css('Capabilities Capability')
    affinity_group.capability = capabilities.map { |x|  x.content }
    affinity_groups << affinity_group
  end
  affinity_groups.compact
end
locations_from_xml(locationXML) click to toggle source
# File lib/azure/base_management/serialization.rb, line 21
def self.locations_from_xml(locationXML)
  location_objs = []
  xml = locationXML.css('Locations Location')
  xml.each do |meta_node|
    loc = Location.new
    loc.name = xml_content(meta_node, 'Name')
    available_services = meta_node.css('AvailableServices').children
    loc.available_services = available_services.to_ary.join(', ')
    role_sizes = []
    meta_node.css('VirtualMachinesRoleSizes RoleSize').each do | role_size_node |
      role_sizes << role_size_node.text
    end
    loc.role_sizes = role_sizes
    location_objs << loc
  end
  location_objs
end
resource_to_xml(label, options = {}) click to toggle source
# File lib/azure/base_management/serialization.rb, line 123
def self.resource_to_xml(label, options = {})
  builder = Nokogiri::XML::Builder.new do |xml|
    xml.UpdateAffinityGroup(
      'xmlns' => 'http://schemas.microsoft.com/windowsazure'
    ) do
      xml.Label Base64.encode64(label).strip
      xml.Description options[:description] if options[:description]
    end
  end
  builder.doc.to_xml
end