class KickstartFetch(BaseFetch): def __init__(self, systemId, baseURL): BaseFetch.__init__(self) self.baseURL = baseURL self.systemId = systemId self.rhnComm = RHNComm(baseURL, self.systemId) def login(self, refresh=False): return self.rhnComm.login(refresh) def getFetchURL(self, channelLabel, ksLabel, ksFilePath): return self.baseURL + "/SAT/$RHN/" + channelLabel + "/getKickstartFile/" + ksLabel + "/" + ksFilePath; def fetchItem(self, itemInfo): authMap = self.login() fileName = itemInfo['fileName'] itemSize = itemInfo['size'] md5sum = itemInfo['md5sum'] hashType = itemInfo['hashtype'] ksLabel = itemInfo['ksLabel'] channelLabel = itemInfo['channelLabel'] savePath = itemInfo['savePath'] fetchURL = self.getFetchURL(channelLabel, ksLabel, fileName) status = self.fetch(fileName, fetchURL, savePath, itemSize, hashType, md5sum, headers=authMap) if status == BaseFetch.STATUS_UNAUTHORIZED: LOG.warn("Unauthorized request from fetch(). Will attempt to update authentication credentials and retry") authMap = self.login(refresh=True) return self.fetch(fileName, fetchURL, savePath, itemSize, hashType, md5sum, headers=authMap) return status
class PackageFetch(BaseFetch): def __init__(self, systemId, baseURL, channelLabel, savePath): BaseFetch.__init__(self) self.systemId = systemId self.baseURL = baseURL self.rhnComm = RHNComm(baseURL, self.systemId) self.channelLabel = channelLabel self.savePath = savePath def login(self, refresh=False): """ Returns authentication headers needed for RHN 'GET' requests. auth data is cached, if data needs to be updated, pass in refresh=True """ return self.rhnComm.login(refresh) def getFetchURL(self, channelLabel, fetchName): return self.baseURL + "/SAT/$RHN/" + channelLabel + "/getPackage/" + fetchName def fetchItem(self, itemInfo): authMap = self.login() fileName = itemInfo['fileName'] fetchName = itemInfo['fetch_name'] itemSize = itemInfo['size'] md5sum = itemInfo['md5sum'] hashType = itemInfo['hashtype'] if itemInfo.has_key('pkgpath'): pkgPath = itemInfo['pkgpath'] else: pkgPath = None fetchURL = self.getFetchURL(self.channelLabel, fetchName) status = self.fetch(fileName, fetchURL, self.savePath, itemSize, hashType, md5sum, headers=authMap) if status == BaseFetch.STATUS_UNAUTHORIZED: LOG.warn( "Unauthorized request from fetch(). Will attempt to update authentication credentials and retry" ) authMap = self.login(refresh=True) return self.fetch(fileName, fetchURL, self.savePath, itemSize, hashType, md5sum, headers=authMap, pkgpath=pkgPath) return status
class KickstartFetch(BaseFetch): def __init__(self, systemId, baseURL): BaseFetch.__init__(self) self.baseURL = baseURL self.systemId = systemId self.rhnComm = RHNComm(baseURL, self.systemId) def login(self, refresh=False): return self.rhnComm.login(refresh) def getFetchURL(self, channelLabel, ksLabel, ksFilePath): return self.baseURL + "/SAT/$RHN/" + channelLabel + "/getKickstartFile/" + ksLabel + "/" + ksFilePath def fetchItem(self, itemInfo): authMap = self.login() fileName = itemInfo['fileName'] itemSize = itemInfo['size'] md5sum = itemInfo['md5sum'] hashType = itemInfo['hashtype'] ksLabel = itemInfo['ksLabel'] channelLabel = itemInfo['channelLabel'] savePath = itemInfo['savePath'] fetchURL = self.getFetchURL(channelLabel, ksLabel, fileName) status = self.fetch(fileName, fetchURL, itemSize, hashType, md5sum, savePath, headers=authMap) if status == BaseFetch.STATUS_UNAUTHORIZED: LOG.warn( "Unauthorized request from fetch(). Will attempt to update authentication credentials and retry" ) authMap = self.login(refresh=True) return self.fetch(fileName, fetchURL, itemSize, hashType, md5sum, savePath, headers=authMap) return status
class PackageFetch(BaseFetch): def __init__(self, systemId, baseURL, channelLabel, savePath): BaseFetch.__init__(self) self.systemId = systemId self.baseURL = baseURL self.rhnComm = RHNComm(baseURL, self.systemId) self.channelLabel = channelLabel self.savePath = savePath def login(self, refresh=False): """ Returns authentication headers needed for RHN 'GET' requests. auth data is cached, if data needs to be updated, pass in refresh=True """ return self.rhnComm.login(refresh) def getFetchURL(self, channelLabel, fetchName): return self.baseURL + "/SAT/$RHN/" + channelLabel + "/getPackage/" + fetchName def fetchItem(self, itemInfo): authMap = self.login() fileName = itemInfo["fileName"] fetchName = itemInfo["fetch_name"] itemSize = itemInfo["size"] md5sum = itemInfo["md5sum"] hashType = itemInfo["hashtype"] if itemInfo.has_key("pkgpath"): pkgPath = itemInfo["pkgpath"] else: pkgPath = None fetchURL = self.getFetchURL(self.channelLabel, fetchName) status = self.fetch(fileName, fetchURL, self.savePath, itemSize, hashType, md5sum, headers=authMap) if status == BaseFetch.STATUS_UNAUTHORIZED: LOG.warn("Unauthorized request from fetch(). Will attempt to update authentication credentials and retry") authMap = self.login(refresh=True) return self.fetch( fileName, fetchURL, self.savePath, itemSize, hashType, md5sum, headers=authMap, pkgpath=pkgPath ) return status