Merge from trunk
[plcapi.git] / trunk / plctest / TestNode.py
diff --git a/trunk/plctest/TestNode.py b/trunk/plctest/TestNode.py
new file mode 100644 (file)
index 0000000..0ca91ba
--- /dev/null
@@ -0,0 +1,94 @@
+import os
+import sys
+import time
+import base64
+import TestConfig
+import xmlrpclib
+
+class TestNode:
+
+    def __init__ (self,test_plc,test_site,node_spec):
+       self.test_plc=test_plc
+       self.test_site=test_site
+       self.node_spec=node_spec
+        self.timset=time.strftime("%H:%M:%S", time.localtime())
+    def create_node (self,role):
+        auth = self.test_site.anyuser_auth (role)
+        filter={'boot_state':'rins'}
+        try:
+            if (role=='pi' and self.node_spec['owned']=='pi'):
+                self.node_id = self.test_plc.server.AddNode(auth,
+                                                            self.test_site.site_spec['site_fields']['login_base'],
+                                                            self.node_spec)
+                self.test_plc.server.AddNodeNetwork(auth,self.node_id,
+                                                    self.node_spec['network'])
+                self.test_plc.server.UpdateNode(auth, self.node_id, filter)
+                return self.node_id
+            
+            elif (role=='tech' and self.node_spec['owned']=='tech'):
+                self.node_id = self.test_plc.server.AddNode(auth,
+                                                            self.test_site.site_spec['site_fields']['login_base'],
+                                                            self.node_spec)
+                self.test_plc.server.AddNodeNetwork(auth,self.node_id,
+                                                    self.node_spec['network'])
+                self.test_plc.server.UpdateNode(auth, self.node_id, filter)
+                return self.node_id
+        except Exception, e:
+                print str(e)
+
+    def create_slice(self, role):
+        auth = self.test_site.anyuser_auth (role)
+        liste_hosts=[]
+        #for l in liste_nodes_spec :
+        #    liste_hosts.append(l['hostname'])
+        try:
+            for slicespec in TestConfig.slices_specs :
+                print '========>Creating slice at :'+self.timset+' : ',slicespec
+                slice_id=self.test_plc.server.AddSlice(auth,slicespec['slice_spec'])
+                for sliceuser in slicespec['slice_users']:
+                    self.test_plc.server.AddPersonToSlice(auth, sliceuser['email'], slice_id)##affecting person to the slice
+                for slicenode in slicespec['slice_nodes']:
+                    liste_hosts.append(slicenode['hostname'])
+                self.test_plc.server.AddSliceToNodes(auth, slice_id, liste_hosts)##add slice to the spec nodes
+            print 'fin creation slices'
+        except Exception, e:
+            print str(e)
+            sys.exit(1)
+        
+    def conffile(self,image,hostname,path):
+        try:
+            file=path+'/VirtualFile-'+hostname+'/My_Virtual_Machine.vmx'
+            f2=open(file,'w')
+            
+            f1=open(path+'/My-Virtual-Machine-model/My_Virtual_Machine.vmx','r')
+            while 1:
+                txt = f1.readline()
+                if txt=='':
+                    f1.close()
+                    f2.close()
+                    break
+                if txt[0]!='*' :
+                    f2.write(txt)
+                else :
+                    f2.write('ide1:1.fileName = '+'"'+image+'"' '\n')
+          
+            
+        except Exception, e:
+            print str(e)
+
+    def create_boot_cd(self,node_spec,path):
+        try:
+            os.system('mkdir  -p  %s/VirtualFile-%s  &&  cp  %s/My-Virtual-Machine-model/*  %s/VirtualFile-%s'
+                      %(path, node_spec['hostname'], path, path, node_spec['hostname']))
+            link1=self.test_plc.server.GetBootMedium(self.test_plc.auth_root(),
+                                                     node_spec['hostname'], 'node-iso', '')
+            if (link1 == ''):
+                raise Exception, 'boot.iso not found'
+            file1=open(path+'/VirtualFile-'+node_spec['hostname']+'/boot_file.iso','w')
+            file1.write(base64.b64decode(link1))
+            file1.close()
+            print '========> boot cd created for :',self.node_spec['hostname']
+            self.conffile('boot_file.iso',self.node_spec['hostname'], path) #create 2 conf file for the vmware based
+        except Exception, e:
+            print str(e)
+            sys.exit(1)