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
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user