Ejemplo n.º 1
0
    def State(self, request, context):
        # validate request payload
        data = id_serializer.load(request)
        experiment = documents.Experiment.objects(deleted=False).get(id=data['id'])
        if experiment.state in ["STARTING", "RUNNING"]:
            response = utils.get_kubernetes_job_status(utils.get_k8s_name(experiment))
            if response.get("active"):
                experiment.state = "RUNNING"

            elif response.get("succeeded"):
                experiment.state = "SUCCEEDED"

            elif response.get("failed") and int(response.get("failed")) >= 1:
                experiment.state = "FAILED"

            if experiment.state not in ["STARTING", "RUNNING"]:
                utils.clean_kubernetes_job(utils.get_k8s_name(experiment))
                completion_time = datetime.datetime.strptime(response.get("completion_time"), "%Y-%m-%dT%H:%M:%S")
                delta = completion_time - experiment.create_at
                experiment.uptime += int(delta.total_seconds())

            experiment.last_update = datetime.datetime.now()
            experiment.save()

        return job_state_serializer.dump({"state": experiment.state})
Ejemplo n.º 2
0
 def RetrieveVersion(self, request, context):
     # validate request payload
     data = id_serializer.load(request)
     version = documents.Version.objects(
         dataset__in=documents.Dataset.objects(deleted=False)).get(
             id=data['id'])
     return version_serializer.dump(version)
Ejemplo n.º 3
0
 def RetrieveRevision(self, request, context):
     # validate request payload
     data = id_serializer.load(request)
     revision = documents.Revision.objects(
         project__in=documents.Project.objects(deleted=False)).get(
             id=data['id'])
     return revision_serializer.dump(revision)
Ejemplo n.º 4
0
    def DeleteDataset(self, request, context):
        # validate request payload
        data = id_serializer.load(request)
        dataset = documents.Dataset.objects(deleted=False).get(id=data['id'])
        dataset.deleted = True
        dataset.save()

        return status_serializer.dump({"status": 200, "message": "Successfully delete dataset."})
Ejemplo n.º 5
0
    def DeleteHardwareTier(self, request, context):
        data = id_serializer.load(request)
        hw = documents.HardwareTier.objects(deleted=False).get(id=data["id"])
        hw.deleted = True
        hw.save()

        return status_serializer.dump({"status": 200,
                                       "message": "HardwareTier successfully deleted."})
Ejemplo n.º 6
0
    def Delete(self, request, context):
        # validate request payload
        data = id_serializer.load(request)
        mdl = documents.ModelApis.objects(deleted=False).get(id=data['id'])
        # delete pvc
        if mdl.state in ["STOPPED", "CREATED"]:
            mdl.deleted = True
            mdl.last_update = datetime.datetime.now()
            mdl.save()
            return status_serializer.dump({"status": 200, "message": "Successfully delete modelapis."})

        return status_serializer.dump({"status": 400, "message": "Cannot delete starting or running modelapis."})
Ejemplo n.º 7
0
    def Delete(self, request, context):
        # validate request payload
        data = id_serializer.load(request)
        workspace = documents.Workspace.objects(deleted=False).get(id=data['id'])
        # delete pvc
        if workspace.state in ["STOPPED", "CREATED"]:
            utils.clean_kubernetes_pvc("data-{}".format(utils.get_k8s_name(workspace)))
            workspace.deleted = True
            workspace.last_update = datetime.datetime.now()
            workspace.save()
            return status_serializer.dump({"status": 200, "message": "Successfully delete workspace."})

        return status_serializer.dump({"status": 400, "message": "Cannot delete starting or running workspace."})
Ejemplo n.º 8
0
    def Start(self, request, context):
        # validate request payload
        data = id_serializer.load(request)
        mdl = documents.ModelApis.objects.get(id=data['id'])
        # prepare configurations
        if mdl.state not in ["STARTING", "RUNNING"]:
            utils.spawn_modelapis(mdl)
            mdl.state = "STARTING"
            mdl.last_start = datetime.datetime.now()
            mdl.last_update = datetime.datetime.now()
            mdl.save()

        return status_serializer.dump({"status": 200,
                                       "message": "Successfully start modelapis."})
Ejemplo n.º 9
0
    def Start(self, request, context):
        # validate request payload
        data = id_serializer.load(request)
        workspace = documents.Workspace.objects(deleted=False).get(id=data['id'])
        # prepare configurations
        if workspace.state not in ["STARTING", "RUNNING"]:
            utils.spawn_workspace(workspace)
            workspace.state = "STARTING"
            workspace.last_start = datetime.datetime.now()
            workspace.last_update = datetime.datetime.now()
            workspace.save()

        return status_serializer.dump({"status": 200,
                                       "message": "Successfully start workspace."})
