api is smarter
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 23 May 2008 15:17:01 +0000 (15:17 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 23 May 2008 15:17:01 +0000 (15:17 +0000)
system/TestPlc.py

index 095762a..ca5045c 100644 (file)
@@ -420,15 +420,14 @@ class TestPlc:
         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
@@ -439,20 +438,28 @@ class TestPlc:
                 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 = []