OpenKeel: the sovereign French Cloud solution of the inherent group, with a European reach Discover inherent

Reverse-spec · Clients

python-octaviaclient — Cli commands

CLI commands — python-octaviaclient — branch stable/2026.2

Branch stable/2026.2 @ b37975ec8f2d (tag 3.15.0 + 2 commits) — repository https://opendev.org/openstack/python-octaviaclient — analysed on 2026-11-01

python-octaviaclient exposes no API of its own. It is a plugin of the openstack command, turning 82 commands into calls to the Octavia REST API. Its contract with the outside world is the requests it sends (03, 07). [observed] means seen against the local stub; a stub says nothing about a real service.

1. Shared mechanics

Plugin loading

  • openstack.cli.extension = load_balancer names the plugin module, and openstack.load_balancer.v2 lists one class per command (setup.cfg:29-33).
  • make_client builds one OctaviaAPI from the session and the catalog endpoint of type load-balancer, with the region and interface of the CLI (octaviaclient/osc/plugin.py:30-42). It sets no timeout.
  • --os-loadbalancer-api-version (env OS_LOADBALANCER_API_VERSION, default 2.0) is added by octaviaclient/osc/plugin.py:55-63. It only chooses the command group: OSC uses the major part to build openstack.load_balancer.v<major> (openstackclient:openstackclient/shell.py:150-156).
    • 3 makes every command disappear: 'loadbalancer list' is not an openstack command, exit 2 [observed].
    • 2.99 changes nothing and warns about nothing, because OSC looks for API_VERSIONS (openstackclient:openstackclient/shell.py:119) while the plugin names it LOAD_BALANCER_API_VERSIONS (octaviaclient/osc/plugin.py:25) [observed].
    • The value is never sent to the service.

The API layer

OctaviaAPI (octaviaclient/api/v2/octavia.py:65) has 73 public methods, one per route. All are wrapped by correct_return_codes (octaviaclient/api/v2/octavia.py:26), see 02 § 2. Four private helpers do the work:

HelperRequestReturnsSource
_createPOST, or PUT with method='PUT', with Accept: application/jsondecoded JSON, or the raw Response if the body is not JSONoctaviaclient/api/v2/octavia.py:78, osc-lib:osc_lib/api/api.py:159-183
_deleteDELETE with Accept: application/jsonthe Responseoctaviaclient/api/v2/octavia.py:79, osc-lib:osc_lib/api/api.py:185-199
_findGET <path>/<value>; on 404 or 400 raises osc-lib NotFoundthe value of the first JSON keyoctaviaclient/api/v2/octavia.py:80, osc-lib:osc_lib/api/api.py:378-427
_listGET <path>?<params>; with get_all=True, follows next linksdecoded JSONoctaviaclient/api/v2/octavia.py:82-102

Name to ID resolution

Almost every command accepts a name or an ID. Attribute maps (octaviaclient/osc/v2/utils.py:252-722) say how each option becomes a body field or a query parameter: a 2-tuple applies a function, a 3-tuple resolves a resource, a 4-tuple resolves a child through its parent (octaviaclient/osc/v2/utils.py:27-65).

_find_resource (octaviaclient/osc/v2/utils.py:68-105):

  1. if the value looks like a UUID, list with ?id=<value>; availability zones skip this step (octaviaclient/osc/v2/utils.py:110);
  2. if nothing came back, list with ?name=<value>;
  3. more than one match gives <n> <resource> found with name or ID of <value>. Please try again with UUID (octaviaclient/osc/v2/utils.py:137-140);
  4. no match gives Unable to locate <value> in <resource> (octaviaclient/osc/v2/utils.py:101-103).

Special cases:

  • Projects go through identity_common.find_project (octaviaclient/osc/v2/utils.py:172-179), that is GET /v3/projects/<value>, then GET /v3/projects?name=<value> [observed]. The literal value non-uuid skips the lookup and is sent as is (octaviaclient/osc/v2/utils.py:173) [observed].
  • Network resources go through openstacksdk (octaviaclient/osc/v2/utils.py:125-128).
  • **none, null, void** on --vip-qos-policy-id mean JSON null (octaviaclient/osc/v2/utils.py:162-164), and likewise on the TLS references of listeners and pools (octaviaclient/osc/v2/utils.py:768-771).
  • Parents are resolved twice for members and rules: once for the pool or l7policy key, once for the child (octaviaclient/osc/v2/utils.py:52-64), hence two identical list calls [observed].

show commands try the direct route first when the value looks like a UUID, and fall back on the lookup on osc-lib NotFound (for example octaviaclient/osc/v2/load_balancer.py:389-403). A name goes straight to the lookup and then to the direct route, so a name costs two requests and a missing UUID three [observed].

Command shapes

KindFlowExample
createresolve parents, validate locally, POST {"<wrapper>": attrs}, print the returned objectoctaviaclient/osc/v2/load_balancer.py:155-190
listresolve filters, GET with query, follow pages, print columnsoctaviaclient/osc/v2/load_balancer.py:356-368
showsee aboveoctaviaclient/osc/v2/load_balancer.py:385-417
setresolve, optionally merge tags, PUT {"<wrapper>": attrs}, print nothingoctaviaclient/osc/v2/load_balancer.py:477-496
unsetcollect flags set to true, return silently if none, resolve, PUT with null values, print nothingoctaviaclient/osc/v2/load_balancer.py:541-564, octaviaclient/osc/v2/utils.py:774-781
deleteresolve, DELETE, print nothingoctaviaclient/osc/v2/load_balancer.py:219-232

set with no option still sends PUT {"<wrapper>": {}} [observed]. unset with only --wait sends nothing and exits 0 [observed].

Tags

  • --tag on create is sent as given; --no-tag on create has no effect, since the map reads only tags (octaviaclient/osc/v2/utils.py:200-207) [observed].
  • set --tag reads the resource, merges, and sends the whole set (octaviaclient/osc/v2/utils.py:824-829). set --no-tag sends []. unset --tag reads and subtracts; unset --all-tag sends [] (octaviaclient/osc/v2/utils.py:834-841). The read-modify-write has no retry, and the order of the list depends on Python's set order [observed].
  • List filters --tags, --any-tags, --not-tags, --not-any-tags become repeated query parameters tags, tags-any, not-tags, not-tags-any (octaviaclient/osc/v2/utils.py:200-207) [observed].
  • Filters use --tags and --any-tags, as defined in osc-lib:osc_lib/utils/tags.py:33.

--wait

See 05. What is polled depends on the command:

CommandPolled resourceSource of its ID
loadbalancer create, set, unset, failoverthe load balancerresponse or argument
listener create, pool createthe load balancerdata[…]['loadbalancers'][0]['id'] (octaviaclient/osc/v2/listener.py:253, octaviaclient/osc/v2/pool.py:176)
listener, pool, healthmonitor, l7policy, member, l7rule set/unsetthe resource itselfargument
member createthe load balancer, after GET on the pooloctaviaclient/osc/v2/member.py:226-231
healthmonitor createthe load balancer, after GET on the pooloctaviaclient/osc/v2/health_monitor.py:158-164
l7policy createthe load balancer, after GET on the listeneroctaviaclient/osc/v2/l7policy.py:132-138
l7rule createthe load balancer, after GET on the policy and the listeneroctaviaclient/osc/v2/l7rule.py:118-126
amphora configurethe amphora's load balancer, only if it has oneoctaviaclient/osc/v2/amphora.py:159-168
amphora failoverthe load balancer, or deletion of the amphora if it has noneoctaviaclient/osc/v2/amphora.py:198-211
every delete --waitthe resource, until 404for example octaviaclient/osc/v2/load_balancer.py:227-232

2. Functional description by family

