octavia.amphorae.backends.utils package

Submodules

octavia.amphorae.backends.utils.haproxy_query module

class HAProxyQuery(stats_socket)[source]

Bases: object

Class used for querying the HAProxy statistics socket.

The CSV output is defined in the HAProxy documentation:

http://cbonte.github.io/haproxy-dconv/configuration-1.4.html#9

get_pool_status()[source]

Get status for each server and the pool as a whole.

Returns:

pool data structure {<pool-name>: { ‘uuid’: <uuid>, ‘status’: ‘UP’|’DOWN’, ‘members’: [<name>: ‘UP’|’DOWN’|’DRAIN’|’no check’] }}

save_state(state_file_path)[source]

Save haproxy connection state to a file.

Parameters:

state_file_path – Absolute path to the state file

Returns:

bool (True if success, False otherwise)

show_info()[source]

Get and parse output from ‘show info’ command.

show_stat(proxy_iid=-1, object_type=-1, server_id=-1)[source]

Get and parse output from ‘show stat’ command.

Parameters:
  • proxy_iid – Proxy ID (column 27 in CSV output). -1 for all.

  • object_type – Select the type of dumpable object. Values can be ORed. -1 - everything 1 - frontends 2 - backends 4 - servers

  • server_id – Server ID (column 28 in CSV output?), or -1 for everything.

Returns:

stats (split into an array by newline)

octavia.amphorae.backends.utils.interface module

class InterfaceController[source]

Bases: object

ADD = 'add'
DELETE = 'delete'
FLUSH = 'flush'
SET = 'set'
TENTATIVE_WAIT_INTERVAL = 0.2
TENTATIVE_WAIT_TIMEOUT = 30
down(interface)[source]
interface_file_list()[source]
list()[source]
up(interface)[source]

octavia.amphorae.backends.utils.interface_file module

class InterfaceFile(name, if_type, mtu=None, addresses=None, routes=None, rules=None, scripts=None, is_sriov=False)[source]

Bases: object

classmethod dump(obj)[source]
classmethod from_file(filename)[source]
classmethod get_directory()[source]
classmethod get_extensions()[source]
classmethod get_host_routes(routes, **kwargs)[source]
classmethod load(fp)[source]
write()[source]
class PortInterfaceFile(name, mtu, fixed_ips)[source]

Bases: InterfaceFile

class VIPInterfaceFile(name, mtu, vips, vrrp_info, fixed_ips, topology, is_sriov=False)[source]

Bases: InterfaceFile

octavia.amphorae.backends.utils.ip_advertisement module

calculate_icmpv6_checksum(packet)[source]

Calculate the ICMPv6 checksum for a packet.

Parameters:

packet – The packet bytes to checksum.

Returns:

The checksum integer.

garp(interface, ip_address, net_ns=None)[source]

Sends a gratuitous ARP for ip_address on the interface.

Parameters:
  • interface – The interface name to send the GARP on.

  • ip_address – The IP address to advertise in the GARP.

  • net_ns – The network namespace to send the GARP from.

Returns:

None

neighbor_advertisement(interface, ip_address, net_ns=None)[source]

Sends a unsolicited neighbor advertisement for an ip on the interface.

Parameters:
  • interface – The interface name to send the GARP on.

  • ip_address – The IP address to advertise in the GARP.

  • net_ns – The network namespace to send the GARP from.

Returns:

None

send_ip_advertisement(interface, ip_address, net_ns=None)[source]

Send an address advertisement.

This method will send either GARP (IPv4) or neighbor advertisements (IPv6) for the ip address specified.

Parameters:
  • interface – The interface name to send the advertisement on.

  • ip_address – The IP address to advertise.

  • net_ns – The network namespace to send the advertisement from.

Returns:

None

octavia.amphorae.backends.utils.keepalivedlvs_query module

get_ipvsadm_info(ns_name, is_stats_cmd=False)[source]
get_listener_realserver_mapping(ns_name, listener_ip_ports, health_monitor_enabled)[source]
get_lvs_listener_pool_status(listener_id)[source]
get_lvs_listener_resource_ipports_nsname(listener_id)[source]
get_lvs_listeners_stats()[source]
read_kernel_file(ns_name, file_path)[source]

octavia.amphorae.backends.utils.network_namespace module

class NetworkNamespace(netns)[source]

Bases: object

A network namespace context manager.

Runs wrapped code inside the specified network namespace.

Parameters:

netns – The network namespace name to enter.

CLONE_NEWNET = 1073741824

octavia.amphorae.backends.utils.network_utils module

get_interface_name(ip_address, net_ns=None)[source]

Gets the interface name from an IP address.

Parameters:
  • ip_address – The IP address to lookup.

  • net_ns – The network namespace to find the interface in.

Returns:

The interface name.

Raises:

octavia.amphorae.backends.utils.nftable_utils module

load_nftables_file()[source]
write_nftable_vip_rules_file(interface_name, rules)[source]

Module contents