Task Summary
Introduce the microservice that mediates between Texera and the JupyterLab docker stack (landed in migration-tool-jupyter-docker).
Scope
Adds a new SBT subproject notebook-migration-service plus shared config and a frontend proxy route:
notebook-migration-service/build.sbt, project/build.properties — module SBT setup.
src/main/scala/.../NotebookMigrationService.scala — Dropwizard Application entry; serves at /api/* on port 9098, registers the resource, initializes the shared DB connection from StorageConfig.
src/main/scala/.../NotebookMigrationServiceConfiguration.scala — Dropwizard Configuration subclass.
src/main/scala/.../resource/NotebookMigrationResource.scala — five REST endpoints under /notebook-migration:
GET /get-jupyter-url
GET /get-jupyter-iframe-url
POST /set-notebook (pushes a notebook into JupyterLab via its /api/contents API)
POST /store-notebook-and-mapping (persists notebook + workflow-notebook mapping to Postgres)
POST /fetch-notebook-and-mapping (retrieves the latest pair for a workflow/version).
src/main/resources/logback.xml, notebook-migration-service-web-config.yaml — logging and Dropwizard server config.
- Root
build.sbt — registers the subproject in the TexeraProject aggregation
common/config/src/main/resources/storage.conf + StorageConfig.scala — new jupyter { url = "http://localhost:9100" } block with STORAGE_JUPYTER_URL override, accessed by the resource as StorageConfig.jupyterURL.
frontend/proxy.config.json — routes /api/notebook-migration/* to http://localhost:9098 for dev.
Task Type
Task Summary
Introduce the microservice that mediates between Texera and the JupyterLab docker stack (landed in
migration-tool-jupyter-docker).Scope
Adds a new SBT subproject
notebook-migration-serviceplus shared config and a frontend proxy route:notebook-migration-service/build.sbt,project/build.properties— module SBT setup.src/main/scala/.../NotebookMigrationService.scala— DropwizardApplicationentry; serves at/api/*on port9098, registers the resource, initializes the shared DB connection fromStorageConfig.src/main/scala/.../NotebookMigrationServiceConfiguration.scala— DropwizardConfigurationsubclass.src/main/scala/.../resource/NotebookMigrationResource.scala— five REST endpoints under/notebook-migration:GET /get-jupyter-urlGET /get-jupyter-iframe-urlPOST /set-notebook(pushes a notebook into JupyterLab via its/api/contentsAPI)POST /store-notebook-and-mapping(persists notebook + workflow-notebook mapping to Postgres)POST /fetch-notebook-and-mapping(retrieves the latest pair for a workflow/version).src/main/resources/logback.xml,notebook-migration-service-web-config.yaml— logging and Dropwizard server config.build.sbt— registers the subproject in theTexeraProjectaggregationcommon/config/src/main/resources/storage.conf+StorageConfig.scala— newjupyter { url = "http://localhost:9100" }block withSTORAGE_JUPYTER_URLoverride, accessed by the resource asStorageConfig.jupyterURL.frontend/proxy.config.json— routes/api/notebook-migration/*tohttp://localhost:9098for dev.Task Type