#!/usr/bin/env python import os from dm.common.objects.uploadInfo import UploadInfo from dm.common.utility.objectTracker import ObjectTracker from dm.common.exceptions.objectAlreadyExists import ObjectAlreadyExists class UploadTracker(ObjectTracker): # Cache configuration objectClass = UploadInfo cacheSize = 100 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