Skip to content
Snippets Groups Projects
uploadTracker.py 1.54 KiB
Newer Older
#!/usr/bin/env python

sveseli's avatar
sveseli committed
import os
from dm.common.objects.uploadInfo import UploadInfo
from dm.common.utility.objectTracker import ObjectTracker
sveseli's avatar
sveseli committed
from dm.common.exceptions.objectAlreadyExists import ObjectAlreadyExists

class UploadTracker(ObjectTracker):

    # Cache configuration
    objectClass = UploadInfo
sveseli's avatar
sveseli committed
    def __init__(self, *args, **kwargs):
        ObjectTracker.__init__(self, args, kwargs)
        self.activeUploadDict = {}

    def checkForActiveUpload(self, experiment, dataDirectory):
        experimentName = experiment.get('name')
        dataDir = os.path.normpath(dataDirectory)
        activeUploadKey = experimentName + dataDir
        uploadId = self.activeUploadDict.get(activeUploadKey)
        if uploadId:
            uploadInfo = self.get(uploadId)
            if uploadInfo is not None:
                if uploadInfo.get('status') == 'running':
                    raise ObjectAlreadyExists('Upload is already active for experiment %s in data directory %s.' % (experimentName, dataDir))
                del self.activeUploadDict[activeUploadKey]

    def startUpload(self, uploadId, uploadInfo):
        experimentName = uploadInfo.get('experimentName') 
        dataDirectory = uploadInfo.get('dataDirectory')
        dataDir = os.path.normpath(dataDirectory)
        activeUploadKey = experimentName + dataDir
        self.activeUploadDict[activeUploadKey] = uploadId
        self.put(uploadId, uploadInfo)

####################################################################
# Testing

if __name__ == '__main__':
    pass