Load balancers (loadbalancer create|list|show|set|unset|delete|failover|stats show|status show)

  • create (octaviaclient/osc/v2/load_balancer.py:34). Purpose: ask for a new load balancer. The attribute map is applied first, so lookups run before local checks. At least one of --vip-subnet-id, --vip-network-id, --vip-port-id is required, and --vip-network-id cannot go with --vip-port-id (octaviaclient/osc/v2/load_balancer.py:38-47). --enable defaults to true, so admin_state_up: true is always sent. Options:
    • --additional-vip subnet-id=<x>[,ip-address=<ip>] (repeatable): the subnet is resolved and the address checked with ipaddress (octaviaclient/osc/v2/utils.py:210-239);
    • --vip-sg-id (repeatable): each security group is resolved (octaviaclient/osc/v2/utils.py:242-249);
    • a missing vip_vnic_type in the response is displayed as normal (octaviaclient/osc/v2/load_balancer.py:178). Outcome: the service answers while the load balancer is PENDING_CREATE; without --wait the command prints that state [inferred from the Octavia API; the stub always answers ACTIVE].
  • delete (octaviaclient/osc/v2/load_balancer.py:193): --cascade adds ?cascade=True (octaviaclient/osc/v2/utils.py:293) [observed]. Without it, a service may refuse a load balancer with children: octavia:octavia/api/v2/controllers/load_balancer.py:890.
  • failover (octaviaclient/osc/v2/load_balancer.py:235): PUT …/failover with no body.
  • stats show reads stats (octaviaclient/osc/v2/load_balancer.py:591). status show prints the statuses tree as JSON itself, with no cliff formatter, and prints {} if the key is absent (octaviaclient/osc/v2/load_balancer.py:617-618) [observed].

Listeners (octaviaclient/osc/v2/listener.py, attribute map octaviaclient/osc/v2/utils.py:322-376)

  • create (octaviaclient/osc/v2/listener.py:34) checks the port range and that --hsts-max-age accompanies the other HSTS options (octaviaclient/osc/v2/validate.py:59-69). set (octaviaclient/osc/v2/listener.py:593) performs no such check.
  • --insert-headers k=v,k=v becomes an object of strings (octaviaclient/osc/v2/utils.py:758-765). --connection-limit is sent as a string on create and set [observed], and set does not even require an integer (octaviaclient/osc/v2/listener.py:426).
  • --allowed-cidr, --tls-version, --alpn-protocol repeat; --sni-container-refs takes several values on one option (octaviaclient/osc/v2/listener.py:84-86).

Pools (octaviaclient/osc/v2/pool.py, attribute map octaviaclient/osc/v2/utils.py:379-426)

--listener or --loadbalancer chooses the parent; --session-persistence type=…,cookie_name=… becomes an object of strings, so numeric values stay strings (octaviaclient/osc/v2/utils.py:405). --enable-tls and --disable-tls map to tls_enabled (octaviaclient/osc/v2/utils.py:415-416).

Members (octaviaclient/osc/v2/member.py, attribute map octaviaclient/osc/v2/utils.py:429-470)

Each command needs the pool. --protocol-port and --weight are checked locally (octaviaclient/osc/v2/validate.py:72-88). --monitor-port is not, see 02 § 5. A missing vnic_type is displayed as normal (octaviaclient/osc/v2/member.py:103-104). The batch PUT /pools/{id}/members of Octavia is not used.

L7 policies and rules (octaviaclient/osc/v2/l7policy.py, octaviaclient/osc/v2/l7rule.py)

  • A redirect action needs its target: --redirect-pool, --redirect-url or --redirect-prefix (octaviaclient/osc/v2/validate.py:19-33). REJECT needs none.
  • A rule of type COOKIE or HEADER needs --key (octaviaclient/osc/v2/validate.py:36-43).
  • The wrapper of a rule is rule, and its collection key is rules (octaviaclient/osc/v2/l7rule.py:111, octaviaclient/api/constants.py:20).
  • l7rule unset takes the rule's ID as given, with no lookup (octaviaclient/osc/v2/l7rule.py:400), unlike show, set and delete.

Health monitors (octaviaclient/osc/v2/health_monitor.py, attribute map octaviaclient/osc/v2/utils.py:548-584)

--delay and --timeout have no parser type and are converted by int() in the map, so a non-integer gives a raw Python message (octaviaclient/osc/v2/health_monitor.py:54, octaviaclient/osc/v2/utils.py:566) [observed]. --http-version is a float from 1.0 or 1.1.

Quotas (octaviaclient/osc/v2/quota.py)

  • set (octaviaclient/osc/v2/quota.py:98) needs at least one limit (octaviaclient/osc/v2/quota.py:102-110), and sends load_balancer and health_monitor [observed]. unset (octaviaclient/osc/v2/quota.py:213) sends loadbalancer and healthmonitor [observed], because it uses the option names as keys (octaviaclient/osc/v2/utils.py:779-780). Octavia accepts both spellings and calls the first one misspelled and deprecated (octavia:octavia/api/v2/types/quotas.py:63).
  • list uses the listener map only for its project key (octaviaclient/osc/v2/quota.py:45).
  • defaults show calls GET /lbaas/quotas/defaults (octaviaclient/api/constants.py:61), not Octavia's /{project_id}/default.
  • reset is DELETE /lbaas/quotas/{id}.

Amphorae (octaviaclient/osc/v2/amphora.py, admin operations)

Routes are under /octavia/amphorae. show, delete and stats show use the ID as given; configure and failover look it up through the list, by ?id= or ?name= (octaviaclient/osc/v2/utils.py:611-615). failover reads the amphora before acting, to know its load balancer (octaviaclient/osc/v2/amphora.py:194). stats show adds up every row, or the rows of one listener with --listener (octaviaclient/osc/v2/amphora.py:248-256).

Providers, flavors, availability zones

  • **provider capability list** calls the flavor route, the availability zone route, or both; --flavor and --availability-zone are mutually exclusive (octaviaclient/osc/v2/provider.py:71-99). The provider name goes in the path unencoded.
  • **flavor and flavorprofile** (octaviaclient/osc/v2/flavor.py, octaviaclient/osc/v2/flavorprofile.py): --flavor-data is sent as a JSON string, not an object (octaviaclient/osc/v2/utils.py:674).
  • **availabilityzone and availabilityzoneprofile**: an availability zone has no id; its name is the key (octaviaclient/osc/v2/utils.py:168-169). --availability-zone-data is a JSON string (octaviaclient/osc/v2/utils.py:716).

Lifecycle as the client sees it

The client never drives status itself; it reads provisioning_status (status for amphorae, octaviaclient/osc/v2/amphora.py:289).

stateDiagram-v2
  [*] --> PENDING: POST or PUT or DELETE sent, service answers
  PENDING --> ACTIVE: --wait ends with exit 0
  PENDING --> ERROR: --wait ends with exit 1, message "did not successfully reach ACTIVE status"
  PENDING --> Gone: delete --wait, GET answers 404, exit 0
  PENDING --> ERROR: delete --wait, exit 1, message "could not be successfully deleted"
  Gone --> [*]

3. The 82 commands

Requests below come from the typed stub with required arguments only, and show the whole sequence of service requests [observed]. Keystone calls are left out. Each row of loadbalancer … unset shows nothing because the command sends nothing without an option; see § 4. [network] and [identity] mark Neutron and Keystone requests.

