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

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)