- NAT_RULE =
{
type: Hash,
internals: {
id: {type: 'string_or_number', required: false},
enabled: {type: 'boolean', required: false},
rule_type: { type: 'enum', required: true, acceptable_values: ['SNAT', 'DNAT' ]},
description: {type: 'string', required: false, allowed_empty: true},
network_id: {type: 'string', required: true},
original_ip: {type: 'ip_address_range', required: true},
original_port: {type: 'string', required: false},
translated_ip: {type: 'ip_address_range', required: true},
translated_port: {type: 'string', required: false},
protocol: {type: 'enum', required: false, acceptable_values: ['tcp', 'udp', 'icmp', 'tcpudp', 'any']},
}
}
- NAT_SERVICE =
{
type: Hash,
allowed_empty: true,
required: false,
internals: {
enabled: {type: 'boolean', required: false},
nat_rules: {
type: Array,
required: false,
allowed_empty: true,
each_element_is: NAT_RULE
}
}
}
- EDGE_GATEWAY_SERVICES =
{
type: 'hash',
allowed_empty: false,
internals: {
gateway: { type: 'string' },
firewall_service: FIREWALL_SERVICE,
nat_service: NAT_SERVICE,
load_balancer_service: LOAD_BALANCER_SERVICE,
}
}
- FIREWALL_RULE =
{
type: Hash,
internals: {
id: { type: 'string_or_number', required: false},
enabled: { type: 'boolean', required: false},
match_on_translate: { type: 'boolean', required: false},
description: { type: 'string', required: false, allowed_empty: true},
policy: { type: 'enum', required: false, acceptable_values: ['allow', 'drop'] },
source_ip: { type: 'ip_address_range', required: true },
destination_ip: { type: 'ip_address_range', required: true },
source_port_range: { type: 'string', required: false },
destination_port_range: { type: 'string', required: false },
enable_logging: { type: 'boolean', required: false },
protocols: { type: 'enum', required: false, acceptable_values: ['tcp', 'udp', 'icmp', 'tcp+udp', 'any']},
}
}
- FIREWALL_SERVICE =
{
type: Hash,
allowed_empty: true,
required: false,
internals: {
enabled: { type: 'boolean', required: false},
policy: { type: 'enum', required: false, acceptable_values: ['allow', 'drop'] },
log_default_action: { type: 'boolean', required: false},
firewall_rules: {
type: Array,
required: false,
allowed_empty: true,
each_element_is: FIREWALL_RULE
}
}
}
- POOL_MEMBER_SERVICE_PORT_ENTRY =
{
type: Hash,
required: false,
internals: {
port: { type: 'string_or_number', required: false },
health_check_port: { type: 'string_or_number', required: false },
}
}
- LOAD_BALANCER_MEMBER_ENTRY =
{
type: Hash,
internals: {
ip_address: { type: 'ip_address', required: true },
weight: { type: 'string_or_number', required: false },
service_port: {
type: 'hash',
required: false,
internals: {
http: POOL_MEMBER_SERVICE_PORT_ENTRY,
https: POOL_MEMBER_SERVICE_PORT_ENTRY,
tcp: POOL_MEMBER_SERVICE_PORT_ENTRY,
},
},
},
}
- POOL_SERVICE_SECTION =
{
type: Hash,
required: false,
allowed_empty: true,
internals: {
enabled: { type: 'boolean', required: false },
port: { type: 'string_or_number', required: false },
algorithm: { type: 'enum', required: false,
acceptable_values: [ 'ROUND_ROBIN', 'IP_HASH', 'URI', 'LEAST_CONNECTED' ]},
health_check: {
type: 'hash',
required: false,
internals: {
port: { type: 'string_or_number', required: false },
uri: { type: 'string', required: false },
protocol: { type: 'enum', required: false,
acceptable_values: [ 'HTTP', 'SSL', 'TCP' ] },
health_threshold: { type: 'string_or_number', required: false },
unhealth_threshold: { type: 'string_or_number', required: false },
interval: { type: 'string_or_number', required: false },
timeout: { type: 'string_or_number', required: false },
},
},
}
}
- LOAD_BALANCER_POOL_ENTRY =
{
type: Hash,
internals: {
name: { type: 'string', required: true },
description: { type: 'string', required: false },
service: {
type: 'hash',
required: false,
internals: {
http: POOL_SERVICE_SECTION,
https: POOL_SERVICE_SECTION,
tcp: POOL_SERVICE_SECTION,
}
},
members: {
type: Array,
required: true,
allowed_empty: false,
each_element_is: LOAD_BALANCER_MEMBER_ENTRY,
}
}
}
- VIRTUAL_SERVER_SERVICE_PROFILE_TCP_ENTRY =
{
type: Hash,
required: false,
allowed_empty: true,
internals: {
enabled: { type: 'boolean', required: false },
port: { type: 'string_or_number', required: false },
}
}
- VIRTUAL_SERVER_SERVICE_PROFILE_HTTPS_ENTRY =
{
type: Hash,
required: false,
allowed_empty: true,
internals: {
enabled: { type: 'boolean', required: false },
port: { type: 'string_or_number', required: false },
persistence: {
type: 'hash',
required: false,
internals: {
method: {
type: 'enum',
required: false,
acceptable_values: [ 'SSL_SESSION_ID' ],
},
},
},
}
}
- VIRTUAL_SERVER_SERVICE_PROFILE_HTTP_ENTRY =
{
type: Hash,
required: false,
allowed_empty: true,
internals: {
enabled: { type: 'boolean', required: false },
port: { type: 'string_or_number', required: false },
persistence: {
type: 'hash',
required: false,
internals: {
method: {
type: 'enum',
required: false,
acceptable_values: [ 'COOKIE' ],
},
cookie_name: { type: 'string', required: true },
cookie_mode: {
type: 'enum',
required: true,
acceptable_values: [ 'APP', 'PREFIX', 'INSERT' ]
},
},
},
}
}
- LOAD_BALANCER_VIRTUAL_SERVER_ENTRY =
{
type: Hash,
internals: {
enabled: { type: 'boolean', required: false },
name: { type: 'string', required: true },
description: { type: 'string', required: false },
ip_address: { type: 'ip_address', required: true },
network: { type: 'string', required: true },
pool: { type: 'string', required: true },
logging: { type: 'boolean', required: false },
service_profiles: {
type: 'hash',
required: false,
internals: {
http: VIRTUAL_SERVER_SERVICE_PROFILE_HTTP_ENTRY,
https: VIRTUAL_SERVER_SERVICE_PROFILE_HTTPS_ENTRY,
tcp: VIRTUAL_SERVER_SERVICE_PROFILE_TCP_ENTRY,
},
},
}
}
- LOAD_BALANCER_SERVICE =
{
type: Hash,
allowed_empty: true,
required: false,
internals: {
enabled: { type: 'boolean', required: false },
pools: {
type: Array,
required: false,
allowed_empty: true,
each_element_is: LOAD_BALANCER_POOL_ENTRY,
},
virtual_servers: {
type: Array,
required: false,
allowed_empty: true,
each_element_is: LOAD_BALANCER_VIRTUAL_SERVER_ENTRY,
},
}
}