Skip to content

Commit

Permalink
Allow for not key/value data to be distilled
Browse files Browse the repository at this point in the history
  • Loading branch information
Clint Savage committed Apr 3, 2018
1 parent 029cd1a commit 040186e
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 9 deletions.
37 changes: 29 additions & 8 deletions linchpin/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,24 +217,45 @@ def _write_distilled_context(self, run_data):
else:
k, v = f.split('.')
fld = fields.get(k, [])
fld.append(v)
fields[k] = fld


if ':' in v:
subfields = {}
k2, val = v.split(':')
subfld = subfields.get(k2, [])
subfld.append(val)
subfields[k2] = subfld
fld.append(subfields)
fields[k] = fld
else:
fld.append(v)
fields[k] = fld

for res in resources:
for k, v in fields.iteritems():
res_data = {}
if not v:
res_data[k] = res.get(k)
dd = dist_data.get(target, {})
if len(dd):
for items in dd:
if k in items.keys():
items[k].extend(res.pop(k))
else:
res_data[k] = res.get(k)
else:
r = res.get(k)[0]
rsrc = res.get(k)[0]
for value in v:
res_data[value] = r.get(value)
if isinstance(value, dict):
for key, vals in value.iteritems():
sk = rsrc.get(key)
for val in vals:
res_data[val] = sk.get(val)
else:
res_data[value] = rsrc.get(value)

if target not in dist_data.keys():
dist_data[target] = []
dist_data[target].append(res_data)

if len(res_data) and res_data not in dist_data[target]:
dist_data[target].append(res_data)

with open(context_file, 'w+') as f:
f.write(json.dumps(dist_data))
Expand Down
4 changes: 3 additions & 1 deletion linchpin/linchpin.constants
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,9 @@ pinfile = PinFile

[distiller]
bkr_server = test,happiness
aws_ec2 = instances.id,instances.public_ip,instances.private_ip,instances.public_dns_name,instances.private_dns_name
dummy_node: hosts
aws_ec2 = instances.id,instances.public_ip,instances.private_ip,instances.public_dns_name,instances.private_dns_name,instances.tags:name
os_server = servers.id,servers.interface_ip,servers.name,servers.private_v4,servers.public_v4

[logger]
enable = True
Expand Down

0 comments on commit 040186e

Please sign in to comment.