Exemple #1
0
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