loadbalancer

package
v0.0.0-...-cc6fb7d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 17, 2021 License: BSD-2-Clause Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ClientSslProfileBinding

type ClientSslProfileBinding struct {

	// authentication depth is used to set the verification depth in the client certificates chain.
	CertificateChainDepth int64 `json:"certificate_chain_depth,omitempty"`

	// client authentication mode
	ClientAuth string `json:"client_auth,omitempty"`

	// If client auth type is REQUIRED, client certificate must be signed by one of the trusted Certificate Authorities (CAs), also referred to as root CAs, whose self signed certificates are specified.
	ClientAuthCaIds []string `json:"client_auth_ca_ids,omitempty"`

	// A Certificate Revocation List (CRL) can be specified in the client-side SSL profile binding to disallow compromised client certificates.
	ClientAuthCrlIds []string `json:"client_auth_crl_ids,omitempty"`

	// A default certificate should be specified which will be used if the server does not host multiple hostnames on the same IP address or if the client does not support SNI extension.
	DefaultCertificateId string `json:"default_certificate_id"`

	// Client-side SSL profile binding allows multiple certificates, for different hostnames, to be bound to the same virtual server.
	SniCertificateIds []string `json:"sni_certificate_ids,omitempty"`

	// Client SSL profile defines reusable, application-independent client side SSL properties.
	SslProfileId string `json:"ssl_profile_id,omitempty"`
}

type LbActiveMonitor

type LbActiveMonitor struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// Load balancers monitor the health of backend servers to ensure traffic is not black holed. There are two types of healthchecks: active and passive. Passive healthchecks depend on failures in actual client traffic (e.g. RST from server in response to a client connection) to detect that the server or the application is down. In case of active healthchecks, load balancer itself initiates new connections (or sends ICMP ping) to the servers periodically to check their health, completely independent of any data traffic. Currently, active health monitors are supported for HTTP, HTTPS, TCP, UDP and ICMP protocols.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// num of consecutive checks must fail before marking it down
	FallCount int64 `json:"fall_count,omitempty"`

	// the frequency at which the system issues the monitor check (in second)
	Interval int64 `json:"interval,omitempty"`

	// If the monitor port is specified, it would override pool member port setting for healthcheck. A port range is not supported.
	MonitorPort string `json:"monitor_port,omitempty"`

	// num of consecutive checks must pass before marking it up
	RiseCount int64 `json:"rise_count,omitempty"`

	// the number of seconds the target has in which to respond to the monitor request
	Timeout int64 `json:"timeout,omitempty"`
}

type LbAppProfile

type LbAppProfile struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// An application profile can be bound to a virtual server to specify the application protocol characteristics. It is used to influence how load balancing is performed. Currently, three types of application profiles are supported: LbFastTCPProfile, LbFastUDPProfile and LbHttpProfile. LbFastTCPProfile or LbFastUDPProfile is typically used when the application is using a custom protocol or a standard protocol not supported by the load balancer. It is also used in cases where the user only wants L4 load balancing mainly because L4 load balancing has much higher performance and scalability, and/or supports connection mirroring. LbHttpProfile is used for both HTTP and HTTPS applications. Though application rules, if bound to the virtual server, can be used to accomplish the same goal, LbHttpProfile is intended to simplify enabling certain common use cases.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`
}

type LbAppProfileListResult

type LbAppProfileListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// paginated list of load balancer application profiles
	Results []LbAppProfile `json:"results"`
}

type LbClientSslProfile

