for (nodegroupname,group_nodes) in groups_dict.iteritems():
print 'nodegroups:','dealing with nodegroup',nodegroupname,'on nodes',group_nodes
# first, check if the nodetagtype is here
- tag_types = self.apiserver.GetNodeTagTypes(auth,{'name':nodegroupname})
+ tag_types = self.apiserver.GetNodeTagTypes(auth,{'tagname':nodegroupname})
if tag_types:
tag_type_id = tag_types[0]['node_tag_type_id']
print 'node-tag-type',nodegroupname,'already exists'
else:
tag_type_id = self.apiserver.AddNodeTagType(auth,
- {'name':nodegroupname,
- 'description':
- 'for nodegroup %s'%nodegroupname,
+ {'tagname':nodegroupname,
+ 'description': 'for nodegroup %s'%nodegroupname,
'category':'test',
'min_role_id':10})
# create nodegroup
self.apiserver.AddNodeGroup(auth,
{'groupname': nodegroupname,
'node_tag_type_id': tag_type_id,
- 'value': 'yes'})
+ 'tagvalue': 'yes'})
# set node tag on all nodes, value='yes'
+ overall = True
for nodename in group_nodes:
- # check if already set
- # xxx need node_id - need improvement in the API
- node_id = self.apiserver.GetNodes(auth,nodename)[0]['node_id']
- node_tag = self.apiserver.GetNodeTags(auth,
- {'node_id':node_id,
- 'node_tag_type_id':tag_type_id})
- if node_tag:
- print 'node',nodename,'already has tag',nodegroupname
- else:
- self.apiserver.AddNodeTag(auth, node_id, nodegroupname,"yes")
- return True
+ try:
+ self.apiserver.AddNodeTag(auth, nodename, nodegroupname, "yes")
+ except:
+ print 'node',nodename,'seems to already have tag',nodegroupname
+ # check anyway
+ try:
+ expect_yes = self.apiserver.GetNodeTags(
+ auth,
+ {'hostname':nodename,
+ 'tagname':nodegroupname},
+ ['tagvalue'])[0]['tagvalue']
+ if expect_yes != "yes":
+ print 'Mismatch node tag on node',nodename,'got',expect_yes
+ overall=False
+ except:
+ print 'Cannot find tag',nodegroupname,'on node',nodename
+ overall = False
+ return overall
def all_hostnames (self) :
hostnames = []