From e479535b508b4072f64300809b824dfecc3a9182 Mon Sep 17 00:00:00 2001 From: Brent Eagles Date: Mon, 14 Nov 2016 18:52:40 -0330 Subject: Add ovs_fail_mode option for OVS bridges This patch adds an option "ovs_fail_mode" with a default value of 'standalone'. This is written to the interface configuration data as part of the ovs_extra options. Closes-Bug: #1640812 Change-Id: I2f30e56ff9fbda7beac21d95d15dbde0b01ba451 --- os_net_config/objects.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'os_net_config/objects.py') diff --git a/os_net_config/objects.py b/os_net_config/objects.py index 330b695..8d52e73 100644 --- a/os_net_config/objects.py +++ b/os_net_config/objects.py @@ -25,6 +25,8 @@ logger = logging.getLogger(__name__) _MAPPED_NICS = None +DEFAULT_OVS_BRIDGE_FAIL_MODE = 'standalone' + class InvalidConfigException(ValueError): pass @@ -397,7 +399,8 @@ class OvsBridge(_BaseOpts): def __init__(self, name, use_dhcp=False, use_dhcpv6=False, addresses=None, routes=None, mtu=None, members=None, ovs_options=None, ovs_extra=None, nic_mapping=None, persist_mapping=False, - defroute=True, dhclient_args=None, dns_servers=None): + defroute=True, dhclient_args=None, dns_servers=None, + fail_mode=None): addresses = addresses or [] routes = routes or [] members = members or [] @@ -408,6 +411,9 @@ class OvsBridge(_BaseOpts): dhclient_args, dns_servers) self.members = members self.ovs_options = ovs_options + ovs_extra = ovs_extra or [] + if fail_mode: + ovs_extra.append('set bridge {name} fail_mode=%s' % fail_mode) self.ovs_extra = format_ovs_extra(self, ovs_extra) for member in self.members: member.bridge_name = name @@ -430,7 +436,8 @@ class OvsBridge(_BaseOpts): dhclient_args, dns_servers) = _BaseOpts.base_opts_from_json( json, include_primary=False) ovs_options = json.get('ovs_options') - ovs_extra = json.get('ovs_extra', []) + ovs_extra = json.get('ovs_extra') + fail_mode = json.get('ovs_fail_mode', DEFAULT_OVS_BRIDGE_FAIL_MODE) members = [] # members @@ -448,7 +455,8 @@ class OvsBridge(_BaseOpts): members=members, ovs_options=ovs_options, ovs_extra=ovs_extra, nic_mapping=nic_mapping, persist_mapping=persist_mapping, defroute=defroute, - dhclient_args=dhclient_args, dns_servers=dns_servers) + dhclient_args=dhclient_args, dns_servers=dns_servers, + fail_mode=fail_mode) class OvsUserBridge(_BaseOpts): @@ -457,7 +465,8 @@ class OvsUserBridge(_BaseOpts): def __init__(self, name, use_dhcp=False, use_dhcpv6=False, addresses=None, routes=None, mtu=None, members=None, ovs_options=None, ovs_extra=None, nic_mapping=None, persist_mapping=False, - defroute=True, dhclient_args=None, dns_servers=None): + defroute=True, dhclient_args=None, dns_servers=None, + fail_mode=None): super(OvsUserBridge, self).__init__(name, use_dhcp, use_dhcpv6, addresses, routes, mtu, False, nic_mapping, persist_mapping, @@ -465,6 +474,9 @@ class OvsUserBridge(_BaseOpts): dns_servers) self.members = members or [] self.ovs_options = ovs_options + ovs_extra = ovs_extra or [] + if fail_mode: + ovs_extra.append('set bridge {name} fail_mode=%s' % fail_mode) self.ovs_extra = format_ovs_extra(self, ovs_extra) for member in self.members: member.bridge_name = name @@ -489,7 +501,8 @@ class OvsUserBridge(_BaseOpts): dhclient_args, dns_servers) = _BaseOpts.base_opts_from_json( json, include_primary=False) ovs_options = json.get('ovs_options') - ovs_extra = json.get('ovs_extra', []) + ovs_extra = json.get('ovs_extra') + fail_mode = json.get('ovs_fail_mode', DEFAULT_OVS_BRIDGE_FAIL_MODE) members = [] # members @@ -508,7 +521,7 @@ class OvsUserBridge(_BaseOpts): ovs_extra=ovs_extra, nic_mapping=nic_mapping, persist_mapping=persist_mapping, defroute=defroute, dhclient_args=dhclient_args, - dns_servers=dns_servers) + dns_servers=dns_servers, fail_mode=fail_mode) class LinuxBridge(_BaseOpts): -- cgit 1.2.3-korg