type LbClientSslProfile struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// The type of this resource.
	ResourceType string `json:"resource_type,omitempty"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// supported SSL cipher list to client side
	Ciphers []string `json:"ciphers,omitempty"`

	// This flag is set to true when all the ciphers and protocols are secure. It is set to false when one of the ciphers or protocols is insecure.
	IsSecure bool `json:"is_secure,omitempty"`

	// During SSL handshake as part of the SSL client Hello client sends an ordered list of ciphers that it can support (or prefers) and typically server selects the first one from the top of that list it can also support. For Perfect Forward Secrecy(PFS), server could override the client's preference.
	PreferServerCiphers bool `json:"prefer_server_ciphers"`

	// SSL versions TLS1.1 and TLS1.2 are supported and enabled by default. SSLv2, SSLv3, and TLS1.0 are supported, but disabled by default.
	Protocols []string `json:"protocols,omitempty"`

	// SSL session caching allows SSL client and server to reuse previously negotiated security parameters avoiding the expensive public key operation during handshake.
	SessionCacheEnabled bool `json:"session_cache_enabled"`

	// Session cache timeout specifies how long the SSL session parameters are held on to and can be reused.
	SessionCacheTimeout int64 `json:"session_cache_timeout,omitempty"`
}

type LbClientSslProfileListResult

type LbClientSslProfileListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// paginated list of load balancer client SSL profiles
	Results []LbClientSslProfile `json:"results"`
}

type LbCookiePersistenceProfile

type LbCookiePersistenceProfile struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// Source-ip persistence ensures all connections from a client (identified by IP address) are sent to the same backend server for a specified period. Cookie persistence allows related client connections, identified by the same cookie in HTTP requests, to be redirected to the same server.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// If persistence shared flag is not set in the cookie persistence profile bound to a virtual server, it defaults to cookie persistence that is private to each virtual server and is qualified by the pool. This is accomplished by load balancer inserting a cookie with name in the format <name>.<virtual_server_id>.<pool_id>. If persistence shared flag is set in the cookie persistence profile, in cookie insert mode, cookie persistence could be shared across multiple virtual servers that are bound to the same pools. The cookie name would be changed to <name>.<profile-id>.<pool-id>. If persistence shared flag is not set in the sourceIp persistence profile bound to a virtual server, each virtual server that the profile is bound to maintains its own private persistence table. If persistence shared flag is set in the sourceIp persistence profile, all virtual servers the profile is bound to share the same persistence table.
	PersistenceShared bool `json:"persistence_shared"`

	// HTTP cookie domain could be configured, only available for insert mode.
	CookieDomain string `json:"cookie_domain,omitempty"`

	// If fallback is true, once the cookie points to a server that is down (i.e. admin state DISABLED or healthcheck state is DOWN), then a new server is selected by default to handle that request. If fallback is false, it will cause the request to be rejected if cookie points to a server
	CookieFallback bool `json:"cookie_fallback"`

	// If garble is set to true, cookie value (server IP and port) would be encrypted. If garble is set to false, cookie value would be plain text.
	CookieGarble bool `json:"cookie_garble"`

	// cookie persistence mode
	CookieMode string `json:"cookie_mode,omitempty"`

	// cookie name
	CookieName string `json:"cookie_name"`

	// HTTP cookie path could be set, only available for insert mode.
	CookiePath string `json:"cookie_path,omitempty"`

	// Both session cookie and persistence cookie are supported, if not specified, it's a session cookie. It expires when the browser is closed.
	CookieTime *LbCookieTime `json:"cookie_time,omitempty"`
}

type LbCookieTime

type LbCookieTime struct {

	// Both session cookie and persistence cookie are supported, Use LbSessionCookieTime for session cookie time setting, Use LbPersistenceCookieTime for persistence cookie time setting
	Type_ string `json:"type"`

	// Instead of using HTTP Cookie max-age and relying on client to expire the cookie, max idle time and/or max lifetime of the cookie can be used. Max idle time, if configured, specifies the maximum interval the cookie is valid for from the last time it was seen in a request. It is available for insert mode.
	CookieMaxIdle int64 `json:"cookie_max_idle,omitempty"`

	// Max life time, if configured, specifies the maximum interval the cookie is valid for from the first time the cookie was seen in a request. It is available for insert mode.
	CookieMaxLife int64 `json:"cookie_max_life,omitempty"`
}

type LbFastTcpProfile

type LbFastTcpProfile struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// An application profile can be bound to a virtual server to specify the application protocol characteristics. It is used to influence how load balancing is performed. Currently, three types of application profiles are supported: LbFastTCPProfile, LbFastUDPProfile and LbHttpProfile. LbFastTCPProfile or LbFastUDPProfile is typically used when the application is using a custom protocol or a standard protocol not supported by the load balancer. It is also used in cases where the user only wants L4 load balancing mainly because L4 load balancing has much higher performance and scalability, and/or supports connection mirroring. LbHttpProfile is used for both HTTP and HTTPS applications. Though application rules, if bound to the virtual server, can be used to accomplish the same goal, LbHttpProfile is intended to simplify enabling certain common use cases.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// It is used to specify how long a closing TCP connection (both FINs received or a RST is received) should be kept for this application before cleaning up the connection.
	CloseTimeout int64 `json:"close_timeout,omitempty"`

	// If flow mirroring is enabled, all the flows to the bounded virtual server are mirrored to the standby node.
	HaFlowMirroringEnabled bool `json:"ha_flow_mirroring_enabled"`

	// It is used to configure how long an idle TCP connection in ESTABLISHED state should be kept for this application before cleaning up.
	IdleTimeout int64 `json:"idle_timeout,omitempty"`
}

type LbFastUdpProfile

type LbFastUdpProfile struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// An application profile can be bound to a virtual server to specify the application protocol characteristics. It is used to influence how load balancing is performed. Currently, three types of application profiles are supported: LbFastTCPProfile, LbFastUDPProfile and LbHttpProfile. LbFastTCPProfile or LbFastUDPProfile is typically used when the application is using a custom protocol or a standard protocol not supported by the load balancer. It is also used in cases where the user only wants L4 load balancing mainly because L4 load balancing has much higher performance and scalability, and/or supports connection mirroring. LbHttpProfile is used for both HTTP and HTTPS applications. Though application rules, if bound to the virtual server, can be used to accomplish the same goal, LbHttpProfile is intended to simplify enabling certain common use cases.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// If flow mirroring is enabled, all the flows to the bounded virtual server are mirrored to the standby node.
	FlowMirroringEnabled bool `json:"flow_mirroring_enabled"`

	// Though UDP is a connectionless protocol, for the purposes of load balancing, all UDP packets with the same flow signature (source and destination IP/ports and IP protocol) received within the idle timeout period are considered to belong to the same connection and are sent to the same backend server. If no packets are received for idle timeout period, the connection (association between flow signature and the selected server) is cleaned up.
	IdleTimeout int64 `json:"idle_timeout,omitempty"`
}

type LbHttpMonitor

type LbHttpMonitor struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// Load balancers monitor the health of backend servers to ensure traffic is not black holed. There are two types of healthchecks: active and passive. Passive healthchecks depend on failures in actual client traffic (e.g. RST from server in response to a client connection) to detect that the server or the application is down. In case of active healthchecks, load balancer itself initiates new connections (or sends ICMP ping) to the servers periodically to check their health, completely independent of any data traffic. Currently, active health monitors are supported for HTTP, HTTPS, TCP, UDP and ICMP protocols.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// num of consecutive checks must fail before marking it down
	FallCount int64 `json:"fall_count,omitempty"`

	// the frequency at which the system issues the monitor check (in second)
	Interval int64 `json:"interval,omitempty"`

	// If the monitor port is specified, it would override pool member port setting for healthcheck. A port range is not supported.
	MonitorPort string `json:"monitor_port,omitempty"`

	// num of consecutive checks must pass before marking it up
	RiseCount int64 `json:"rise_count,omitempty"`

	// the number of seconds the target has in which to respond to the monitor request
	Timeout int64 `json:"timeout,omitempty"`

	// String to send as part of HTTP health check request body. Valid only for certain HTTP methods like POST.
	RequestBody string `json:"request_body,omitempty"`

	// Array of HTTP request headers
	RequestHeaders []LbHttpRequestHeader `json:"request_headers,omitempty"`

	// the health check method for HTTP monitor type
	RequestMethod string `json:"request_method,omitempty"`

	// URL used for HTTP monitor
	RequestUrl string `json:"request_url,omitempty"`

	// HTTP request version
	RequestVersion string `json:"request_version,omitempty"`

	// If HTTP response body match string (regular expressions not supported) is specified (using LbHttpMonitor.response_body) then the healthcheck HTTP response body is matched against the specified string and server is considered healthy only if there is a match. If the response body string is not specified, HTTP healthcheck is considered successful if the HTTP response status code is 2xx, but it can be configured to accept other status codes as successful.
	ResponseBody string `json:"response_body,omitempty"`

	// The HTTP response status code should be a valid HTTP status code.
	ResponseStatusCodes []int32 `json:"response_status_codes,omitempty"`
}

type LbHttpProfile

type LbHttpProfile struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// An application profile can be bound to a virtual server to specify the application protocol characteristics. It is used to influence how load balancing is performed. Currently, three types of application profiles are supported: LbFastTCPProfile, LbFastUDPProfile and LbHttpProfile. LbFastTCPProfile or LbFastUDPProfile is typically used when the application is using a custom protocol or a standard protocol not supported by the load balancer. It is also used in cases where the user only wants L4 load balancing mainly because L4 load balancing has much higher performance and scalability, and/or supports connection mirroring. LbHttpProfile is used for both HTTP and HTTPS applications. Though application rules, if bound to the virtual server, can be used to accomplish the same goal, LbHttpProfile is intended to simplify enabling certain common use cases.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// If a website is temporarily down or has moved, incoming requests for that virtual server can be temporarily redirected to a URL
	HttpRedirectTo string `json:"http_redirect_to,omitempty"`

	// Certain secure applications may want to force communication over SSL, but instead of rejecting non-SSL connections, they may choose to redirect the client automatically to use SSL.
	HttpRedirectToHttps bool `json:"http_redirect_to_https"`

	// It is used to specify the HTTP application idle time out, instead of TCP socket setting which should be configured in TCP profile.
	IdleTimeout int64 `json:"idle_timeout,omitempty"`

	// NTLM is an authentication protocol that can be used over HTTP. If the flag is set to true, LB will use NTLM challenge/response methodology.
	Ntlm bool `json:"ntlm"`

	// If it is not specified, it means that request body size is unlimited.
	RequestBodySize int64 `json:"request_body_size,omitempty"`

	// A request with header larger than request_header_size will be processed as best effort whereas a request with header below this specified size is guaranteed to be processed.
	RequestHeaderSize int64 `json:"request_header_size,omitempty"`

	// If server doesnt send any packet within this time, the connection is closed.
	ResponseTimeout int64 `json:"response_timeout,omitempty"`

	// insert or replace x_forwarded_for
	XForwardedFor string `json:"x_forwarded_for,omitempty"`
}

type LbHttpRedirectAction

type LbHttpRedirectAction struct {

	// Type of load balancer rule action
	Type_ string `json:"type"`

	// HTTP response status code
	RedirectStatus string `json:"redirect_status"`

	// The URL that the HTTP request is redirected to
	RedirectUrl string `json:"redirect_url"`
}

This action is used to redirect HTTP request messages to a new URL. The reply_status value specified in this action is used as the status code of HTTP response message which is sent back to client (Normally a browser). The HTTP status code for redirection is 3xx, for example, 301, 302, 303, 307, etc. The redirect_url is the new URL that the HTTP request message is redirected to. Normally browser will send another HTTP request to the new URL after receiving a redirection response message. Captured variables and built-in variables can be used in redirect_url field. For example, to redirect all HTTP requests to HTTPS requests for a virtual server. We create an LbRule without any conditions, add an LbHttpRedirectAction to the rule. Set the redirect_url field of the LbHttpRedirectAction to: https://$_host$_request_uri And set redirect_status to \"302\", which means found. This rule will redirect all HTTP requests to HTTPS server port on the same host.

type LbHttpRejectAction

type LbHttpRejectAction struct {

	// Type of load balancer rule action
	Type_ string `json:"type"`

	// Response message
	ReplyMessage string `json:"reply_message,omitempty"`

	// HTTP response status code
	ReplyStatus string `json:"reply_status"`
}

This action is used to reject HTTP request messages. The specified reply_status value is used as the status code for the corresponding HTTP response message which is sent back to client (Normally a browser) indicating the reason it was rejected. Reference official HTTP status code list for your specific HTTP version to set the reply_status properly. LbHttpRejectAction does not support variables.

type LbHttpRequestBodyCondition

type LbHttpRequestBodyCondition struct {

	// A flag to indicate whether reverse the match result of this condition
	Inverse bool `json:"inverse"`

	// Type of load balancer rule condition
	Type_ string `json:"type"`

	// HTTP request body
	BodyValue string `json:"body_value"`

	// If true, case is significant when comparing HTTP body value.
	CaseSensitive bool `json:"case_sensitive"`

	// Match type of HTTP body
	MatchType string `json:"match_type,omitempty"`
}

This condition is used to match the message body of an HTTP request. Typically, only HTTP POST, PATCH, or PUT requests have request body. The match_type field defines how body_value field is used to match the body of HTTP requests.

type LbHttpRequestCookieCondition

type LbHttpRequestCookieCondition struct {

	// A flag to indicate whether reverse the match result of this condition
	Inverse bool `json:"inverse"`

	// Type of load balancer rule condition
	Type_ string `json:"type"`

	// If true, case is significant when comparing cookie value.
	CaseSensitive bool `json:"case_sensitive"`

	// Name of cookie
	CookieName string `json:"cookie_name"`

	// Value of cookie
	CookieValue string `json:"cookie_value"`

	// Match type of cookie value
	MatchType string `json:"match_type,omitempty"`
}

This condition is used to match HTTP request messages by cookie which is a specific type of HTTP header. The match_type and case_sensitive define how to compare cookie value.

type LbHttpRequestHeader

type LbHttpRequestHeader struct {

	// Name of HTTP request header
	HeaderName string `json:"header_name"`

	// Value of HTTP request header
	HeaderValue string `json:"header_value"`
}

type LbHttpRequestHeaderCondition

type LbHttpRequestHeaderCondition struct {

	// A flag to indicate whether reverse the match result of this condition
	Inverse bool `json:"inverse"`

	// Type of load balancer rule condition
	Type_ string `json:"type"`

	// If true, case is significant when comparing HTTP header value.
	CaseSensitive bool `json:"case_sensitive"`

	// Name of HTTP header
	HeaderName string `json:"header_name"`

	// Value of HTTP header
	HeaderValue string `json:"header_value"`

	// Match type of HTTP header value
	MatchType string `json:"match_type,omitempty"`
}

This condition is used to match HTTP request messages by HTTP header fields. HTTP header fields are components of the header section of HTTP request and response messages. They define the operating parameters of an HTTP transaction. For example, Cookie, Authorization, User-Agent, etc. One condition can be used to match one header field, to match multiple header fields, multiple conditions must be specified. The match_type field defines how header_value field is used to match HTTP requests. The header_name field does not support match types.

type LbHttpRequestHeaderRewriteAction

type LbHttpRequestHeaderRewriteAction struct {

	// Type of load balancer rule action
	Type_ string `json:"type"`

	// Name of HTTP request header
	HeaderName string `json:"header_name"`

	// Value of HTTP request header
	HeaderValue string `json:"header_value"`
}

This action is used to rewrite header fields of matched HTTP request messages to specified new values. One action can be used to rewrite one header field. To rewrite multiple header fields, multiple actions must be defined. Captured variables and built-in variables can be used in the header_value field, header_name field does not support variables.

type LbHttpRequestMethodCondition

type LbHttpRequestMethodCondition struct {

	// A flag to indicate whether reverse the match result of this condition
	Inverse bool `json:"inverse"`

	// Type of load balancer rule condition
	Type_ string `json:"type"`

	// Type of HTTP request method
	Method string `json:"method"`
}

This condition is used to match method of HTTP requests. If the method of an HTTP request is same as the method specified in this condition, the HTTP request match this condition. For example, if the method field is set to GET in this condition, any HTTP request with GET method matches the condition.

type LbHttpRequestUriArgumentsCondition

type LbHttpRequestUriArgumentsCondition struct {

	// A flag to indicate whether reverse the match result of this condition
	Inverse bool `json:"inverse"`

	// Type of load balancer rule condition
	Type_ string `json:"type"`

	// If true, case is significant when comparing URI arguments.
	CaseSensitive bool `json:"case_sensitive"`

	// Match type of URI arguments
	MatchType string `json:"match_type,omitempty"`

	// URI arguments, aka query string of URI.
	UriArguments string `json:"uri_arguments"`
}

This condition is used to match URI arguments aka query string of Http request messages, for example, in URI http://exaple.com?foo=1&bar=2, the \"foo=1&bar=2\" is the query string containing URI arguments. In an URI scheme, query string is indicated by the first question mark (\"?\") character and terminated by a number sign (\"#\") character or by the end of the URI. The uri_arguments field can be specified as a regular expression(Set match_type to REGEX). For example, \"foo=(?<x>\\d+)\". It matches HTTP requests whose URI arguments containing \"foo\", the value of foo contains only digits. And the value of foo is captured as $x which can be used in LbRuleAction fields which support variables.

type LbHttpRequestUriCondition

type LbHttpRequestUriCondition struct {

	// A flag to indicate whether reverse the match result of this condition
	Inverse bool `json:"inverse"`

	// Type of load balancer rule condition
	Type_ string `json:"type"`

	// If true, case is significant when comparing URI.
	CaseSensitive bool `json:"case_sensitive"`

	// Match type of URI
	MatchType string `json:"match_type,omitempty"`

	// A string used to identify resource
	Uri string `json:"uri"`
}

This condition is used to match URIs(Uniform Resource Identifier) of HTTP request messages. The URI field can be specified as a regular expression. If an HTTP request message is requesting an URI which matches specified regular expression, it matches the condition. The syntax of whole URI looks like this: scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment] This condition matches only the path part of entire URI. When match_type field is specified as REGEX, the uri field is used as a regular expression to match URI path of HTTP requests. For example, to match any URI that has \"/image/\" or \"/images/\", uri field can be specified as: \"/image[s]?/\". Named capturing groups can be used in the uri field to capture substrings of matched URIs and store them in variables for use in LbRuleAction. For example, specify uri field as: \"/news/(?<year>\\d+)/(?<month>\\d+)/(?<article>.*)\" If the URI path is /articles/news/2017/06/xyz.html, then substring \"2017\" is captured in variable year, \"06\" is captured in variable month, and \"xyz.html\" is captured in variable article. These variables can then be used in an LbRuleAction field which supports variables, such as uri field of LbHttpRequestUriRewriteAction. For example, set the uri field of LbHttpRequestUriRewriteAction as: \"/articles/news/$year-$month-$article\" Then the URI path /articles/news/2017/06/xyz.html is rewritten to: \"/articles/news/2017-06-xyz.html\"

type LbHttpRequestUriRewriteAction

type LbHttpRequestUriRewriteAction struct {

	// Type of load balancer rule action
	Type_ string `json:"type"`

	// URI of HTTP request
	Uri string `json:"uri"`

	// Query string of URI, typically contains key value pairs, for example: foo1=bar1&foo2=bar2
	UriArguments string `json:"uri_arguments,omitempty"`
}

This action is used to rewrite URIs in matched HTTP request messages. Specify the uri and uri_arguments fields in this condition to rewrite the matched HTTP request message's URI and URI arguments to the new values. Full URI scheme of HTTP messages have following syntax: scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment] The uri field of this action is used to rewrite the /path part in above scheme. And the uri_arguments field is used to rewrite the query part. Captured variables and built-in variables can be used in the uri and uri_arguments fields. Check the example in LbRuleAction to see how to use variables in this action.

type LbHttpRequestVersionCondition

type LbHttpRequestVersionCondition struct {

	// A flag to indicate whether reverse the match result of this condition
	Inverse bool `json:"inverse"`

	// Type of load balancer rule condition
	Type_ string `json:"type"`

	// HTTP version
	Version string `json:"version"`
}

This condition is used to match the HTTP protocol version of the HTTP request messages.

type LbHttpResponseHeaderCondition

type LbHttpResponseHeaderCondition struct {

	// A flag to indicate whether reverse the match result of this condition
	Inverse bool `json:"inverse"`

	// Type of load balancer rule condition
	Type_ string `json:"type"`

	// If true, case is significant when comparing HTTP header value.
	CaseSensitive bool `json:"case_sensitive"`

	// Name of HTTP header field
	HeaderName string `json:"header_name"`

	// Value of HTTP header field
	HeaderValue string `json:"header_value"`

	// Match type of HTTP header value
	MatchType string `json:"match_type,omitempty"`
}

This condition is used to match HTTP response messages from backend servers by HTTP header fields. HTTP header fields are components of the header section of HTTP request and response messages. They define the operating parameters of an HTTP transaction. For example, Cookie, Authorization, User-Agent, etc. One condition can be used to match one header field, to match multiple header fields, multiple conditions must be specified. The match_type field defines how header_value field is used to match HTTP responses. The header_name field does not support match types.

type LbHttpResponseHeaderRewriteAction

type LbHttpResponseHeaderRewriteAction struct {

	// Type of load balancer rule action
	Type_ string `json:"type"`

	// Name of a header field of HTTP request message
	HeaderName string `json:"header_name"`

	// Value of header field
	HeaderValue string `json:"header_value"`
}

This action is used to rewrite header fields of HTTP response messages to specified new values at HTTP_RESPONSE_REWRITE phase. One action can be used to rewrite one header field. To rewrite multiple header fields, multiple actions must be defined. Captured variables and built-in variables can be used in the header_value field, header_name field does not support variables.

type LbHttpsMonitor

type LbHttpsMonitor struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// Load balancers monitor the health of backend servers to ensure traffic is not black holed. There are two types of healthchecks: active and passive. Passive healthchecks depend on failures in actual client traffic (e.g. RST from server in response to a client connection) to detect that the server or the application is down. In case of active healthchecks, load balancer itself initiates new connections (or sends ICMP ping) to the servers periodically to check their health, completely independent of any data traffic. Currently, active health monitors are supported for HTTP, HTTPS, TCP, UDP and ICMP protocols.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// num of consecutive checks must fail before marking it down
	FallCount int64 `json:"fall_count,omitempty"`

	// the frequency at which the system issues the monitor check (in second)
	Interval int64 `json:"interval,omitempty"`

	// If the monitor port is specified, it would override pool member port setting for healthcheck. A port range is not supported.
	MonitorPort string `json:"monitor_port,omitempty"`

	// num of consecutive checks must pass before marking it up
	RiseCount int64 `json:"rise_count,omitempty"`

	// the number of seconds the target has in which to respond to the monitor request
	Timeout int64 `json:"timeout,omitempty"`

	// authentication depth is used to set the verification depth in the server certificates chain.
	CertificateChainDepth int64 `json:"certificate_chain_depth,omitempty"`

	// supported SSL cipher list to servers
	Ciphers []string `json:"ciphers,omitempty"`

	// client certificate can be specified to support client authentication.
	ClientCertificateId string `json:"client_certificate_id,omitempty"`

	// This flag is set to true when all the ciphers and protocols are secure. It is set to false when one of the ciphers or protocols is insecure.
	IsSecure bool `json:"is_secure,omitempty"`

	// SSL versions TLS1.1 and TLS1.2 are supported and enabled by default. SSLv2, SSLv3, and TLS1.0 are supported, but disabled by default.
	Protocols []string `json:"protocols,omitempty"`

	// String to send as part of HTTP health check request body. Valid only for certain HTTP methods like POST.
	RequestBody string `json:"request_body,omitempty"`

	// Array of HTTP request headers
	RequestHeaders []LbHttpRequestHeader `json:"request_headers,omitempty"`

	// the health check method for HTTP monitor type
	RequestMethod string `json:"request_method,omitempty"`

	// URL used for HTTP monitor
	RequestUrl string `json:"request_url,omitempty"`

	// HTTP request version
	RequestVersion string `json:"request_version,omitempty"`

	// If HTTP response body match string (regular expressions not supported) is specified (using LbHttpMonitor.response_body) then the healthcheck HTTP response body is matched against the specified string and server is considered healthy only if there is a match. If the response body string is not specified, HTTP healthcheck is considered successful if the HTTP response status code is 2xx, but it can be configured to accept other status codes as successful.
	ResponseBody string `json:"response_body,omitempty"`

	// The HTTP response status code should be a valid HTTP status code.
	ResponseStatusCodes []int32 `json:"response_status_codes,omitempty"`

	// server authentication mode
	ServerAuth string `json:"server_auth,omitempty"`

	// If server auth type is REQUIRED, server certificate must be signed by one of the trusted Certificate Authorities (CAs), also referred to as root CAs, whose self signed certificates are specified.
	ServerAuthCaIds []string `json:"server_auth_ca_ids,omitempty"`

	// A Certificate Revocation List (CRL) can be specified in the server-side SSL profile binding to disallow compromised server certificates.
	ServerAuthCrlIds []string `json:"server_auth_crl_ids,omitempty"`
}

type LbIcmpMonitor

type LbIcmpMonitor struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// Load balancers monitor the health of backend servers to ensure traffic is not black holed. There are two types of healthchecks: active and passive. Passive healthchecks depend on failures in actual client traffic (e.g. RST from server in response to a client connection) to detect that the server or the application is down. In case of active healthchecks, load balancer itself initiates new connections (or sends ICMP ping) to the servers periodically to check their health, completely independent of any data traffic. Currently, active health monitors are supported for HTTP, HTTPS, TCP, UDP and ICMP protocols.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// num of consecutive checks must fail before marking it down
	FallCount int64 `json:"fall_count,omitempty"`

	// the frequency at which the system issues the monitor check (in second)
	Interval int64 `json:"interval,omitempty"`

	// If the monitor port is specified, it would override pool member port setting for healthcheck. A port range is not supported.
	MonitorPort string `json:"monitor_port,omitempty"`

	// num of consecutive checks must pass before marking it up
	RiseCount int64 `json:"rise_count,omitempty"`

	// the number of seconds the target has in which to respond to the monitor request
	Timeout int64 `json:"timeout,omitempty"`

	// The data size(in byte) of the ICMP healthcheck packet
	DataLength int64 `json:"data_length,omitempty"`
}

type LbIpHeaderCondition

type LbIpHeaderCondition struct {

	// A flag to indicate whether reverse the match result of this condition
	Inverse bool `json:"inverse"`

	// Type of load balancer rule condition
	Type_ string `json:"type"`

	// Source IP address of HTTP message
	SourceAddress string `json:"source_address"`
}

This condition is used to match IP header fields of HTTP messages. Currently, only the source IP address is supported. IP addresses can be expressed as a single IP address like 10.1.1.1, or a range of IP addresses like 10.1.1.101-10.1.1.160. Both IPv4 and IPv6 addresses are supported.

type LbMonitor

type LbMonitor struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// Load balancers monitor the health of backend servers to ensure traffic is not black holed. There are two types of healthchecks: active and passive. Passive healthchecks depend on failures in actual client traffic (e.g. RST from server in response to a client connection) to detect that the server or the application is down. In case of active healthchecks, load balancer itself initiates new connections (or sends ICMP ping) to the servers periodically to check their health, completely independent of any data traffic. Currently, active health monitors are supported for HTTP, HTTPS, TCP, UDP and ICMP protocols.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`
}