amphora (6 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer amphora configureUpdate the amphora agent configurationoctaviaclient/osc/v2/amphora.py:132none2 (1)GET /octavia/amphorae?id={uuid}; PUT /octavia/amphorae/{uuid}/config
loadbalancer amphora deleteDelete a amphoraoctaviaclient/osc/v2/amphora.py:262none2 (1)DELETE /octavia/amphorae/{uuid}
loadbalancer amphora failoverForce failover an amphoraoctaviaclient/osc/v2/amphora.py:171none2 (1)GET /octavia/amphorae?id={uuid}; GET /octavia/amphorae/{uuid}; PUT /octavia/amphorae/{uuid}/failover
loadbalancer amphora listList amphoraeoctaviaclient/osc/v2/amphora.py:25list6 (0)GET /octavia/amphorae
loadbalancer amphora showShow the details of a single amphoraoctaviaclient/osc/v2/amphora.py:102single1 (1)GET /octavia/amphorae/{uuid}
loadbalancer amphora stats showShows the current statistics for an amphora.octaviaclient/osc/v2/amphora.py:214single2 (1)GET /octavia/amphorae/{uuid}/stats

availabilityzone (6 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer availabilityzone createCreate an octavia availability zoneoctaviaclient/osc/v2/availabilityzone.py:28single5 (2)GET /lbaas/availabilityzoneprofiles?name=x; POST /lbaas/availabilityzones
loadbalancer availabilityzone deleteDelete an availability zoneoctaviaclient/osc/v2/availabilityzone.py:82none1 (1)GET /lbaas/availabilityzones?name=x; DELETE /lbaas/availabilityzones/x
loadbalancer availabilityzone listList availability zonesoctaviaclient/osc/v2/availabilityzone.py:105list4 (0)GET /lbaas/availabilityzones
loadbalancer availabilityzone setUpdate an availability zoneoctaviaclient/osc/v2/availabilityzone.py:178none4 (1)GET /lbaas/availabilityzones?name=x; PUT /lbaas/availabilityzones/x
loadbalancer availabilityzone showShow the details for a single availability zoneoctaviaclient/osc/v2/availabilityzone.py:149single1 (1)GET /lbaas/availabilityzones?name=x; GET /lbaas/availabilityzones/x
loadbalancer availabilityzone unsetClear availability zone settingsoctaviaclient/osc/v2/availabilityzone.py:220none2 (1)none without an option

availabilityzoneprofile (5 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer availabilityzoneprofile createCreate an octavia availability zone profileoctaviaclient/osc/v2/availabilityzoneprofile.py:26single3 (3)POST /lbaas/availabilityzoneprofiles
loadbalancer availabilityzoneprofile deleteDelete an availability zone profileoctaviaclient/osc/v2/availabilityzoneprofile.py:68none1 (1)GET /lbaas/availabilityzoneprofiles?name=x; DELETE /lbaas/availabilityzoneprofiles/{uuid}
loadbalancer availabilityzoneprofile listList availability zone profilesoctaviaclient/osc/v2/availabilityzoneprofile.py:92list2 (0)GET /lbaas/availabilityzoneprofiles
loadbalancer availabilityzoneprofile setUpdate an availability zone profileoctaviaclient/osc/v2/availabilityzoneprofile.py:152none4 (1)GET /lbaas/availabilityzoneprofiles?name=x; PUT /lbaas/availabilityzoneprofiles/{uuid}
loadbalancer availabilityzoneprofile showShow the details of a single availability zone profileoctaviaclient/osc/v2/availabilityzoneprofile.py:124single1 (1)GET /lbaas/availabilityzoneprofiles?name=x; GET /lbaas/availabilityzoneprofiles/{uuid}

flavor (6 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer flavor createCreate a octavia flavoroctaviaclient/osc/v2/flavor.py:30single5 (2)GET /lbaas/flavorprofiles?name=x; POST /lbaas/flavors
loadbalancer flavor deleteDelete a flavoroctaviaclient/osc/v2/flavor.py:84none1 (1)GET /lbaas/flavors?name=x; DELETE /lbaas/flavors/{uuid}
loadbalancer flavor listList flavoroctaviaclient/osc/v2/flavor.py:107list4 (0)GET /lbaas/flavors
loadbalancer flavor setUpdate a flavoroctaviaclient/osc/v2/flavor.py:188none5 (1)GET /lbaas/flavors?name=x; PUT /lbaas/flavors/{uuid}
loadbalancer flavor showShow the details for a single flavoroctaviaclient/osc/v2/flavor.py:151single1 (1)GET /lbaas/flavors?name=x; GET /lbaas/flavors/{uuid}
loadbalancer flavor unsetClear flavor settingsoctaviaclient/osc/v2/flavor.py:235none2 (1)none without an option

flavorprofile (5 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer flavorprofile createCreate a octavia flavor profileoctaviaclient/osc/v2/flavorprofile.py:28single3 (3)POST /lbaas/flavorprofiles
loadbalancer flavorprofile deleteDelete a flavor profileoctaviaclient/osc/v2/flavorprofile.py:68none1 (1)GET /lbaas/flavorprofiles?name=x; DELETE /lbaas/flavorprofiles/{uuid}
loadbalancer flavorprofile listList flavor profileoctaviaclient/osc/v2/flavorprofile.py:91list2 (0)GET /lbaas/flavorprofiles
loadbalancer flavorprofile setUpdate a flavor profileoctaviaclient/osc/v2/flavorprofile.py:158none4 (1)GET /lbaas/flavorprofiles?name=x; PUT /lbaas/flavorprofiles/{uuid}
loadbalancer flavorprofile showShow the details for a single flavor profileoctaviaclient/osc/v2/flavorprofile.py:121single1 (1)GET /lbaas/flavorprofiles?name=x; GET /lbaas/flavorprofiles/{uuid}

healthmonitor (6 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer healthmonitor createCreate a health monitoroctaviaclient/osc/v2/health_monitor.py:37single17 (5)GET /lbaas/pools?name=x; POST /lbaas/healthmonitors
loadbalancer healthmonitor deleteDelete a health monitoroctaviaclient/osc/v2/health_monitor.py:180none2 (1)GET /lbaas/healthmonitors?name=x; DELETE /lbaas/healthmonitors/{uuid}
loadbalancer healthmonitor listList health monitorsoctaviaclient/osc/v2/health_monitor.py:216list4 (0)GET /lbaas/healthmonitors
loadbalancer healthmonitor setUpdate a health monitoroctaviaclient/osc/v2/health_monitor.py:279none16 (1)GET /lbaas/healthmonitors?name=x; PUT /lbaas/healthmonitors/{uuid}
loadbalancer healthmonitor showShow the details of a single health monitoroctaviaclient/osc/v2/health_monitor.py:239single1 (1)GET /lbaas/healthmonitors?name=x; GET /lbaas/healthmonitors/{uuid}
loadbalancer healthmonitor unsetClear health monitor settingsoctaviaclient/osc/v2/health_monitor.py:402none11 (1)none without an option

l7policy (6 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer l7policy createCreate a l7policyoctaviaclient/osc/v2/l7policy.py:35single14 (2)GET /lbaas/listeners?name=x; POST /lbaas/l7policies
loadbalancer l7policy deleteDelete a l7policyoctaviaclient/osc/v2/l7policy.py:152none2 (1)GET /lbaas/l7policies?name=x; DELETE /lbaas/l7policies/{uuid}
loadbalancer l7policy listList l7policiesoctaviaclient/osc/v2/l7policy.py:188list5 (0)GET /lbaas/l7policies
loadbalancer l7policy setUpdate a l7policyoctaviaclient/osc/v2/l7policy.py:258none14 (1)GET /lbaas/l7policies?name=x; PUT /lbaas/l7policies/{uuid}
loadbalancer l7policy showShow the details of a single l7policyoctaviaclient/osc/v2/l7policy.py:219single1 (1)GET /lbaas/l7policies?name=x; GET /lbaas/l7policies/{uuid}
loadbalancer l7policy unsetClear l7policy settingsoctaviaclient/osc/v2/l7policy.py:364none7 (1)none without an option

l7rule (6 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer l7rule createCreate a l7ruleoctaviaclient/osc/v2/l7rule.py:37single11 (4)GET /lbaas/l7policies?name=x; POST /lbaas/l7policies/{uuid}/rules
loadbalancer l7rule deleteDelete a l7ruleoctaviaclient/osc/v2/l7rule.py:139none3 (2)GET /lbaas/l7policies?name=x; GET /lbaas/l7policies?name=x; GET /lbaas/l7policies/{uuid}/rules?name=x; DELETE /lbaas/l7policies/{uuid}/rules/{uuid}
loadbalancer l7rule listList l7rules for l7policyoctaviaclient/osc/v2/l7rule.py:182list5 (1)GET /lbaas/l7policies?name=x; GET /lbaas/l7policies/{uuid}/rules
loadbalancer l7rule setUpdate a l7ruleoctaviaclient/osc/v2/l7rule.py:254none12 (2)GET /lbaas/l7policies?name=x; GET /lbaas/l7policies?name=x; GET /lbaas/l7policies/{uuid}/rules?name=x; PUT /lbaas/l7policies/{uuid}/rules/{uuid}
loadbalancer l7rule showShow the details of a single l7ruleoctaviaclient/osc/v2/l7rule.py:211single2 (2)GET /lbaas/l7policies?name=x; GET /lbaas/l7policies?name=x; GET /lbaas/l7policies/{uuid}/rules?name=x; GET /lbaas/l7policies/{uuid}/rules/{uuid}
loadbalancer l7rule unsetClear l7rule settingsoctaviaclient/osc/v2/l7rule.py:354none7 (2)none without an option

listener (7 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer listener createCreate a listeneroctaviaclient/osc/v2/listener.py:34single29 (3)GET /lbaas/loadbalancers?name=x; POST /lbaas/listeners
loadbalancer listener deleteDelete a listeneroctaviaclient/osc/v2/listener.py:274none2 (1)GET /lbaas/listeners?name=x; DELETE /lbaas/listeners/{uuid}
loadbalancer listener listList listenersoctaviaclient/osc/v2/listener.py:309list9 (0)GET /lbaas/listeners
loadbalancer listener setUpdate a listeneroctaviaclient/osc/v2/listener.py:404none27 (1)GET /lbaas/listeners?name=x; PUT /lbaas/listeners/{uuid}
loadbalancer listener showShow the details of a single listeneroctaviaclient/osc/v2/listener.py:361single1 (1)GET /lbaas/listeners?name=x; GET /lbaas/listeners/{uuid}
loadbalancer listener stats showShows the current statistics for a listener.octaviaclient/osc/v2/listener.py:774single1 (1)GET /lbaas/listeners?name=x; GET /lbaas/listeners/{uuid}/stats
loadbalancer listener unsetClear listener settingsoctaviaclient/osc/v2/listener.py:615none25 (1)none without an option

loadbalancer (9 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer createCreate a load balanceroctaviaclient/osc/v2/load_balancer.py:34single18 (0)GET [network]/subnets?id={uuid}; POST /lbaas/loadbalancers
loadbalancer deleteDelete a load balanceroctaviaclient/osc/v2/load_balancer.py:193none3 (1)GET /lbaas/loadbalancers?name=x; DELETE /lbaas/loadbalancers/{uuid}
loadbalancer failoverTrigger load balancer failoveroctaviaclient/osc/v2/load_balancer.py:235none2 (1)GET /lbaas/loadbalancers?name=x; PUT /lbaas/loadbalancers/{uuid}/failover
loadbalancer listList load balancersoctaviaclient/osc/v2/load_balancer.py:269list17 (0)GET /lbaas/loadbalancers
loadbalancer setUpdate a load balanceroctaviaclient/osc/v2/load_balancer.py:420none10 (1)GET /lbaas/loadbalancers?name=x; PUT /lbaas/loadbalancers/{uuid}
loadbalancer showShow the details for a single load balanceroctaviaclient/osc/v2/load_balancer.py:371single1 (1)GET /lbaas/loadbalancers?name=x; GET /lbaas/loadbalancers/{uuid}
loadbalancer stats showShows the current statistics for a load balanceroctaviaclient/osc/v2/load_balancer.py:567single1 (1)GET /lbaas/loadbalancers?name=x; GET /lbaas/loadbalancers/{uuid}/stats
loadbalancer status showDisplay load balancer status tree in json formatoctaviaclient/osc/v2/load_balancer.py:595none1 (1)GET /lbaas/loadbalancers?name=x; GET /lbaas/loadbalancers/{uuid}/status
loadbalancer unsetClear load balancer settingsoctaviaclient/osc/v2/load_balancer.py:499none8 (1)none without an option

member (6 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer member createCreating a member in a pooloctaviaclient/osc/v2/member.py:112single16 (3)GET /lbaas/pools?name=x; POST /lbaas/pools/{uuid}/members
loadbalancer member deleteDelete a member from a pooloctaviaclient/osc/v2/member.py:354none3 (2)GET /lbaas/pools?name=x; GET /lbaas/pools?name=x; GET /lbaas/pools/{uuid}/members?name=x; DELETE /lbaas/pools/{uuid}/members/{uuid}
loadbalancer member listList members in a pooloctaviaclient/osc/v2/member.py:32list5 (1)GET /lbaas/pools?name=x; GET /lbaas/pools/{uuid}/members
loadbalancer member setUpdate a memberoctaviaclient/osc/v2/member.py:249none13 (2)GET /lbaas/pools?name=x; GET /lbaas/pools?name=x; GET /lbaas/pools/{uuid}/members?name=x; PUT /lbaas/pools/{uuid}/members/{uuid}
loadbalancer member showShows details of a single Memberoctaviaclient/osc/v2/member.py:63single2 (2)GET /lbaas/pools?name=x; GET /lbaas/pools?name=x; GET /lbaas/pools/{uuid}/members?name=x; GET /lbaas/pools/{uuid}/members/{uuid}
loadbalancer member unsetClear member settingsoctaviaclient/osc/v2/member.py:400none10 (2)none without an option

pool (6 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer pool createCreate a pooloctaviaclient/osc/v2/pool.py:34single20 (2)GET /lbaas/listeners?name=x; POST /lbaas/pools
loadbalancer pool deleteDelete a pooloctaviaclient/osc/v2/pool.py:195none2 (1)GET /lbaas/pools?name=x; DELETE /lbaas/pools/{uuid}
loadbalancer pool listList poolsoctaviaclient/osc/v2/pool.py:227list5 (0)GET /lbaas/pools
loadbalancer pool setUpdate a pooloctaviaclient/osc/v2/pool.py:298none18 (1)GET /lbaas/pools?name=x; PUT /lbaas/pools/{uuid}
loadbalancer pool showShow the details of a single pooloctaviaclient/osc/v2/pool.py:256single1 (1)GET /lbaas/pools?name=x; GET /lbaas/pools/{uuid}
loadbalancer pool unsetClear pool settingsoctaviaclient/osc/v2/pool.py:434none13 (1)none without an option

provider (2 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer provider capability listList specified provider driver's capabilities.octaviaclient/osc/v2/provider.py:44list3 (1)GET /lbaas/providers/x/flavor_capabilities; GET /lbaas/providers/x/availability_zone_capabilities
loadbalancer provider listList all providersoctaviaclient/osc/v2/provider.py:25list0 (0)GET /lbaas/providers

quota (6 commands)

CommandPurposeDefined atOutputArgs (required)Requests sent, typed stub, no optional argument
loadbalancer quota defaults showShow quota defaultsoctaviaclient/osc/v2/quota.py:89single0 (0)GET /lbaas/quotas/defaults
loadbalancer quota listList quotasoctaviaclient/osc/v2/quota.py:29list1 (0)GET /lbaas/quotas
loadbalancer quota resetResets quotas to default quotasoctaviaclient/osc/v2/quota.py:189none1 (1)GET [identity]/projects/x; DELETE /lbaas/quotas/{uuid}
loadbalancer quota setUpdate a quotaoctaviaclient/osc/v2/quota.py:98single8 (1)GET [identity]/projects/x; PUT /lbaas/quotas/{uuid}
loadbalancer quota showShow the quota details for a projectoctaviaclient/osc/v2/quota.py:54single1 (1)GET [identity]/projects/x; GET /lbaas/quotas/{uuid}
loadbalancer quota unsetClear quota settingsoctaviaclient/osc/v2/quota.py:213none8 (1)none without an option

4. Effect of each option on the wire

Generated from _rewrite/wire-probe-options_stable-2026.2.json [observed on the stub]. Each row compares the command with the same command without the option. Commands with no option are left out. extra marks a request that exists only with the option, usually a lookup; ?name or ?id shows its query key.

amphora

**loadbalancer amphora configure** (octaviaclient/osc/v2/amphora.py:132)

OptionExitEffect on the wire compared with the same command without it
--wait0extra GET /octavia/amphorae/{id}; extra GET /lbaas/loadbalancers/{id}

**loadbalancer amphora delete** (octaviaclient/osc/v2/amphora.py:262)

OptionExitEffect on the wire compared with the same command without it
--wait0extra GET /octavia/amphorae/{id}

**loadbalancer amphora failover** (octaviaclient/osc/v2/amphora.py:171)

OptionExitEffect on the wire compared with the same command without it
--wait0extra GET /lbaas/loadbalancers/{id}

**loadbalancer amphora list** (octaviaclient/osc/v2/amphora.py:25)

OptionExitEffect on the wire compared with the same command without it
--loadbalancer0extra GET /lbaas/loadbalancers ?name; query loadbalancer_id={uuid}
--compute-id0query compute_id={uuid}
--role0query role=BACKUP
--status0query status=FAILOVER_STOPPED
--image-id0query image_id={uuid}
--long0none

**loadbalancer amphora stats show** (octaviaclient/osc/v2/amphora.py:214)

OptionExitEffect on the wire compared with the same command without it
--listener0extra GET /lbaas/listeners ?name

availabilityzone

**loadbalancer availabilityzone create** (octaviaclient/osc/v2/availabilityzone.py:28)

OptionExitEffect on the wire compared with the same command without it
--description0body availability_zone.description="x"
--enable0body availability_zone.enabled=true
--disable0body availability_zone.enabled=false

**loadbalancer availabilityzone list** (octaviaclient/osc/v2/availabilityzone.py:105)

OptionExitEffect on the wire compared with the same command without it
--name0query name=x
--availabilityzoneprofile0extra GET /lbaas/availabilityzoneprofiles ?name; query availability_zone_profile_id={uuid}
--enable0query enabled=True
--disable0query enabled=False

**loadbalancer availabilityzone set** (octaviaclient/osc/v2/availabilityzone.py:178)

OptionExitEffect on the wire compared with the same command without it
--description0body availability_zone.description="x"
--enable0body availability_zone.enabled=true
--disable0body availability_zone.enabled=false

**loadbalancer availabilityzone unset** (octaviaclient/osc/v2/availabilityzone.py:220)

OptionExitEffect on the wire compared with the same command without it
--description0extra GET /lbaas/availabilityzones ?name; extra PUT /lbaas/availabilityzones/{id} body {"availability_zone": {"description": null}}

availabilityzoneprofile

**loadbalancer availabilityzoneprofile list** (octaviaclient/osc/v2/availabilityzoneprofile.py:92)

OptionExitEffect on the wire compared with the same command without it
--name0query name=x
--provider0query provider_name=x

**loadbalancer availabilityzoneprofile set** (octaviaclient/osc/v2/availabilityzoneprofile.py:152)

OptionExitEffect on the wire compared with the same command without it
--name0body availability_zone_profile.name="x"
--provider0body availability_zone_profile.provider_name="x"
--availability-zone-data0body availability_zone_profile.availability_zone_data="{\"k\":\"v\"}"

flavor

**loadbalancer flavor create** (octaviaclient/osc/v2/flavor.py:30)

OptionExitEffect on the wire compared with the same command without it
--description0body flavor.description="x"
--enable0body flavor.enabled=true
--disable0body flavor.enabled=false

**loadbalancer flavor list** (octaviaclient/osc/v2/flavor.py:107)

OptionExitEffect on the wire compared with the same command without it
--name0query name=x
--flavorprofile0extra GET /lbaas/flavorprofiles ?name; query flavor_profile_id={uuid}
--enable0query enabled=True
--disable0query enabled=False

**loadbalancer flavor set** (octaviaclient/osc/v2/flavor.py:188)

OptionExitEffect on the wire compared with the same command without it
--name0body flavor.name="x"
--description0body flavor.description="x"
--enable0body flavor.enabled=true
--disable0body flavor.enabled=false

**loadbalancer flavor unset** (octaviaclient/osc/v2/flavor.py:235)

OptionExitEffect on the wire compared with the same command without it
--description0extra GET /lbaas/flavors ?name; extra PUT /lbaas/flavors/{id} body {"flavor": {"description": null}}

flavorprofile

**loadbalancer flavorprofile list** (octaviaclient/osc/v2/flavorprofile.py:91)

OptionExitEffect on the wire compared with the same command without it
--name0query name=x
--provider0query provider_name=x

**loadbalancer flavorprofile set** (octaviaclient/osc/v2/flavorprofile.py:158)

OptionExitEffect on the wire compared with the same command without it
--name0body flavorprofile.name="x"
--provider0body flavorprofile.provider_name="x"
--flavor-data0body flavorprofile.flavor_data="{\"k\":\"v\"}"

healthmonitor

**loadbalancer healthmonitor create** (octaviaclient/osc/v2/health_monitor.py:37)

OptionExitEffect on the wire compared with the same command without it
--name0body healthmonitor.name="x"
--domain-name0body healthmonitor.domain_name="x"
--expected-codes0body healthmonitor.expected_codes="x"
--http-method0body healthmonitor.http_method="GET"
--http-version0body healthmonitor.http_version=1.0
--url-path0body healthmonitor.url_path="x"
--max-retries-down0body healthmonitor.max_retries_down=1
--enable0none
--disable0body healthmonitor.admin_state_up=false
--wait0extra GET /lbaas/pools/{id}; extra GET /lbaas/loadbalancers/{id}; extra GET /lbaas/healthmonitors/{id}
--tag0body healthmonitor.tags=["t3"]
--no-tag0none

**loadbalancer healthmonitor delete** (octaviaclient/osc/v2/health_monitor.py:180)

OptionExitEffect on the wire compared with the same command without it
--wait0extra GET /lbaas/healthmonitors/{id}

**loadbalancer healthmonitor list** (octaviaclient/osc/v2/health_monitor.py:216)

OptionExitEffect on the wire compared with the same command without it
--tags0query tags=t1,t2
--any-tags0query tags-any=t1,t2
--not-tags0query not-tags=t1,t2
--not-any-tags0query not-tags-any=t1,t2

**loadbalancer healthmonitor set** (octaviaclient/osc/v2/health_monitor.py:279)

OptionExitEffect on the wire compared with the same command without it
--name0body healthmonitor.name="x"
--delay0body healthmonitor.delay=1
--domain-name0body healthmonitor.domain_name="x"
--expected-codes0body healthmonitor.expected_codes="x"
--http-method0body healthmonitor.http_method="GET"
--http-version0body healthmonitor.http_version=1.0
--timeout0body healthmonitor.timeout=1
--max-retries0body healthmonitor.max_retries=1
--max-retries-down0body healthmonitor.max_retries_down=1
--url-path0body healthmonitor.url_path="x"
--enable0body healthmonitor.admin_state_up=true
--disable0body healthmonitor.admin_state_up=false
--wait0extra GET /lbaas/healthmonitors/{id}
--tag0extra GET /lbaas/healthmonitors/{id}; body healthmonitor.tags=["t1", "t3", "t2"]
--no-tag0body healthmonitor.tags=[]

**loadbalancer healthmonitor unset** (octaviaclient/osc/v2/health_monitor.py:402)

OptionExitEffect on the wire compared with the same command without it
--domain-name0extra GET /lbaas/healthmonitors ?name; extra PUT /lbaas/healthmonitors/{id} body {"healthmonitor": {"domain_name": null}}
--expected-codes0extra GET /lbaas/healthmonitors ?name; extra PUT /lbaas/healthmonitors/{id} body {"healthmonitor": {"expected_codes": null}}
--http-method0extra GET /lbaas/healthmonitors ?name; extra PUT /lbaas/healthmonitors/{id} body {"healthmonitor": {"http_method": null}}
--http-version0extra GET /lbaas/healthmonitors ?name; extra PUT /lbaas/healthmonitors/{id} body {"healthmonitor": {"http_version": null}}
--max-retries-down0extra GET /lbaas/healthmonitors ?name; extra PUT /lbaas/healthmonitors/{id} body {"healthmonitor": {"max_retries_down": null}}
--name0extra GET /lbaas/healthmonitors ?name; extra PUT /lbaas/healthmonitors/{id} body {"healthmonitor": {"name": null}}
--url-path0extra GET /lbaas/healthmonitors ?name; extra PUT /lbaas/healthmonitors/{id} body {"healthmonitor": {"url_path": null}}
--wait0none
--tag0extra GET /lbaas/healthmonitors ?name; extra GET /lbaas/healthmonitors/{id}; extra PUT /lbaas/healthmonitors/{id} body {"healthmonitor": {"tags": ["t1", "t2"]}}
--all-tag0extra GET /lbaas/healthmonitors ?name; extra PUT /lbaas/healthmonitors/{id} body {"healthmonitor": {"tags": []}}

l7policy

**loadbalancer l7policy create** (octaviaclient/osc/v2/l7policy.py:35)

OptionExitEffect on the wire compared with the same command without it
--name0body l7policy.name="x"
--description0body l7policy.description="x"
--redirect-pool0extra GET /lbaas/pools ?name; body l7policy.action="REDIRECT_TO_POOL"; body l7policy.redirect_pool_id="{uuid}"
--redirect-url0body l7policy.redirect_url="x"
--redirect-prefix0body l7policy.action="REDIRECT_PREFIX"; body l7policy.redirect_prefix="x"
--redirect-http-code0body l7policy.redirect_http_code=301
--position0body l7policy.position=1
--enable0none
--disable0body l7policy.admin_state_up=false
--wait0extra GET /lbaas/listeners/{id}; extra GET /lbaas/loadbalancers/{id}; extra GET /lbaas/l7policies/{id}
--tag0body l7policy.tags=["t3"]
--no-tag0none

**loadbalancer l7policy delete** (octaviaclient/osc/v2/l7policy.py:152)

OptionExitEffect on the wire compared with the same command without it
--wait0extra GET /lbaas/l7policies/{id}

**loadbalancer l7policy list** (octaviaclient/osc/v2/l7policy.py:188)

OptionExitEffect on the wire compared with the same command without it
--listener0extra GET /lbaas/listeners ?name; query listener_id={uuid}
--tags0query tags=t1,t2
--any-tags0query tags-any=t1,t2
--not-tags0query not-tags=t1,t2
--not-any-tags0query not-tags-any=t1,t2

**loadbalancer l7policy set** (octaviaclient/osc/v2/l7policy.py:258)

OptionExitEffect on the wire compared with the same command without it
--name0body l7policy.name="x"
--description0body l7policy.description="x"
--action0body l7policy.action="REDIRECT_TO_URL"; body l7policy.redirect_url="http://x/"
--redirect-pool0extra GET /lbaas/pools ?name; body l7policy.redirect_pool_id="{uuid}"
--redirect-url0body l7policy.redirect_url="x"
--redirect-prefix0body l7policy.redirect_prefix="x"
--redirect-http-code0body l7policy.redirect_http_code=301
--position0body l7policy.position=1
--enable0body l7policy.admin_state_up=true
--disable0body l7policy.admin_state_up=false
--wait0extra GET /lbaas/l7policies/{id}
--tag0extra GET /lbaas/l7policies/{id}; body l7policy.tags=["t1", "t3", "t2"]
--no-tag0body l7policy.tags=[]

**loadbalancer l7policy unset** (octaviaclient/osc/v2/l7policy.py:364)

OptionExitEffect on the wire compared with the same command without it
--description0extra GET /lbaas/l7policies ?name; extra PUT /lbaas/l7policies/{id} body {"l7policy": {"description": null}}
--name0extra GET /lbaas/l7policies ?name; extra PUT /lbaas/l7policies/{id} body {"l7policy": {"name": null}}
--redirect-http-code0extra GET /lbaas/l7policies ?name; extra PUT /lbaas/l7policies/{id} body {"l7policy": {"redirect_http_code": null}}
--wait0none
--tag0extra GET /lbaas/l7policies ?name; extra GET /lbaas/l7policies/{id}; extra PUT /lbaas/l7policies/{id} body {"l7policy": {"tags": ["t1", "t2"]}}
--all-tag0extra GET /lbaas/l7policies ?name; extra PUT /lbaas/l7policies/{id} body {"l7policy": {"tags": []}}

l7rule

**loadbalancer l7rule create** (octaviaclient/osc/v2/l7rule.py:37)

OptionExitEffect on the wire compared with the same command without it
--invert0body rule.invert=true
--key0body rule.key="x"
--enable0none
--disable0body rule.admin_state_up=false
--wait0extra GET /lbaas/l7policies/{id}; extra GET /lbaas/listeners/{id}; extra GET /lbaas/loadbalancers/{id}; extra GET /lbaas/l7policies/{id}/rules/{id}
--tag0body rule.tags=["t3"]
--no-tag0none

**loadbalancer l7rule delete** (octaviaclient/osc/v2/l7rule.py:139)

OptionExitEffect on the wire compared with the same command without it
--wait0extra GET /lbaas/l7policies/{id}/rules/{id}

**loadbalancer l7rule list** (octaviaclient/osc/v2/l7rule.py:182)

OptionExitEffect on the wire compared with the same command without it
--tags0query tags=t1,t2
--any-tags0query tags-any=t1,t2
--not-tags0query not-tags=t1,t2
--not-any-tags0query not-tags-any=t1,t2

**loadbalancer l7rule set** (octaviaclient/osc/v2/l7rule.py:254)

OptionExitEffect on the wire compared with the same command without it
--compare-type0body rule.compare_type="REGEX"
--invert0body rule.invert=true
--value0body rule.value="x"
--key0body rule.key="x"
--type0body rule.type="FILE_TYPE"
--enable0body rule.admin_state_up=true
--disable0body rule.admin_state_up=false
--wait0extra GET /lbaas/l7policies/{id}/rules/{id}
--tag0extra GET /lbaas/l7policies/{id}/rules/{id}; body rule.tags=["t1", "t3", "t2"]
--no-tag0body rule.tags=[]

**loadbalancer l7rule unset** (octaviaclient/osc/v2/l7rule.py:354)

OptionExitEffect on the wire compared with the same command without it
--invert0extra GET /lbaas/l7policies ?name; extra PUT /lbaas/l7policies/{id}/rules/{id} body {"rule": {"invert": null}}
--key0extra GET /lbaas/l7policies ?name; extra PUT /lbaas/l7policies/{id}/rules/{id} body {"rule": {"key": null}}
--wait0none
--tag0extra GET /lbaas/l7policies ?name; extra GET /lbaas/l7policies/{id}/rules/{id}; extra PUT /lbaas/l7policies/{id}/rules/{id} body {"rule": {"tags": ["t1", "t2"]}}
--all-tag0extra GET /lbaas/l7policies ?name; extra PUT /lbaas/l7policies/{id}/rules/{id} body {"rule": {"tags": []}}

listener

**loadbalancer listener create** (octaviaclient/osc/v2/listener.py:34)

OptionExitEffect on the wire compared with the same command without it
--name0body listener.name="x"
--description0body listener.description="x"
--connection-limit0body listener.connection_limit="1"
--default-pool0extra GET /lbaas/pools ?name; body listener.default_pool_id="{uuid}"
--default-tls-container-ref0body listener.default_tls_container_ref="x"
--sni-container-refs0body listener.sni_container_refs=["ref1"]
--insert-headers0body listener.insert_headers={"X-Forwarded-For": "true"}
--timeout-client-data0body listener.timeout_client_data=1
--timeout-member-connect0body listener.timeout_member_connect=1
--timeout-member-data0body listener.timeout_member_data=1
--timeout-tcp-inspect0body listener.timeout_tcp_inspect=1
--enable0none
--disable0body listener.admin_state_up=false
--client-ca-tls-container-ref0body listener.client_ca_tls_container_ref="x"
--client-authentication0body listener.client_authentication="NONE"
--client-crl-container-ref0body listener.client_crl_container_ref="x"
--allowed-cidr0body listener.allowed_cidrs=["10.0.0.0/24"]
--wait0extra GET /lbaas/loadbalancers/{id}; extra GET /lbaas/listeners/{id}
--tls-ciphers0body listener.tls_ciphers="x"
--tls-version0body listener.tls_versions=["x"]
--alpn-protocol0body listener.alpn_protocols=["x"]
--hsts-max-age0body listener.hsts_max_age=1
--hsts-include-subdomains0body listener.hsts_max_age=1; body listener.hsts_include_subdomains=true
--hsts-preload0body listener.hsts_max_age=1; body listener.hsts_preload=true
--tag0body listener.tags=["t3"]
--no-tag0none

**loadbalancer listener delete** (octaviaclient/osc/v2/listener.py:274)

OptionExitEffect on the wire compared with the same command without it
--wait0extra GET /lbaas/listeners/{id}

**loadbalancer listener list** (octaviaclient/osc/v2/listener.py:309)

OptionExitEffect on the wire compared with the same command without it
--name0query name=x
--loadbalancer0extra GET /lbaas/loadbalancers ?name; query loadbalancer_id={uuid}
--enable0query admin_state_up=True
--disable0query admin_state_up=False
--project0extra GET /projects/{id}; query project_id={uuid}
--tags0query tags=t1,t2
--any-tags0query tags-any=t1,t2
--not-tags0query not-tags=t1,t2
--not-any-tags0query not-tags-any=t1,t2

**loadbalancer listener set** (octaviaclient/osc/v2/listener.py:404)

OptionExitEffect on the wire compared with the same command without it
--name0body listener.name="x"
--description0body listener.description="x"
--connection-limit0body listener.connection_limit="x"
--default-pool0extra GET /lbaas/pools ?name; body listener.default_pool_id="{uuid}"
--default-tls-container-ref0body listener.default_tls_container_ref="x"
--sni-container-refs0body listener.sni_container_refs=["ref1"]
--insert-headers0body listener.insert_headers={"X-Forwarded-For": "true"}
--timeout-client-data0body listener.timeout_client_data=1
--timeout-member-connect0body listener.timeout_member_connect=1
--timeout-member-data0body listener.timeout_member_data=1
--timeout-tcp-inspect0body listener.timeout_tcp_inspect=1
--enable0body listener.admin_state_up=true
--disable0body listener.admin_state_up=false
--client-ca-tls-container-ref0body listener.client_ca_tls_container_ref="x"
--client-authentication0body listener.client_authentication="NONE"
--client-crl-container-ref0body listener.client_crl_container_ref="x"
--allowed-cidr0body listener.allowed_cidrs=["10.0.0.0/24"]
--wait0extra GET /lbaas/listeners/{id}
--tls-ciphers0body listener.tls_ciphers="x"
--tls-version0body listener.tls_versions=["x"]
--alpn-protocol0body listener.alpn_protocols=["x"]
--hsts-max-age0body listener.hsts_max_age=1
--hsts-include-subdomains0body listener.hsts_include_subdomains=true
--hsts-preload0body listener.hsts_preload=true
--tag0extra GET /lbaas/listeners/{id}; body listener.tags=["t1", "t3", "t2"]
--no-tag0body listener.tags=[]

**loadbalancer listener unset** (octaviaclient/osc/v2/listener.py:615)

OptionExitEffect on the wire compared with the same command without it
--name0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"name": null}}
--description0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"description": null}}
--connection-limit0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"connection_limit": null}}
--default-pool0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"default_pool_id": null}}
--default-tls-container-ref0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"default_tls_container_ref": null}}
--sni-container-refs0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"sni_container_refs": null}}
--insert-headers0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"insert_headers": null}}
--timeout-client-data0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"timeout_client_data": null}}
--timeout-member-connect0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"timeout_member_connect": null}}
--timeout-member-data0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"timeout_member_data": null}}
--timeout-tcp-inspect0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"timeout_tcp_inspect": null}}
--client-ca-tls-container-ref0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"client_ca_tls_container_ref": null}}
--client-authentication0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"client_authentication": null}}
--client-crl-container-ref0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"client_crl_container_ref": null}}
--allowed-cidrs0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"allowed_cidrs": null}}
--tls-versions0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"tls_versions": null}}
--tls-ciphers0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"tls_ciphers": null}}
--wait0none
--alpn-protocols0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"alpn_protocols": null}}
--hsts-max-age0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"hsts_max_age": null}}
--hsts-include-subdomains0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"hsts_include_subdomains": null}}
--hsts-preload0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"hsts_preload": null}}
--tag0extra GET /lbaas/listeners ?name; extra GET /lbaas/listeners/{id}; extra PUT /lbaas/listeners/{id} body {"listener": {"tags": ["t1", "t2"]}}
--all-tag0extra GET /lbaas/listeners ?name; extra PUT /lbaas/listeners/{id} body {"listener": {"tags": []}}

