from Logger import Logger
from CommandUtils import CommandUtils
from constants import constants
import os.path
class ChrootUtils(object):
def __init__(self,logName=None,logPath=None):
if logName is None:
logName = "ChrootUtils"
if logPath is None:
logPath = constants.logPath
self.logName=logName
self.logPath=logPath
self.logger=Logger.getLogger(logName,logPath)
def createChroot(self,chrootName):
chrootID=constants.buildRootPath+"/"+chrootName
if os.path.isdir(chrootID):
if not self.destroyChroot(chrootID):
self.logger.error("Given chroot "+chrootID+" is already exists. unable to destroy it ")
return False,None
# need to add timeout for this step
# http://stackoverflow.com/questions/1191374/subprocess-with-timeout
cmdUtils=CommandUtils()
returnVal=cmdUtils.runCommandInShell("mkdir -p "+chrootID)
if not returnVal:
self.logger.error("Unable to create chroot:"+ chrootID +".Unknown error.")
return False,None
return True,chrootID
def destroyChroot(self,chrootID):
# need to add timeout for this step
# http://stackoverflow.com/questions/1191374/subprocess-with-timeout
cmdUtils=CommandUtils()
returnVal=cmdUtils.runCommandInShell("./clean-up-chroot.py "+chrootID)
if not returnVal:
self.logger.error("Unable to destroy chroot:"+ chrootID +".Unknown error.")
return False
returnVal=cmdUtils.runCommandInShell("rm -rf "+chrootID)
if not returnVal:
self.logger.error("Unable to destroy chroot:"+ chrootID +".Unknown error.")
return False
self.logger.info("Successfully destroyed chroot:"+chrootID)
return True