type LbMonitorListResult

type LbMonitorListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// paginated list of load balancer monitors
	Results []LbMonitor `json:"results"`
}

type LbPassiveMonitor

type LbPassiveMonitor struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// Load balancers monitor the health of backend servers to ensure traffic is not black holed. There are two types of healthchecks: active and passive. Passive healthchecks depend on failures in actual client traffic (e.g. RST from server in response to a client connection) to detect that the server or the application is down. In case of active healthchecks, load balancer itself initiates new connections (or sends ICMP ping) to the servers periodically to check their health, completely independent of any data traffic. Currently, active health monitors are supported for HTTP, HTTPS, TCP, UDP and ICMP protocols.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// When the consecutive failures reach this value, then the member is considered temporarily unavailable for a configurable period
	MaxFails int64 `json:"max_fails,omitempty"`

	// After this timeout period, the member is tried again for a new connection to see if it is available.
	Timeout int64 `json:"timeout,omitempty"`
}

type LbPersistenceCookieTime

type LbPersistenceCookieTime struct {

	// Both session cookie and persistence cookie are supported, Use LbSessionCookieTime for session cookie time setting, Use LbPersistenceCookieTime for persistence cookie time setting
	Type_ string `json:"type"`

	// HTTP cookie max-age to expire cookie, only available for insert mode.
	CookieMaxIdle int64 `json:"cookie_max_idle"`
}

