attempt to fix the add_sfa step
[tests.git] / system / TestPlc.py
index 1236395..812b867 100644 (file)
@@ -1,4 +1,6 @@
-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA 
+#
 import os, os.path
 import datetime
 import time
@@ -118,7 +120,7 @@ class TestPlc:
         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
@@ -535,8 +537,9 @@ class TestPlc:
         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',
@@ -547,7 +550,9 @@ class TestPlc:
                      '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')
@@ -663,8 +668,8 @@ class TestPlc:
 
     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
@@ -675,8 +680,9 @@ class TestPlc:
         "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: 
@@ -688,8 +694,8 @@ class TestPlc:
         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']:
@@ -902,11 +908,11 @@ class TestPlc:
         
     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): 
@@ -1069,7 +1075,7 @@ class TestPlc:
         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',
@@ -1078,7 +1084,8 @@ class TestPlc:
                      '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')
@@ -1101,6 +1108,7 @@ class TestPlc:
         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):
@@ -1113,23 +1121,23 @@ class TestPlc:
 
        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')
@@ -1137,9 +1145,9 @@ class TestPlc:
 
        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()
@@ -1147,7 +1155,7 @@ class TestPlc:
        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')