import json from Logger import Logger from constants import constants import os.path from CommandUtils import CommandUtils from PackageUtils import PackageUtils class PackageInfo(object): def __init__(self, logName=None, logPath=None): if logName is None: logName = "PackageInfo" if logPath is None: logPath = constants.logPath self.logName=logName self.logPath=logPath self.logger=Logger.getLogger(logName,logPath) self.pkgList = {} def loadPackagesData(self): listPackages = constants.specData.getListPackages() listPackages.sort() listRPMFiles = [] cmdUtils = CommandUtils() for package in listPackages: release = constants.specData.getRelease(package) version = constants.specData.getVersion(package) listRPMPackages = constants.specData.getRPMPackages(package) srpmFileName = package+"-"+version+"-"+release+".src.rpm" srpmFiles = cmdUtils.findFile(srpmFileName, constants.sourceRpmPath) srpmFile = None if len(srpmFiles) == 1: srpmFile = srpmFiles[0] debugrpmFileName = package+"-debuginfo-"+version+"-"+release+"*" debugrpmFiles = cmdUtils.findFile(debugrpmFileName, constants.rpmPath) debugrpmFile = None if len(debugrpmFiles) == 1: debugrpmFile = debugrpmFiles[0] pkgUtils = PackageUtils(self.logName,self.logPath) for rpmPkg in listRPMPackages: rpmFile = pkgUtils.findRPMFileForGivenPackage(rpmPkg) if rpmFile is not None: listRPMFiles.append(rpmFile) listPkgAttributes = {"sourcerpm":srpmFile, "rpm":rpmFile, "debugrpm":debugrpmFile} self.pkgList[rpmPkg] = listPkgAttributes self.logger.debug("Added "+rpmPkg +" rpm package to the list") else: self.logger.error("Missing rpm file for package:"+rpmPkg) def writePkgListToFile(self, fileName): self.logger.info("Writing package list to the json file") cmdUtils=CommandUtils() dirPath=os.path.basename(fileName) if not os.path.isdir(dirPath): cmdUtils.runCommandInShell("mkdir -p "+dirPath) pkgInfoFile = open(fileName,'w+') json.dump(self.pkgList, pkgInfoFile, indent=4) pkgInfoFile.close()