type LbPersistenceProfile

type LbPersistenceProfile struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// Source-ip persistence ensures all connections from a client (identified by IP address) are sent to the same backend server for a specified period. Cookie persistence allows related client connections, identified by the same cookie in HTTP requests, to be redirected to the same server.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// If persistence shared flag is not set in the cookie persistence profile bound to a virtual server, it defaults to cookie persistence that is private to each virtual server and is qualified by the pool. This is accomplished by load balancer inserting a cookie with name in the format <name>.<virtual_server_id>.<pool_id>. If persistence shared flag is set in the cookie persistence profile, in cookie insert mode, cookie persistence could be shared across multiple virtual servers that are bound to the same pools. The cookie name would be changed to <name>.<profile-id>.<pool-id>. If persistence shared flag is not set in the sourceIp persistence profile bound to a virtual server, each virtual server that the profile is bound to maintains its own private persistence table. If persistence shared flag is set in the sourceIp persistence profile, all virtual servers the profile is bound to share the same persistence table.
	PersistenceShared bool `json:"persistence_shared"`
}

type LbPersistenceProfileListResult

type LbPersistenceProfileListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// paginated list of load balancer persistence profiles
	Results []LbPersistenceProfile `json:"results"`
}

type LbPool

type LbPool struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// The type of this resource.
	ResourceType string `json:"resource_type,omitempty"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// In case of active healthchecks, load balancer itself initiates new connections (or sends ICMP ping) to the servers periodically to check their health, completely independent of any data traffic. Active healthchecks are disabled by default and can be enabled for a server pool by binding a health monitor to the pool. Currently, only one active health monitor can be configured per server pool.
	ActiveMonitorIds []string `json:"active_monitor_ids,omitempty"`

	// Load balancing algorithm, configurable per pool controls how the incoming connections are distributed among the members.
	Algorithm string `json:"algorithm,omitempty"`

	// Load balancer pool support grouping object as dynamic pool members. When member group is defined, members setting should not be specified.
	MemberGroup *PoolMemberGroup `json:"member_group,omitempty"`

	// Server pool consists of one or more pool members. Each pool member is identified, typically, by an IP address and a port.
	Members []PoolMember `json:"members,omitempty"`

	// A pool is considered active if there are at least certain minimum number of members.
	MinActiveMembers int64 `json:"min_active_members,omitempty"`

	// Passive healthchecks are disabled by default and can be enabled by attaching a passive health monitor to a server pool. Each time a client connection to a pool member fails, its failed count is incremented. For pools bound to L7 virtual servers, a connection is considered to be failed and failed count is incremented if any TCP connection errors (e.g. TCP RST or failure to send data) or SSL handshake failures occur. For pools bound to L4 virtual servers, if no response is received to a TCP SYN sent to the pool member or if a TCP RST is received in response to a TCP SYN, then the pool member is considered to have failed and the failed count is incremented.
	PassiveMonitorId string `json:"passive_monitor_id,omitempty"`

	// Depending on the topology, Source NAT (SNAT) may be required to ensure traffic from the server destined to the client is received by the load balancer. SNAT can be enabled per pool. If SNAT is not enabled for a pool, then load balancer uses the client IP and port (spoofing) while establishing connections to the servers. This is referred to as no-SNAT or TRANSPARENT mode.
	SnatTranslation *LbSnatTranslation `json:"snat_translation,omitempty"`

	// TCP multiplexing allows the same TCP connection between load balancer and the backend server to be used for sending multiple client requests from different client TCP connections.
	TcpMultiplexingEnabled bool `json:"tcp_multiplexing_enabled,omitempty"`

	// The maximum number of TCP connections per pool that are idly kept alive for sending future client requests.
	TcpMultiplexingNumber int64 `json:"tcp_multiplexing_number,omitempty"`
}

type LbPoolListResult

type LbPoolListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// paginated list of pools
	Results []LbPool `json:"results"`
}

type LbPoolMemberStatistics

type LbPoolMemberStatistics struct {
	// Pool member IP Address
	IPAddress string `json:"ip_address"`

	// Pool member port
	Port string `json:"port,omitempty"`

	// Pool member statistics counter
	Statistics LbStatisticsCounter `json:"statistics"`
}

type LbPoolMemberStatus

type LbPoolMemberStatus struct {

	// The healthcheck failure cause when status is DOWN
	FailureCause string `json:"failure_cause,omitempty"`

	// Pool member status
	IPAddress string `json:"ip_address"`

	LastCheckTime int64 `json:"last_check_time,omitempty"`

	LastStateChangeTime int64 `json:"last_state_change_time,omitempty"`

	// Pool member port
	Port string `json:"port,omitempty"`

	// Pool member status
	Status string `json:"status"`
}

type LbPoolStatistics

type LbPoolStatistics struct {
	// Timestamp when the data was last updated
	LastUpdateTimestamp int64 `json:"last_update_timestamp,omitempty"`

	// Statistics of load balancer pool members
	Members []LbPoolMemberStatistics `json:"members,omitempty"`

	// Load balancer pool identifier
	PoolId string `json:"pool_id"`

	// Load balancer statistics counter
	Statistics LbStatisticsCounter `json:"statistics"`
}

type LbPoolStatus

type LbPoolStatus struct {

	// Timestamp when the data was last updated
	LastUpdateTimestamp int64 `json:"last_update_timestamp,omitempty"`

	// Status of load balancer pool members
	Members []LbPoolMemberStatus `json:"members,omitempty"`

	// Load balancer pool identifier
	PoolId string `json:"pool_id"`

	// Virtual server status
	Status string `json:"status"`
}

type LbRule

type LbRule struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// The type of this resource.
	ResourceType string `json:"resource_type,omitempty"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// A list of actions to be executed at specified phase when load balancer rule matches. The actions are used to manipulate application traffic, such as rewrite URI of HTTP messages, redirect HTTP messages, etc.
	Actions []LbRuleAction `json:"actions"`

	// A list of match conditions used to match application traffic. Multiple match conditions can be specified in one load balancer rule, each match condition defines a criterion to match application traffic. If no match conditions are specified, then the load balancer rule will always match and it is used typically to define default rules. If more than one match condition is specified, then match strategy determines if all conditions should match or any one condition should match for the load balancer rule to considered a match.
	MatchConditions []LbRuleCondition `json:"match_conditions,omitempty"`

	// Strategy to define how load balancer rule is considered a match when multiple match conditions are specified in one rule. If match_stragety is set to ALL, then load balancer rule is considered a match only if all the conditions match. If match_strategy is set to ANY, then load balancer rule is considered a match if any one of the conditions match.
	MatchStrategy string `json:"match_strategy"`

	// Each load balancer rule is used at a specific phase of load balancer processing. Currently three phases are supported, HTTP_REQUEST_REWRITE, HTTP_FORWARDING and HTTP_RESPONSE_REWRITE. When an HTTP request message is received by load balancer, all HTTP_REQUEST_REWRITE rules, if present are executed in the order they are applied to virtual server. And then if HTTP_FORWARDING rules present, only first matching rule's action is executed, remaining rules are not checked. HTTP_FORWARDING rules can have only one action. If the request is forwarded to a backend server and the response goes back to load balancer, all HTTP_RESPONSE_REWRITE rules, if present, are executed in the order they are applied to the virtual server.
	Phase string `json:"phase"`
}

Load balancer rules allow customization of load balancing behavior using match/action rules. Currently, load balancer rules are supported for only layer 7 virtual servers with application profile LbHttpProfile. Each application rule consists of one or more match conditions and one or more actions. Load balancer rules could be used by different load balancer services.

type LbRuleAction

type LbRuleAction struct {

	// Type of load balancer rule action
	Type_ string `json:"type"`

	// Name of HTTP request header
	HeaderName string `json:"header_name,omitempty"`

	// Value of HTTP request header
	HeaderValue string `json:"header_value,omitempty"`

	// URI of HTTP request
	Uri string `json:"uri,omitempty"`

	// Query string of URI, typically contains key value pairs, for example: foo1=bar1&foo2=bar2
	UriArguments string `json:"uri_arguments,omitempty"`

	// HTTP response status code for type LbHttpRejectAction
	ReplyStatus string `json:"reply_status,omitempty"`

	// Response message for type LbHttpRejectAction
	ReplyMessage string `json:"reply_message,omitempty"`

	// HTTP response status code for type LbHttpRedirectAction
	RedirectStatus string `json:"redirect_status,omitempty"`

	// The URL that the HTTP request is redirected to for type LbHttpRedirectAction
	RedirectUrl string `json:"redirect_url,omitempty"`

	// UUID of load balancer pool for type LbSelectPoolAction
	PoolId string `json:"pool_id,omitempty"`
}

Load balancer rule actions are used to manipulate application traffic. Currently load balancer rules can be used at three load balancer processing phases. Each phase has its own supported type of actions. Supported actions in HTTP_REQUST_REWRITE phase are: LbHttpRequestUriRewriteAction LbHttpRequestHeaderRewriteAction Supported actions in HTTP_FORWARDING phase are: LbHttpRejectAction LbHttpRedirectAction LbSelectPoolAction LbSelectServerAction Supported action in HTTP_RESPONSE_REWRITE phase is: LbHttpResponseHeaderRewriteAction If the match type of an LbRuleCondition field is specified as REGEX and named capturing groups are used in the specified regular expression. The groups can be used as variables in LbRuleAction fields. For example, define a rule with LbHttpRequestUriCondition as match condition and LbHttpRequestUriRewriteAction as action. Set match_type field of LbHttpRequestUriCondition to REGEX, and set uri field to \"/news/(?<year>\\d+)/(?<month>\\d+)/(?<article>.*)\". Set uri field of LbHttpRequestUriRewriteAction to: \"/news/$year-$month/$article\" In uri field of LbHttpRequestUriCondition, the (?<year>\\d+), (?<month>\\d+) and (?<article>.*) are named capturing groups, they define variables named $year, $month and $article respectively. The defined variables are used in LbHttpRequestUriRewriteAction. For a matched HTTP request with URI \"/news/2017/06/xyz.html\", the substring \"2017\" is captured in variable $year, \"06\" is captured in variable $month, and \"xyz.html\" is captured in variable $article. The LbHttpRequestUriRewriteAction will rewrite the URI to: \"/news/2017-06/xyz.html\" A set of built-in variables can be used in LbRuleAction as well. The name of built-in variables start with underscore, the name of user defined variables is not allowed to start with underscore. Following are some of the built-in variables: $_scheme: Reference the scheme part of matched HTTP messages, could be \"http\" or \"https\". $_host: Host of matched HTTP messages, for example \"www.example.com\". $_server_port: Port part of URI, it is also the port of the server which accepted a request. Default port is 80 for http and 443 for https. $_uri: The URI path, for example \"/products/sample.html\". $_request_uri: Full original request URI with arguments, for example, \"/products/sample.html?a=b&c=d\". $_args: URI arguments, for instance \"a=b&c=d\" $_is_args: \"?\" if a request has URI arguments, or an empty string otherwise. For the full list of built-in variables, please reference the NSX-T Administrator's Guide.

type LbRuleCondition

type LbRuleCondition struct {

	// A flag to indicate whether reverse the match result of this condition
	Inverse bool `json:"inverse"`

	// Type of load balancer rule condition
	Type_ string `json:"type"`

	// Source IP address of HTTP message
	SourceAddress string `json:"source_address,omitempty"`

	// TCP source port of HTTP message
	SourcePort string `json:"source_port,omitempty"`

	// HTTP version
	Version string `json:"version,omitempty"`

	// Type of HTTP request method
	Method string `json:"method,omitempty"`

	// If true, case is significant
	CaseSensitive *bool `json:"case_sensitive,omitempty"`

	// Match type
	MatchType string `json:"match_type,omitempty"`

	// A string used to identify resource
	Uri string `json:"uri,omitempty"`

	// URI arguments, aka query string of URI.
	UriArguments string `json:"uri_arguments,omitempty"`

	// Name of HTTP header
	HeaderName string `json:"header_name,omitempty"`

	// Value of HTTP header
	HeaderValue string `json:"header_value,omitempty"`

	// Name of cookie
	CookieName string `json:"cookie_name,omitempty"`

	// Value of cookie
	CookieValue string `json:"cookie_value,omitempty"`

	// HTTP request body
	BodyValue string `json:"body_value,omitempty"`
}

Match conditions are used to match application traffic passing through load balancers. Multiple match conditions can be specified in one load balancer rule, each match condition defines a criterion for application traffic. If inverse field is set to true, the match result of the condition is inverted. If more than one match condition is specified, match strategy determines if all conditions should match or any one condition should match for the load balancer rule to be considered a match. Currently only HTTP messages are supported by load balancer rules. Each load balancer rule is used at a specific phase of load balancer processing. Currently three phases are supported, HTTP_REQUEST_REWRITE, HTTP_FORWARDING and HTTP_RESPONSE_REWRITE. Each phase supports certain types of match conditions, supported match conditions in HTTP_REQUEST_REWRITE phase are: LbHttpRequestMethodCondition LbHttpRequestUriCondition LbHttpRequestUriArgumentsCondition LbHttpRequestVersionCondition LbHttpRequestHeaderCondition LbHttpRequestCookieCondition LbHttpRequestBodyCondition LbTcpHeaderCondition LbIpHeaderCondition Supported match conditions in HTTP_FORWARDING phase are: LbHttpRequestMethodCondition LbHttpRequestUriCondition LbHttpRequestVersionCondition LbHttpRequestHeaderCondition LbHttpRequestCookieCondition LbHttpRequestBodyCondition LbTcpHeaderCondition LbIpHeaderCondition Supported match condition in HTTP_RESPONSE_REWRITE phase is: LbHttpResponseHeaderCondition

type LbRuleListResult

type LbRuleListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// paginated list of LB rules
	Results []LbRule `json:"results"`
}

type LbSelectPoolAction

type LbSelectPoolAction struct {

	// Type of load balancer rule action
	Type_ string `json:"type"`

	// UUID of load balancer pool
	PoolId string `json:"pool_id"`
}

This action is used to select a pool for matched HTTP request messages. The pool is specified by UUID. The matched HTTP request messages are forwarded to the specified pool.

type LbSelectServerAction

type LbSelectServerAction struct {

	// Type of load balancer rule action
	Type_ string `json:"type"`

	// IP address of selected backend server
	Ip string `json:"ip"`

	// UUID of load balancer pool
	PoolId string `json:"pool_id"`

	// This field is not required when the pool_id and ip fields can uniquely identify a pool member and the port of backend service is same as the port of virtual server. Otherwise, this port field must be specified.
	Port string `json:"port,omitempty"`
}

This action is used to select a backend server for matched HTTP request messages. Matched HTTP request messages are forwarded to the specified backend server. The ip and port fields must be specified as single values, IP range and port range are not supported.

type LbServerSslProfile

type LbServerSslProfile struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// The type of this resource.
	ResourceType string `json:"resource_type,omitempty"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// supported SSL cipher list to client side
	Ciphers []string `json:"ciphers,omitempty"`

	// This flag is set to true when all the ciphers and protocols are secure. It is set to false when one of the ciphers or protocols is insecure.
	IsSecure bool `json:"is_secure,omitempty"`

	// SSL versions TLS1.1 and TLS1.2 are supported and enabled by default. SSLv2, SSLv3, and TLS1.0 are supported, but disabled by default.
	Protocols []string `json:"protocols,omitempty"`

	// SSL session caching allows SSL client and server to reuse previously negotiated security parameters avoiding the expensive public key operation during handshake.
	SessionCacheEnabled bool `json:"session_cache_enabled"`
}

type LbServerSslProfileListResult

type LbServerSslProfileListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// paginated list of load balancer server SSL profiles
	Results []LbServerSslProfile `json:"results"`
}

type LbService

type LbService struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// The type of this resource.
	ResourceType string `json:"resource_type,omitempty"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// whether access log is enabled
	AccessLogEnabled bool `json:"access_log_enabled"`

	// LBS could be instantiated (or created) on the Logical router, etc. Typically, it could be applied to Tier1 LogicalRouter. It can be attached to Tier0 LogicalRouter either in non-multi-tenant environments or to provide load balancing for infrastructure services offered by the provider.
	Attachment *common.ResourceReference `json:"attachment,omitempty"`

	// whether the load balancer service is enabled
	Enabled bool `json:"enabled"`

	// Load balancer engine writes information about encountered issues of different severity levels to the error log. This setting is used to define the severity level of the error log.
	ErrorLogLevel string `json:"error_log_level,omitempty"`

	// the size of load balancer service
	Size string `json:"size,omitempty"`

	// virtual servers can be associated to LbService(which is similar to physical/virtual load balancer), Lb virtual servers, pools and other entities could be defined independently, the virtual server identifier list here would be used to maintain the relationship of LbService and other Lb entities.
	VirtualServerIds []string `json:"virtual_server_ids,omitempty"`
}

