2
0
mirror of https://github.com/xcat2/confluent.git synced 2025-01-29 20:37:39 +00:00

60 lines
2.6 KiB
Python
Raw Normal View History

import confluent.exceptions as exc
2013-11-02 18:24:04 -04:00
import confluent.messages as msg
import confluent.config.attributes as allattributes
2013-11-02 18:24:04 -04:00
def retrieve(nodes, element, configmanager, inputdata):
2013-11-02 18:24:04 -04:00
attributes = configmanager.get_node_attributes(nodes)
if element[-1] == 'all':
for node in nodes:
for attribute in sorted(allattributes.node.iterkeys()):
if attribute in attributes[node]: #have a setting for it
val = attributes[node][attribute]
2013-11-13 15:12:57 -05:00
elif attribute == 'groups': # no setting, provide a blank
val = []
else: # no setting, provide a blank
val = {'value': None}
if attribute.startswith('secret.'):
yield msg.CryptedAttributes(node,
{attribute: val},
allattributes.node[attribute]['description'])
2013-11-13 15:12:57 -05:00
elif isinstance(val, list):
yield msg.ListAttributes(node,
{attribute: val},
allattributes.node[attribute]['description'])
else:
yield msg.Attributes(node,
{attribute: val['value']},
allattributes.node[attribute]['description'])
elif element[-1] == 'current':
for node in attributes.iterkeys():
for attribute in sorted(attributes[node].iterkeys()):
currattr = attributes[node][attribute]
if 'value' in currattr:
yield msg.Attributes(node,
{attribute: currattr['value']},
allattributes.node[attribute]['description'])
elif 'cryptvalue' in currattr:
yield msg.CryptedAttributes(node,
{attribute: currattr},
allattributes.node[attribute]['description'])
elif isinstance(currattr, list):
yield msg.ListAttributes(node,
{attribute: currattr},
allattributes.node[attribute]['description'])
else:
print repr(currattr)
raise Exception("BUGGY ATTRIBUTE FOR NODE")
def update(nodes, element, configmanager, inputdata):
updatedict = {}
for node in nodes:
updatenode = inputdata.get_attributes(node)
if updatenode:
updatedict[node] = updatenode
try:
configmanager.set_node_attributes(updatedict)
except ValueError:
raise exc.InvalidArgumentException()
return retrieve(nodes, element, configmanager, inputdata)