| name | sapcc-loadbalancer |
| description | Load balancer operations via Octavia. Triggers: load balancer, lb, listener, pool, vip, octavia, l7. NOT for: network ports or security groups (use sapcc-networking).
|
| version | 1.0.0 |
| metadata | {"service":["octavia"],"task":["manage","inspect","debug"],"persona":["developer","platform-engineer"]} |
SAP CC Load Balancer (Octavia)
Manage Octavia load balancers: list/inspect LBs, listeners, and pools. Understand the LB topology and troubleshoot provisioning issues.
MCP Tools
Read Tools
| Tool | Purpose | Key Parameters |
|---|
octavia_list_loadbalancers | List load balancers | name, provisioning_status, vip_address, operating_status, vip_subnet_id, provider |
octavia_get_loadbalancer | Full LB detail by UUID | loadbalancer_id (required) |
octavia_list_listeners | List listeners | name, protocol (TCP/HTTP/HTTPS/TERMINATED_HTTPS/UDP/SCTP), loadbalancer_id, protocol_port |
octavia_list_pools | List backend pools | name, protocol, loadbalancer_id, lb_algorithm (ROUND_ROBIN/LEAST_CONNECTIONS/SOURCE_IP) |
octavia_list_members | List pool members | pool_id (required), name, address |
octavia_list_healthmonitors | List health monitors | pool_id, type (HTTP/HTTPS/PING/TCP/TLS-HELLO/UDP-CONNECT) |
octavia_list_l7policies | List L7 routing policies | listener_id, name |
octavia_list_l7rules | List rules for L7 policy | l7policy_id (required) |
Write Tools (requires MCP_READ_ONLY=false)
| Tool | Purpose | Key Parameters |
|---|
octavia_create_loadbalancer* | Create a new load balancer | name (required), vip_subnet_id (required), description, confirmed |
octavia_delete_loadbalancer* | Delete a load balancer | loadbalancer_id (required), cascade (bool, deletes children), confirmed |
Admin Tools (requires MCP_ADMIN_TOOLS=true)
| Tool | Purpose | Key Parameters |
|---|
octavia_list_amphoraeโ | List amphora instances | loadbalancer_id, status |
Guardrails
- UUID validation: All
*_id parameters validated
- Confirmation required: Write tools return preview unless
confirmed=true
- Cascade delete:
octavia_delete_loadbalancer with cascade=true deletes ALL child resources (listeners, pools, members, monitors)
Gotchas
-
Two status fields: provisioning vs operating. provisioning_status tracks the API/control plane state (ACTIVE, PENDING_CREATE, ERROR). operating_status tracks the data plane (ONLINE, DEGRADED, ERROR, NO_MONITOR). A LB can be ACTIVE provisioning but DEGRADED operating.
-
Immutable during PENDING states. When provisioning_status is any PENDING_* value, no mutations are allowed on the LB or its children (listeners, pools). Wait for ACTIVE before making changes.
-
Listener protocol determines TLS handling. TERMINATED_HTTPS means TLS terminates at the LB (requires certificate). HTTPS means passthrough โ the LB forwards encrypted traffic without inspecting it. Do not confuse these.
-
Pool lb_method values are algorithm names. Common values: ROUND_ROBIN, LEAST_CONNECTIONS, SOURCE_IP. These are not free-text โ use the exact enum values.
-
loadbalancer_id filter on listeners/pools is optional. Without it, you get all listeners/pools in the project. Always filter by loadbalancer_id when investigating a specific LB to avoid confusion.
-
VIP address is on a subnet. The vip_address is allocated from vip_subnet_id. If you need the network context, look up the subnet in Neutron.
-
Topology: LB -> Listeners -> Pools -> Members. Members are not exposed via MCP tools. You can see default_pool_id on listeners to trace which pool handles traffic.
Common Workflows
Map Full LB Topology
octavia_get_loadbalancer with loadbalancer_id โ note the VIP, status, and provider.
octavia_list_listeners with loadbalancer_id=<uuid> โ see all frontend listeners (protocol + port).
octavia_list_pools with loadbalancer_id=<uuid> โ see all backend pools and their algorithms.
- Match
default_pool_id from listeners to pool IDs to understand traffic flow.
Diagnose LB in ERROR State
octavia_get_loadbalancer โ check provisioning_status and operating_status.
- If provisioning ERROR: the control plane failed (network issue, quota, amphora boot failure). Check
hermes_list_events.
- If operating ERROR/DEGRADED: backend members are unhealthy. Pool health monitors are detecting failures.
Find LB by VIP Address
octavia_list_loadbalancers with vip_address=<ip> โ returns the matching LB.
- If no results, the IP may be a floating IP mapped to the VIP โ check
neutron_list_floating_ips.
Cross-Service References
| Need | Service | Tool |
|---|
| Subnet details for VIP | Neutron | neutron_list_subnets(<vip_subnet_id>) |
| Who created/modified the LB | Hermes | hermes_list_events(target_type=loadbalancer) |
| LB quota for the project | Limes | limes_get_project_quota(service=network) |
| Server behind a pool member | Nova | nova_get_server(<member_server_id>) |
| Floating IP pointing to VIP | Neutron | neutron_list_floating_ips |