Skip to content

Origin Pool Enhancements

Enrichment metadata for origin_pool-related schemas. See OpenAPI Extensions for extension definitions.

All schemas matching origin_pool.*SpecType receive enrichments:

  • origin_poolCreateSpecType
  • origin_poolReplaceSpecType
  • origin_poolGetSpecType
FieldRequired ForNotes
metadata.nameAll operations1-63 chars, lowercase alphanumeric, pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
metadata.namespaceAll operationsNamespace identifier
spec.origin_serversCreateMinimum 1 item
spec.portCreate1-65535, no server default
{
"metadata": {
"name": "my-origin-pool",
"namespace": "default"
},
"spec": {
"origin_servers": [
{
"public_name": {
"dns_name": "backend.example.com"
}
}
],
"port": 443
}
}

Fields marked with x-f5xc-server-default: true have their default value applied by the F5 XC API server when omitted from requests.

FieldDefault ValueTypeDescription
no_tls{}objectTLS to origin disabled
healthcheck[]arrayNo health checks configured
loadbalancer_algorithmROUND_ROBINenumRound-robin load balancing
endpoint_selectionDISTRIBUTEDenumUse all endpoints (local + remote)

When advanced_options is not specified, the server behaves as if these values were set:

FieldDefault ValueTypeDescription
connection_timeout2000integerConnection timeout in milliseconds
http_idle_timeout300000integerHTTP idle timeout in milliseconds (5 min)
same_as_endpoint_port{}objectHealth check uses endpoint port
default_circuit_breaker{}objectDefault circuit breaker settings
disable_outlier_detection{}objectOutlier detection disabled
no_panic_threshold{}objectNo panic threshold
disable_subsets{}objectSubset load balancing disabled
auto_http_config{}objectAutomatic HTTP protocol negotiation
disable_proxy_protocol{}objectProxy protocol disabled
disable_lb_source_ip_persistance{}objectLB source IP persistence disabled
PathDefault ValueDescription
origin_servers[].labels{}Empty labels object
origin_servers[].public_name.refresh_interval0Use system default DNS refresh

The F5 XC web UI preselects different values than what the API applies when fields are omitted.

FieldUI PreselectedServer AppliedNote
loadbalancer_algorithmLB_OVERRIDEROUND_ROBINUI-created and API-created resources differ when field is omitted
ValueDescriptionNotes
ROUND_ROBINEach healthy endpoint selected in round-robin orderServer default
LEAST_REQUESTEndpoint with fewest active requests selected
RING_HASHConsistent hashing using ring hash of endpoint names
RANDOMRandom healthy endpoint selection
LB_OVERRIDEHash policy inherited from parent load balancerUI default
ValueDescriptionNotes
DISTRIBUTEDConsider both remote and local endpointsServer default
LOCAL_ONLYOnly local endpoints used
LOCAL_PREFERREDPrefer local, fall back to remote if unavailable

Mutually exclusive field groups. Only ONE field from each group can be specified:

GroupFieldsServer Default
Port Configurationport, automatic_port, lb_portport (explicit)
TLS to Originno_tls, use_tlsno_tls
Health Check Portsame_as_endpoint_port, health_check_portsame_as_endpoint_port
Circuit Breakerdefault_circuit_breaker, disable_circuit_breaker, circuit_breakerdefault_circuit_breaker
Outlier Detectiondisable_outlier_detection, outlier_detectiondisable_outlier_detection
Panic Thresholdno_panic_threshold, panic_thresholdno_panic_threshold
Subset LBdisable_subsets, enable_subsetsdisable_subsets
HTTP Protocolauto_http_config, http1_config, http2_optionsauto_http_config
Proxy Protocoldisable_proxy_protocol, proxy_protocol_v1, proxy_protocol_v2disable_proxy_protocol
LB Source IPdisable_lb_source_ip_persistance, enable_lb_source_ip_persistancedisable_lb_source_ip_persistance
Connection Poolenable_conn_pool_reuse, disable_conn_pool_reuseenable_conn_pool_reuse
FieldTypeConstraint
spec.portinteger1-65535
spec.advanced_options.connection_timeoutinteger0-1,800,000 ms
spec.advanced_options.http_idle_timeoutinteger0-600,000 ms
spec.advanced_options.panic_thresholdinteger0-100 (percentage)
metadata.namestring1-63 chars, pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

The F5 XC web console presents 15 configuration options for origin pools:

#UI LabelAPI Field PathTypeServer Default
1Origin Server Portspec.[port|automatic_port|lb_port]OneOfport (explicit)
2Connection Pool Reusespec.[enable_conn_pool_reuse|disable_conn_pool_reuse]OneOfenable_conn_pool_reuse
3Health Check Portspec.advanced_options.[same_as_endpoint_port|health_check_port]OneOfsame_as_endpoint_port
4LoadBalancer Algorithmspec.loadbalancer_algorithmenumROUND_ROBIN
5Endpoint Selectionspec.endpoint_selectionenumDISTRIBUTED
6TLS to Originspec.[no_tls|use_tls]OneOfno_tls
7Connection Timeoutspec.advanced_options.connection_timeoutinteger2000 ms
8HTTP Idle Timeoutspec.advanced_options.http_idle_timeoutinteger300000 ms
9Circuit Breakerspec.advanced_options.[default_circuit_breaker|disable_circuit_breaker|circuit_breaker]OneOfdefault_circuit_breaker
10Outlier Detectionspec.advanced_options.[disable_outlier_detection|outlier_detection]OneOfdisable_outlier_detection
11Panic Thresholdspec.advanced_options.[no_panic_threshold|panic_threshold]OneOfno_panic_threshold
12Subset Load Balancingspec.advanced_options.[disable_subsets|enable_subsets]OneOfdisable_subsets
13HTTP Protocolspec.advanced_options.[auto_http_config|http1_config|http2_options]OneOfauto_http_config
14Proxy Protocolspec.advanced_options.[disable_proxy_protocol|proxy_protocol_v1|proxy_protocol_v2]OneOfdisable_proxy_protocol
15LB Source IP Persistencespec.advanced_options.[disable_lb_source_ip_persistance|enable_lb_source_ip_persistance]OneOfdisable_lb_source_ip_persistance
FileContent
docs/specifications/api/virtual.jsonorigin_poolCreateSpecType, origin_poolReplaceSpecType, origin_poolGetSpecType
docs/specifications/api/openapi.jsonMerged specification with all schemas
defaults.resources.origin_pool
├── server_applied # Fields with x-f5xc-server-default: true
├── recommended # Fields with x-f5xc-recommended-value
├── advanced_options # Nested advanced_options defaults
├── oneof_choices # OneOf default selections
└── ui_vs_server # UI vs server discrepancies

Origin servers can be specified using different type variants. The type determines what additional fields are required.

TypeDescriptionRequired FieldsStatus
public_nameOrigin server with public DNS namedns_name✅ Complete
public_ipOrigin server with public IP addressip (IPv4)✅ Complete
{
"origin_servers": [
{
"public_name": {
"dns_name": "backend.example.com"
}
}
]
}
{
"origin_servers": [
{
"public_ip": {
"ip": "8.8.8.8"
}
}
]
}

The following origin server types require “site” resource logic development before implementation:

TypeDescriptionRequired FieldsStatus
private_ipOrigin server with private/public IP and site infoip, site_locator, network_choice, snat_pool🔲 Pending site logic
private_nameOrigin server with DNS name and site infodns_name, site_locator, network_choice, snat_pool🔲 Pending site logic
k8s_serviceKubernetes service with site infoservice_name, site_locator, network_choice🔲 Pending site logic
consul_serviceHashiCorp Consul service with site infoservice_name, site_locator, network_choice🔲 Pending site logic

Before these types can be fully documented:

  1. Site Resource Discovery - Document site resource schema and site_locator patterns
  2. Network Choice Enum - Document network_choice constrained values (site_local_inside, site_local_outside, etc.)
  3. SNAT Pool Options - Document SNAT pool configuration patterns
  4. Cross-Resource References - Define how origin_pool references site resources
  • Configuration placeholder: config/discovered_defaults.yamlorigin_pool.origin_server_types.enums
  • Related sprint: Site resource schema enrichments
VersionDateChanges
2.1.22026-01-18Added origin server types section with public_name/public_ip; TODO markers for site-dependent types
2.1.12026-01-18Rewritten as pure API reference; removed downstream code examples
2.1.02026-01-18Updated to unified defaults structure in validation.json
2.0.332026-01-17Initial origin pool enhancements documentation