2
0
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

f9dc92ec fixed this in client.py, but nodeattrib has used asynclient.py
since 76efea7c, 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:
Markus Hilger
2026-11-01 12:23:12 +01:00
parent 89787671cf
commit 7039706e4d
+19 -11
View File
@@ -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: