Add new option --no-bridge to run slapformat on real interface like eth0

parent e82a51c4
...@@ -291,7 +291,7 @@ class Computer(object): ...@@ -291,7 +291,7 @@ class Computer(object):
return computer return computer
def construct(self, alter_user=True, alter_network=True): def construct(self, alter_user=True, alter_network=True, create_tap=True):
""" """
Construct the computer object as it is. Construct the computer object as it is.
""" """
...@@ -328,7 +328,7 @@ class Computer(object): ...@@ -328,7 +328,7 @@ class Computer(object):
else: else:
owner = User('root') owner = User('root')
if alter_network: if alter_network and create_tap:
# In case it has to be attached to the TAP network device, only one # In case it has to be attached to the TAP network device, only one
# is necessary for the interface to assert carrier # is necessary for the interface to assert carrier
if self.interface.attach_to_tap and partition_index == 0: if self.interface.attach_to_tap and partition_index == 0:
...@@ -372,7 +372,7 @@ class Computer(object): ...@@ -372,7 +372,7 @@ class Computer(object):
else: else:
raise ValueError('Address %r is incorrect' % address['addr']) raise ValueError('Address %r is incorrect' % address['addr'])
finally: finally:
if alter_network and self.interface.attach_to_tap: if alter_network and create_tap and self.interface.attach_to_tap:
try: try:
self.partition_list[0].tap.detach() self.partition_list[0].tap.detach()
except IndexError: except IndexError:
...@@ -837,6 +837,10 @@ class Parser(OptionParser): ...@@ -837,6 +837,10 @@ class Parser(OptionParser):
help="Don't actually do anything.", help="Don't actually do anything.",
default=False, default=False,
action="store_true"), action="store_true"),
Option("-b", "--no_bridge",
help="Don't use bridge but use real interface like eth0.",
default=False,
action="store_true"),
Option("-v", "--verbose", Option("-v", "--verbose",
default=False, default=False,
action="store_true", action="store_true",
...@@ -988,7 +992,7 @@ def run(config): ...@@ -988,7 +992,7 @@ def run(config):
computer_definition.write(open(filepath, 'w')) computer_definition.write(open(filepath, 'w'))
config.logger.info('Stored computer definition in %r' % filepath) config.logger.info('Stored computer definition in %r' % filepath)
computer.construct(alter_user=config.alter_user, computer.construct(alter_user=config.alter_user,
alter_network=config.alter_network) alter_network=config.alter_network, create_tap=not config.no_bridge)
# Dumping and sending to the erp5 the current configuration # Dumping and sending to the erp5 the current configuration
if not config.dry_run: if not config.dry_run:
...@@ -1048,6 +1052,11 @@ class Config(object): ...@@ -1048,6 +1052,11 @@ class Config(object):
'tap_base_name', 'ipv4_local_network', 'ipv6_interface']: 'tap_base_name', 'ipv4_local_network', 'ipv6_interface']:
if getattr(self, parameter, None) is None: if getattr(self, parameter, None) is None:
setattr(self, parameter, None) setattr(self, parameter, None)
# Backward compatibility
if not getattr(self, "interface_name", None) \
and getattr(self, "bridge_name", None):
setattr(self, "interface_name", self.bridge_name)
# Set defaults lately # Set defaults lately
if self.alter_network is None: if self.alter_network is None:
...@@ -1119,6 +1128,8 @@ class Config(object): ...@@ -1119,6 +1128,8 @@ class Config(object):
self.logger.debug("Verbose mode enabled.") self.logger.debug("Verbose mode enabled.")
if self.dry_run: if self.dry_run:
self.logger.info("Dry-run mode enabled.") self.logger.info("Dry-run mode enabled.")
if self.no_bridge:
self.logger.info("No-bridge mode enabled.")
# Calculate path once # Calculate path once
self.computer_xml = os.path.abspath(self.computer_xml) self.computer_xml = os.path.abspath(self.computer_xml)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment