#!/usr/bin/env python from dm.common.utility.loggingManager import LoggingManager from dm.common.exceptions.invalidArgument import InvalidArgument from dm.common.exceptions.objectAlreadyExists import ObjectAlreadyExists from dm.common.exceptions.objectNotFound import ObjectNotFound from dm.common.exceptions.dbError import DbError from dmMongoCollection import DmMongoCollection class WorkflowCollection(DmMongoCollection): """Class responsible for updating workflow collection in mongo db.""" UNIQUE_KEYS_LIST = [ 'name', 'owner' ] NAME_KEY = 'name' ITEM_TYPE = 'workflow' def __init__(self, dbClient, prefix=None): collectionName = 'workflows' if prefix: collectionName = '%s-workflows' % prefix DmMongoCollection.__init__(self, collectionName, dbClient) ####################################################################### # Testing if __name__ == '__main__': from dmMongoClient import DmMongoClient mongo = DmMongoClient('dm') workflowCollection = WorkflowCollection(mongo) workflowInfo = {'name' : 'workflow-01', 'owner' : 'sveseli', 'stages' : [ { 'id' : '1', 'executable' : '/bin/date', 'args' : [ ] }, { 'id' : '2', 'executable' : '/bin/ls', 'args' : [ '-l', 'INPUT_FILE' ], 'parallelizeExecution' : False}, { 'id' : '3', 'executable' : '/bin/cp', 'args' : [ 'INPUT_FILE', 'OUTPUT_FILE=INPUT_FILE.processed' ], 'parallelizeExecution' : False} ] } print workflowCollection.addByUniqueKeys(workflowInfo) print workflowCollection.findByQueryDict({'name' : 'workflow-01', 'owner' : 'sveseli'}, {'steps' : 1}) workflowInfo['description'] = 'My first workflow' print workflowCollection.updateByUniqueKeys(workflowInfo)