class Fog::Generators::Compute::VcloudDirector::OrgVdcNetwork

@see pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/types/OrgVdcNetworkType.html

Attributes

options[R]

Public Class Methods

new(options={}) click to toggle source
# File lib/fog/vcloud_director/generators/compute/org_vdc_network.rb, line 9
def initialize(options={})
  @options = options
end

Public Instance Methods

generate_xml() click to toggle source
# File lib/fog/vcloud_director/generators/compute/org_vdc_network.rb, line 13
def generate_xml
  body = Nokogiri::XML::Builder.new do
    attrs = {
      :xmlns => 'http://www.vmware.com/vcloud/v1.5',
      :name  => options[:name]
    }
    OrgVdcNetwork(attrs) {
      Description options[:Description] if options.key?(:Description)
      if configuration = options[:Configuration]
        Configuration {
          if ip_scopes = configuration[:IpScopes]
            IpScopes {
              if ip_scope = ip_scopes[:IpScope]
                IpScope {
                  IsInherited  ip_scope[:IsInherited] if ip_scope.key?(:IsInherited)
                  Gateway      ip_scope[:Gateway]     if ip_scope.key?(:Gateway)
                  Netmask      ip_scope[:Netmask]     if ip_scope.key?(:Netmask)
                  Dns1         ip_scope[:Dns1]        if ip_scope.key?(:Dns1)
                  Dns2         ip_scope[:Dns2]        if ip_scope.key?(:Dns2)
                  DnsSuffix    ip_scope[:DnsSuffix]   if ip_scope.key?(:DnsSuffix)
                  IsEnabled    ip_scope[:IsEnabled]   if ip_scope.key?(:IsEnabled)
                  if ip_ranges = ip_scope[:IpRanges]
                    IpRanges {
                      ip_ranges.each do |h|
                        if h.key?(:IpRange)
                          IpRange {
                            StartAddress h[:IpRange][:StartAddress]
                            EndAddress   h[:IpRange][:EndAddress]
                          }
                        end
                      end
                    }
                  end
                }
              end
            }
          end
          FenceMode    configuration[:FenceMode]
          if router_info = configuration[:RouterInfo]
            RouterInfoType {
              ExternalIp router_info[:ExternalIp]
            }
          end
        }
      end # Configuration

      if edgegw = options[:EdgeGateway] and configuration[:FenceMode] != 'isolated'
        EdgeGateway(edgegw)
      elsif options[:Configuration] && options[:Configuration][:FenceMode] == 'isolated'
        # isolated networks can specify ServiceConfig
        if sc = options[:ServiceConfig]
          ServiceConfig {
            if dhcp = sc[:GatewayDhcpService]
              IsEnabled dhcp[:IsEnabled] if dhcp[:IsEnabled]
              if pool = dhcp[:Pool]
                IsEnabled        pool[:IsEnabled]
                DefaultLeaseTime pool[:DefaultLeaseTime]
                MaxLeaseTime     pool[:MaxLeaseTime]
                LowIpAddress     pool[:LowIpAddress]
                HighIpAddress    pool[:HighIpAddress]
              end
            end
          }
        end
      end

      IsShared       options[:IsShared] if options.key?(:IsShared)

    }
  end.to_xml
end