type LbServiceDebugInfo

type LbServiceDebugInfo struct {

	// The application profiles are associated to virtual servers
	ApplicationProfiles []LbAppProfile `json:"application_profiles,omitempty"`

	// The client SSL profiles are associated to virtual servers
	ClientSslProfiles []LbClientSslProfile `json:"client_ssl_profiles,omitempty"`

	// The load balancer monitors are associated to pools.
	Monitors []LbMonitor `json:"monitors,omitempty"`

	// The persistence profiles are associated to virtual servers
	PersistenceProfiles []LbPersistenceProfile `json:"persistence_profiles,omitempty"`

	// The pools which are associated to the given load balancer service would be included. The pools could be defined in virtual server default pool, sorry pool or load balancer rule action.
	Pools []LbPool `json:"pools,omitempty"`

	// The load balancer rules are associated to virtual servers
	Rules []LbRule `json:"rules,omitempty"`

	// The server SSL profiles are associated to virtual servers
	ServerSslProfiles []LbServerSslProfile `json:"server_ssl_profiles,omitempty"`

	// Load balancer service setting for a given load balancer service identifier.
	Service *LbService `json:"service,omitempty"`

	// The TCP profiles are associated to virtual servers
	TcpProfiles []LbTcpProfile `json:"tcp_profiles,omitempty"`

	// The virtual servers which are associated to the given load balancer service would be included.
	VirtualServers []LbVirtualServer `json:"virtual_servers,omitempty"`
}

The information for a given load balancer service could be used for debugging and troubleshooting. It includes load balancer service, associated virtual servers, associated pools, associated profiles such as persistence, SSL, application, associated monitors and associated rules.

type LbServiceListResult

type LbServiceListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// paginated list of load balancer services
	Results []LbService `json:"results"`
}

type LbServiceStatistics

type LbServiceStatistics struct {
	// Timestamp when the data was last updated
	LastUpdateTimestamp int64 `json:"last_update_timestamp,omitempty"`

	// Statistics of load balancer pools
	Pools []LbPoolStatistics `json:"pools,omitempty"`

	// Load balancer service identifier
	ServiceId string `json:"service_id"`

	// Load balancer service statistics counter
	Statistics LbServiceStatisticsCounter `json:"statistics,omitempty"`

	// Statistics of load balancer virtual servers
	VirtualServes []LbVirtualServerStatistics `json:"virtual_servers,omitempty"`
}

type LbServiceStatisticsCounter

type LbServiceStatisticsCounter struct {
	// Number of l4 current sessions
	L4CurrentSessions int64 `json:"l4_current_sessions,omitempty"`

	// The average number of l4 current sessions per second, the number is averaged over the last 5 one-second intervals.
	L4CurrentSessionRate float64 `json:"l4_current_session_rate,omitempty"`

	// Number of l4 maximum sessions
	L4MaxSessions int64 `json:"l4_max_sessions,omitempty"`

	// Number of l4 total sessions
	L4TotalSessions int64 `json:"l4_total_sessions,omitempty"`

	// Number of l7 current sessions
	L7CurrentSessions int64 `json:"l7_current_sessions,omitempty"`

	// The average number of l7 current sessions per second, the number is averaged over the last 5 one-second intervals.
	L7CurrentSessionRate float64 `json:"l7_current_session_rate,omitempty"`

	// Number of l7 maximum sessions
	L7MaxSessions int64 `json:"l7_max_sessions,omitempty"`

	// Number of l7 total sessions
	L7TotalSessions int64 `json:"l7_total_sessions,omitempty"`
}

type LbServiceStatus

type LbServiceStatus struct {

	// Ids of load balancer service related active transport nodes
	ActiveTransportNodes []string `json:"active_transport_nodes,omitempty"`

	// Cpu usage in percentage
	CPUUsage int64 `json:"cpu_usage"`

	// Cpu usage in percentage
	ErrorMessage string `json:"error_message,omitempty"`

	// Timestamp when the data was last updated
	LastUpdateTimestamp int64 `json:"last_update_timestamp,omitempty"`

	// Memory usage in percentage
	MemoryUsage int64 `json:"memory_usage"`

	// status of load balancer pools
	Pools []LbPoolStatus `json:"pools,omitempty"`

	// Load balancer service identifier
	ServiceId string `json:"service_id"`

	// Status of load balancer service
	ServiceStatus string `json:"service_status"`

	// Ids of load balancer service related standby transport nodes
	StandbyTransportNodes []string `json:"standby_transport_nodes,omitempty"`

	// status of load balancer virtual servers
	VirtualServers []LbVirtualServerStatus `json:"virtual_servers,omitempty"`
}

type LbSessionCookieTime

type LbSessionCookieTime struct {

	// Both session cookie and persistence cookie are supported, Use LbSessionCookieTime for session cookie time setting, Use LbPersistenceCookieTime for persistence cookie time setting
	Type_ string `json:"type"`

	// Instead of using HTTP Cookie max-age and relying on client to expire the cookie, max idle time and/or max lifetime of the cookie can be used. Max idle time, if configured, specifies the maximum interval the cookie is valid for from the last time it was seen in a request. It is available for insert mode.
	CookieMaxIdle int64 `json:"cookie_max_idle,omitempty"`

	// Max life time, if configured, specifies the maximum interval the cookie is valid for from the first time the cookie was seen in a request. It is available for insert mode.
	CookieMaxLife int64 `json:"cookie_max_life,omitempty"`
}

type LbSnatAutoMap

type LbSnatAutoMap struct {

	// Both SNAT automap and SNAT IP list modes support port overloading which allows the same SNAT IP and port to be used for multiple backend connections as long as the tuple (source IP, source port, destination IP, destination port, IP protocol) after SNAT is performed is unique. The valid number is 1, 2, 4, 8, 16, 32.
	PortOverload int64 `json:"port_overload,omitempty"`

	// Load balancers may need to perform SNAT to ensure reverse traffic from the server can be received and processed by them. There are two modes: LbSnatAutoMap uses the load balancer interface IP and an ephemeral port as the source IP and port of the server side connection. LbSnatIpPool allows user to specify one or more IP addresses along with their subnet masks that should be used for SNAT while connecting to any of the servers in the pool.
	Type_ string `json:"type"`
}

type LbSnatIpElement

type LbSnatIpElement struct {

	// Ip address or ip range such as 1.1.1.1 or 1.1.1.101-1.1.1.160
	IpAddress string `json:"ip_address"`

	// Subnet prefix length should be not specified if there is only one single IP address or IP range.
	PrefixLength int64 `json:"prefix_length,omitempty"`
}

type LbSnatIpPool

type LbSnatIpPool struct {

	// Both SNAT automap and SNAT IP list modes support port overloading which allows the same SNAT IP and port to be used for multiple backend connections as long as the tuple (source IP, source port, destination IP, destination port, IP protocol) after SNAT is performed is unique. The valid number is 1, 2, 4, 8, 16, 32.
	PortOverload int64 `json:"port_overload,omitempty"`

	// Load balancers may need to perform SNAT to ensure reverse traffic from the server can be received and processed by them. There are two modes: LbSnatAutoMap uses the load balancer interface IP and an ephemeral port as the source IP and port of the server side connection. LbSnatIpPool allows user to specify one or more IP addresses along with their subnet masks that should be used for SNAT while connecting to any of the servers in the pool.
	Type_ string `json:"type"`

	// Currently, only one single IP address or IP range is supported. If an IP range is specified, the range may contain no more than 64 IP addresses.
	IpAddresses []LbSnatIpElement `json:"ip_addresses"`
}

type LbSnatTranslation

type LbSnatTranslation struct {

	// Both SNAT automap and SNAT IP list modes support port overloading which allows the same SNAT IP and port to be used for multiple backend connections as long as the tuple (source IP, source port, destination IP, destination port, IP protocol) after SNAT is performed is unique. The valid number is 1, 2, 4, 8, 16, 32.
	PortOverload int64 `json:"port_overload,omitempty"`

	// Load balancers may need to perform SNAT to ensure reverse traffic from the server can be received and processed by them. There are two modes: LbSnatAutoMap uses the load balancer interface IP and an ephemeral port as the source IP and port of the server side connection. LbSnatIpPool allows user to specify one or more IP addresses along with their subnet masks that should be used for SNAT while connecting to any of the servers in the pool.
	Type_ string `json:"type"`

	// Currently, only one single IP address or IP range is supported. If an IP range is specified, the range may contain no more than 64 IP addresses.
	IpAddresses []LbSnatIpElement `json:"ip_addresses,omitempty"`
}

type LbSourceIpPersistenceProfile

type LbSourceIpPersistenceProfile struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// Source-ip persistence ensures all connections from a client (identified by IP address) are sent to the same backend server for a specified period. Cookie persistence allows related client connections, identified by the same cookie in HTTP requests, to be redirected to the same server.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// If persistence shared flag is not set in the cookie persistence profile bound to a virtual server, it defaults to cookie persistence that is private to each virtual server and is qualified by the pool. This is accomplished by load balancer inserting a cookie with name in the format <name>.<virtual_server_id>.<pool_id>. If persistence shared flag is set in the cookie persistence profile, in cookie insert mode, cookie persistence could be shared across multiple virtual servers that are bound to the same pools. The cookie name would be changed to <name>.<profile-id>.<pool-id>. If persistence shared flag is not set in the sourceIp persistence profile bound to a virtual server, each virtual server that the profile is bound to maintains its own private persistence table. If persistence shared flag is set in the sourceIp persistence profile, all virtual servers the profile is bound to share the same persistence table.
	PersistenceShared bool `json:"persistence_shared"`

	// Persistence entries are not synchronized to the HA peer by default.
	HaPersistenceMirroringEnabled bool `json:"ha_persistence_mirroring_enabled"`

	// persistence purge setting
	Purge string `json:"purge"`

	// When all connections complete (reference count reaches 0), persistence entry timer is started with the expiration time.
	Timeout int64 `json:"timeout,omitempty"`
}

