node_fields = random_node(node_types,boot_states)
self.api.UpdateNode(node_id, node_fields)
+ node = self.api.GetNodes([node_id])[0]
+
+ # Add to a random set of node groups
+ nodegroup_ids = random.sample(self.nodegroup_ids, randint(0, len(self.nodegroup_ids)))
+ for nodegroup_id in (set(nodegroup_ids) - set(node['nodegroup_ids'])):
+ nodegroup = self.api.GetNodeGroups([nodegroup_id])[0]
+ tagname = nodegroup['tagname']
+ node_tags = self.api.GetNodeTags({'node_id':node_id,'tagname':tagname})
+ if not node_tags:
+ self.api.AddNodeTag(node_id,tagname,'yes')
+ else:
+ node_tag=node_tags[0]
+ self.api.UpdateNodeTag(node_tag['node_tag_id'],'yes')
+ for nodegroup_id in (set(node['nodegroup_ids']) - set(nodegroup_ids)):
+ nodegroup = self.api.GetNodeGroups([nodegroup_id])[0]
+ tagname = nodegroup['tagname']
+ node_tags = self.api.GetNodeTags({'node_id':node_id,'tagname':tagname})
+ if not node_tags:
+ self.api.AddNodeTag(node_id,tagname,'no')
+ else:
+ node_tag=node_tags[0]
+ self.api.UpdateNodeTag(node_tag['node_tag_id'],'no')
+
if self.check:
- # for testing node arch
- check=node_fields.copy()
- columns=node_fields.keys()
- for tagname in tag_fields:
- check.pop(tagname)
- columns.remove(tagname)
-
- node = self.api.GetNodes([node_id],columns)[0]
- if dict(node) != check:
- raise Exception,'Unexpected result in GetNodes() %r vs %r'%(node,check)
-
+ # Check node
+ node = self.api.GetNodes([node_id])[0]
+ for field in node_fields:
+ if field not in tag_fields:
+ if node[field] != node_fields[field]:
+ raise Exception, "Unexpected field %s in node after GetNodes()"%field
+ assert set(nodegroup_ids) == set(node['nodegroup_ids'])
+
print 'WARNING: skipping updatenode with tags as this is not implemented yet'
-# # again when fetching 'arch' explicitly
-# node = self.api.GetNodes([node_id],columns+tag_fields)[0]
-# if dict(node) != node_fields:
-# raise Exception,"Unexpected result in GetNodes() with tags %r vs %r"%(node,node_fields)
+ # again when fetching 'arch' explicitly
+ node2 = self.api.GetNodes([node_id],node_fields.keys())[0]
+ for field in node_fields:
+ if node2[field] != node_fields[field]:
+ raise Exception, "Unexpected field %s in node after GetNodes(tags)"%field
- # Add to a random set of node groups
- nodegroup_ids = random.sample(self.nodegroup_ids, randint(0, len(self.nodegroup_ids)))
- for nodegroup_id in (set(nodegroup_ids) - set(node['nodegroup_ids'])):
- nodegroup = self.api.GetNodeGroups([nodegroup_id])[0]
- tagname = nodegroup['tagname']
- node_tags = self.api.GetNodeTags({'node_id':node_id,'tagname':tagname})
- if not node_tags:
- self.api.AddNodeTag(node_id,tagname,'yes')
- else:
- node_tag=node_tags[0]
- self.api.UpdateNodeTag(node_tag['node_tag_id'],'yes')
- for nodegroup_id in (set(node['nodegroup_ids']) - set(nodegroup_ids)):
- nodegroup = self.api.GetNodeGroups([nodegroup_id])[0]
- tagname = nodegroup['tagname']
- node_tags = self.api.GetNodeTags({'node_id':node_id,'tagname':tagname})
- if not node_tags:
- self.api.AddNodeTag(node_id,tagname,'no')
- else:
- node_tag=node_tags[0]
- self.api.UpdateNodeTag(node_tag['node_tag_id'],'no')
-
- if self.check:
- # Check node
- node = self.api.GetNodes([node_id])[0]
- for field in node_fields:
- assert node[field] == node_fields[field]
- assert set(nodegroup_ids) == set(node['nodegroup_ids'])
-
- if self.verbose:
- print "Updated node", node_id
+ if self.verbose:
+ print "Updated node", node_id
def DeleteNodes(self):
"""