loadbalancer

**loadbalancer create** (octaviaclient/osc/v2/load_balancer.py:34)

OptionExitEffect on the wire compared with the same command without it
--name0body loadbalancer.name="x"
--description0body loadbalancer.description="x"
--vip-address0body loadbalancer.vip_address="10.0.0.1"
--vip-qos-policy-id0extra GET /qos/policies ?id; body loadbalancer.vip_qos_policy_id="{uuid}"
--additional-vip0body loadbalancer.additional_vips=[{"subnet_id": "{uuid}"}]
--vip-sg-id0extra GET /security-groups ?id; body loadbalancer.vip_sg_ids=["{uuid}"]
--project0extra GET /projects/{id}; body loadbalancer.project_id="{uuid}"
--provider0body loadbalancer.provider="x"
--availability-zone0body loadbalancer.availability_zone="x"
--enable0none
--disable0body loadbalancer.admin_state_up=false
--flavor0extra GET /lbaas/flavors ?name; body loadbalancer.flavor_id="{uuid}"
--wait0extra GET /lbaas/loadbalancers/{id}
--tag0body loadbalancer.tags=["t3"]
--no-tag0none
--vip-port-id0extra GET /ports ?id; body loadbalancer.vip_port_id="{uuid}"
--vip-network-id0extra GET /networks ?id; body loadbalancer.vip_network_id="{uuid}"

