import configparser
+from disk import disk
+
class log():
def __init__(self, log_level):
self.log_level = log_level
self.log.error("No such file: {}".format(self.image))
self.root_uid = root_uid
+ self.disk = disk(image)
self.username = username
self.password = password
def cmd(self, cmd):
return self.serial_con.command(cmd)
+ def copy_in(self, fr, to):
+ try:
+ self.disk.mount(self.root_uid, "/")
+ self.disk.copy_in(fr, to)
+ except BaseException as e:
+ self.log.error(e)
+ finally:
+ self.disk.umount("/")
+ self.disk.close()
class connection():
def __init__(self, device, username=None):
self.path = os.path.dirname(self.recipe_file)
self.log.debug("Path of recipe is: {}".format(self.recipe_file))
self._recipe = None
+ self._machines = None
+
+ self.in_recursion = True
+ if len(circle) == 0:
+ self.in_recursion = False
+
self.circle = circle
self.log.debug(circle)
self.log.debug(self.circle)
return self._recipe
+ @property
+ def machines(self):
+ if not self._machines:
+ self._machines = []
+ for line in self._recipe:
+ if line[0] != "all" and line[0] not in self._machines:
+ self._machines.append(line[0])
+
+ return self._machines
+
def parse(self):
self._recipe = []
i = 1
if machine == "include":
self._recipe.extend(recipe_to_include.recipe)
else:
- self._recipe.append((machine.strip(), extra.strip(), cmd.strip()))
+ # Support also something like 'alice,bob: echo'
+ machines = machine.split(",")
+ for machine in machines:
+ self._recipe.append((machine.strip(), extra.strip(), cmd.strip()))
i = i + 1
+ if not self.in_recursion:
+ tmp_recipe = []
+ for line in self._recipe:
+ if line[0] != "all":
+ tmp_recipe.append(line)
+ else:
+ for machine in self.machines:
+ tmp_recipe.append((machine.strip(), line[1], line[2]))
+
+ self._recipe = tmp_recipe
+
+
class test():
def __init__(self, path):
self.config.read(self.settings_file)
self.name = self.config["DEFAULT"]["Name"]
self.description = self.config["DEFAULT"]["Description"]
+ self.copy_to = self.config["DEFAULT"]["Copy_to"]
+ self.copy_from = self.config["DEFAULT"]["Copy_from"]
+ self.copy_from = self.copy_from.split(",")
+
+ tmp = []
+ for file in self.copy_from:
+ file = file.strip()
+ file = os.path.normpath(self.path + "/" + file)
+ tmp.append(file)
+
+ self.copy_from = tmp
self.virtual_environ_name = self.config["VIRTUAL_ENVIRONMENT"]["Name"]
self.virtual_environ_path = self.config["VIRTUAL_ENVIRONMENT"]["Path"]
for name in self.virtual_environ.machine_names:
self.virtual_machines[name].define()
self.virtual_machines[name].create_snapshot()
+ self.virtual_machines[name].copy_in(self.copy_from, self.copy_to)
self.virtual_machines[name].start()
self.log.debug("Try to login on all machines")