Ejemplo n.º 10
0
    def State(self, request, context):
        # validate request payload
        data = id_serializer.load(request)
        workspace = documents.Workspace.objects(deleted=False).get(id=data['id'])
        if workspace.state in ["STARTING", "RUNNING"]:
            response = utils.get_kubernetes_deployment_status(utils.get_k8s_name(workspace))
            if response.get("available_replicas"):
                workspace.state = "RUNNING"
            else:
                workspace.state = "STARTING"

            workspace.last_update = datetime.datetime.now()
            workspace.save()

        return job_state_serializer.dump({"state": workspace.state})
Ejemplo n.º 11
0
    def State(self, request, context):
        # validate request payload
        data = id_serializer.load(request)
        mdl = documents.ModelApis.objects(deleted=False).get(id=data['id'])
        if mdl.state in ["STARTING", "RUNNING"]:
            state = utils.get_kubernetes_deployment_status(utils.get_k8s_name(mdl))
            mdl.state = state
            # clean job if already in finished state like stopped, failed, aborted, succeeded
            if mdl.state not in ["STARTING", "RUNNING"]:
                response = utils.get_kubernetes_deployment_status(utils.get_k8s_name(mdl))
                if response.get("available_replicas"):
                    mdl.state = "RUNNING"
                else:
                    mdl.state = "STARTING"

            mdl.last_update = datetime.datetime.now()
            mdl.save()

        return job_state_serializer.dump({"state": mdl.state})
Ejemplo n.º 12
0
    def Stop(self, request, context):
        # validate request payload
        data = id_serializer.load(request)
        experiment = documents.Experiment.objects(deleted=False).get(id=data['id'])

        if experiment.state not in ["STARTING", "RUNNING"]:
            return status_serializer.dump({"status": 400,
                                           "message": "Cannot stop not running or starting experiment."})

        # stop and clean all resources
        utils.clean_kubernetes_job(utils.get_k8s_name(experiment))
        experiment.state = "ABORTED"
        delta = datetime.datetime.utcnow() - experiment.create_at
        experiment.uptime += int(delta.total_seconds())
        experiment.last_update = datetime.datetime.now()
        experiment.save()

        return status_serializer.dump({"status": 200,
                                       "message": "Successfully stopped Experiment."})
Ejemplo n.º 13
0
    def Stop(self, request, context):
        # validate request payload
        data = id_serializer.load(request)
        mdl = documents.ModelApis.objects(deleted=False).get(id=data['id'])

        if mdl.state not in ["STARTING", "RUNNING"]:
            return status_serializer.dump({"status": 400,
                                           "message": "Cannot stop not running or starting modelapis."})

        # stop and clean all resources
        utils.clean_kubernetes_deployment(utils.get_k8s_name(mdl))
        mdl.state = "STOPPED"
        delta = datetime.datetime.utcnow() - mdl.last_start
        mdl.uptime += int(delta.total_seconds())
        mdl.last_update = datetime.datetime.now()
        mdl.save()

        return status_serializer.dump({"status": 200,
                                       "message": "Successfully stopped modelapis."})
Ejemplo n.º 14
0
    def RetrieveDataset(self, request, context):
        data = id_serializer.load(request)
        dataset = documents.Dataset.objects(deleted=False).get(id=data['id'])

        return dataset_serializer.dump(dataset)
Ejemplo n.º 15
0
 def GetHardwareTier(self, request, context):
     data = id_serializer.load(request)
     hw = documents.HardwareTier.objects(deleted=False).get(id=data['id'])
     return hardwareTier_serializer.dump(hw)
Ejemplo n.º 16
0
 def Get(self, request, context):
     data = id_serializer.load(request)
     experiment = documents.Experiment.objects(deleted=False).get(id=data['id'])
     return experiment_serializer.dump(experiment)
Ejemplo n.º 17
0
 def Retrieve(self, request, context):
     data = id_serializer.load(request)
     workspace = documents.Workspace.objects(deleted=False).get(id=data['id'])
     return workspace_serializer.dump(workspace)
Ejemplo n.º 18
0
 def Get(self, request, context):
     data = id_serializer.load(request)
     run = documents.Run.objects(deleted=False).get(id=data['id'])
     return run_serializer.dump(run)
Ejemplo n.º 19
0
    def Retrieve(self, request, context):

        data = id_serializer.load(request)
        project = documents.Project.objects(deleted=False).get(id=data['id'])
        return project_serializer.dump(project)
Ejemplo n.º 20
0
 def Retrieve(self, request, context):
     data = id_serializer.load(request)
     modelapis = documents.ModelApis.objects(deleted=False).get(id=data['id'])
     return modelapis_serializer.dump(modelapis)