From d32878fc2e133fe3b5f2d1f40b50d6ec77303525 Mon Sep 17 00:00:00 2001 From: mrjk Date: Fri, 14 Jan 2022 20:12:51 -0500 Subject: [PATCH] Change: Reorganise class in correct files --- ansible_tree/app.py | 195 ++++++++++--------------- ansible_tree/{files.py => managers.py} | 0 ansible_tree/query.py | 51 +++++++ 3 files changed, 132 insertions(+), 114 deletions(-) rename ansible_tree/{files.py => managers.py} (100%) create mode 100755 ansible_tree/query.py diff --git a/ansible_tree/app.py b/ansible_tree/app.py index 030ae86..23dfc85 100755 --- a/ansible_tree/app.py +++ b/ansible_tree/app.py @@ -9,7 +9,7 @@ import yaml import anyconfig from pprint import pprint -from ansible_tree.files import BackendsManager, RulesManager +from ansible_tree.query import Query from ansible_tree.utils import schema_validate import anyconfig # from box import Box @@ -20,93 +20,86 @@ log = logging.getLogger(__name__) -class Query(): - - matcher_merge_schema = { - "$schema": 'http://json-schema.org/draft-04/schema#', - "oneOf": [ - { - "type": "array", - "mergeStrategy": "append", -# "mergeStrategy": "arrayMergeById", - }, - { - "type": "object", - "mergeStrategy": "objectMerge", - }, - { - "type": "string", - "mergeStrategy": "overwrite", - }, - { - "type": "number", - "mergeStrategy": "overwrite", - }, - { - "type": "null", - "mergeStrategy": "overwrite", - }, - ], - } - - def __init__(self, app): - - self.app = app - - self.key = None - self.scope = None - - self.paths = None - self.data = None - self.result = None - - - self.matcher_schema = { - "$schema": 'http://json-schema.org/draft-04/schema#', - "type": "object", - "additionalProperties": False, - "properties": { - "rule": { - "type": "string", - "default": ".*", - "optional": True, - }, - "strategy": { - "type": "string", - "default": "merge", - "optional": True, - "enum": ["first", "last", "merge"], - }, - "schema": { - "type": "object", - "default": self.matcher_merge_schema, - #"default": {}, - "optional": True, - }, - } - } - - - - def exec(self, key=None, scope=None, policy=None, trace=False, explain=False): - - bm = BackendsManager(app=self.app) - mm = RulesManager(app=self.app) - - log.debug(f"New query created") - candidates = bm.query(key, scope, trace=trace) - result = mm.get_result(candidates, key=key, trace=trace, explain=explain) - return result - - def dump(self): - - ret = {} - for i in dir(self): - if not i.startswith('_'): - ret[i] = getattr(self, i) - - pprint (ret) - +#class Query(): +# +# #matcher_merge_schema = { +# # "$schema": 'http://json-schema.org/draft-04/schema#', +# # "oneOf": [ +# # { +# # "type": "array", +# # "mergeStrategy": "append", +## # "mergeStrategy": "arrayMergeById", +# # }, +# # { +# # "type": "object", +# # "mergeStrategy": "objectMerge", +# # }, +# # { +# # "type": "string", +# # "mergeStrategy": "overwrite", +# # }, +# # { +# # "type": "number", +# # "mergeStrategy": "overwrite", +# # }, +# # { +# # "type": "null", +# # "mergeStrategy": "overwrite", +# # }, +# # ], +# #} +# +# def __init__(self, app): +# +# self.app = app +# +# +# #self.matcher_schema = { +# # "$schema": 'http://json-schema.org/draft-04/schema#', +# # "type": "object", +# # "additionalProperties": False, +# # "properties": { +# # "rule": { +# # "type": "string", +# # "default": ".*", +# # "optional": True, +# # }, +# # "strategy": { +# # "type": "string", +# # "default": "merge", +# # "optional": True, +# # "enum": ["first", "last", "merge"], +# # }, +# # "schema": { +# # "type": "object", +# # "default": self.matcher_merge_schema, +# # #"default": {}, +# # "optional": True, +# # }, +# # } +# # } +# +# +# +# def exec(self, key=None, scope=None, policy=None, trace=False, explain=False): +# +# bm = BackendsManager(app=self.app) +# mm = RulesManager(app=self.app) +# +# log.debug(f"New query created") +# candidates = bm.query(key, scope, trace=trace) +# result = mm.get_result(candidates, key=key, trace=trace, explain=explain) +# return result +# +# def dump(self): +# +# ret = {} +# for i in dir(self): +# if not i.startswith('_'): +# ret[i] = getattr(self, i) +# +# pprint (ret) +# class App(): @@ -175,7 +168,6 @@ class App(): log.error (f"Can't find namespace '{namespace}' in config '{config}'") sys.exit(1) - # Init if not conf2['config']['app']['root']: conf2['config']['app']['root'] = Path(config).parent @@ -195,28 +187,3 @@ class App(): print ("=== Query Result ===") -if __name__ == "__main__": - CONFIG_FILE='/home/jez/prj/bell/training/tiger-ansible/tree.yml' - app = App(CONFIG_FILE) - - policy = None - - #app.lookup( - # "my_key", - # policy=None, - # hostname="myhost-lab.it.ms.bell.ca", - # hostgroups=["Tiger", "Tiger/Test", "Tiger/Test/LastLvl"], - # hostgroup="Tiger/Test/LastLvl" - # ) - - -# app.lookup( -# None, -# hostname="myhost-lab.it.ms.bell.ca", -# hostgroups=["Tiger", "Tiger/Test", "Tiger/Test/LastLvl"], -# hostgroup="Tiger/Test/LastLvl" -# ) -# - - - print ("OKKKKK") diff --git a/ansible_tree/files.py b/ansible_tree/managers.py similarity index 100% rename from ansible_tree/files.py rename to ansible_tree/managers.py diff --git a/ansible_tree/query.py b/ansible_tree/query.py new file mode 100755 index 0000000..90328ba --- /dev/null +++ b/ansible_tree/query.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 + +# import sys +# sys.path.append("/home/jez/prj/bell/training/tiger-ansible/ext/ansible-tree") + + +import sys +import yaml +import anyconfig +from pprint import pprint + +from ansible_tree.managers import BackendsManager, RulesManager +from ansible_tree.utils import schema_validate +import anyconfig +# from box import Box +from pathlib import Path + +import logging +log = logging.getLogger(__name__) + + + +# Query +########################################## + +class Query(): + + def __init__(self, app): + + self.app = app + + def exec(self, key=None, scope=None, policy=None, trace=False, explain=False): + + bm = BackendsManager(app=self.app) + mm = RulesManager(app=self.app) + + log.debug(f"New query created") + candidates = bm.query(key, scope, trace=trace) + result = mm.get_result(candidates, key=key, trace=trace, explain=explain) + return result + + def dump(self): + + ret = {} + for i in dir(self): + if not i.startswith('_'): + ret[i] = getattr(self, i) + + pprint (ret) + +