aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Hardy <shardy@redhat.com>2015-01-22 11:33:38 +0000
committerSteven Hardy <shardy@redhat.com>2015-02-24 09:20:55 +0000
commit70c235d30aee3a401414f622b3de4f09f4b3d180 (patch)
tree323c5f65cfa02701ef2ae208e917e3e06a434e2e
parenta4ad189558a414c6029b4dfbc8e459339ebe534d (diff)
Move noop flag to provider base-class
Moving this flag makes it easier to implement additional functions which work differently depending on noop mode being set, vs passing it into every function like apply() Change-Id: I796792aece3e40322523e910a3b87f7ab9a451dd
-rw-r--r--os_net_config/__init__.py6
-rw-r--r--os_net_config/cli.py12
-rw-r--r--os_net_config/impl_eni.py9
-rw-r--r--os_net_config/impl_ifcfg.py9
4 files changed, 20 insertions, 16 deletions
diff --git a/os_net_config/__init__.py b/os_net_config/__init__.py
index 484c1e4..3b01b71 100644
--- a/os_net_config/__init__.py
+++ b/os_net_config/__init__.py
@@ -24,6 +24,9 @@ class NotImplemented(Exception):
class NetConfig(object):
"""Configure network interfaces using the ifcfg format."""
+ def __init__(self, noop=False):
+ self.noop = noop
+
def add_object(self, obj):
"""Convenience method to add any type of object to the network config.
See objects.py.
@@ -71,10 +74,9 @@ class NetConfig(object):
"""
raise NotImplemented("add_bond is not implemented.")
- def apply(self, noop=False, cleanup=False):
+ def apply(self, cleanup=False):
"""Apply the network configuration.
- :param noop: A boolean which indicates whether this is a no-op.
:param cleanup: A boolean which indicates whether any undefined
(existing but not present in the object model) interfaces
should be disabled and deleted.
diff --git a/os_net_config/cli.py b/os_net_config/cli.py
index 939eeaa..955bb6f 100644
--- a/os_net_config/cli.py
+++ b/os_net_config/cli.py
@@ -112,19 +112,19 @@ def main(argv=sys.argv):
provider = None
if opts.provider:
if opts.provider == 'ifcfg':
- provider = impl_ifcfg.IfcfgNetConfig()
+ provider = impl_ifcfg.IfcfgNetConfig(noop=opts.noop)
elif opts.provider == 'eni':
- provider = impl_eni.ENINetConfig()
+ provider = impl_eni.ENINetConfig(noop=opts.noop)
elif opts.provider == 'iproute':
- provider = impl_iproute.IPRouteNetConfig()
+ provider = impl_iproute.IPRouteNetConfig(noop=opts.noop)
else:
logger.error('Invalid provider specified.')
return 1
else:
if os.path.exists('/etc/sysconfig/network-scripts/'):
- provider = impl_ifcfg.IfcfgNetConfig()
+ provider = impl_ifcfg.IfcfgNetConfig(noop=opts.noop)
elif os.path.exists('/etc/network/'):
- provider = impl_eni.ENINetConfig()
+ provider = impl_eni.ENINetConfig(noop=opts.noop)
else:
logger.error('Unable to set provider for this operating system.')
return 1
@@ -161,7 +161,7 @@ def main(argv=sys.argv):
iface_json.update({'persist_mapping': persist_mapping})
obj = objects.object_from_json(iface_json)
provider.add_object(obj)
- files_changed = provider.apply(noop=opts.noop, cleanup=opts.cleanup)
+ files_changed = provider.apply(cleanup=opts.cleanup)
if opts.noop:
for location, data in files_changed.iteritems():
print "File: %s\n" % location
diff --git a/os_net_config/impl_eni.py b/os_net_config/impl_eni.py
index ce4ffe9..57f554a 100644
--- a/os_net_config/impl_eni.py
+++ b/os_net_config/impl_eni.py
@@ -39,7 +39,8 @@ class ENINetConfig(os_net_config.NetConfig):
/etc/network/interfaces format.
"""
- def __init__(self):
+ def __init__(self, noop=False):
+ super(ENINetConfig, self).__init__(noop)
self.interfaces = {}
self.routes = {}
self.bridges = {}
@@ -188,13 +189,13 @@ class ENINetConfig(os_net_config.NetConfig):
self.routes[interface_name] = data
logger.debug('route data: %s' % self.routes[interface_name])
- def apply(self, noop=False, cleanup=False):
+ def apply(self, cleanup=False):
"""Apply the network configuration.
- :param noop: A boolean which indicates whether this is a no-op.
:returns: a dict of the format: filename/data which contains info
for each file that was changed (or would be changed if in --noop
mode).
+ Note the noop mode is set via the constructor noop boolean
"""
new_config = ""
@@ -211,7 +212,7 @@ class ENINetConfig(os_net_config.NetConfig):
new_config += iface_data
if (utils.diff(_network_config_path(), new_config)):
- if noop:
+ if self.noop:
return {"/etc/network/interfaces": new_config}
for interface in self.interfaces.keys():
logger.info('running ifdown on interface: %s' % interface)
diff --git a/os_net_config/impl_ifcfg.py b/os_net_config/impl_ifcfg.py
index a728f53..62f2a41 100644
--- a/os_net_config/impl_ifcfg.py
+++ b/os_net_config/impl_ifcfg.py
@@ -49,7 +49,8 @@ def cleanup_pattern():
class IfcfgNetConfig(os_net_config.NetConfig):
"""Configure network interfaces using the ifcfg format."""
- def __init__(self):
+ def __init__(self, noop=False):
+ super(IfcfgNetConfig, self).__init__(noop)
self.interface_data = {}
self.route_data = {}
self.bridge_data = {}
@@ -211,16 +212,16 @@ class IfcfgNetConfig(os_net_config.NetConfig):
if bond.routes:
self._add_routes(bond.name, bond.routes)
- def apply(self, noop=False, cleanup=False):
+ def apply(self, cleanup=False):
"""Apply the network configuration.
- :param noop: A boolean which indicates whether this is a no-op.
:param cleanup: A boolean which indicates whether any undefined
(existing but not present in the object model) interface
should be disabled and deleted.
:returns: a dict of the format: filename/data which contains info
for each file that was changed (or would be changed if in --noop
mode).
+ Note the noop mode is set via the constructor noop boolean
"""
logger.info('applying network configs...')
restart_interfaces = []
@@ -257,7 +258,7 @@ class IfcfgNetConfig(os_net_config.NetConfig):
update_files[bridge_route_path] = route_data
logger.info('No changes required for bridge: %s' % bridge_name)
- if noop:
+ if self.noop:
return update_files
if cleanup: