mirror of
https://github.com/xcat2/confluent.git
synced 2026-11-15 13:28:05 +00:00
Fix nodeattrib -e for dotted attribute names in asynclient
f9dc92ecfixed this in client.py, but nodeattrib has used asynclient.py since76efea7c, so it still sends the underscored name (info_note instead of info.note) as the attribute, and a missing variable raises a KeyError instead of a usage error. Port the client.py logic over.
This commit is contained in:
@@ -789,23 +789,31 @@ async def updateattrib(session, updateargs, nodetype, noderange, options, dictas
|
||||
sys.stderr.write('Error: ' + res['error'] + '\n')
|
||||
sys.exit(exitcode)
|
||||
elif hasattr(options, 'environment') and options.environment:
|
||||
for key in updateargs[1:]:
|
||||
key = key.replace('.', '_')
|
||||
value = os.environ.get(
|
||||
key, os.environ[key.upper()])
|
||||
# Let's do one pass to make sure that there's not a usage problem
|
||||
for key in updateargs[1:]:
|
||||
key = key.replace('.', '_')
|
||||
value = os.environ.get(
|
||||
key, os.environ[key.upper()])
|
||||
# The environment variable name substitutes '_' for '.'
|
||||
attrvalues = {}
|
||||
# Let's do one pass to make sure that there's not a usage problem
|
||||
for attrib in updateargs[1:]:
|
||||
envkey = attrib.replace('.', '_')
|
||||
if envkey in os.environ:
|
||||
attrvalues[attrib] = os.environ[envkey]
|
||||
elif envkey.upper() in os.environ:
|
||||
attrvalues[attrib] = os.environ[envkey.upper()]
|
||||
else:
|
||||
sys.stderr.write(
|
||||
'Error: {0} requested, but neither {1} nor {2} is set in '
|
||||
'the environment\n'.format(attrib, envkey, envkey.upper()))
|
||||
sys.exit(1)
|
||||
for attrib in updateargs[1:]:
|
||||
if (nodetype == "nodegroups"):
|
||||
exitcode = await session.simple_nodegroups_command(noderange,
|
||||
'attributes/all',
|
||||
value, key)
|
||||
attrvalues[attrib],
|
||||
attrib)
|
||||
else:
|
||||
exitcode = await session.simple_noderange_command(noderange,
|
||||
'attributes/all',
|
||||
value, key)
|
||||
attrvalues[attrib],
|
||||
attrib)
|
||||
sys.exit(exitcode)
|
||||
elif dictassign:
|
||||
for key in dictassign:
|
||||
|
||||
Reference in New Issue
Block a user