aboutsummaryrefslogtreecommitdiffstats
path: root/yardstick/vTC/apexlake/experimental_framework/heat_template_generation.py
diff options
context:
space:
mode:
Diffstat (limited to 'yardstick/vTC/apexlake/experimental_framework/heat_template_generation.py')
-rw-r--r--yardstick/vTC/apexlake/experimental_framework/heat_template_generation.py236
1 files changed, 0 insertions, 236 deletions
diff --git a/yardstick/vTC/apexlake/experimental_framework/heat_template_generation.py b/yardstick/vTC/apexlake/experimental_framework/heat_template_generation.py
deleted file mode 100644
index bbf55853d..000000000
--- a/yardstick/vTC/apexlake/experimental_framework/heat_template_generation.py
+++ /dev/null
@@ -1,236 +0,0 @@
-# Copyright (c) 2015 Intel Research and Development Ireland Ltd.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-"""
-Generation of the heat templates from the base template
-"""
-
-from __future__ import absolute_import
-import os
-import shutil
-
-from oslo_serialization import jsonutils
-
-from experimental_framework import common
-from experimental_framework.constants import framework_parameters as fp
-
-
-class TreeNode:
- """
- This class represent the node of the configuration tree.\
- Each node represents a single configuration value for a single
- configuration parameter.
- """
-
- def __init__(self):
- self.up = None
- self.down = []
- self.variable_name = ''
- self.variable_value = 0
-
- def add_child(self, node):
- """
- Adds a node as a child for the current node
- :param node: node to be added as a child (type: TreeNode)
- :return: None
- """
- node.up = self
- self.down.append(node)
-
- def get_parent(self):
- """
- Returns the parent node of the current one
- :return type: TreeNode
- """
- return self.up
-
- def get_children(self):
- """
- Returns the children of the current node
- :return type: list of TreeNode
- """
- if len(self.down) == 0:
- # return [self]
- return []
- return self.down
-
- def get_variable_name(self):
- """
- Returns the name of the variable correspondent to the current node
- :return type: str
- """
- return self.variable_name
-
- def get_variable_value(self):
- """
- Returns the value of the variable correspondent to the current node
- :return type: str or int
- """
- return self.variable_value
-
- def set_variable_name(self, name):
- """
- Sets the name of the variable for the current node
- :param name: Name of the variable (type: str)
- :return None
- """
- self.variable_name = name
-
- def set_variable_value(self, value):
- """
- Sets the value of the variable for the current node
- :param value: value of the variable (type: str)
- :return None
- """
- self.variable_value = value
-
- def get_path(self):
- """
- Returns all the path from the current node to the root of the tree.
- :return type: list of TreeNode
- """
- ret_val = []
- if not self.up:
- ret_val.append(self)
- return ret_val
- for node in self.up.get_path():
- ret_val.append(node)
- ret_val.append(self)
- return ret_val
-
- def __str__(self):
- return str(self.variable_name) + " --> " + str(self.variable_value)
-
- def __repr__(self):
- return str(self.variable_name) + " = " + str(self.variable_value)
-
- @staticmethod
- def _get_leaves(node, leaves):
- """
- Returns all the leaves of a tree.
- It changes the "leaves" list.
- :param node: root of the tree (type: TreeNode)
- :param leaves: partial list of leaves (type: list of TreeNode)
- :return type: None
- """
- children = node.get_children()
- if len(children) == 0:
- leaves.append(node)
- return
- for child in children:
- TreeNode._get_leaves(child, leaves)
-
- @staticmethod
- def get_leaves(node):
- """
- Returns all the leaves of a tree.
- :param node: root of the tree (TreeNode)
- :return type: list
- """
- leaves = list()
- TreeNode._get_leaves(node, leaves)
- return leaves
-
-
-template_name = fp.EXPERIMENT_TEMPLATE_NAME
-
-
-def generates_templates(base_heat_template, deployment_configuration):
- """
- Generates the heat templates for the experiments
- :return: None
- """
- # Load useful parameters from file
- template_dir = common.get_template_dir()
- template_file_extension = fp.TEMPLATE_FILE_EXTENSION
- template_base_name = base_heat_template
-
- variables = deployment_configuration
-
- # Delete the templates eventually generated in previous running of the
- # framework
- common.LOG.info("Removing the heat templates previously generated")
- command = "rm {}{}_*".format(template_dir, template_name)
- os.system(command)
-
- # Creation of the tree with all the new configurations
- common.LOG.info("Creation of the tree with all the new configurations")
- tree = TreeNode()
- for variable in variables:
- leaves = TreeNode.get_leaves(tree)
- common.LOG.debug("LEAVES: " + str(leaves))
- common.LOG.debug("VALUES: " + str(variables[variable]))
-
- for value in variables[variable]:
- for leaf in leaves:
- new_node = TreeNode()
- new_node.set_variable_name(variable)
- new_node.set_variable_value(value)
- leaf.add_child(new_node)
-
- common.LOG.debug("CONFIGURATION TREE: " + str(tree))
-
- common.LOG.info("Heat Template and metadata file creation")
- leaves = TreeNode.get_leaves(tree)
- counter = 1
- for leaf in leaves:
- heat_template_vars = leaf.get_path()
- if os.path.isabs(template_base_name):
- base_template = template_base_name
- else:
- base_template = template_dir + template_base_name
- new_template = template_dir + template_name
- new_template += "_" + str(counter) + template_file_extension
- shutil.copy(base_template, new_template)
-
- metadata = {}
- for var in heat_template_vars:
- if var.get_variable_name():
- common.replace_in_file(new_template, "#" +
- var.get_variable_name(),
- var.get_variable_value())
- metadata[var.get_variable_name()] = var.get_variable_value()
-
- # Save the metadata on a JSON file
- with open(new_template + ".json", 'w') as outfile:
- # sort keys to maintain persistent order for git
- jsonutils.dump(metadata, outfile, sort_keys=True)
-
- common.LOG.debug("Heat Templates and Metadata file " + str(counter) +
- " created")
- counter += 1
-
- # Creation of the template files
- common.LOG.info(str(counter - 1) + " Heat Templates and Metadata files "
- "created")
-
-
-def get_all_heat_templates(template_dir, template_file_extension):
- """
- Loads and returns all the generated heat templates
- :param template_dir: directory to search in (type: str)
- :param template_file_extension: extension of the file for templates
- (type: str)
- :return: type: list
- """
- template_files = []
- for dirname, dirnames, filenames in os.walk(template_dir):
- for filename in filenames:
- if template_file_extension in filename and \
- filename.endswith(template_file_extension) and \
- template_name in filename:
- template_files.append(filename)
- template_files.sort()
- return template_files