""" This class represents one command given by an rpc client on the master: can use access to the database """ # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Copyright 2004 Dries Verachtert import config, storagefactory from command import Command from commandvalueobject import CommandValueObject from log4py import Logger class MasterCommand(Command): # from Command.py start def __init__(self, commandName,userId,specRepoId,specFileId,toEmail,distroArchTag,priority,targetId): self.__cat = Logger().get_instance(self) self.__cat.debug("start") self.__commandName=commandName self.__userId=userId self.__specRepoId = specRepoId self.__specFileId = specFileId self.__toEmail = toEmail self.__distroArchTag = distroArchTag self.__priority = priority self.__targetId = targetId self.__specRepo = None self.__specRepositorySpecFile = None self.__target = None self.__version = None self.__authority = None self.__cat.debug("end") def getDefines(self): retval = storagefactory.StorageFactory.getStorage().getDefinesByDistroArchTag(self.__distroArchTag) return retval def getVersion(self): return self.__version def getCommandName(self): return self.__commandName def getUserId(self): return self.__userId def getSpecRepoId(self): return self.__specRepoId def getSpecFileId(self): return self.__specFileId def getToEmail(self): return self.__toEmail def getDistroArchTag(self): return self.__distroArchTag def getPriority(self): return self.__priority def getTargetId(self): return self.__targetId def getId(self): return self.__commandId def getSpecRepositoryName(self): return self.getSpecRepository().getName() def getSpecFileFileName(self): return self.getSpecRepositorySpecFile().getFileName() def getAuthority(self): self.__authority = storagefactory.StorageFactory.getStorage().getAuthorityOfMostRecentVersion(self.getSpecFileId()) return self.__authority # from Command.py end def setVersion(self,version): self.__version = version def getNameFromSpec(self): self.__authority = storagefactory.StorageFactory.getStorage().getNameOfMostRecentVersion(self.getSpecFileId()) return self.__authority # create an object which can be used on SlaveCommand to create a new SlaveCommand object def toXmlRpcPersistantObject(self): retval = CommandValueObject() self.__cat.debug("retval obj created") retval.defines = self.getDefines() self.__cat.debug("defines set") retval.commandName = self.__commandName retval.userId = self.__userId retval.specRepoId = self.__specRepoId retval.specFileId = self.__specFileId retval.toEmail = self.__toEmail retval.distroArchTag = self.__distroArchTag retval.priority = self.__priority retval.targetId = self.__targetId retval.commandId = self.getId() retval.specRepoName = self.getSpecRepository().getName() retval.specFileFileName = self.getSpecRepositorySpecFile().getFileName() retval.version = self.__version retval.authority = self.getAuthority() self.__cat.debug("retval v0=" + retval.defines) self.__cat.debug("retval v1=" + retval.commandName) self.__cat.debug("retval v2=" + str(retval.userId)) self.__cat.debug("retval v3=" + str(retval.specRepoId)) self.__cat.debug("retval v4=" + str(retval.specFileId)) self.__cat.debug("retval v5=" + retval.toEmail) self.__cat.debug("retval v6=" + retval.distroArchTag) self.__cat.debug("retval v7=" + str(retval.priority)) self.__cat.debug("retval v8=" + str(retval.targetId)) self.__cat.debug("retval v9=" + str(retval.commandId)) self.__cat.debug("retval v10=" + str(retval.specRepoName)) self.__cat.debug("retval v11=" + str(retval.specFileFileName)) self.__cat.debug("retval v12=" + str(retval.authority)) self.__cat.debug("retval v13=" + str(retval.version)) return retval # should only be used within the master! def getSpecRepository(self): if self.__specRepo == None: myConfig = config.Config.getInstance() self.__specRepo = myConfig.getSpecRepositoryList().getSpecRepositoryById(self.__specRepoId) self.__cat.debug("specRepo set to " + str(self.__specRepo)) return self.__specRepo def getSpecRepositorySpecFile(self): if self.__specRepositorySpecFile == None: specRepo = self.getSpecRepository() self.__specRepositorySpecFile = specRepo.getSpecRepositorySpecFileById(self.__specFileId) self.__cat.debug("specRepositorySpecFile set to " + str(self.__specRepositorySpecFile)) return self.__specRepositorySpecFile def getTarget(self): self.__cat.debug("start") if self.__target == None: myConfig = config.Config.getInstance() self.__target = myConfig.getTargetList().getTargetById(self.__targetId) self.__cat.debug("target set to " + str(self.__target)) return self.__target def setCommandId(self,id): self.__commandId = id def setId(self,id): self.__commandId = id # this returns an array! def getSpecFileOriginalBuildReqs(self): self.__cat.debug("start") # create a tags object based on the spec file and the defines specFile = self.getBuildDir() + "/" + self.getSpecFileShortFileName() self.__cat.debug("specFile: " + specFile) sft = SpecFileTags(specFile,self.getDefines()) br = sft.getOriginalBuildRequires() self.__cat.debug("br: " + str(br)) return br