From 825e0facaff46873d447fb4fe85f8e31f17bb46c Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Fri, 24 Sep 2010 12:34:28 +0200 Subject: [PATCH] ad more steps to go back and forth in the sfa scenario fixed all hard-wired slice/site names --- system/TestMain.py | 2 +- system/TestPlc.py | 75 +++++++++++++++++++++++++++------------- system/TestSliceSfa.py | 23 +++++++----- system/config_default.py | 37 +++++++++++++------- 4 files changed, 91 insertions(+), 46 deletions(-) diff --git a/system/TestMain.py b/system/TestMain.py index cf7df7b..8854624 100755 --- a/system/TestMain.py +++ b/system/TestMain.py @@ -191,7 +191,7 @@ steps refer to a method in TestPlc or to a step_* module if self.options.list_steps: self.init_steps() self.list_steps() - sys.exit(1) + return True # steps if not self.options.steps: diff --git a/system/TestPlc.py b/system/TestPlc.py index 23afd8b..ea1c68a 100644 --- a/system/TestPlc.py +++ b/system/TestPlc.py @@ -71,7 +71,7 @@ def slice_mapper_options_sfa (method): test_plc=self overall=True slice_method = TestSliceSfa.__dict__[method.__name__] - for slice_spec in self.plc_spec['sfa']['slices_sfa']: + for slice_spec in self.plc_spec['sfa']['sfa_slice_specs']: site_spec = self.locate_site (slice_spec['sitename']) test_site = TestSite(self,site_spec) test_slice=TestSliceSfa(test_plc,test_site,slice_spec) @@ -96,7 +96,7 @@ class TestPlc: # better use of time: do this now that the nodes are taking off 'plcsh_stress_test', SEP, 'install_sfa', 'configure_sfa', 'cross_configure_sfa', 'import_sfa', 'start_sfa', SEPSFA, - 'setup_sfa', 'add_sfa', 'update_sfa', 'view_sfa', SEPSFA, + 'configure_sfi', 'add_sfa', 'update_sfa', 'view_sfa', SEPSFA, 'nodes_ssh_debug', 'nodes_ssh_boot', 'check_slice', 'check_initscripts', SEPSFA, 'check_slice_sfa', 'delete_sfa', 'stop_sfa', SEPSFA, 'check_tcp', 'check_hooks', SEP, @@ -110,6 +110,7 @@ class TestPlc: 'clean_leases', 'list_leases', SEP, 'populate' , SEP, 'list_all_qemus', 'list_qemus', 'kill_qemus', SEP, + 'plcclean_sfa', 'dbclean_sfa', 'uninstall_sfa', 'clean_sfi', SEP, 'db_dump' , 'db_restore', SEP, 'standby_1 through 20',SEP, ] @@ -1061,20 +1062,41 @@ class TestPlc: ### install_sfa_rpm def install_sfa(self): "yum install sfa, sfa-plc and sfa-client" - if self.options.personality == "linux32": - arch = "i386" - elif self.options.personality == "linux64": - arch = "x86_64" - else: - raise Exception, "Unsupported personality %r"%self.options.personality return self.run_in_guest("yum -y install sfa sfa-client sfa-plc sfa-sfatables")==0 + def dbclean_sfa(self): + "thoroughly wipes off the SFA database" + return self.run_in_guest("sfa-nuke-plc.py")==0 + + def plcclean_sfa(self): + "cleans the PLC entries that were created as a side effect of running the script" + # ignore result + sfa_spec=self.plc_spec['sfa'] + + slicename='%s_%s'%(sfa_spec['login_base'],sfa_spec['slicename']) + try: self.apiserver.DeleteSlice(self.auth_root(),slicename) + except: print "Slice %s already absent from PLC db"%slicename + + username="%s@%s"%(sfa_spec['regularuser'],sfa_spec['domain']) + try: self.apiserver.DeletePerson(self.auth_root(),username) + except: print "User %s already absent from PLC db"%username + + print "REMEMBER TO RUN import_sfa AGAIN" + return True + + def uninstall_sfa(self): + "uses rpm to uninstall sfa - ignore result" + self.run_in_guest("rpm -e sfa sfa-sfatables sfa-client sfa-plc") + self.run_in_guest("rm -rf /var/lib/sfa") + return True + ### def configure_sfa(self): "run sfa-config-tty" tmpname='%s.sfa-config-tty'%(self.name()) fileconf=open(tmpname,'w') for var in [ 'SFA_REGISTRY_ROOT_AUTH', + 'SFA_INTERFACE_HRN', # 'SFA_REGISTRY_LEVEL1_AUTH', 'SFA_REGISTRY_HOST', 'SFA_AGGREGATE_HOST', @@ -1135,14 +1157,14 @@ class TestPlc: "service sfa start" return self.run_in_guest('service sfa start')==0 - def setup_sfa(self): + def configure_sfi(self): sfa_spec=self.plc_spec['sfa'] "sfi client configuration" dir_name=".sfi" if os.path.exists(dir_name): utils.system('rm -rf %s'%dir_name) utils.system('mkdir %s'%dir_name) - file_name=dir_name + os.sep + 'fake-pi1.pkey' + file_name=dir_name + os.sep + sfa_spec['piuser'] + '.pkey' fileconf=open(file_name,'w') fileconf.write (self.plc_spec['keys'][0]['private']) fileconf.close() @@ -1152,7 +1174,7 @@ class TestPlc: 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' + SFI_USER=SFI_AUTH + '.' + sfa_spec['piuser'] fileconf.write ("SFI_USER='%s'"%SFI_USER) fileconf.write('\n') SFI_REGISTRY='http://' + sfa_spec['SFA_PLC_DB_HOST'] + ':12345/' @@ -1196,39 +1218,44 @@ class TestPlc: utils.system('rm -rf %s'%dir_name) return True + def clean_sfi (self): + self.run_in_guest("rm -rf /root/.sfi") + return True + def add_sfa(self): "run sfi.py add (on Registry) and sfi.py create (on SM) to form new objects" test_plc=self test_user_sfa=TestUserSfa(test_plc,self.plc_spec['sfa']) - success=test_user_sfa.add_user() + if not test_user_sfa.add_user(): return False - for slice_spec in self.plc_spec['sfa']['slices_sfa']: + for slice_spec in self.plc_spec['sfa']['sfa_slice_specs']: site_spec = self.locate_site (slice_spec['sitename']) test_site = TestSite(self,site_spec) test_slice_sfa=TestSliceSfa(test_plc,test_site,slice_spec) - success1=test_slice_sfa.add_slice() - success2=test_slice_sfa.create_slice() - return success and success1 and success2 + if not test_slice_sfa.add_slice(): return False + if not test_slice_sfa.create_slice(): return False + return True def update_sfa(self): "run sfi.py update (on Registry) and sfi.py create (on SM) on existing objects" test_plc=self test_user_sfa=TestUserSfa(test_plc,self.plc_spec['sfa']) - success1=test_user_sfa.update_user() + if not test_user_sfa.update_user(): return False - for slice_spec in self.plc_spec['sfa']['slices_sfa']: + for slice_spec in self.plc_spec['sfa']['sfa_slice_specs']: site_spec = self.locate_site (slice_spec['sitename']) test_site = TestSite(self,site_spec) test_slice_sfa=TestSliceSfa(test_plc,test_site,slice_spec) - success2=test_slice_sfa.update_slice() - return success1 and success2 + if not test_slice_sfa.update_slice(): return False + return True def view_sfa(self): "run sfi.py list and sfi.py show (both on Registry) and sfi.py slices and sfi.py resources (both on SM)" - auth=self.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH'] + sfa_spec=self.plc_spec['sfa'] + auth=sfa_spec['SFA_REGISTRY_ROOT_AUTH'] return \ - self.run_in_guest("sfi.py -d /root/.sfi/ list %s.main"%auth)==0 and \ - self.run_in_guest("sfi.py -d /root/.sfi/ show %s.main"%auth)==0 and \ + self.run_in_guest("sfi.py -d /root/.sfi/ list %s.%s"%(auth,sfa_spec['login_base']))==0 and \ + self.run_in_guest("sfi.py -d /root/.sfi/ show %s.%s"%(auth,sfa_spec['login_base']))==0 and \ self.run_in_guest("sfi.py -d /root/.sfi/ slices")==0 and \ self.run_in_guest("sfi.py -d /root/.sfi/ resources -o resources")==0 @@ -1242,7 +1269,7 @@ class TestPlc: test_plc=self test_user_sfa=TestUserSfa(test_plc,self.plc_spec['sfa']) success1=test_user_sfa.delete_user() - for slice_spec in self.plc_spec['sfa']['slices_sfa']: + for slice_spec in self.plc_spec['sfa']['sfa_slice_specs']: site_spec = self.locate_site (slice_spec['sitename']) test_site = TestSite(self,site_spec) test_slice_sfa=TestSliceSfa(test_plc,test_site,slice_spec) diff --git a/system/TestSliceSfa.py b/system/TestSliceSfa.py index 281df58..ef8080c 100644 --- a/system/TestSliceSfa.py +++ b/system/TestSliceSfa.py @@ -19,6 +19,12 @@ class TestSliceSfa: #self.slice_spec=plc_spec_sfa['slices_sfa'][0] self.slice_spec=slice_spec self.test_ssh=TestSsh(self.test_plc.test_ssh) + # shortcuts + self.sfa_spec=test_plc.plc_spec['sfa'] + self.piuser=self.sfa_spec['piuser'] + self.regularuser=self.sfa_spec['regularuser'] + self.slicename=self.sfa_spec['slicename'] + self.login_base=self.sfa_spec['login_base'] def name(self): return self.slice_spec['slice_fields']['name'] @@ -39,11 +45,12 @@ class TestSliceSfa: def create_slice(self): auth=self.test_plc.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH'] self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ resources -o /root/.sfi/resources_in.rspec") - self.test_plc.run_in_guest( - "sfiListNodes.py -i /root/.sfi/resources_in.rspec -o /root/.sfi/all_nodes.txt") - self.test_plc.run_in_guest( - "sfiAddSliver.py -i /root/.sfi/resources_in.rspec -n /root/.sfi/all_nodes.txt -o /root/.sfi/resources_out.rspec") - return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ create %s.main.fslc1 resources_out.rspec"%auth)==0 + return \ + self.test_plc.run_in_guest( + "sfiListNodes.py -i /root/.sfi/resources_in.rspec -o /root/.sfi/all_nodes.txt")==0 and \ + self.test_plc.run_in_guest( + "sfiAddSliver.py -i /root/.sfi/resources_in.rspec -n /root/.sfi/all_nodes.txt -o /root/.sfi/resources_out.rspec")==0 and \ + self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ create %s.%s.%s resources_out.rspec"%(auth,self.login_base,self.slicename))==0 def update_slice(self): auth=self.test_plc.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH'] @@ -52,12 +59,12 @@ class TestSliceSfa: "sfiListNodes.py -i /root/.sfi/resources_in.rspec -o /root/.sfi/all_nodes.txt") self.test_plc.run_in_guest( "sfiAddSliver.py -i /root/.sfi/resources_in.rspec -n /root/.sfi/all_nodes.txt -o /root/.sfi/resources_out.rspec") - return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ create %s.main.fslc1 resources_out.rspec"%auth)==0 + return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ create %s.%s.%s resources_out.rspec"%(auth,self.login_base,self.slicename))==0 def delete_slice(self): auth=self.test_plc.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH'] - self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ delete %s.main.fslc1"%auth) - return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ remove -t slice %s.main.fslc1"%auth)==0 + self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ delete %s.%s.%s"%(auth,self.login_base,self.slicename)) + return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ remove -t slice %s.%s.%s"%(auth,self.login_base,self.slicename))==0 def check_slice_sfa(self,options,timeout_minutes=40,silent_minutes=30,period=15): timeout = datetime.datetime.now()+datetime.timedelta(minutes=timeout_minutes) diff --git a/system/config_default.py b/system/config_default.py index 6f113c1..9addccc 100644 --- a/system/config_default.py +++ b/system/config_default.py @@ -10,6 +10,8 @@ # values like 'hostname', 'ip' and the like are rewritten later with a TestPool object +domain="onelab.eu" + ### for the sfa dual setup def login_base (index): if index==1: return 'inria' @@ -46,7 +48,6 @@ def all_nodenames (options,index): return [ node['name'] for node in nodes(options,index)] def users (options) : - domain="onelab.eu" return [ {'name' : 'pi', 'keynames' : [ 'key1' ], 'user_fields' : {'first_name':'PI', 'last_name':'PI', 'enabled':'True', @@ -268,8 +269,12 @@ def plc (options,index) : } def sfa (options,index) : + piuser='fake-pi%d'%index + regularuser='sfafakeuser%d'%index + slicename='fslc%d'%index return { 'SFA_REGISTRY_ROOT_AUTH' : sfa_root(index), + 'SFA_INTERFACE_HRN' : sfa_root(index), # 'SFA_REGISTRY_LEVEL1_AUTH' : '', 'SFA_REGISTRY_HOST' : 'deferred-myplc-hostname', 'SFA_AGGREGATE_HOST': 'deferred-myplc-hostname', @@ -280,36 +285,42 @@ def sfa (options,index) : 'SFA_PLC_DB_USER' : 'pgsqluser', 'SFA_PLC_DB_PASSWORD' : 'mnbvcxzlkjhgfdsapoiuytrewq', 'SFA_PLC_URL' : 'deferred-myplc-api-url', - 'slices_sfa' : slices_sfa(options,index), - 'sfa_slice_xml' : sfa_slice_xml(options,index), - 'sfa_person_xml' : sfa_person_xml(options,index), + 'sfa_slice_specs' : sfa_slice_specs(options,index,slicename,regularuser), + 'sfa_slice_xml' : sfa_slice_xml(options,index,piuser,slicename), + 'sfa_person_xml' : sfa_person_xml(options,index,regularuser), 'sfa_slice_rspec' : sfa_slice_rspec(options,index), 'login_base' : login_base(index), + 'piuser' : piuser, + 'regularuser':regularuser, + 'slicename' : slicename, + 'domain':domain, } -def slices_sfa (options,index): - return [ { 'slice_fields': {'name':'%s_fslc1'%login_base(index), +def sfa_slice_specs (options,index,slicename,regularuser): + return [ { 'slice_fields': {'name':'%s_%s'%(login_base(index),slicename), 'url':'http://foo%d@foo.com'%index, 'description':'SFA-testing', 'max_nodes':2, }, - 'usernames' : [ ('sfafakeuser1','key1') ], + 'usernames' : [ (regularuser,'key1') ], 'nodenames' : all_nodenames(options,index), 'sitename' : login_base(index), }] -def sfa_slice_xml(options,index): +def sfa_slice_xml(options,index,piuser,slicename): prefix='%s.%s'%(sfa_root(index),login_base(index)) - hrn=prefix+'.fslc1' - researcher=prefix+'.fake-pi1' + hrn=prefix+'.'+slicename + researcher=prefix+'.'+piuser return ['%s'%(hrn, researcher)] -def sfa_person_xml(options,index): +def sfa_person_xml(options,index,regularuser): prefix='%s.%s'%(sfa_root(index),login_base(index)) - hrn=prefix+'.sfafakeuser1' + hrn=prefix+'.'+regularuser + mail="%s@%s"%(regularuser,domain) + key=public_key - return ['%s20101piadmin%s'%(hrn,hrn,public_key,prefix)] + return ['%(key)s20101piadmin%(prefix)s'%locals()] def sfa_slice_rspec(options,index): node_name='deferred' -- 2.43.0