**loadbalancer delete** (octaviaclient/osc/v2/load_balancer.py:193)

OptionExitEffect on the wire compared with the same command without it
--cascade0query cascade=True
--wait0extra GET /lbaas/loadbalancers/{id}

**loadbalancer failover** (octaviaclient/osc/v2/load_balancer.py:235)

OptionExitEffect on the wire compared with the same command without it
--wait0extra GET /lbaas/loadbalancers/{id}

**loadbalancer list** (octaviaclient/osc/v2/load_balancer.py:269)

OptionExitEffect on the wire compared with the same command without it
--name0query name=x
--enable0query admin_state_up=True
--disable0query admin_state_up=False
--project0extra GET /projects/{id}; query project_id={uuid}
--vip-network-id0extra GET /networks ?id; query vip_network_id={uuid}
--vip-subnet-id0extra GET /subnets ?id; query vip_subnet_id={uuid}
--vip-qos-policy-id0extra GET /qos/policies ?id; query vip_qos_policy_id={uuid}
--vip-port-id0extra GET /ports ?id; query vip_port_id={uuid}
--provisioning-status0query provisioning_status=ACTIVE
--operating-status0query operating_status=ONLINE
--provider0query provider=x
--flavor0extra GET /lbaas/flavors ?name; query flavor_id={uuid}
--availability-zone0query availability_zone=x
--tags0query tags=t1,t2
--any-tags0query tags-any=t1,t2
--not-tags0query not-tags=t1,t2
--not-any-tags0query not-tags-any=t1,t2

