Change: Reorganise class in correct files

This commit is contained in:
mrjk 2022-01-14 20:12:51 -05:00
parent e7c71cc825
commit d32878fc2e
3 changed files with 132 additions and 114 deletions

View File

@ -9,7 +9,7 @@ import yaml
import anyconfig import anyconfig
from pprint import pprint from pprint import pprint
from ansible_tree.files import BackendsManager, RulesManager from ansible_tree.query import Query
from ansible_tree.utils import schema_validate from ansible_tree.utils import schema_validate
import anyconfig import anyconfig
# from box import Box # from box import Box
@ -20,93 +20,86 @@ log = logging.getLogger(__name__)
class Query(): #class Query():
#
matcher_merge_schema = { # #matcher_merge_schema = {
"$schema": 'http://json-schema.org/draft-04/schema#', # # "$schema": 'http://json-schema.org/draft-04/schema#',
"oneOf": [ # # "oneOf": [
{ # # {
"type": "array", # # "type": "array",
"mergeStrategy": "append", # # "mergeStrategy": "append",
# "mergeStrategy": "arrayMergeById", ## # "mergeStrategy": "arrayMergeById",
}, # # },
{ # # {
"type": "object", # # "type": "object",
"mergeStrategy": "objectMerge", # # "mergeStrategy": "objectMerge",
}, # # },
{ # # {
"type": "string", # # "type": "string",
"mergeStrategy": "overwrite", # # "mergeStrategy": "overwrite",
}, # # },
{ # # {
"type": "number", # # "type": "number",
"mergeStrategy": "overwrite", # # "mergeStrategy": "overwrite",
}, # # },
{ # # {
"type": "null", # # "type": "null",
"mergeStrategy": "overwrite", # # "mergeStrategy": "overwrite",
}, # # },
], # # ],
} # #}
#
def __init__(self, app): # def __init__(self, app):
#
self.app = app # self.app = app
#
self.key = None #
self.scope = None # #self.matcher_schema = {
# # "$schema": 'http://json-schema.org/draft-04/schema#',
self.paths = None # # "type": "object",
self.data = None # # "additionalProperties": False,
self.result = None # # "properties": {
# # "rule": {
# # "type": "string",
self.matcher_schema = { # # "default": ".*",
"$schema": 'http://json-schema.org/draft-04/schema#', # # "optional": True,
"type": "object", # # },
"additionalProperties": False, # # "strategy": {
"properties": { # # "type": "string",
"rule": { # # "default": "merge",
"type": "string", # # "optional": True,
"default": ".*", # # "enum": ["first", "last", "merge"],
"optional": True, # # },
}, # # "schema": {
"strategy": { # # "type": "object",
"type": "string", # # "default": self.matcher_merge_schema,
"default": "merge", # # #"default": {},
"optional": True, # # "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)
def exec(self, key=None, scope=None, policy=None, trace=False, explain=False): # result = mm.get_result(candidates, key=key, trace=trace, explain=explain)
# return result
bm = BackendsManager(app=self.app) #
mm = RulesManager(app=self.app) # def dump(self):
#
log.debug(f"New query created") # ret = {}
candidates = bm.query(key, scope, trace=trace) # for i in dir(self):
result = mm.get_result(candidates, key=key, trace=trace, explain=explain) # if not i.startswith('_'):
return result # ret[i] = getattr(self, i)
#
def dump(self): # pprint (ret)
#
ret = {}
for i in dir(self):
if not i.startswith('_'):
ret[i] = getattr(self, i)
pprint (ret)
class App(): class App():
@ -175,7 +168,6 @@ class App():
log.error (f"Can't find namespace '{namespace}' in config '{config}'") log.error (f"Can't find namespace '{namespace}' in config '{config}'")
sys.exit(1) sys.exit(1)
# Init # Init
if not conf2['config']['app']['root']: if not conf2['config']['app']['root']:
conf2['config']['app']['root'] = Path(config).parent conf2['config']['app']['root'] = Path(config).parent
@ -195,28 +187,3 @@ class App():
print ("=== Query Result ===") 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")

51
ansible_tree/query.py Executable file
View File

@ -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)