type LbSslCipherAndProtocolListResult

type LbSslCipherAndProtocolListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// List of SSL ciphers
	Ciphers []LbSslCipherInfo `json:"ciphers"`

	// List of SSL protocols
	Protocols []LbSslProtocolInfo `json:"protocols"`
}

type LbSslCipherInfo

type LbSslCipherInfo struct {

	// SSL cipher
	Cipher string `json:"cipher"`

	// Default SSL cipher flag
	IsDefault bool `json:"is_default"`

	// Secure/insecure SSL cipher flag
	IsSecure bool `json:"is_secure"`
}

SSL cipher

type LbSslProfile

type LbSslProfile struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// The type of this resource.
	ResourceType string `json:"resource_type,omitempty"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`
}

Load balancer abstract SSL profile

type LbSslProfileListResult

type LbSslProfileListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// paginated list of load balancer SSL profiles
	Results []LbSslProfile `json:"results"`
}

type LbSslProtocolInfo

type LbSslProtocolInfo struct {

	// Default SSL protocol flag
	IsDefault bool `json:"is_default"`

	// Secure/insecure SSL protocol flag
	IsSecure bool `json:"is_secure"`

	// SSL protocol
	Protocol string `json:"protocol"`
}

SSL protocol

type LbStatisticsCounter

type LbStatisticsCounter struct {
	// Number of bytes in
	BytesIn int64 `json:"bytes_in"`

	// The average number of inbound bytes per second, the number is averaged over the last 5 one-second intervals.
	BytesInRate float64 `json:"bytes_in_rate,omitempty"`

	// Number of bytes out
	BytesOut int64 `json:"bytes_out"`

	// The average number of outbound bytes per second, the number is averaged over the last 5 one-second intervals.
	BytesOutRate float64 `json:"bytes_out_rate,omitempty"`

	// Number of current sessions
	CurrentSessions int64 `json:"current_sessions"`

	// The average number of current sessions per second, the number is averaged over the last 5 one-second intervals.
	CurrentSessionRate float64 `json:"current_session_rate,omitempty"`

	// Number of http requests
	HttpRequests int64 `json:"http_requests"`

	// The average number of http requests per second, the number is averaged over the last 5 one-second intervals.
	HttpRequestRate float64 `json:"http_request_rate,omitempty"`

	// Number of maximum sessions
	MaxSessions int64 `json:"max_sessions"`

	// Number of packets in
	PacketsIn int64 `json:"packets_in,omitempty"`

	// The average number of inbound packets per second, the number is averaged over the last 5 one-second intervals.
	PacketsInRate float64 `json:"packets_in_rate,omitempty"`

	// Number of packets out
	PacketsOut int64 `json:"packets_out,omitempty"`

	// The average number of outbound packets per second, the number is averaged over the last 5 one-second intervals.
	PacketsOutRate float64 `json:"packets_out_rate,omitempty"`

	// Number of source IP persistence entries
	SourceIPPersistenceEntrySize int64 `json:"source_ip_persistence_entry_size,omitempty"`

	// Number of total sessions
	TotalSessions int64 `json:"total_sessions"`
}

type LbTcpHeaderCondition

type LbTcpHeaderCondition struct {

	// A flag to indicate whether reverse the match result of this condition
	Inverse bool `json:"inverse"`

	// Type of load balancer rule condition
	Type_ string `json:"type"`

	// TCP source port of HTTP message
	SourcePort string `json:"source_port"`
}

This condition is used to match TCP header fields of HTTP messages. Currently, only the TCP source port is supported. Ports can be expressed as a single port number like 80, or a port range like 1024-1030.

type LbTcpMonitor

type LbTcpMonitor struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// Load balancers monitor the health of backend servers to ensure traffic is not black holed. There are two types of healthchecks: active and passive. Passive healthchecks depend on failures in actual client traffic (e.g. RST from server in response to a client connection) to detect that the server or the application is down. In case of active healthchecks, load balancer itself initiates new connections (or sends ICMP ping) to the servers periodically to check their health, completely independent of any data traffic. Currently, active health monitors are supported for HTTP, HTTPS, TCP, UDP and ICMP protocols.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// num of consecutive checks must fail before marking it down
	FallCount int64 `json:"fall_count,omitempty"`

	// the frequency at which the system issues the monitor check (in second)
	Interval int64 `json:"interval,omitempty"`

	// If the monitor port is specified, it would override pool member port setting for healthcheck. A port range is not supported.
	MonitorPort string `json:"monitor_port,omitempty"`

	// num of consecutive checks must pass before marking it up
	RiseCount int64 `json:"rise_count,omitempty"`

	// the number of seconds the target has in which to respond to the monitor request
	Timeout int64 `json:"timeout,omitempty"`

	// Expected data, if specified, can be anywhere in the response and it has to be a string, regular expressions are not supported.
	Receive string `json:"receive,omitempty"`

	// If both send and receive are not specified, then just a TCP connection is established (3-way handshake) to validate server is healthy, no data is sent.
	Send string `json:"send,omitempty"`
}

type LbTcpProfile

type LbTcpProfile struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// The type of this resource.
	ResourceType string `json:"resource_type,omitempty"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// If the field is not specified, the load balancer will use the default setting per load balancer service flavor.
	FinWait2Timeout int64 `json:"fin_wait2_timeout,omitempty"`

	// If the field is not specified, the load balancer will use the default setting per load balancer service flavor.
	MaxSynRetransmissions int64 `json:"max_syn_retransmissions,omitempty"`

	// Setting this option to enable or disable Nagle's algorithm.
	NagleAlgorithmEnabled bool `json:"nagle_algorithm_enabled"`

	// If the field is not specified, the load balancer will use the default setting per load balancer service flavor.
	ReceiveWindowSize int64 `json:"receive_window_size,omitempty"`

	// If the field is not specified, the load balancer will use the default setting per load balancer service flavor.
	TransmitWindowSize int64 `json:"transmit_window_size,omitempty"`
}

TCP profile allows customization of TCP stack behavior for each application. As TCP connections are terminated (or initiated) on the load balancer only for L7 virtual servers, TCP profiles are applicable only to them. As the desired TCP characteristics (e.g. Rx/Tx buffers) may be different for client (typically on WAN) and server (typically on LAN) sides, two separate profiles can be bound to virtual server, one for client-side (LbVirtualServer.client_tcp_profile_id) and another for server-side (LbVirtualServer.server_tcp_profile_id).

type LbTcpProfileListResult

type LbTcpProfileListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// Paginated list of load balancer TCP profiles
	Results []LbTcpProfile `json:"results"`
}

type LbUdpMonitor

type LbUdpMonitor struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// Load balancers monitor the health of backend servers to ensure traffic is not black holed. There are two types of healthchecks: active and passive. Passive healthchecks depend on failures in actual client traffic (e.g. RST from server in response to a client connection) to detect that the server or the application is down. In case of active healthchecks, load balancer itself initiates new connections (or sends ICMP ping) to the servers periodically to check their health, completely independent of any data traffic. Currently, active health monitors are supported for HTTP, HTTPS, TCP, UDP and ICMP protocols.
	ResourceType string `json:"resource_type"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// num of consecutive checks must fail before marking it down
	FallCount int64 `json:"fall_count,omitempty"`

	// the frequency at which the system issues the monitor check (in second)
	Interval int64 `json:"interval,omitempty"`

	// If the monitor port is specified, it would override pool member port setting for healthcheck. A port range is not supported.
	MonitorPort string `json:"monitor_port,omitempty"`

	// num of consecutive checks must pass before marking it up
	RiseCount int64 `json:"rise_count,omitempty"`

	// the number of seconds the target has in which to respond to the monitor request
	Timeout int64 `json:"timeout,omitempty"`

	// Expected data, can be anywhere in the response and it has to be a string, regular expressions are not supported. UDP healthcheck is considered failed if there is no server response within the timeout period.
	Receive string `json:"receive"`

	// The data to be sent to the monitored server.
	Send string `json:"send"`
}

type LbVirtualServer

