ironic.common.trait_based_networking.base module

class ironic.common.trait_based_networking.base.Actions(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

Represents actions recognized by Trait Based Networking

ATTACH_PORT = 'attach_port'
ATTACH_PORTGROUP = 'attach_portgroup'
BOND_PORTS = 'bond_ports'
GROUP_AND_ATTACH_PORTS = 'group_and_attach_ports'
class ironic.common.trait_based_networking.base.AttachAction(trait_action, node_uuid)[source]

Bases: RenderedAction

Base class for actions which will attach objects to networks

get_portlike_object(task)[source]
portlike_uuid()[source]
class ironic.common.trait_based_networking.base.AttachPort(trait_action, node_uuid, port_uuid, network_id)[source]

Bases: AttachAction

Attach a port to a network

Contains all the necessary information to attach a port to a network (vif)

class ironic.common.trait_based_networking.base.AttachPortgroup(trait_action, node_uuid, portgroup_uuid, network_id)[source]

Bases: AttachAction

Attach a portgroup to a network

Contains all the necessary information to attach a portgroup to a network (vif)

class ironic.common.trait_based_networking.base.Comparator(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

A FilterExpression Comparator

Comparators test mathematical-esque relations between a variable and a string.

EQUALITY = '=='
GT = '>'
GT_OR_EQ = '>='
INEQUALITY = '!='
LT = '<'
LT_OR_EQ = '<='
PREFIX_MATCH = '=~'
eval(variable, value)[source]
class ironic.common.trait_based_networking.base.CompoundExpression(left_expression, operator, right_expression)[source]

Bases: object

A compound expression found within a FilterExpression

A compound expression consists of a left-hand expression and a right-hand expression joined by a boolean operator.

eval(port, network)[source]
class ironic.common.trait_based_networking.base.FilterExpression(expression)[source]

Bases: object

Encompasses filters found in TraitActions

Used to filter (port, network) pairs to apply actions which pass the filter.

Use FilterExpression.parse to transform a string containing a grammatically correct expression into a fully parsed FilterExpression object.

See FILTER_EXPRESSION_GRAMMAR in ironic.common.trait_based_networking.grammar.parser for full understanding of how these expressions are parsed.

eval(port, network)[source]
classmethod parse(expression)[source]
class ironic.common.trait_based_networking.base.FunctionExpression(variable)[source]

Bases: object

A callable function from within a FilterExpression

Used to query objects to determine if they pass a FilterExpression or not.

eval(port, network)[source]
class ironic.common.trait_based_networking.base.Network(network_id, name, tags)[source]

Bases: object

A Network (aka vif)

Used to match against TraitAction FilterExpressions

classmethod from_vif_info(vif_info)[source]

Helper method to create Networks from vif_info dictionaries

class ironic.common.trait_based_networking.base.NetworkTrait(name, actions, order=1)[source]

Bases: object

Represents an entire Trait for Trait Based Networking

Each trait can have many actions. Traits can be ordered explicitly if so desired.

class ironic.common.trait_based_networking.base.NoMatch(trait_action, node_uuid, reason)[source]

Bases: RenderedAction

Returned by network planning when a trait action finds no matches

class ironic.common.trait_based_networking.base.NotImplementedAction(action)[source]

Bases: RenderedAction

Returned by network planning if an action has not been implemented

class ironic.common.trait_based_networking.base.Operator(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

A FilterExpression Operator

Represents a boolean operator (AND, OR) between two expressions in a filter expression.

AND = '&&'
OR = '||'
eval(variable, value)[source]
class ironic.common.trait_based_networking.base.ParenExpression(expression)[source]

Bases: object

Represents an parentheses expression found in a FilterExpression

Aids in logically grouping and evaluating expressions before others.

eval(port, network)[source]
class ironic.common.trait_based_networking.base.Port(ironic_port_like_obj)[source]

Bases: PrimordialPort

A Port used internally to query and match to TraitActions

classmethod from_ironic_port(ironic_port)[source]
is_port()[source]
is_portgroup()[source]
class ironic.common.trait_based_networking.base.Portgroup(ironic_port_like_obj)[source]

Bases: PrimordialPort

A Portgroup used internally to query and match to TraitActions

classmethod from_ironic_portgroup(ironic_portgroup)[source]
is_port()[source]
is_portgroup()[source]
class ironic.common.trait_based_networking.base.PrimordialPort(ironic_port_like_obj)[source]

Bases: object

A set of common attributes belonging to both Ports and Portgroups

class ironic.common.trait_based_networking.base.RenderedAction(trait_action, node_uuid)[source]

Bases: object

A base class for Actions which are ready to apply

class ironic.common.trait_based_networking.base.SingleExpression(variable, comparator, literal)[source]

Bases: object

A single expression from within a FilterExpression

A single expression consists of a variable name, a comparator, and a string literal. For example:

port.vendor == “purple”

In this example, When eval()ed against a port whose vendor is “purple” this expression will return True. Otherwise the expression will return False.

eval(port, network)[source]
class ironic.common.trait_based_networking.base.TraitAction(trait_name, action, filter_expression, min_count=None, max_count=None)[source]

Bases: object

An action defined by a NetworkTrait

Each action contains a filter (FilterExpression) that determines which (port, network) pairs the action can apply to.

ALL_KEYS = ['max_count', 'min_count', 'action', 'filter']
NECESSARY_KEYS = ['action', 'filter']
OPTIONAL_KEYS = ['max_count', 'min_count']
matches(portlike, network)[source]

Check if filter expression matches the port, network pairing.

class ironic.common.trait_based_networking.base.Variables(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

Represents a variable (or function) used by FilterExpressions

Values of variables are drawn from network-related objects like ports, portgroups, or networks (aka vifs).

NETWORK_NAME = 'network.name'
NETWORK_TAGS = 'network.tags'
PORT_ADDRESS = 'port.address'
PORT_CATEGORY = 'port.category'
PORT_IS_PORT = 'port.is_port'
PORT_IS_PORTGROUP = 'port.is_portgroup'
PORT_PHYSICAL_NETWORK = 'port.physical_network'
PORT_VENDOR = 'port.vendor'
attribute_name()[source]
object_name()[source]