From 70c235d30aee3a401414f622b3de4f09f4b3d180 Mon Sep 17 00:00:00 2001 From: Steven Hardy Date: Thu, 22 Jan 2015 11:33:38 +0000 Subject: 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 --- os_net_config/__init__.py | 6 ++++-- os_net_config/cli.py | 12 ++++++------ os_net_config/impl_eni.py | 9 +++++---- os_net_config/impl_ifcfg.py | 9 +++++---- 4 files changed, 20 insertions(+), 16 deletions(-) (limited to 'os_net_config') 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: -- cgit 1.2.3-korg