type LbVirtualServer struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.
	Revision int32 `json:"_revision"`

	// Timestamp of resource creation
	CreateTime int64 `json:"_create_time,omitempty"`

	// ID of the user who created this resource
	CreateUser string `json:"_create_user,omitempty"`

	// Timestamp of last modification
	LastModifiedTime int64 `json:"_last_modified_time,omitempty"`

	// ID of the user who last modified this resource
	LastModifiedUser string `json:"_last_modified_user,omitempty"`

	// Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.
	Protection string `json:"_protection,omitempty"`

	// Indicates system owned resource
	SystemOwned bool `json:"_system_owned,omitempty"`

	// Description of this resource
	Description string `json:"description,omitempty"`

	// Defaults to ID if not set
	DisplayName string `json:"display_name,omitempty"`

	// Unique identifier of this resource
	Id string `json:"id,omitempty"`

	// The type of this resource.
	ResourceType string `json:"resource_type,omitempty"`

	// Opaque identifiers meaningful to the API user
	Tags []common.Tag `json:"tags,omitempty"`

	// Whether access log is enabled
	AccessLogEnabled bool `json:"access_log_enabled"`

	// The application profile defines the application protocol characteristics. It is used to influence how load balancing is performed. Currently, LbFastTCPProfile, LbFastUDPProfile and LbHttpProfile, etc are supported.
	ApplicationProfileId string `json:"application_profile_id"`

	// The setting is used when load balancer acts as an SSL server and terminating the client SSL connection
	ClientSslProfileBinding *ClientSslProfileBinding `json:"client_ssl_profile_binding,omitempty"`

	// Only L7 virtual server could be configured with customized client side TCP profile.
	ClientTcpProfileId string `json:"client_tcp_profile_id,omitempty"`

	// This is a deprecated property, please use 'default_pool_member_ports' instead. If default_pool_member_port is configured and default_pool_member_ports are not specified, both default_pool_member_port and default_pool_member_ports in response payload would return the same port value. If both are specified, default_pool_member_ports setting would take effect with higher priority.
	DefaultPoolMemberPort string `json:"default_pool_member_port,omitempty"`

	// If default_pool_member_ports are configured, both default_pool_member_port and default_pool_member_ports in the response payload would include port settings, notice that the value of default_pool_member_port is the first element of default_pool_member_ports.
	DefaultPoolMemberPorts []string `json:"default_pool_member_ports,omitempty"`

	// whether the virtual server is enabled
	Enabled bool `json:"enabled"`

	// virtual server IP address
	IpAddress string `json:"ip_address"`

	// Assigned Internet Protocol in IP header, TCP, UDP are supported.
	IpProtocol string `json:"ip_protocol,omitempty"`

	// To ensure one virtual server does not over consume resources, affecting other applications hosted on the same LBS, connections to a virtual server can be capped. If it is not specified, it means that connections are unlimited.
	MaxConcurrentConnections int64 `json:"max_concurrent_connections,omitempty"`

	// To ensure one virtual server does not over consume resources, connections to a member can be rate limited. If it is not specified, it means that connection rate is unlimited.
	MaxNewConnectionRate int64 `json:"max_new_connection_rate,omitempty"`

	// Persistence profile is used to allow related client connections to be sent to the same backend server.
	PersistenceProfileId string `json:"persistence_profile_id,omitempty"`

	// The server pool(LbPool) contains backend servers. Server pool consists of one or more servers, also referred to as pool members, that are similarly configured and are running the same application.
	PoolId string `json:"pool_id,omitempty"`

	// This is a deprecated property, please use 'ports' instead. Port setting could be single port for both L7 mode and L4 mode. For L4 mode, a single port range is also supported. The port setting could be a single port or port range such as \"80\", \"1234-1236\". If port is configured and ports are not specified, both port and ports in response payload would return the same port value. If both port and ports are configured, ports setting would take effect with higher priority.
	Port string `json:"port,omitempty"`

	// Port setting could be a single port for both L7 mode and L4 mode. For L4 mode, multiple ports or port ranges are also supported such as \"80\", \"443\", \"1234-1236\". If ports is configured, both port and ports in the response payload would include port settings, notice that the port field value is the first element of ports.
	Ports []string `json:"ports,omitempty"`

	// Load balancer rules allow customization of load balancing behavior using match/action rules. Currently, load balancer rules are supported for only layer 7 virtual servers with LbHttpProfile.
	RuleIds []string `json:"rule_ids,omitempty"`

	// The setting is used when load balancer acts as an SSL client and establishing a connection to the backend server.
	ServerSslProfileBinding *ServerSslProfileBinding `json:"server_ssl_profile_binding,omitempty"`

	// Only L7 virtual server could be configured with customized server side TCP profile.
	ServerTcpProfileId string `json:"server_tcp_profile_id,omitempty"`

	// When load balancer can not select a backend server to serve the request in default pool or pool in rules, the request would be served by sorry server pool.
	SorryPoolId string `json:"sorry_pool_id,omitempty"`
}

type LbVirtualServerListResult

type LbVirtualServerListResult struct {

	// The server will populate this field when returing the resource. Ignored on PUT and POST.
	Links []common.ResourceLink `json:"_links,omitempty"`

	// Schema for this resource
	Schema string `json:"_schema,omitempty"`

	// Link to this resource
	Self *common.SelfResourceLink `json:"_self,omitempty"`

	// Opaque cursor to be used for getting next page of records (supplied by current result page)
	Cursor string `json:"cursor,omitempty"`

	// Count of results found (across all pages), set only on first page
	ResultCount int64 `json:"result_count,omitempty"`

	// If true, results are sorted in ascending order
	SortAscending bool `json:"sort_ascending,omitempty"`

	// Field by which records are sorted
	SortBy string `json:"sort_by,omitempty"`

	// paginated list of virtual servers
	Results []LbVirtualServer `json:"results"`
}

type LbVirtualServerStatistics

type LbVirtualServerStatistics struct {
	// Timestamp when the data was last updated
	LastUpdateTimestamp int64 `json:"last_update_timestamp,omitempty"`

	// Load balancer virtual server identifier
	VirtualServerId string `json:"virtual_server_id"`

	// Virtual server statistics counter
	Statistics LbStatisticsCounter `json:"statistics"`
}

type LbVirtualServerStatus

type LbVirtualServerStatus struct {

	// Timestamp when the data was last updated.
	LastUpdateTimestamp int64 `json:"last_update_timestamp,omitempty"`

	// Virtual server status
	Status string `json:"status"`

	// load balancer virtual server identifier
	VirtualServerId string `json:"virtual_server_id"`
}

type PoolMember

type PoolMember struct {

	// member admin state
	AdminState string `json:"admin_state,omitempty"`

	// Backup servers are typically configured with a sorry page indicating to the user that the application is currently unavailable. While the pool is active (a specified minimum number of pool members are active) BACKUP members are skipped during server selection. When the pool is inactive, incoming connections are sent to only the BACKUP member(s).
	BackupMember bool `json:"backup_member"`

	// pool member name
	DisplayName string `json:"display_name,omitempty"`

	// pool member IP address
	IpAddress string `json:"ip_address"`

	// To ensure members are not overloaded, connections to a member can be capped by the load balancer. When a member reaches this limit, it is skipped during server selection. If it is not specified, it means that connections are unlimited.
	MaxConcurrentConnections int64 `json:"max_concurrent_connections,omitempty"`

	// If port is specified, all connections will be sent to this port. Only single port is supported. If unset, the same port the client connected to will be used, it could be overrode by default_pool_member_port setting in virtual server. The port should not specified for port range case.
	Port string `json:"port,omitempty"`

	// Pool member weight is used for WEIGHTED_ROUND_ROBIN balancing algorithm. The weight value would be ignored in other algorithms.
	Weight int64 `json:"weight,omitempty"`
}

type PoolMemberGroup

type PoolMemberGroup struct {

	// The list is used to show the customized pool member settings. User can only user pool member action API to update the admin state for a specific IP address.
	CustomizedMembers []PoolMemberSetting `json:"customized_members,omitempty"`

	// Load balancer pool support grouping object as dynamic pool members. The IP list of the grouping object such as NSGroup would be used as pool member IP setting.
	GroupingObject *common.ResourceReference `json:"grouping_object"`

	// Ip revision filter is used to filter IPv4 or IPv6 addresses from the grouping object. If the filter is not specified, both IPv4 and IPv6 addresses would be used as server IPs. The link local and loopback addresses would be always filtered out.
	IpRevisionFilter string `json:"ip_revision_filter,omitempty"`

	// The size is used to define the maximum number of grouping object IP address list. These IP addresses would be used as pool members. If the grouping object includes more than certain number of IP addresses, the redundant parts would be ignored and those IP addresses would not be treated as pool members.
	// In order to destinguish between zero and unspecified value, use pointer
	MaxIpListSize *int64 `json:"max_ip_list_size,omitempty"`

	// If port is specified, all connections will be sent to this port. If unset, the same port the client connected to will be used, it could be overridden by default_pool_member_ports setting in virtual server. The port should not specified for multiple ports case.
	Port int32 `json:"port,omitempty"`
}

type PoolMemberSetting

type PoolMemberSetting struct {

	// Member admin state
	AdminState string `json:"admin_state,omitempty"`

	// Only applicable to static pool members. If supplied for a pool defined by a grouping object, update API would fail.
	DisplayName string `json:"display_name,omitempty"`

	// Pool member IP address
	IpAddress string `json:"ip_address"`

	// Pool member port number
	Port string `json:"port,omitempty"`

	// Only applicable to static pool members. If supplied for a pool defined by a grouping object, update API would fail.
	Weight int64 `json:"weight,omitempty"`
}

The setting is used to add, update or remove pool members from pool. For static pool members, admin_state, display_name and weight can be updated. For dynamic pool members, only admin_state can be updated.

type PoolMemberSettingList

type PoolMemberSettingList struct {

	// List of pool member settings to be passed to add, update and remove APIs
	Members []PoolMemberSetting `json:"members"`
}

List of PoolMemberSetting

type ServerSslProfileBinding

type ServerSslProfileBinding struct {

	// authentication depth is used to set the verification depth in the server certificates chain.
	CertificateChainDepth int64 `json:"certificate_chain_depth,omitempty"`

	// To support client authentication (load balancer acting as a client authenticating to the backend server), client certificate can be specified in the server-side SSL profile binding
	ClientCertificateId string `json:"client_certificate_id,omitempty"`

	// server authentication mode
	ServerAuth string `json:"server_auth,omitempty"`

	// If server auth type is REQUIRED, server certificate must be signed by one of the trusted Certificate Authorities (CAs), also referred to as root CAs, whose self signed certificates are specified.
	ServerAuthCaIds []string `json:"server_auth_ca_ids,omitempty"`

	// A Certificate Revocation List (CRL) can be specified in the server-side SSL profile binding to disallow compromised server certificates.
	ServerAuthCrlIds []string `json:"server_auth_crl_ids,omitempty"`

	// Server SSL profile defines reusable, application-independent server side SSL properties.
	SslProfileId string `json:"ssl_profile_id,omitempty"`
}

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL