def getInstanceTemplate(self, workflow=None, vardict = {}):
     if workflow==None: 
         workflow = self.getWorkflowTemplate()
         user = workflow.user
     else:
         user = self.getUser()
     it = InstanceTemplate.findByName(SESSION, "test_instance_template", user)
     if it==None:
         it = InstanceTemplate("test_instance_template", "f1-micro", "us-central1-a", self.getBootDiskTemplate(workflow=workflow, vardict=vardict),
                               self.getReadDiskTemplates(workflow=workflow, vardict=vardict), self.getReadWriteDiskTemplates(workflow=workflow, vardict=vardict), 
                               [], workflow, "tag1|tag2", "key1:value1|key2:value2", "", 1, True)
     it.updateVarDict(vardict, it.workflow.user)
     return it
Exemple #2
0
def saveCommand(user, data, delete):
    workflow = WorkflowTemplate.findByID(SESSION, getID(data["workflowInCommandForm"]), user)
    if workflow == None:
        return {"updates": {}, "message": "user permissions error on workflow"}
    if delete:
        cid = getID(data["commandInCommandForm"])
        if cid != None:
            CommandTemplate.delete(SESSION, cid, user)
    else:
        instance = InstanceTemplate.findByID(SESSION, getID(data["instanceInCommandForm"]), user)
        if instance == None:
            return {"updates": {}, "message": "user permissions error on instance"}
        name = data["CommandName"]
        commandText = data["Command"]
        commandID = getID(data["commandInCommandForm"])
        dependencies = [
            CommandTemplate.findByID(SESSION, cid, user)
            for cid in list(set([getID(idname) for idname in data.getlist("commandDependenciesSelect")]))
        ]
        if None in dependencies:
            return {"updates": {}, "message": "user permissions error on command dependencies"}
        ## edit old command or make new command
        if commandID != None:
            command = CommandTemplate.findByID(SESSION, commandID, user)
            if command == None:
                return {"updates": {}, "message": "user permissions error on command"}
            command.updateValues(instance, name.lower(), commandText, dependencies)
        else:
            command = CommandTemplate(instance, name.lower(), commandText, dependencies)
            SESSION.add(command)
            SESSION.commit()

    result = {"updates": {"workflows": {str(workflow.id): workflow.dictForJSON()}}, "message": "updated command"}
    SESSION.add(workflow)
    SESSION.commit()
    return result
Exemple #3
0
def saveInstance(user, data, variables, delete):
    if delete:
        if VERBOSE:
            print "deleting"
        workflow = WorkflowTemplate.findByID(SESSION, getID(data["instanceWorkflowsSelect"]), user)
        if workflow == None:
            return {"updates": {}, "message": "user permissions error on workflow"}
        iid = getID(data["instanceInstancesSelect"])
        if iid != None:
            if VERBOSE:
                print iid
            InstanceTemplate.delete(SESSION, iid, user)
        workflow = WorkflowTemplate.findByID(SESSION, getID(data["instanceWorkflowsSelect"]), user)
    elif variables:
        workflow = WorkflowTemplate.findByID(SESSION, getID(data["instanceVarWorkflowsSelect"]), user)
        if workflow == None:
            return {"updates": {}, "message": "user permissions error"}
        if VERBOSE:
            print "got workflow"
        instID = getID(data["instanceVarInstancesSelect"])
        if instID == None:
            return {"updates": {}, "message": "instance id error"}
        instance = InstanceTemplate.findByID(SESSION, instID, user)
        if VERBOSE:
            print "got instance"
        if instance == None:
            return {"updates": {}, "message": "user permissions error"}
        instance.updateVarDict(parseVariables(data), user)
        if VERBOSE:
            print "updated vars"
    else:
        workflow = WorkflowTemplate.findByID(SESSION, getID(data["instanceWorkflowsSelect"]), user)
        if workflow == None:
            return {"updates": {}, "message": "user permissions error on workflow"}
        name = data["instanceName"]
        machineType = data["instanceMachineTypeSelector"]
        location = data["instanceLocationSelector"]
        bootDisk = DiskTemplate.findByID(SESSION, getID(data["instanceBootDiskSelect"]), user)
        if bootDisk == None:
            return {"updates": {}, "message": "user permissions error on boot disk"}
        readDisks = [
            DiskTemplate.findByID(SESSION, did, user)
            for did in list(set([getID(idname) for idname in data.getlist("instanceReadDisksSelect")]))
        ]
        if None in readDisks:
            return {"updates": {}, "message": "user permissions error on read disks"}
        readWriteDisks = [
            DiskTemplate.findByID(SESSION, did, user)
            for did in list(set([getID(idname) for idname in data.getlist("instanceReadWriteDisksSelect")]))
        ]
        if None in readWriteDisks:
            return {"updates": {}, "message": "user permissions error on read/write disks"}
        instID = getID(data["instanceInstancesSelect"])
        dependencies = [
            InstanceTemplate.findByID(SESSION, iid, user)
            for iid in list(set([getID(idname) for idname in data.getlist("instanceDependenciesSelect")]))
        ]
        if None in dependencies:
            return {"updates": {}, "message": "user permissions error on instance dependencies"}
        if VERBOSE:
            print "test"
        ex_tags = data["ex_tags"]
        if VERBOSE:
            print ex_tags
        ex_metadata = data["ex_metadata"]
        if VERBOSE:
            print ex_metadata
        ex_network = data["ex_network"]
        if VERBOSE:
            print ex_network
        numLocalSSD = data["numLocalSSD"]
        if VERBOSE:
            print numLocalSSD
        if "preemptible" not in data:
            preemptible = False
        else:
            preemptible = data["preemptible"] == "T"
        if VERBOSE:
            print preemptible
        ## edit old instance or make new instance
        if instID != None:
            if VERBOSE:
                print "updating instance"
            instance = InstanceTemplate.findByID(SESSION, instID, user)
            if instance == None:
                #                 instance = InstanceTemplate(name, machineType, location, bootDisk, readDisks,
                #                                         readWriteDisks, dependencies, workflow)
                return {"updates": {}, "message": "user permissions error on instance"}
            instance.updateValues(
                name.lower(),
                machineType,
                location,
                bootDisk,
                readDisks,
                readWriteDisks,
                dependencies,
                ex_tags,
                ex_metadata,
                ex_network,
                numLocalSSD,
                preemptible,
            )
        else:
            if VERBOSE:
                print "adding instance"
            instance = InstanceTemplate(
                name.lower(),
                machineType,
                location,
                bootDisk,
                readDisks,
                readWriteDisks,
                dependencies,
                workflow,
                ex_tags,
                ex_metadata,
                ex_network,
                numLocalSSD,
                preemptible,
            )
    SESSION.add(workflow)
    SESSION.commit()
    result = {"updates": {"workflows": {str(workflow.id): workflow.dictForJSON()}}, "message": "updated instance"}
    return result