Exemple #1
0
            def post(self, project_uuid, environment_uuid):

                # create a new environment in the project
                environment_json = request.json.get("environment")

                e = Environment(
                    uuid=str(uuid.uuid4()),
                    name=environment_json["name"],
                    project_uuid=project_uuid,
                    language=environment_json["language"],
                    setup_script=environment_json["setup_script"],
                    base_image=environment_json["base_image"],
                    gpu_support=environment_json["gpu_support"],
                )

                # use specified uuid if it's not keyword 'new'
                if environment_uuid != "new":
                    e.uuid = environment_uuid

                environment_dir = get_environment_directory(
                    e.uuid, project_uuid)

                os.makedirs(environment_dir, exist_ok=True)
                serialize_environment_to_disk(e, environment_dir)

                # refresh kernels after change in environments
                populate_kernels(app, db, project_uuid)

                return environment_schema.dump(e)
Exemple #2
0
    def populate_default_environments(project_uuid):

        for env_spec in app.config["DEFAULT_ENVIRONMENTS"]:
            e = Environment(**env_spec)

            e.uuid = str(uuid.uuid4())
            e.project_uuid = project_uuid

            environment_dir = get_environment_directory(e.uuid, project_uuid)
            os.makedirs(environment_dir, exist_ok=True)

            serialize_environment_to_disk(e, environment_dir)
Exemple #3
0
            def delete(self, project_uuid, environment_uuid):
                environment_dir = get_environment_directory(
                    environment_uuid, project_uuid)
                shutil.rmtree(environment_dir)

                # refresh kernels after change in environments
                populate_kernels(app, db)

                try:
                    requests.delete("http://" +
                                    app.config["ORCHEST_API_ADDRESS"] +
                                    "/api/environment-images/%s/%s" %
                                    (project_uuid, environment_uuid))
                except Exception as e:
                    logging.warn("Failed to delete EnvironmentImage: %s" % e)

                return jsonify(
                    {"message": "Environment deletion was successful."})
Exemple #4
0
            def post(self, project_uuid, environment_uuid):

                # create a new environment in the project
                environment_json = request.json.get("environment")

                e = Environment(
                    uuid=str(uuid.uuid4()),
                    name=environment_json["name"],
                    project_uuid=project_uuid,
                    language=environment_json["language"],
                    setup_script=preprocess_script(
                        environment_json["setup_script"]),
                    base_image=environment_json["base_image"],
                    gpu_support=environment_json["gpu_support"],
                )

                # use specified uuid if it's not keyword 'new'
                if environment_uuid != "new":
                    e.uuid = environment_uuid
                else:
                    url = (f'http://{app.config["ORCHEST_API_ADDRESS"]}'
                           f"/api/environments/{project_uuid}")
                    resp = requests.post(url, json={"uuid": e.uuid})
                    if resp.status_code != 201:
                        return {}, resp.status_code, resp.headers.items()

                environment_dir = get_environment_directory(
                    e.uuid, project_uuid)

                os.makedirs(environment_dir, exist_ok=True)
                serialize_environment_to_disk(e, environment_dir)

                # refresh kernels after change in environments
                populate_kernels(app, db, project_uuid)

                return environment_schema.dump(e)
Exemple #5
0
 def get(self, project_uuid, environment_uuid):
     environment_dir = get_environment_directory(
         environment_uuid, project_uuid)
     return read_environment_from_disk(environment_dir)