mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
Merge pull request #2228 from alphagov/vcloud-director_edge-gateway_support
[vcloud_director] Getting Edge Gateways details
This commit is contained in:
commit
7b61bd5f5a
5 changed files with 515 additions and 4 deletions
|
@ -184,6 +184,8 @@ module Fog
|
||||||
request :put_memory
|
request :put_memory
|
||||||
request :put_network_connection_system_section_vapp
|
request :put_network_connection_system_section_vapp
|
||||||
request :put_vapp_metadata_item_metadata
|
request :put_vapp_metadata_item_metadata
|
||||||
|
request :get_edge_gateways
|
||||||
|
request :get_edge_gateway
|
||||||
|
|
||||||
class Model < Fog::Model
|
class Model < Fog::Model
|
||||||
def initialize(attrs={})
|
def initialize(attrs={})
|
||||||
|
@ -379,6 +381,11 @@ module Fog
|
||||||
|
|
||||||
def data
|
def data
|
||||||
@@data ||= Hash.new do |hash, key|
|
@@data ||= Hash.new do |hash, key|
|
||||||
|
|
||||||
|
vdc_uuid = uuid
|
||||||
|
default_network_uuid = uuid
|
||||||
|
uplink_network_uuid = uuid
|
||||||
|
|
||||||
hash[key] = {
|
hash[key] = {
|
||||||
:catalogs => {
|
:catalogs => {
|
||||||
uuid => {
|
uuid => {
|
||||||
|
@ -393,19 +400,55 @@ module Fog
|
||||||
},
|
},
|
||||||
:medias => {},
|
:medias => {},
|
||||||
:networks => {
|
:networks => {
|
||||||
uuid => {
|
default_network_uuid => {
|
||||||
:Description => 'Network for mocking',
|
:ApplyRateLimit => "false",
|
||||||
|
:Description => 'Org Network for mocking',
|
||||||
:Dns1 => '8.8.8.8',
|
:Dns1 => '8.8.8.8',
|
||||||
:Dns2 => '8.8.4.4',
|
:Dns2 => '8.8.4.4',
|
||||||
:DnsSuffix => 'example.com',
|
:DnsSuffix => 'example.com',
|
||||||
:Gateway => '192.168.1.1',
|
:Gateway => '192.168.1.1',
|
||||||
|
:InterfaceType => "internal",
|
||||||
:IpRanges => [{
|
:IpRanges => [{
|
||||||
:StartAddress=>'192.168.1.2',
|
:StartAddress=>'192.168.1.2',
|
||||||
:EndAddress=>'192.168.1.254'
|
:EndAddress=>'192.168.1.254'
|
||||||
}],
|
}],
|
||||||
:IsInherited => false,
|
:IsInherited => false,
|
||||||
:Netmask => '255.255.255.0',
|
:Netmask => '255.255.255.0',
|
||||||
:name => 'Default Network'
|
:name => 'Default Network',
|
||||||
|
:SubnetParticipation => {
|
||||||
|
:Gateway => "192.168.1.0",
|
||||||
|
:Netmask => "255.255.0.0",
|
||||||
|
:IpAddress => "192.168.1.0"
|
||||||
|
},
|
||||||
|
:UseForDefaultRoute => "false"
|
||||||
|
},
|
||||||
|
uplink_network_uuid => {
|
||||||
|
:ApplyRateLimit => "false",
|
||||||
|
:Description => 'Uplink Network for mocking',
|
||||||
|
:Dns1 => '8.8.8.8',
|
||||||
|
:Dns2 => '8.8.4.4',
|
||||||
|
:DnsSuffix => 'example.com',
|
||||||
|
:Gateway => '198.51.100.1',
|
||||||
|
:InterfaceType => "uplink",
|
||||||
|
:IpRanges => [{
|
||||||
|
:StartAddress=>'198.51.100.2',
|
||||||
|
:EndAddress=>'198.51.100.254'
|
||||||
|
}],
|
||||||
|
:IsInherited => false,
|
||||||
|
:Netmask => '255.255.255.0',
|
||||||
|
:name => 'uplink Network',
|
||||||
|
:SubnetParticipation => {
|
||||||
|
:Gateway => "198.51.100.81",
|
||||||
|
:Netmask => "255.255.255.248",
|
||||||
|
:IpAddress => "198.51.100.83",
|
||||||
|
:IpRanges => {
|
||||||
|
:IpRange => {
|
||||||
|
:StartAddress => "198.51.100.84",
|
||||||
|
:EndAddress => "198.51.100.86"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
:UseForDefaultRoute => "true"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
:org => {
|
:org => {
|
||||||
|
@ -416,10 +459,17 @@ module Fog
|
||||||
},
|
},
|
||||||
:tasks => {},
|
:tasks => {},
|
||||||
:vdcs => {
|
:vdcs => {
|
||||||
uuid => {
|
vdc_uuid => {
|
||||||
:description => 'vDC for mocking',
|
:description => 'vDC for mocking',
|
||||||
:name => 'MockVDC'
|
:name => 'MockVDC'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
:edge_gateways => {
|
||||||
|
uuid => {
|
||||||
|
:name => 'MockEdgeGateway',
|
||||||
|
:vdc => vdc_uuid,
|
||||||
|
:networks => [uplink_network_uuid, default_network_uuid]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end[@vcloud_director_username]
|
end[@vcloud_director_username]
|
||||||
|
|
97
lib/fog/vcloud_director/requests/compute/get_edge_gateway.rb
Normal file
97
lib/fog/vcloud_director/requests/compute/get_edge_gateway.rb
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
module Fog
|
||||||
|
module Compute
|
||||||
|
class VcloudDirector
|
||||||
|
class Real
|
||||||
|
# Retrieve an edge gateway
|
||||||
|
#
|
||||||
|
# @param [String] id Object identifier of the Edge Gateway
|
||||||
|
# @return [Excon::Response]
|
||||||
|
# * body<~Hash>:
|
||||||
|
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/GET-EdgeGateway.html
|
||||||
|
# vCloud API Documentation
|
||||||
|
# @since vCloud API version 5.1
|
||||||
|
def get_edge_gateway(id)
|
||||||
|
request(
|
||||||
|
:expects => 200,
|
||||||
|
:method => 'GET',
|
||||||
|
:parser => Fog::ToHashDocument.new,
|
||||||
|
:path => "admin/edgeGateway/#{id}"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Mock
|
||||||
|
def get_edge_gateway(id)
|
||||||
|
response = Excon::Response.new
|
||||||
|
|
||||||
|
unless valid_uuid?(id)
|
||||||
|
response.status = 400
|
||||||
|
raise Excon::Errors.status_error({:expects => 200}, response)
|
||||||
|
end
|
||||||
|
|
||||||
|
unless edge_gateway = data[:edge_gateways][id]
|
||||||
|
response.status = 403
|
||||||
|
raise Excon::Errors.status_error({:expects => 200}, response)
|
||||||
|
end
|
||||||
|
|
||||||
|
vdc_id = edge_gateway[:vdc]
|
||||||
|
|
||||||
|
body = {
|
||||||
|
:xmlns => xmlns,
|
||||||
|
:xmlns_xsi => xmlns_xsi,
|
||||||
|
:status => "1",
|
||||||
|
:name => edge_gateway[:name],
|
||||||
|
:id => "urn:vcloud:gateway:27805d5d-868b-4678-b30b-11e14ad34eca",
|
||||||
|
:type => "application/vnd.vmware.admin.edgeGateway+xml",
|
||||||
|
:href => make_href("admin/edgeGateway/#{id}"),
|
||||||
|
:xsi_schemaLocation => xsi_schema_location,
|
||||||
|
:Link =>[{:rel => "up",
|
||||||
|
:type => "application/vnd.vmware.vcloud.vdc+xml",
|
||||||
|
:href => make_href("vdc/#{vdc_id}")},
|
||||||
|
{:rel => "edgeGateway:redeploy",
|
||||||
|
:href => make_href("admin/edgeGateway/#{id}/action/redeploy")},
|
||||||
|
{:rel => "edgeGateway:configureServices",
|
||||||
|
:type => "application/vnd.vmware.admin.edgeGatewayServiceConfiguration+xml",
|
||||||
|
:href => make_href("admin/edgeGateway/#{id}/action/configureServices")},
|
||||||
|
{:rel => "edgeGateway:reapplyServices",
|
||||||
|
:href => make_href("admin/edgeGateway/#{id}/action/reapplyServices")},
|
||||||
|
{:rel => "edgeGateway:syncSyslogSettings",
|
||||||
|
:href => make_href("admin/edgeGateway/#{id}/action/syncSyslogServerSettings")}],
|
||||||
|
:Description => "vCloud CI (nft00052i2)",
|
||||||
|
:Configuration =>
|
||||||
|
{:GatewayBackingConfig => "compact",
|
||||||
|
:GatewayInterfaces =>
|
||||||
|
{:GatewayInterface => []},
|
||||||
|
:EdgeGatewayServiceConfiguration =>
|
||||||
|
{:FirewallService =>
|
||||||
|
{:IsEnabled => "true",
|
||||||
|
:DefaultAction => "drop",
|
||||||
|
:LogDefaultAction => "false"},
|
||||||
|
:NatService => {:IsEnabled => "true"}},
|
||||||
|
:HaEnabled => "false",
|
||||||
|
:UseDefaultRouteForDnsRelay => "false"}}
|
||||||
|
|
||||||
|
body[:Configuration][:GatewayInterfaces][:GatewayInterface] += edge_gateway[:networks].map do |network|
|
||||||
|
|
||||||
|
extras = {
|
||||||
|
:Network => {
|
||||||
|
:type => "application/vnd.vmware.admin.network+xml",
|
||||||
|
:name => "anything",
|
||||||
|
:href => make_href("admin/network/#{network}")
|
||||||
|
},
|
||||||
|
:Name => data[:networks][network][:name],
|
||||||
|
:DisplayName => data[:networks][network][:name]
|
||||||
|
}
|
||||||
|
|
||||||
|
data[:networks][network].merge extras
|
||||||
|
end
|
||||||
|
|
||||||
|
response.status = 200
|
||||||
|
response.headers = {'Content-Type' => "#{body[:type]};version=#{api_version}"}
|
||||||
|
response.body = body
|
||||||
|
response
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,79 @@
|
||||||
|
module Fog
|
||||||
|
module Compute
|
||||||
|
class VcloudDirector
|
||||||
|
class Real
|
||||||
|
# List all gateways for this Org vDC.
|
||||||
|
#
|
||||||
|
# @param [String] vdc_id Object identifier of the VDC
|
||||||
|
# @return [Excon::Response]
|
||||||
|
# * body<~Hash>:
|
||||||
|
# @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/GET-OrgVdcGateways.html
|
||||||
|
# vCloud API Documentation
|
||||||
|
# @since vCloud API version 5.1
|
||||||
|
def get_edge_gateways(vdc_id)
|
||||||
|
request(
|
||||||
|
:expects => 200,
|
||||||
|
:method => 'GET',
|
||||||
|
:parser => Fog::ToHashDocument.new,
|
||||||
|
:path => "admin/vdc/#{vdc_id}/edgeGateways"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Mock
|
||||||
|
def get_edge_gateways(vdc_id)
|
||||||
|
response = Excon::Response.new
|
||||||
|
|
||||||
|
unless valid_uuid?(vdc_id)
|
||||||
|
response.status = 400
|
||||||
|
raise Excon::Errors.status_error({:expects => 200}, response)
|
||||||
|
end
|
||||||
|
unless vdc = data[:vdcs][vdc_id]
|
||||||
|
response.status = 403
|
||||||
|
raise Excon::Errors.status_error({:expects => 200}, response)
|
||||||
|
end
|
||||||
|
|
||||||
|
body =
|
||||||
|
{:xmlns => xmlns,
|
||||||
|
:xmlns_xsi => xmlns_xsi,
|
||||||
|
:total => "1",
|
||||||
|
:pageSize => "25",
|
||||||
|
:page => "1",
|
||||||
|
:name => "edgeGateways",
|
||||||
|
:type => "application/vnd.vmware.vcloud.query.records+xml",
|
||||||
|
:href => make_href("admin/vdc/#{vdc_id}edgeGateways?page=1&pageSize=25&format=records"),
|
||||||
|
:xsi_schemaLocation => xsi_schema_location,
|
||||||
|
:Link =>
|
||||||
|
[{:rel => "alternate",
|
||||||
|
:type => "application/vnd.vmware.vcloud.query.references+xml",
|
||||||
|
:href => make_href("admin/vdc/#{vdc_id}edgeGateways?page=1&pageSize=25&format=references")},
|
||||||
|
{:rel => "alternate",
|
||||||
|
:type => "application/vnd.vmware.vcloud.query.idrecords+xml",
|
||||||
|
:href => make_href("admin/vdc/#{vdc_id}edgeGateways?page=1&pageSize=25&format=records")}],
|
||||||
|
:EdgeGatewayRecord => []}
|
||||||
|
|
||||||
|
vdc_edge_gateways = data[:edge_gateways].select do |id, edge_gateway|
|
||||||
|
edge_gateway[:vdc] == vdc_id
|
||||||
|
end
|
||||||
|
|
||||||
|
body[:EdgeGatewayRecord] += vdc_edge_gateways.map do |id, edge_gateway|
|
||||||
|
{:vdc => make_href("vdc/#{vdc_id}"),
|
||||||
|
:numberOfOrgNetworks => "1",
|
||||||
|
:numberOfExtNetworks => "1",
|
||||||
|
:name => edge_gateway[:name],
|
||||||
|
:isBusy => "false",
|
||||||
|
:haStatus => "DISABLED",
|
||||||
|
:gatewayStatus => "READY",
|
||||||
|
:href => make_href("admin/edgeGateway/#{id}"),
|
||||||
|
:isSyslogServerSettingInSync => "true"}
|
||||||
|
end
|
||||||
|
|
||||||
|
response.status = 200
|
||||||
|
response.headers = {'Content-Type' => "#{body[:type]};version=#{api_version}"}
|
||||||
|
response.body = body
|
||||||
|
response
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
48
tests/vcloud_director/requests/compute/edge_gateway_tests.rb
Normal file
48
tests/vcloud_director/requests/compute/edge_gateway_tests.rb
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
Shindo.tests('Compute::VcloudDirector | edge gateway requests', ['vclouddirector']) do
|
||||||
|
|
||||||
|
@service = Fog::Compute::VcloudDirector.new
|
||||||
|
|
||||||
|
tests('Get current organization') do
|
||||||
|
session = @service.get_current_session.body
|
||||||
|
link = session[:Link].detect do |l|
|
||||||
|
l[:type] == 'application/vnd.vmware.vcloud.org+xml'
|
||||||
|
end
|
||||||
|
@org = @service.get_organization(link[:href].split('/').last).body
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('Get first vdc') do
|
||||||
|
link = @org[:Link].detect do |l|
|
||||||
|
l[:type] == 'application/vnd.vmware.vcloud.vdc+xml'
|
||||||
|
end
|
||||||
|
@vdc_id = link[:href].split('/').last
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('#get_edge_gateways').data_matches_schema(VcloudDirector::Compute::Schema::QUERY_RESULT_RECORDS_TYPE) do
|
||||||
|
@edge_gateways = @service.get_edge_gateways(@vdc_id).body
|
||||||
|
|
||||||
|
# ensure that EdgeGatewayRecord is a list
|
||||||
|
if @edge_gateways[:EdgeGatewayRecord].is_a?(Hash)
|
||||||
|
@edge_gateways[:EdgeGatewayRecord] = [@edge_gateways[:EdgeGatewayRecord]]
|
||||||
|
end
|
||||||
|
|
||||||
|
@edge_gateways[:EdgeGatewayRecord].each do |result|
|
||||||
|
tests("each EdgeGatewayRecord should follow schema").
|
||||||
|
data_matches_schema(VcloudDirector::Compute::Schema::QUERY_RESULT_EDGE_GATEWAY_RECORD_TYPE) { result }
|
||||||
|
end
|
||||||
|
|
||||||
|
@edge_gateways
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('#get_edge_gateway').data_matches_schema(VcloudDirector::Compute::Schema::GATEWAY_TYPE) do
|
||||||
|
@service.get_edge_gateway(@edge_gateways[:EdgeGatewayRecord].first[:href].split('/').last).body
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('Retrieve non-existent edge gateway').raises(Excon::Errors::Forbidden) do
|
||||||
|
@service.get_edge_gateway('00000000-0000-0000-0000-000000000000')
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('Retrieve edge gateways for non-existent VDC').raises(Excon::Errors::Forbidden) do
|
||||||
|
@service.get_edge_gateways('00000000-0000-0000-0000-000000000000')
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -289,6 +289,243 @@ class VcloudDirector
|
||||||
:OperatingSystemFamilyInfo => [OPERATING_SYSTEM_FAMILY_INFO_TYPE]
|
:OperatingSystemFamilyInfo => [OPERATING_SYSTEM_FAMILY_INFO_TYPE]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# Container for query results in records format.
|
||||||
|
# Combine with QUERY_RESULT_RECORD_TYPE subtypes to validate query results
|
||||||
|
QUERY_RESULT_RECORDS_TYPE = {
|
||||||
|
:href => Fog::Nullable::String,
|
||||||
|
:type => Fog::Nullable::String,
|
||||||
|
:name => Fog::Nullable::String,
|
||||||
|
:page => Fog::Nullable::String,
|
||||||
|
:pageSize => Fog::Nullable::String,
|
||||||
|
:total => Fog::Nullable::String,
|
||||||
|
}
|
||||||
|
|
||||||
|
# Base type for a single record from query result in records format.
|
||||||
|
# Subtypes define more specific elements.
|
||||||
|
QUERY_RESULT_RECORD_TYPE = {
|
||||||
|
:href => String,
|
||||||
|
:id => Fog::Nullable::String,
|
||||||
|
:type => Fog::Nullable::String
|
||||||
|
}
|
||||||
|
|
||||||
|
# Type for a single edgeGateway query result in records format.
|
||||||
|
QUERY_RESULT_EDGE_GATEWAY_RECORD_TYPE = QUERY_RESULT_RECORD_TYPE.merge({
|
||||||
|
:gatewayStatus => String,
|
||||||
|
:haStatus => String,
|
||||||
|
:isBusy => String,
|
||||||
|
:name => String,
|
||||||
|
:numberOfExtNetworks => String,
|
||||||
|
:numberOfOrgNetworks=> String,
|
||||||
|
:vdc => String
|
||||||
|
})
|
||||||
|
|
||||||
|
FIREWALL_RULE_TYPE__PROTOCOLS = {
|
||||||
|
:Icmp => Fog::Nullable::String,
|
||||||
|
:Asny => Fog::Nullable::String,
|
||||||
|
:Other => Fog::Nullable::String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Represents a firewall rule.
|
||||||
|
FIREWALL_RULE_TYPE = {
|
||||||
|
:Id => String,
|
||||||
|
:IsEnabled => String,
|
||||||
|
:MatchOnTranslate => Fog::Nullable::String,
|
||||||
|
:Description => Fog::Nullable::String,
|
||||||
|
:Policy => Fog::Nullable::String,
|
||||||
|
:IcmpSubType => Fog::Nullable::String,
|
||||||
|
:Port => Fog::Nullable::String,
|
||||||
|
:DestinationPortRange => String,
|
||||||
|
:SourcePort => Fog::Nullable::String,
|
||||||
|
:SourcePortRange => String,
|
||||||
|
:Direction => Fog::Nullable::String,
|
||||||
|
:EnableLogging => Fog::Nullable::String,
|
||||||
|
:Protocols => FIREWALL_RULE_TYPE__PROTOCOLS
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents a network firewall service.
|
||||||
|
FIREWALL_SERVICE_TYPE = {
|
||||||
|
:IsEnabled => String,
|
||||||
|
:DefaultAction => String,
|
||||||
|
:LogDefaultAction => String,
|
||||||
|
#:FirewallRule => [FIREWALL_RULE_TYPE] # not required
|
||||||
|
}
|
||||||
|
|
||||||
|
#Represents the SNAT and DNAT rules.
|
||||||
|
GATEWAY_NAT_RULE_TYPE = {
|
||||||
|
:Interface => REFERENCE_TYPE,
|
||||||
|
:OriginalIp => String,
|
||||||
|
:OriginalPort => Fog::Nullable::String,
|
||||||
|
:TranslatedIp => String,
|
||||||
|
:TranslatedPort => Fog::Nullable::String,
|
||||||
|
:Protocol => Fog::Nullable::String,
|
||||||
|
:IcmpSubType => Fog::Nullable::String
|
||||||
|
}
|
||||||
|
|
||||||
|
#Represents a NAT rule.
|
||||||
|
NAT_RULE_TYPE = {
|
||||||
|
:Description => Fog::Nullable::String,
|
||||||
|
:RuleType => String,
|
||||||
|
:IsEnabled => String,
|
||||||
|
:Id => String,
|
||||||
|
:GatewayNatRule => GATEWAY_NAT_RULE_TYPE
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents a NAT network service.
|
||||||
|
NAT_SERVICE_TYPE = {
|
||||||
|
:IsEnabled => String,
|
||||||
|
:NatType => Fog::Nullable::String,
|
||||||
|
:Policy => Fog::Nullable::String,
|
||||||
|
#:NatRule => [NAT_RULE_TYPE], # not required
|
||||||
|
:ExternalIp => Fog::Nullable::String
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents a service port in a load balancer pool.
|
||||||
|
LB_POOL_SERVICE_PORT_TYPE = {
|
||||||
|
:IsEnabled => Fog::Nullable::String,
|
||||||
|
:Protocol => String,
|
||||||
|
:Algorithm => Fog::Nullable::String,
|
||||||
|
:Port => String,
|
||||||
|
:HealthCheckPort => String,
|
||||||
|
#:HealthCheck => LBPoolHealthCheckType # not required
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents a member in a load balancer pool.
|
||||||
|
LB_POOL_MEMBER_TYPE = {
|
||||||
|
:IpAddress => String,
|
||||||
|
:Weight => String,
|
||||||
|
:ServicePort => [LB_POOL_SERVICE_PORT_TYPE]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents a load balancer pool.
|
||||||
|
LOAD_BALANCER_POOL_TYPE = {
|
||||||
|
:Id => Fog::Nullable::String,
|
||||||
|
:Name => String,
|
||||||
|
:Description => Fog::Nullable::String,
|
||||||
|
:ServicePort => [LB_POOL_SERVICE_PORT_TYPE],
|
||||||
|
:Member => [LB_POOL_MEMBER_TYPE],
|
||||||
|
:Operational => String,
|
||||||
|
:ErrorDetails => Fog::Nullable::String
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents persistence type for a load balancer service profile.
|
||||||
|
LB_PERSISTENCE_TYPE = {
|
||||||
|
:Method => String,
|
||||||
|
:CookieName => Fog::Nullable::String,
|
||||||
|
:CookieMode => Fog::Nullable::String
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents service profile for a load balancing virtual server.
|
||||||
|
LB_VIRTUAL_SERVER_SERVICE_PROFILE_TYPE = {
|
||||||
|
:IsEnabled => String,
|
||||||
|
:Protocol => String,
|
||||||
|
:Port => String,
|
||||||
|
:Persistence => LB_PERSISTENCE_TYPE
|
||||||
|
}
|
||||||
|
|
||||||
|
# Information about a vendor service template. This is optional.
|
||||||
|
VENDOR_TEMPLATE_TYPE = {
|
||||||
|
:Name => String,
|
||||||
|
:Id => String
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents a load balancer virtual server.
|
||||||
|
LOAD_BALANCER_VIRTUAL_SERVER_TYPE = {
|
||||||
|
:IsEnabled => String,
|
||||||
|
:Name => String,
|
||||||
|
:Description => Fog::Nullable::String,
|
||||||
|
:Interface => REFERENCE_TYPE,
|
||||||
|
:IpAddress => String,
|
||||||
|
:ServiceProfile => [LB_VIRTUAL_SERVER_SERVICE_PROFILE_TYPE],
|
||||||
|
:Logging => String,
|
||||||
|
:Pool => String,
|
||||||
|
#:LoadBalancerTemplates => VENDOR_TEMPLATE_TYPE # not required
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents gateway load balancer service.
|
||||||
|
LOAD_BALANCER_SERVICE_TYPE = {
|
||||||
|
:Pool => LOAD_BALANCER_POOL_TYPE,
|
||||||
|
:VirtualServer => LOAD_BALANCER_VIRTUAL_SERVER_TYPE,
|
||||||
|
:IsEnabled => Fog::Nullable::String
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents Gateway DHCP service.
|
||||||
|
GATEWAY_DHCP_SERVICE_TYPE = {
|
||||||
|
:IsEnabled => String,
|
||||||
|
#:Pool => DHCP_POOL_SERVICE_TYPE # not required
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents edge gateway services.
|
||||||
|
GATEWAY_FEATURES_TYPE = {
|
||||||
|
#:StaticRoutingService => STATIC_ROUTING_SERVICE_TYPE, #not required
|
||||||
|
#:GatewayIpsecVpnService => GATEWAY_IPSEC_VPN_SERVICE_TYPE, #not required
|
||||||
|
#:GatewayDhcpService => GATEWAY_DHCP_SERVICE_TYPE, #not required
|
||||||
|
#:LoadBalancerService => LOAD_BALANCER_SERVICE_TYPE, #not required
|
||||||
|
:NatService => NAT_SERVICE_TYPE,
|
||||||
|
:FirewallService => FIREWALL_SERVICE_TYPE
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents a range of IP addresses, start and end inclusive.
|
||||||
|
IP_RANGE_TYPE = {
|
||||||
|
:StartAddress => String,
|
||||||
|
:EndAddress => String
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents a list of IP ranges.
|
||||||
|
IP_RANGES_TYPE = {
|
||||||
|
:IpRange => [IP_RANGE_TYPE]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Allows to chose which subnets a gateway can be part of
|
||||||
|
SUBNET_PARTICIPATION_TYPE = {
|
||||||
|
:Gateway => String,
|
||||||
|
:Netmask => String,
|
||||||
|
:IpAddress => String,
|
||||||
|
:IpRanges => IP_RANGES_TYPE
|
||||||
|
}
|
||||||
|
|
||||||
|
# Gateway Interface configuration.
|
||||||
|
GATEWAY_INTERFACE_TYPE = {
|
||||||
|
:Name => String,
|
||||||
|
:DisplayName => String,
|
||||||
|
:Network => REFERENCE_TYPE,
|
||||||
|
:InterfaceType => String,
|
||||||
|
#:SubnetParticipation => [SUBNET_PARTICIPATION_TYPE], #bug in parser means list or hash
|
||||||
|
:ApplyRateLimit => String,
|
||||||
|
:InRateLimit => Fog::Nullable::String,
|
||||||
|
:OutRateLimit => Fog::Nullable::String,
|
||||||
|
:UseForDefaultRoute => String,
|
||||||
|
}
|
||||||
|
|
||||||
|
# A list of Gateway Interfaces.
|
||||||
|
GATEWAY_INTERFACES_TYPE = {
|
||||||
|
:GatewayInterface => [GATEWAY_INTERFACE_TYPE]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Gateway Configuration.
|
||||||
|
GATEWAY_CONFIGURATION_TYPE = {
|
||||||
|
:BackwardCompatibilityMode => Fog::Nullable::String,
|
||||||
|
:GatewayBackingConfig => String,
|
||||||
|
:GatewayInterfaces => GATEWAY_INTERFACES_TYPE,
|
||||||
|
:EdgeGatewayServiceConfiguration => GATEWAY_FEATURES_TYPE,
|
||||||
|
:HaEnabled => Fog::Nullable::String,
|
||||||
|
:UseDefaultRouteForDnsRelay => Fog::Nullable::String
|
||||||
|
}
|
||||||
|
|
||||||
|
# Represents a gateway.
|
||||||
|
GATEWAY_TYPE = {
|
||||||
|
:href => String,
|
||||||
|
:type => String,
|
||||||
|
:id => String,
|
||||||
|
:operationKey => Fog::Nullable::String,
|
||||||
|
:name => String,
|
||||||
|
:status => Fog::Nullable::String,
|
||||||
|
#:Link => LINK_TYPE, # not required
|
||||||
|
:Description => Fog::Nullable::String,
|
||||||
|
#:Tasks => TASKS_IN_PROGRESS_TYPE, # not required
|
||||||
|
:Configuration => GATEWAY_CONFIGURATION_TYPE
|
||||||
|
}
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue