1 import os, sys, time, base64
10 def __init__ (self,test_plc,test_site,node_spec):
11 self.test_plc=test_plc
12 self.test_site=test_site
13 self.node_spec=node_spec
15 def create_node (self,role):
16 auth = self.test_site.anyuser_auth (role)
17 filter={'boot_state':'rins'}
19 if (role=='pi' and self.node_spec['owned']=='pi'):
21 self.test_plc.server.AddNode(auth,
22 self.test_site.site_spec['site_fields']['login_base'],
24 self.test_plc.server.AddNodeNetwork(auth,self.node_id,
25 self.node_spec['network'])
26 self.test_plc.server.UpdateNode(auth, self.node_id, filter)
29 elif (role=='tech' and self.node_spec['owned']=='tech'):
31 self.test_plc.server.AddNode(auth,
32 self.test_site.site_spec['site_fields']['login_base'],
34 self.test_plc.server.AddNodeNetwork(auth,self.node_id,
35 self.node_spec['network'])
36 self.test_plc.server.UpdateNode(auth, self.node_id, filter)
41 def add_initscripts(self):
43 for initscript in TestConfig.initscripts:
44 utils.header('Adding Initscripts')
45 pp = pprint.PrettyPrinter(indent=4)
47 self.initscript_id=self.test_plc.server.AddInitScript(self.test_plc.auth_root(),
53 def create_slice(self, role):
54 auth = self.test_site.anyuser_auth (role)
57 for slicespec in TestConfig.slices_specs :
58 utils.header('Creating Slice')
59 pp = pprint.PrettyPrinter(indent=4)
61 slice_id=self.test_plc.server.AddSlice(auth,slicespec['slice_spec'])
62 for sliceuser in slicespec['slice_users']:
63 self.test_plc.server.AddPersonToSlice(auth,
66 for slicenode in slicespec['slice_nodes']:
67 liste_hosts.append(slicenode['hostname'])
68 self.test_plc.server.AddSliceToNodes(auth,
72 self.test_plc.server.AddSliceAttribute(self.test_plc.auth_root(),
73 slice_id, 'initscript',
74 slicespec['slice_initscript']['name'])
80 def conffile(self,image,hostname,path):
81 template='%s/template-vmplayer/node.vmx'%(path)
82 actual='%s/vmplayer-%s/node.vmx'%(path,hostname)
83 sed_command="sed -e s,@BOOTCD@,%s,g %s > %s"%(image,template,actual)
84 utils.header('Creating %s from %s'%(actual,template))
85 os.system('set -x; ' + sed_command)
87 def create_boot_cd(self,path):
88 node_spec=self.node_spec
89 hostname=node_spec['hostname']
91 utils.header('Initializing vmplayer area for node %s'%hostname)
92 clean_dir="rm -rf %s/vmplayer-%s"%(path,hostname)
93 mkdir_command="mkdir -p %s/vmplayer-%s"%(path,hostname)
94 tar_command="tar -C %s/template-vmplayer -cf - . | tar -C %s/vmplayer-%s -xf -"%(path,path,hostname)
95 os.system('set -x; ' +clean_dir + ';' + mkdir_command + ';' + tar_command);
96 utils.header('Creating boot medium for node %s'%hostname)
97 encoded=self.test_plc.server.GetBootMedium(self.test_plc.auth_root(), hostname, 'node-iso', '')
99 raise Exception, 'boot.iso not found'
100 file=open(path+'/vmplayer-'+hostname+'/boot_file.iso','w')
101 file.write(base64.b64decode(encoded))
103 utils.header('boot cd created for %s'%hostname)
104 self.conffile('boot_file.iso',hostname, path)