aboutsummaryrefslogtreecommitdiffstats
path: root/os_net_config/impl_ifcfg.py
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-10-16 11:23:37 +0000
committerGerrit Code Review <review@openstack.org>2015-10-16 11:23:37 +0000
commitf885df39460d7d8d69e6a3375da69ceead42e6a7 (patch)
tree2ff2895e228c4274bcd87a1aa405a374e2de6e8c /os_net_config/impl_ifcfg.py
parentcf68668803886fb68b0f0a4a33edf65cf17c6b7c (diff)
parentd01acefc15cebcfc5b7d808d3ed4f41cbaf8d74d (diff)
Merge "Add Linux Bridge capability to os-net-config ifcfg"
Diffstat (limited to 'os_net_config/impl_ifcfg.py')
-rw-r--r--os_net_config/impl_ifcfg.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/os_net_config/impl_ifcfg.py b/os_net_config/impl_ifcfg.py
index c1f44dd..0deb61e 100644
--- a/os_net_config/impl_ifcfg.py
+++ b/os_net_config/impl_ifcfg.py
@@ -50,6 +50,7 @@ class IfcfgNetConfig(os_net_config.NetConfig):
self.interface_data = {}
self.route_data = {}
self.bridge_data = {}
+ self.linuxbridge_data = {}
self.linuxbond_data = {}
self.member_names = {}
self.bond_slaves = {}
@@ -92,6 +93,8 @@ class IfcfgNetConfig(os_net_config.NetConfig):
else:
data += "TYPE=OVSPort\n"
data += "OVS_BRIDGE=%s\n" % base_opt.bridge_name
+ if base_opt.linux_bridge_name:
+ data += "BRIDGE=%s\n" % base_opt.linux_bridge_name
if isinstance(base_opt, objects.OvsBridge):
data += "DEVICETYPE=ovs\n"
data += "TYPE=OVSBridge\n"
@@ -124,6 +127,18 @@ class IfcfgNetConfig(os_net_config.NetConfig):
if base_opt.ovs_options:
data += "OVS_OPTIONS=\"%s\"\n" % base_opt.ovs_options
ovs_extra.extend(base_opt.ovs_extra)
+ elif isinstance(base_opt, objects.LinuxBridge):
+ data += "TYPE=Bridge\n"
+ data += "DELAY=0\n"
+ if base_opt.use_dhcp:
+ data += "BOOTPROTO=dhcp\n"
+ if base_opt.members:
+ members = [member.name for member in base_opt.members]
+ self.member_names[base_opt.name] = members
+ if base_opt.primary_interface_name:
+ primary_name = base_opt.primary_interface_name
+ primary_mac = utils.interface_mac(primary_name)
+ data += "MACADDR=\"%s\"\n" % primary_mac
elif isinstance(base_opt, objects.LinuxBond):
if base_opt.primary_interface_name:
primary_name = base_opt.primary_interface_name
@@ -245,6 +260,18 @@ class IfcfgNetConfig(os_net_config.NetConfig):
if bridge.routes:
self._add_routes(bridge.name, bridge.routes)
+ def add_linux_bridge(self, bridge):
+ """Add a LinuxBridge object to the net config object.
+
+ :param bridge: The LinuxBridge object to add.
+ """
+ logger.info('adding linux bridge: %s' % bridge.name)
+ data = self._add_common(bridge)
+ logger.debug('bridge data: %s' % data)
+ self.linuxbridge_data[bridge.name] = data
+ if bridge.routes:
+ self._add_routes(bridge.name, bridge.routes)
+
def add_bond(self, bond):
"""Add an OvsBond object to the net config object.
@@ -320,6 +347,20 @@ class IfcfgNetConfig(os_net_config.NetConfig):
update_files[bridge_route_path] = route_data
logger.info('No changes required for bridge: %s' % bridge_name)
+ for bridge_name, bridge_data in self.linuxbridge_data.iteritems():
+ route_data = self.route_data.get(bridge_name, '')
+ bridge_path = self.root_dir + bridge_config_path(bridge_name)
+ bridge_route_path = self.root_dir + route_config_path(bridge_name)
+ all_file_names.append(bridge_path)
+ all_file_names.append(bridge_route_path)
+ if (utils.diff(bridge_path, bridge_data) or
+ utils.diff(bridge_route_path, route_data)):
+ restart_bridges.append(bridge_name)
+ restart_interfaces.extend(self.child_members(bridge_name))
+ update_files[bridge_path] = bridge_data
+ update_files[bridge_route_path] = route_data
+ logger.info('No changes required for bridge: %s' % bridge_name)
+
for bond_name, bond_data in self.linuxbond_data.iteritems():
route_data = self.route_data.get(bond_name, '')
bond_path = self.root_dir + bridge_config_path(bond_name)