2
0
mirror of https://github.com/xcat2/confluent.git synced 2024-11-22 01:22:00 +00:00

Prevent users from dupe group memberships

This commit is contained in:
Jarrod Johnson 2022-02-24 15:06:41 -05:00
parent 1a5f5aea3a
commit d7df1e7891

View File

@ -1824,9 +1824,13 @@ class ConfigManager(object):
if attribmap[group][attr].get('prepend', False):
newnodes = noderange.NodeRange(attribmap[group][attr][
'prepend'], config=self).nodes
pendingnodes = set([])
for newnode in newnodes:
if newnode in currnodes:
raise ValueError('{0} is already in group {1}'.format(newnode, group))
if newnode in pendingnodes:
raise ValueError('{0} is listed multiple times')
pendingnodes.add(newnode)
attribmap[group][attr] = list(
newnodes) + currnodes
elif attribmap[group][attr].get('remove', False):
@ -2248,9 +2252,13 @@ class ConfigManager(object):
if attribmap[node]['groups'].get('prepend', False):
newgroups = attribmap[node]['groups'][
'prepend'].split(',')
pendinggroups = set([])
for newgroup in newgroups:
if newgroup in currgroups:
raise ValueError('Node {0} is already in group {1}'.format(node, newgroup))
if newgroup in pendinggroups:
raise ValueError('Group {0} has been specified multiple times'.format(newgroup))
pendinggroups.add(newgroup)
attribmap[node]['groups'] = newgroups + currgroups
elif attribmap[node]['groups'].get('remove', False):
delgroups = attribmap[node]['groups'][