Octavia Client for OpenStack Load Balancing

3.13.0 · active · verified Fri Apr 17

The `python-octaviaclient` library provides a client for interacting with the OpenStack Octavia Load Balancing service API (primarily v2). It allows users to programmatically manage load balancers, listeners, pools, members, and health monitors within an OpenStack environment. The current version is 3.13.0, and releases generally follow OpenStack development cycles, with patch releases occurring as needed.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to initialize the Octavia client using Keystone v3 authentication, retrieve an authenticated session, and then list existing load balancers. It relies on standard OpenStack environment variables for credentials. Ensure these are set or replace `os.environ.get` calls with your specific values.

import os
from keystoneauth1.identity import v3
from keystoneauth1.session import Session
from keystoneauth1.adapter import Adapter
from octaviaclient.v2.client import Client

# Set OpenStack authentication environment variables (e.g., OS_AUTH_URL, OS_USERNAME, OS_PASSWORD, etc.)
# Or directly provide credentials

auth = v3.Password(
    auth_url=os.environ.get('OS_AUTH_URL', 'http://localhost:5000/v3'),
    username=os.environ.get('OS_USERNAME', 'admin'),
    password=os.environ.get('OS_PASSWORD', 'password'),
    project_name=os.environ.get('OS_PROJECT_NAME', 'admin'),
    user_domain_name=os.environ.get('OS_USER_DOMAIN_NAME', 'Default'),
    project_domain_name=os.environ.get('OS_PROJECT_DOMAIN_NAME', 'Default')
)
sess = Session(auth=auth)

# Create an Octavia client adapter
octavia_client = Client(
    session=sess,
    region_name=os.environ.get('OS_REGION_NAME', None),
    service_type='load-balancer',
    interface='public'
)

try:
    # Example: List all load balancers
    load_balancers = octavia_client.loadbalancer.list()
    print(f"Found {len(load_balancers)} load balancers:")
    for lb in load_balancers:
        print(f"  - ID: {lb['id']}, Name: {lb['name']}, Provisioning Status: {lb['provisioning_status']}")
except Exception as e:
    print(f"Error connecting to Octavia or listing load balancers: {e}")
    print("Please ensure your OpenStack environment variables are correctly set.")

view raw JSON →