diff options
Diffstat (limited to 'moonv4/moon_db/moon_db/backends/memory.py')
-rw-r--r-- | moonv4/moon_db/moon_db/backends/memory.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/moonv4/moon_db/moon_db/backends/memory.py b/moonv4/moon_db/moon_db/backends/memory.py new file mode 100644 index 00000000..06de99eb --- /dev/null +++ b/moonv4/moon_db/moon_db/backends/memory.py @@ -0,0 +1,60 @@ +# Copyright 2015 Open Platform for NFV Project, Inc. and its contributors +# This software is distributed under the terms and conditions of the 'Apache-2.0' +# license which can be found in the file 'LICENSE' in this package distribution +# or at 'http://www.apache.org/licenses/LICENSE-2.0'. + +import os +import json +import logging +import hashlib +from glob import glob +from oslo_config import cfg +from moon_db.core import ConfigurationDriver + +LOG = logging.getLogger(__name__) +CONF = cfg.CONF + + +class ConfigurationConnector(object): + + def __init__(self, engine): + super(ConfigurationConnector, self).__init__() + self.policy_directory = CONF.policy_directory + self.aggregation_algorithms_dict = dict() + self.aggregation_algorithms_dict[hashlib.sha224("all_true".encode("utf-8")).hexdigest()[:32]] = \ + {'name': 'all_true', 'description': 'all rules must match'} + self.aggregation_algorithms_dict[hashlib.sha224("one_true".encode("utf-8")).hexdigest()[:32]] = \ + {'name': 'one_true', 'description': 'only one rule has to match'} + self.sub_meta_rule_algorithms_dict = dict() + self.sub_meta_rule_algorithms_dict[hashlib.sha224("inclusion".encode("utf-8")).hexdigest()[:32]] = \ + {'name': 'inclusion', 'description': 'inclusion'} + self.sub_meta_rule_algorithms_dict[hashlib.sha224("comparison".encode("utf-8")).hexdigest()[:32]] = \ + {'name': 'comparison', 'description': 'comparison'} + + def get_policy_templates_dict(self): + """ + :return: { + template_id1: {name: template_name, description: template_description}, + template_id2: {name: template_name, description: template_description}, + ... + } + """ + nodes = glob(os.path.join(self.policy_directory, "*")) + LOG.info("get_policy_templates_dict {} {}".format(self.policy_directory, nodes)) + templates = dict() + for node in nodes: + try: + metadata = json.load(open(os.path.join(node, "metadata.json"))) + except IOError: + # Note (asteroide): it's not a true policy directory, so we forgive it + continue + templates[os.path.basename(node)] = dict() + templates[os.path.basename(node)]["name"] = metadata["name"] + templates[os.path.basename(node)]["description"] = metadata["description"] + return templates + + def get_aggregation_algorithms_dict(self): + return self.aggregation_algorithms_dict + + def get_sub_meta_rule_algorithms_dict(self): + return self.sub_meta_rule_algorithms_dict |