Improve recursive converter, fix rq.yaml
This commit is contained in:
parent
30084fcec9
commit
4e833e6821
19
rq.yaml
19
rq.yaml
@ -11,26 +11,26 @@ files:
|
|||||||
ubuntu: [etc-apt]
|
ubuntu: [etc-apt]
|
||||||
cmds:
|
cmds:
|
||||||
by_release:
|
by_release:
|
||||||
4.1.1:
|
'4.1.1':
|
||||||
by_role:
|
by_role:
|
||||||
fuel: [fuel-postgres-dump]
|
fuel: [fuel-postgres-dump]
|
||||||
5.0.1:
|
'5.0.1':
|
||||||
by_role:
|
by_role:
|
||||||
fuel: [fuel-docker-ps, fuel-dockerctl-check, fuel-docker-db-archive]
|
fuel: [fuel-docker-ps, fuel-dockerctl-check, fuel-docker-db-archive]
|
||||||
6.0:
|
'6.0':
|
||||||
by_role:
|
by_role:
|
||||||
compute: [ipset-save, ipset-list]
|
compute: [ipset-save, ipset-list]
|
||||||
controller: [ipset-save, ipset-list]
|
controller: [ipset-save, ipset-list]
|
||||||
6.1:
|
'6.1':
|
||||||
by_role:
|
by_role:
|
||||||
fuel: [fuel-notifications]
|
fuel: [fuel-notifications]
|
||||||
7.0:
|
'7.0':
|
||||||
by_role:
|
by_role:
|
||||||
fuel: [fuel-notifications]
|
fuel: [fuel-notifications]
|
||||||
5.1.1:
|
'5.1.1':
|
||||||
by_role:
|
by_role:
|
||||||
fuel: [fuel-dockerctl-list, fuel-docker-ps, fuel-dockerctl-check, fuel-docker-db-archive]
|
fuel: [fuel-dockerctl-list, fuel-docker-ps, fuel-dockerctl-check, fuel-docker-db-archive]
|
||||||
8.0:
|
'8.0':
|
||||||
by_role:
|
by_role:
|
||||||
fuel: [fuel-notifications]
|
fuel: [fuel-notifications]
|
||||||
by_role:
|
by_role:
|
||||||
@ -53,8 +53,5 @@ cmds:
|
|||||||
by_os_platform:
|
by_os_platform:
|
||||||
ubuntu: [dmesg-t-ubuntu, packages-ubuntu]
|
ubuntu: [dmesg-t-ubuntu, packages-ubuntu]
|
||||||
centos: [dmesg-centos, packages-centos]
|
centos: [dmesg-centos, packages-centos]
|
||||||
default:
|
__default:
|
||||||
[ip-ne, iptables, ipnetns, ss, ipa, iptables-nat, df-m, services-status, cpuinfo, df-i, ipro]
|
[ip-ne, iptables, ipnetns, ss, ipa, iptables-nat, df-m, services-status, cpuinfo, df-i, ipro]
|
||||||
# by-os:
|
|
||||||
# centos: []
|
|
||||||
# ubuntu: []
|
|
||||||
|
72
rqtest.py
72
rqtest.py
@ -2,59 +2,53 @@
|
|||||||
|
|
||||||
from timmy import tools
|
from timmy import tools
|
||||||
from yaml import dump
|
from yaml import dump
|
||||||
from copy import deepcopy as dc
|
|
||||||
|
|
||||||
class Conf():
|
class Conf():
|
||||||
default_key = '__default'
|
default_key = '__default'
|
||||||
|
|
||||||
class Node():
|
class Node():
|
||||||
conf_section_prefix = 'by_'
|
conf_match_prefix = 'by_'
|
||||||
|
|
||||||
def import_rq():
|
def import_rq():
|
||||||
def is_sub(m, d, p):
|
def sub_is_match(el, d, p):
|
||||||
checks = []
|
checks = []
|
||||||
for i in m:
|
for i in el:
|
||||||
checks.append(i.startswith(p) or i == d)
|
checks.append(i.startswith(p) or i == d)
|
||||||
return all(checks)
|
return all(checks)
|
||||||
|
|
||||||
def r_sub(a, m, mk, mmk, d, p, ds):
|
def r_sub(attr, el, k, d, p, dst):
|
||||||
if not mk in ds:
|
match_sect = False
|
||||||
ds[mk] = {}
|
if type(k) is str and k.startswith(p):
|
||||||
if d in mmk:
|
match_sect = True
|
||||||
if mk.startswith(p):
|
if not k in dst and k != attr:
|
||||||
ds[mk][d] = {a: mmk[d]}
|
dst[k] = {}
|
||||||
mmk[d] = {a: mmk[d]}
|
if d in el[k]:
|
||||||
|
if k == attr:
|
||||||
|
dst[k] = el[k][d]
|
||||||
|
elif k.startswith(p):
|
||||||
|
dst[k][d] = {attr: el[k][d]}
|
||||||
else:
|
else:
|
||||||
ds[mk][a] = mmk[d]
|
dst[k][attr] = el[k][d]
|
||||||
if mk.startswith(p):
|
if k == attr:
|
||||||
ks = [k for k in mmk if k != d]
|
subks = [subk for subk in el[k] if subk != d]
|
||||||
for k in ks:
|
for subk in subks:
|
||||||
if mmk[k] is not None:
|
r_sub(attr, el[k], subk, d, p, dst)
|
||||||
if not k in ds[mk]:
|
elif match_sect or type(el[k]) is dict and sub_is_match(el[k], d, p):
|
||||||
ds[mk][k] = {}
|
subks = [subk for subk in el[k] if subk != d]
|
||||||
r_sub(a, mmk, k, mmk[k], d, p, ds[mk])
|
for subk in subks:
|
||||||
elif type(mmk) is dict and is_sub(mmk, d, p):
|
if el[k][subk] is not None:
|
||||||
ks = [k for k in mmk if k.startswith(p)]
|
if not subk in dst[k]:
|
||||||
for k in ks:
|
dst[k][subk] = {}
|
||||||
if mmk[k] is not None:
|
r_sub(attr, el[k], subk, d, p, dst[k])
|
||||||
if not k in ds[mk]:
|
|
||||||
ds[mk][k] = {}
|
|
||||||
r_sub(a, mmk, k, mmk[k], d, p, ds[mk])
|
|
||||||
else:
|
else:
|
||||||
ds[mk][a] = m[mk]
|
dst[k][attr] = el[k]
|
||||||
m[mk] = {a: m[mk]}
|
|
||||||
|
|
||||||
rq = tools.load_yaml_file('rqtest.yaml')
|
src = tools.load_yaml_file('rq.yaml')
|
||||||
rq2 = {}
|
dst = {}
|
||||||
p = Node.conf_section_prefix
|
p = Node.conf_match_prefix
|
||||||
d = Conf.default_key
|
d = Conf.default_key
|
||||||
for attr in rq:
|
for attr in src:
|
||||||
m = rq[attr]
|
r_sub(attr, src, attr, d, p, dst)
|
||||||
if d in m:
|
return dst
|
||||||
rq2[attr] = m[d]
|
|
||||||
mks = [mk for mk in m if mk.startswith(p)]
|
|
||||||
for mk in mks:
|
|
||||||
r_sub(attr, m, mk, m[mk], d, p, rq2)
|
|
||||||
return rq2
|
|
||||||
|
|
||||||
print(dump(import_rq(), default_flow_style=False))
|
print(dump(import_rq(), default_flow_style=False))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user