-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import os, os.path
import datetime
import time
return single_line.replace(" "+SEP+" "," \\\n").replace(" "+SEPSFA+" "," \\\n")
@staticmethod
def valid_step (step):
- return step != SEP
+ return step != SEP and step != SEPSFA
# turn off the sfa-related steps when build has skipped SFA
# this is originally for centos5 as recent SFAs won't build on this platformb
tmpname='%s.plc-config-tty'%(self.name())
fileconf=open(tmpname,'w')
for var in [ 'PLC_NAME',
- 'PLC_ROOT_PASSWORD',
'PLC_ROOT_USER',
+ 'PLC_ROOT_PASSWORD',
+ 'PLC_SLICE_PREFIX',
'PLC_MAIL_ENABLED',
'PLC_MAIL_SUPPORT_ADDRESS',
'PLC_DB_HOST',
'PLC_BOOT_HOST',
'PLC_NET_DNS1',
'PLC_NET_DNS2',
- 'PLC_RESERVATION_GRANULARITY',]:
+ 'PLC_RESERVATION_GRANULARITY',
+ 'PLC_OMF_ENABLED',
+ ]:
fileconf.write ('e %s\n%s\n'%(var,self.plc_spec[var]))
fileconf.write('w\n')
fileconf.write('q\n')
YEAR = 365*24*3600
@staticmethod
- def translate_timestamp (start,timestamp):
- if timestamp < TestPlc.YEAR: return start+timestamp
+ def translate_timestamp (start,grain,timestamp):
+ if timestamp < TestPlc.YEAR: return start+timestamp*grain
else: return timestamp
@staticmethod
"create leases (on reservable nodes only, use e.g. run -c default -c resa)"
now=int(time.time())
grain=self.apiserver.GetLeaseGranularity(self.auth_root())
- round_time=(now/grain)*grain
- start=round_time+grain
+ print 'API answered grain=',grain
+ start=(now/grain)*grain
+ start += grain
# find out all nodes that are reservable
nodes=self.all_reservable_nodenames()
if not nodes:
for lease_spec in self.plc_spec['leases']:
# skip the ones that come with a null slice id
if not lease_spec['slice']: continue
- lease_spec['t_from']=TestPlc.translate_timestamp(start,lease_spec['t_from'])
- lease_spec['t_until']=TestPlc.translate_timestamp(start,lease_spec['t_until'])
+ lease_spec['t_from']=TestPlc.translate_timestamp(start,grain,lease_spec['t_from'])
+ lease_spec['t_until']=TestPlc.translate_timestamp(start,grain,lease_spec['t_until'])
lease_addition=self.apiserver.AddLeases(self.auth_root(),nodes,
lease_spec['slice'],lease_spec['t_from'],lease_spec['t_until'])
if lease_addition['errors']:
def list_leases (self):
"list all leases known to the myplc"
leases = self.apiserver.GetLeases(self.auth_root())
+ now=int(time.time())
for l in leases:
- utils.header("%s %s from %s until %s"%(l['hostname'],l['name'],
- TestPlc.timestamp_printable(l['t_from']),
- TestPlc.timestamp_printable(l['t_until'])))
+ current=l['t_until']>=now
+ if self.options.verbose or current:
+ utils.header("%s %s from %s until %s"%(l['hostname'],l['name'],
+ TestPlc.timestamp_printable(l['t_from']),
+ TestPlc.timestamp_printable(l['t_until'])))
return True
# create nodegroups if needed, and populate
def nodes_ssh_debug(self):
"Tries to ssh into nodes in debug mode with the debug ssh key"
- return self.check_nodes_ssh(debug=True,timeout_minutes=30,silent_minutes=5)
+ return self.check_nodes_ssh(debug=True,timeout_minutes=10,silent_minutes=5)
def nodes_ssh_boot(self):
"Tries to ssh into nodes in production mode with the root ssh key"
- return self.check_nodes_ssh(debug=False,timeout_minutes=30,silent_minutes=15)
+ return self.check_nodes_ssh(debug=False,timeout_minutes=40,silent_minutes=15)
@node_mapper
def init_node (self):
tmpname='%s.sfa-config-tty'%(self.name())
fileconf=open(tmpname,'w')
for var in [ 'SFA_REGISTRY_ROOT_AUTH',
- 'SFA_REGISTRY_LEVEL1_AUTH',
+# 'SFA_REGISTRY_LEVEL1_AUTH',
'SFA_REGISTRY_HOST',
'SFA_AGGREGATE_HOST',
'SFA_SM_HOST',
'SFA_PLC_DB_HOST',
'SFA_PLC_DB_USER',
'SFA_PLC_DB_PASSWORD',
- 'SFA_PLC_URL']:
+ 'SFA_PLC_URL',
+ ]:
fileconf.write ('e %s\n%s\n'%(var,self.plc_spec['sfa'][var]))
fileconf.write('w\n')
fileconf.write('R\n')
return self.run_in_guest('service sfa start')==0
def setup_sfa(self):
+ sfa_spec=self.plc_spec['sfa']
"sfi client configuration"
dir_name=".sfi"
if os.path.exists(dir_name):
file_name=dir_name + os.sep + 'sfi_config'
fileconf=open(file_name,'w')
- SFI_AUTH=self.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH']+".main"
+ SFI_AUTH="%s.%s"%(sfa_spec['SFA_REGISTRY_ROOT_AUTH'],sfa_spec['login_base'])
fileconf.write ("SFI_AUTH='%s'"%SFI_AUTH)
fileconf.write('\n')
SFI_USER=SFI_AUTH+'.fake-pi1'
fileconf.write ("SFI_USER='%s'"%SFI_USER)
fileconf.write('\n')
- SFI_REGISTRY='http://' + self.plc_spec['sfa']['SFA_PLC_DB_HOST'] + ':12345/'
+ SFI_REGISTRY='http://' + sfa_spec['SFA_PLC_DB_HOST'] + ':12345/'
fileconf.write ("SFI_REGISTRY='%s'"%SFI_REGISTRY)
fileconf.write('\n')
- SFI_SM='http://' + self.plc_spec['sfa']['SFA_PLC_DB_HOST'] + ':12347/'
+ SFI_SM='http://' + sfa_spec['SFA_PLC_DB_HOST'] + ':12347/'
fileconf.write ("SFI_SM='%s'"%SFI_SM)
fileconf.write('\n')
fileconf.close()
file_name=dir_name + os.sep + 'person.xml'
fileconf=open(file_name,'w')
- for record in self.plc_spec['sfa']['sfa_person_xml']:
+ for record in sfa_spec['sfa_person_xml']:
person_record=record
fileconf.write(person_record)
fileconf.write('\n')
file_name=dir_name + os.sep + 'slice.xml'
fileconf=open(file_name,'w')
- for record in self.plc_spec['sfa']['sfa_slice_xml']:
+ for record in sfa_spec['sfa_slice_xml']:
slice_record=record
- #slice_record=self.plc_spec['sfa']['sfa_slice_xml']
+ #slice_record=sfa_spec['sfa_slice_xml']
fileconf.write(slice_record)
fileconf.write('\n')
fileconf.close()
file_name=dir_name + os.sep + 'slice.rspec'
fileconf=open(file_name,'w')
slice_rspec=''
- for (key, value) in self.plc_spec['sfa']['sfa_slice_rspec'].items():
+ for (key, value) in sfa_spec['sfa_slice_rspec'].items():
slice_rspec +=value
fileconf.write(slice_rspec)
fileconf.write('\n')