# Should read the test, check if the syntax are valid
# and return tuples with the ( host, command ) structure
-class recipe():
- def __init__(self, path, circle=[]):
+class Recipe():
+ def __init__(self, path, circle=[], machines=[]):
self.recipe_file = path
try:
self.path = os.path.dirname(self.recipe_file)
self.log = logger.getChild(self.name)
self.log.debug("Path of recipe is: {}".format(self.recipe_file))
self._recipe = None
- self._machines = None
+ self._machines = machines
+
+ self.log.debug("Machine names we use when we substitute the all statement: {}".format(self._machines))
self.in_recursion = True
if len(circle) == 0:
if not os.path.isfile(self.recipe_file):
self.log.error("{} is not a file".format(self.recipe_file))
- raise RecipeExeption("{} is not a file".format(self.recipe_file)())
+ raise RecipeExeption("{} is not a file".format(self.recipe_file))
try:
with open(self.recipe_file) as fobj:
self.raw_recipe = fobj.readlines()
except FileNotFoundError as error:
- self.log.error("No such file: {}".format(vm_xml_file))
+ self.log.error("No such file: {}".format(self.recipe_file))
raise error
@property
@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
for line in self.raw_recipe:
+ # Check if the line is empty
+ if line.strip() == "":
+ self.log.debug("Skipping empty line {}".format(i))
+ i = i + 1
+ continue
+
+ # Check if the line is a comment
+ if line.strip().startswith("#"):
+ self.log.debug("Skipping comment in line {}".format(i))
+ i = i + 1
+ continue
+
raw_line = line.split(":", 1)
if len(raw_line) < 2:
self.log.error("Error parsing the recipe in line {}".format(i))
self.log.error("Detect import loop!")
raise RecipeExeption("Detect import loop!")
self.circle.append(path)
- recipe_to_include = recipe(path, circle=self.circle)
+ recipe_to_include = Recipe(path, circle=self.circle)
if machine == "include":
self._recipe.extend(recipe_to_include.recipe)