**loadbalancer set** (octaviaclient/osc/v2/load_balancer.py:420)

OptionExitEffect on the wire compared with the same command without it
--name0body loadbalancer.name="x"
--description0body loadbalancer.description="x"
--vip-qos-policy-id0extra GET /qos/policies ?id; body loadbalancer.vip_qos_policy_id="{uuid}"
--vip-sg-id0extra GET /security-groups ?id; body loadbalancer.vip_sg_ids=["{uuid}"]
--enable0body loadbalancer.admin_state_up=true
--disable0body loadbalancer.admin_state_up=false
--wait0extra GET /lbaas/loadbalancers/{id}
--tag0extra GET /lbaas/loadbalancers/{id}; body loadbalancer.tags=["t1", "t3", "t2"]
--no-tag0body loadbalancer.tags=[]

**loadbalancer unset** (octaviaclient/osc/v2/load_balancer.py:499)

OptionExitEffect on the wire compared with the same command without it
--name0extra GET /lbaas/loadbalancers ?name; extra PUT /lbaas/loadbalancers/{id} body {"loadbalancer": {"name": null}}
--description0extra GET /lbaas/loadbalancers ?name; extra PUT /lbaas/loadbalancers/{id} body {"loadbalancer": {"description": null}}
--vip-qos-policy-id0extra GET /lbaas/loadbalancers ?name; extra PUT /lbaas/loadbalancers/{id} body {"loadbalancer": {"vip_qos_policy_id": null}}
--vip-sg-id0extra GET /lbaas/loadbalancers ?name; extra PUT /lbaas/loadbalancers/{id} body {"loadbalancer": {"vip_sg_ids": null}}
--wait0none
--tag0extra GET /lbaas/loadbalancers ?name; extra GET /lbaas/loadbalancers/{id}; extra PUT /lbaas/loadbalancers/{id} body {"loadbalancer": {"tags": ["t1", "t2"]}}
--all-tag0extra GET /lbaas/loadbalancers ?name; extra PUT /lbaas/loadbalancers/{id} body {"loadbalancer": {"tags": []}}

