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)
# 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,
'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,
]
### 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',
"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()
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/'
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
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)
#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']
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']
"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)
# 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'
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',
}
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',
'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 ['<record hrn="%s" type="slice" description="SFA-testing" url="http://test.onelab.eu/"><researcher>%s</researcher></record>'%(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 ['<record email="sfafakeuser1@onelab.eu" enabled="True" first_name="Fake" hrn="%s" last_name="Sfa" name="%s" type="user"><keys>%s</keys><role_ids>20</role_ids><role_ids>10</role_ids><site_ids>1</site_ids><roles>pi</roles><roles>admin</roles><sites>%s</sites></record>'%(hrn,hrn,public_key,prefix)]
+ return ['<record email="%(mail)s" enabled="True" first_name="Fake" hrn="%(hrn)s" last_name="Sfa" name="%(hrn)s" type="user"><keys>%(key)s</keys><role_ids>20</role_ids><role_ids>10</role_ids><site_ids>1</site_ids><roles>pi</roles><roles>admin</roles><sites>%(prefix)s</sites></record>'%locals()]
def sfa_slice_rspec(options,index):
node_name='deferred'