aboutsummaryrefslogtreecommitdiffstats
path: root/os_net_config/objects.py
diff options
context:
space:
mode:
authorSteven Hardy <shardy@redhat.com>2015-01-21 17:24:08 +0000
committerSteven Hardy <shardy@redhat.com>2015-02-24 09:20:41 +0000
commita4ad189558a414c6029b4dfbc8e459339ebe534d (patch)
tree0c39889bc89c461803f03b4cb9ae89e8bd4c0033 /os_net_config/objects.py
parent6945fe5afdc12574fe00ad440319b7873f818e84 (diff)
Add a persist_mapping option to the mapping file
This adds the option to permanently rewrite the configuration so the aliases are used instead of the system name. This is useful where you have a variety of hardware and you want to have consistent device naming accross all platforms - this allows you to essentially rename the interfaces permanently so they match the abstracted nicN names. Note, this needs to be run with --cleanup or the old (now conflicting) configs will still be in place, and it may require a reboot before the changes are fully applied. Change-Id: I5af146e764b72c4beaa41c549fabff0af8802152
Diffstat (limited to 'os_net_config/objects.py')
-rw-r--r--os_net_config/objects.py55
1 files changed, 37 insertions, 18 deletions
diff --git a/os_net_config/objects.py b/os_net_config/objects.py
index 929bcab..79d83e7 100644
--- a/os_net_config/objects.py
+++ b/os_net_config/objects.py
@@ -129,12 +129,20 @@ class _BaseOpts(object):
"""Base abstraction for logical port options."""
def __init__(self, name, use_dhcp=False, use_dhcpv6=False, addresses=[],
- routes=[], mtu=1500, primary=False, nic_mapping=None):
+ routes=[], mtu=1500, primary=False, nic_mapping=None,
+ persist_mapping=False):
numbered_nic_names = _numbered_nics(nic_mapping)
+ self.hwaddr = None
if name in numbered_nic_names:
- self.name = numbered_nic_names[name]
+ if persist_mapping:
+ self.name = name
+ hwname = numbered_nic_names[name]
+ self.hwaddr = utils.interface_mac(hwname)
+ else:
+ self.name = numbered_nic_names[name]
else:
self.name = name
+
self.mtu = mtu
self.use_dhcp = use_dhcp
self.use_dhcpv6 = use_dhcpv6
@@ -192,22 +200,25 @@ class _BaseOpts(object):
raise InvalidConfigException(msg)
nic_mapping = json.get('nic_mapping')
+ persist_mapping = json.get('persist_mapping')
if include_primary:
return (use_dhcp, use_dhcpv6, addresses, routes, mtu, primary,
- nic_mapping)
+ nic_mapping, persist_mapping)
else:
return (use_dhcp, use_dhcpv6, addresses, routes, mtu,
- nic_mapping)
+ nic_mapping, persist_mapping)
class Interface(_BaseOpts):
"""Base class for network interfaces."""
def __init__(self, name, use_dhcp=False, use_dhcpv6=False, addresses=[],
- routes=[], mtu=1500, primary=False, nic_mapping=None):
+ routes=[], mtu=1500, primary=False, nic_mapping=None,
+ persist_mapping=False):
super(Interface, self).__init__(name, use_dhcp, use_dhcpv6, addresses,
- routes, mtu, primary, nic_mapping)
+ routes, mtu, primary, nic_mapping,
+ persist_mapping)
@staticmethod
def from_json(json):
@@ -225,10 +236,11 @@ class Vlan(_BaseOpts):
def __init__(self, device, vlan_id, use_dhcp=False, use_dhcpv6=False,
addresses=[], routes=[], mtu=1500, primary=False,
- nic_mapping=None):
+ nic_mapping=None, persist_mapping=False):
name = 'vlan%i' % vlan_id
super(Vlan, self).__init__(name, use_dhcp, use_dhcpv6, addresses,
- routes, mtu, primary, nic_mapping)
+ routes, mtu, primary, nic_mapping,
+ persist_mapping)
self.vlan_id = int(vlan_id)
numbered_nic_names = _numbered_nics(nic_mapping)
@@ -251,9 +263,10 @@ class OvsBridge(_BaseOpts):
def __init__(self, name, use_dhcp=False, use_dhcpv6=False, addresses=[],
routes=[], mtu=1500, members=[], ovs_options=None,
- ovs_extra=[], nic_mapping=None):
+ ovs_extra=[], nic_mapping=None, persist_mapping=False):
super(OvsBridge, self).__init__(name, use_dhcp, use_dhcpv6, addresses,
- routes, mtu, False, nic_mapping)
+ routes, mtu, False, nic_mapping,
+ persist_mapping)
self.members = members
self.ovs_options = ovs_options
self.ovs_extra = ovs_extra
@@ -272,8 +285,9 @@ class OvsBridge(_BaseOpts):
@staticmethod
def from_json(json):
name = _get_required_field(json, 'name', 'OvsBridge')
- (use_dhcp, use_dhcpv6, addresses, routes, mtu, nic_mapping
- ) = _BaseOpts.base_opts_from_json(json, include_primary=False)
+ (use_dhcp, use_dhcpv6, addresses, routes, mtu, nic_mapping,
+ persist_mapping) = _BaseOpts.base_opts_from_json(
+ json, include_primary=False)
ovs_options = json.get('ovs_options')
ovs_extra = json.get('ovs_extra', [])
members = []
@@ -291,7 +305,8 @@ class OvsBridge(_BaseOpts):
return OvsBridge(name, use_dhcp=use_dhcp, use_dhcpv6=use_dhcpv6,
addresses=addresses, routes=routes, mtu=mtu,
members=members, ovs_options=ovs_options,
- ovs_extra=ovs_extra, nic_mapping=nic_mapping)
+ ovs_extra=ovs_extra, nic_mapping=nic_mapping,
+ persist_mapping=persist_mapping)
class OvsBond(_BaseOpts):
@@ -299,9 +314,11 @@ class OvsBond(_BaseOpts):
def __init__(self, name, use_dhcp=False, use_dhcpv6=False, addresses=[],
routes=[], mtu=1500, primary=False, members=[],
- ovs_options=None, ovs_extra=[], nic_mapping=None):
+ ovs_options=None, ovs_extra=[], nic_mapping=None,
+ persist_mapping=False):
super(OvsBond, self).__init__(name, use_dhcp, use_dhcpv6, addresses,
- routes, mtu, primary, nic_mapping)
+ routes, mtu, primary, nic_mapping,
+ persist_mapping)
self.members = members
self.ovs_options = ovs_options
self.ovs_extra = ovs_extra
@@ -318,8 +335,9 @@ class OvsBond(_BaseOpts):
@staticmethod
def from_json(json):
name = _get_required_field(json, 'name', 'OvsBond')
- (use_dhcp, use_dhcpv6, addresses, routes, mtu, nic_mapping
- ) = _BaseOpts.base_opts_from_json(json, include_primary=False)
+ (use_dhcp, use_dhcpv6, addresses, routes, mtu, nic_mapping,
+ persist_mapping) = _BaseOpts.base_opts_from_json(
+ json, include_primary=False)
ovs_options = json.get('ovs_options')
ovs_extra = json.get('ovs_extra', [])
members = []
@@ -337,4 +355,5 @@ class OvsBond(_BaseOpts):
return OvsBond(name, use_dhcp=use_dhcp, use_dhcpv6=use_dhcpv6,
addresses=addresses, routes=routes, mtu=mtu,
members=members, ovs_options=ovs_options,
- ovs_extra=ovs_extra, nic_mapping=nic_mapping)
+ ovs_extra=ovs_extra, nic_mapping=nic_mapping,
+ persist_mapping=persist_mapping)