member

**loadbalancer member create** (octaviaclient/osc/v2/member.py:112)

OptionExitEffect on the wire compared with the same command without it
--name0body member.name="x"
--disable-backup0body member.backup=false
--enable-backup0body member.backup=true
--weight0body member.weight=1
--subnet-id0extra GET /subnets ?id; body member.subnet_id="{uuid}"
--monitor-port0body member.monitor_port=1
--monitor-address0body member.monitor_address="10.0.0.1"
--enable0body member.admin_state_up=true
--disable0body member.admin_state_up=false
--wait0extra GET /lbaas/pools/{id}; extra GET /lbaas/loadbalancers/{id}; extra GET /lbaas/pools/{id}/members/{id}
--request-sriov0body member.request_sriov=true
--tag0body member.tags=["t3"]
--no-tag0none

**loadbalancer member delete** (octaviaclient/osc/v2/member.py:354)

OptionExitEffect on the wire compared with the same command without it
--wait0extra GET /lbaas/pools/{id}/members/{id}

**loadbalancer member list** (octaviaclient/osc/v2/member.py:32)

OptionExitEffect on the wire compared with the same command without it
--tags0query tags=t1,t2
--any-tags0query tags-any=t1,t2
--not-tags0query not-tags=t1,t2
--not-any-tags0query not-tags-any=t1,t2

**loadbalancer member set** (octaviaclient/osc/v2/member.py:249)

