--- /dev/null
+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)