+ def sfa_dbclean(self):
+ "thoroughly wipes off the SFA database"
+ self.run_in_guest("sfa-nuke-plc.py")==0
+ return True
+
+ def sfa_plcclean(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 sfa_import AGAIN"
+ return True
+
+ def sfa_uninstall(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")
+ self.run_in_guest("rm -rf /etc/sfa")
+ self.run_in_guest("rm -rf /var/log/sfa_access.log /var/log/sfa_import_plc.log /var/log/sfa.daemon")
+ # xxx tmp
+ self.run_in_guest("rpm -e --noscripts sfa-plc")
+ return True
+
+ ### sfa_install_rpm
+ def sfa_utest_install(self):
+ "yum install sfa-tests"
+ # ignore yum retcod
+ self.run_in_guest("yum -y install sfa-tests")
+ return self.run_in_guest("rpm -q sfa-tests")==0
+
+ def sfa_utest_run(self):
+ "run SFA unittests"
+ return self.run_in_guest("/usr/share/sfa/tests/testAll.py")==0
+
+ ###
+ def confdir(self):
+ dirname="conf.%s"%self.plc_spec['name']
+ if not os.path.isdir(dirname):
+ utils.system("mkdir -p %s"%dirname)
+ if not os.path.isdir(dirname):
+ raise "Cannot create config dir for plc %s"%self.name()
+ return dirname
+
+ def conffile(self,filename):
+ return "%s/%s"%(self.confdir(),filename)
+ def confsubdir(self,dirname,clean):
+ subdirname="%s/%s"%(self.confdir(),dirname)
+ if clean:
+ utils.system("rm -rf %s"%subdirname)
+ if not os.path.isdir(subdirname):
+ utils.system("mkdir -p %s"%subdirname)
+ if not os.path.isdir(subdirname):
+ raise "Cannot create config subdir %s for plc %s"%(dirname,self.name())
+ return subdirname
+
+ def conffile_clean (self,filename):
+ filename=self.conffile(filename)
+ return utils.system("rm -rf %s"%filename)==0
+