OptionExitEffect on the wire compared with the same command without it
--name0body member.name="x"
--disable-backup0body member.backup=false
--enable-backup0body member.backup=true
--weight0body member.weight=1
--monitor-port0body member.monitor_port=1
--monitor-address0body member.monitor_address="10.0.0.1"
--enable0body member.admin_state_up=true
--disable0body member.admin_state_up=false
--wait0extra GET /lbaas/pools/{id}/members/{id}
--tag0extra GET /lbaas/pools/{id}/members/{id}; body member.tags=["t1", "t3", "t2"]
--no-tag0body member.tags=[]

**loadbalancer member unset** (octaviaclient/osc/v2/member.py:400)

OptionExitEffect on the wire compared with the same command without it
--backup0extra GET /lbaas/pools ?name; extra GET /lbaas/pools/{id}/members ?name; extra PUT /lbaas/pools/{id}/members/{id} body {"member": {"backup": null}}
--monitor-address0extra GET /lbaas/pools ?name; extra GET /lbaas/pools/{id}/members ?name; extra PUT /lbaas/pools/{id}/members/{id} body {"member": {"monitor_address": null}}
--monitor-port0extra GET /lbaas/pools ?name; extra GET /lbaas/pools/{id}/members ?name; extra PUT /lbaas/pools/{id}/members/{id} body {"member": {"monitor_port": null}}
--name0extra GET /lbaas/pools ?name; extra GET /lbaas/pools/{id}/members ?name; extra PUT /lbaas/pools/{id}/members/{id} body {"member": {"name": null}}
--weight0extra GET /lbaas/pools ?name; extra GET /lbaas/pools/{id}/members ?name; extra PUT /lbaas/pools/{id}/members/{id} body {"member": {"weight": null}}
--wait0none
--tag0extra GET /lbaas/pools ?name; extra GET /lbaas/pools/{id}/members ?name; extra GET /lbaas/pools/{id}/members/{id}; extra PUT /lbaas/pools/{id}/members/{id} body {"member": {"tags": ["t1", "t2"]}}
--all-tag0extra GET /lbaas/pools ?name; extra GET /lbaas/pools/{id}/members ?name; extra PUT /lbaas/pools/{id}/members/{id} body {"member": {"tags": []}}

pool

**loadbalancer pool create** (octaviaclient/osc/v2/pool.py:34)

OptionExitEffect on the wire compared with the same command without it
--name0body pool.name="x"
--description0body pool.description="x"
--loadbalancer0extra GET /lbaas/loadbalancers ?name; body pool.loadbalancer_id="{uuid}"
--session-persistence0body pool.session_persistence={"type": "SOURCE_IP"}
--enable0none
--disable0body pool.admin_state_up=false
--tls-container-ref0body pool.tls_container_ref="x"
--ca-tls-container-ref0body pool.ca_tls_container_ref="x"
--crl-container-ref0body pool.crl_container_ref="x"
--enable-tls0body pool.tls_enabled=true
--disable-tls0body pool.tls_enabled=false
--wait0extra GET /lbaas/loadbalancers/{id}; extra GET /lbaas/pools/{id}
--tls-ciphers0body pool.tls_ciphers="x"
--tls-version0body pool.tls_versions=["x"]
--alpn-protocol0body pool.alpn_protocols=["x"]
--tag0body pool.tags=["t3"]
--no-tag0none

**loadbalancer pool delete** (octaviaclient/osc/v2/pool.py:195)

OptionExitEffect on the wire compared with the same command without it
--wait0extra GET /lbaas/pools/{id}

**loadbalancer pool list** (octaviaclient/osc/v2/pool.py:227)

OptionExitEffect on the wire compared with the same command without it
--loadbalancer0extra GET /lbaas/loadbalancers ?name; query loadbalancer_id={uuid}
--tags0query tags=t1,t2
--any-tags0query tags-any=t1,t2
--not-tags0query not-tags=t1,t2
--not-any-tags0query not-tags-any=t1,t2

**loadbalancer pool set** (octaviaclient/osc/v2/pool.py:298)

OptionExitEffect on the wire compared with the same command without it
--name0body pool.name="x"
--description0body pool.description="x"
--session-persistence0body pool.session_persistence={"type": "SOURCE_IP"}
--lb-algorithm0body pool.lb_algorithm="SOURCE_IP"
--enable0body pool.admin_state_up=true
--disable0body pool.admin_state_up=false
--tls-container-ref0body pool.tls_container_ref="x"
--ca-tls-container-ref0body pool.ca_tls_container_ref="x"
--crl-container-ref0body pool.crl_container_ref="x"
--enable-tls0body pool.tls_enabled=true
--disable-tls0body pool.tls_enabled=false
--wait0extra GET /lbaas/pools/{id}
--tls-ciphers0body pool.tls_ciphers="x"
--tls-version0body pool.tls_versions=["x"]
--alpn-protocol0body pool.alpn_protocols=["x"]
--tag0extra GET /lbaas/pools/{id}; body pool.tags=["t1", "t3", "t2"]
--no-tag0body pool.tags=[]

**loadbalancer pool unset** (octaviaclient/osc/v2/pool.py:434)

OptionExitEffect on the wire compared with the same command without it
--name0extra GET /lbaas/pools ?name; extra PUT /lbaas/pools/{id} body {"pool": {"name": null}}
--description0extra GET /lbaas/pools ?name; extra PUT /lbaas/pools/{id} body {"pool": {"description": null}}
--ca-tls-container-ref0extra GET /lbaas/pools ?name; extra PUT /lbaas/pools/{id} body {"pool": {"ca_tls_container_ref": null}}
--crl-container-ref0extra GET /lbaas/pools ?name; extra PUT /lbaas/pools/{id} body {"pool": {"crl_container_ref": null}}
--session-persistence0extra GET /lbaas/pools ?name; extra PUT /lbaas/pools/{id} body {"pool": {"session_persistence": null}}
--tls-container-ref0extra GET /lbaas/pools ?name; extra PUT /lbaas/pools/{id} body {"pool": {"tls_container_ref": null}}
--tls-versions0extra GET /lbaas/pools ?name; extra PUT /lbaas/pools/{id} body {"pool": {"tls_versions": null}}
--tls-ciphers0extra GET /lbaas/pools ?name; extra PUT /lbaas/pools/{id} body {"pool": {"tls_ciphers": null}}
--wait0none
--alpn-protocols0extra GET /lbaas/pools ?name; extra PUT /lbaas/pools/{id} body {"pool": {"alpn_protocols": null}}
--tag0extra GET /lbaas/pools ?name; extra GET /lbaas/pools/{id}; extra PUT /lbaas/pools/{id} body {"pool": {"tags": ["t1", "t2"]}}
--all-tag0extra GET /lbaas/pools ?name; extra PUT /lbaas/pools/{id} body {"pool": {"tags": []}}

provider

**loadbalancer provider capability list** (octaviaclient/osc/v2/provider.py:44)

OptionExitEffect on the wire compared with the same command without it
--flavor0none
--availability-zone0none

quota

**loadbalancer quota list** (octaviaclient/osc/v2/quota.py:29)

OptionExitEffect on the wire compared with the same command without it
--project0extra GET /projects/{id}; query project_id={uuid}

**loadbalancer quota set** (octaviaclient/osc/v2/quota.py:98)

OptionExitEffect on the wire compared with the same command without it
--healthmonitor0body quota.health_monitor=1
--listener0body quota.listener=1
--loadbalancer0body quota.load_balancer=1
--member0body quota.member=1
--l7policy0body quota.l7policy=1
--l7rule0body quota.l7rule=1

**loadbalancer quota unset** (octaviaclient/osc/v2/quota.py:213)

OptionExitEffect on the wire compared with the same command without it
--loadbalancer0extra GET /projects/{id}; extra PUT /lbaas/quotas/{id} body {"quota": {"loadbalancer": null}}
--listener0extra GET /projects/{id}; extra PUT /lbaas/quotas/{id} body {"quota": {"listener": null}}
--pool0extra GET /projects/{id}; extra PUT /lbaas/quotas/{id} body {"quota": {"pool": null}}
--member0extra GET /projects/{id}; extra PUT /lbaas/quotas/{id} body {"quota": {"member": null}}
--healthmonitor0extra GET /projects/{id}; extra PUT /lbaas/quotas/{id} body {"quota": {"healthmonitor": null}}
--l7policy0extra GET /projects/{id}; extra PUT /lbaas/quotas/{id} body {"quota": {"l7policy": null}}
--l7rule0extra GET /projects/{id}; extra PUT /lbaas/quotas/{id} body {"quota": {"l7rule": null}}

Source: reverse-spec-python-octaviaclient/01-cli-commands_stable-2026.2.md. The _rewrite/ and _inventory/ files are not published on the site.