summaryrefslogtreecommitdiff
path: root/opendc-web
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2022-07-30 12:15:10 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2022-08-03 11:54:44 +0200
commita01f964b531f12fd89cbdb0f2132aecbfaebf546 (patch)
tree4a2c3795d3d1ae394e9ab785b9229ab6e14ccbdf /opendc-web
parent41b0ed59421b301bac652e47d1a2909145aa5936 (diff)
refactor(web/server): Create standalone OpenDC distribution
This change updates the Quarkus configuration of the OpenDC web server to serve as a fully standalone distribution that is capable of serving the web UI, web API, and experiment runner. Such an approach vastly simplifies local deployments. For Docker deployments, we create a custom Quarkus profile that uses PostgreSQL and disables the web UI.
Diffstat (limited to 'opendc-web')
-rw-r--r--opendc-web/opendc-web-server/Dockerfile (renamed from opendc-web/opendc-web-api/Dockerfile)4
-rw-r--r--opendc-web/opendc-web-server/build.gradle.kts (renamed from opendc-web/opendc-web-api/build.gradle.kts)8
-rw-r--r--opendc-web/opendc-web-server/config/application.properties (renamed from opendc-web/opendc-web-api/config/application.properties)0
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/OpenDCApplication.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/OpenDCApplication.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Job.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Job.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Portfolio.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Portfolio.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Project.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Project.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/ProjectAuthorization.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/ProjectAuthorization.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/ProjectAuthorizationKey.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/ProjectAuthorizationKey.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Scenario.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Scenario.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Topology.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Topology.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Trace.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Trace.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Workload.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Workload.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/JobRepository.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/JobRepository.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/PortfolioRepository.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/PortfolioRepository.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/ProjectRepository.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/ProjectRepository.kt)8
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/ScenarioRepository.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/ScenarioRepository.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/TopologyRepository.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/TopologyRepository.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/TraceRepository.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/TraceRepository.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/SchedulerResource.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/SchedulerResource.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/TraceResource.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/TraceResource.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/error/GenericExceptionMapper.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/error/GenericExceptionMapper.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/error/MissingKotlinParameterExceptionMapper.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/error/MissingKotlinParameterExceptionMapper.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/runner/JobResource.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/runner/JobResource.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/PortfolioResource.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/PortfolioResource.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/PortfolioScenarioResource.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/PortfolioScenarioResource.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/ProjectResource.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/ProjectResource.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/ScenarioResource.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/ScenarioResource.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/TopologyResource.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/TopologyResource.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/JobService.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/JobService.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/PortfolioService.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/PortfolioService.kt)10
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/ProjectService.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/ProjectService.kt)6
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/RunnerConversions.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/RunnerConversions.kt)10
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/ScenarioService.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/ScenarioService.kt)6
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/TopologyService.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/TopologyService.kt)8
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/TraceService.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/TraceService.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/UserConversions.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/UserConversions.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/Utils.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/Utils.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/DevSecurityOverrideFilter.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/DevSecurityOverrideFilter.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/KotlinModuleCustomizer.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/KotlinModuleCustomizer.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/AbstractJsonSqlTypeDescriptor.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/AbstractJsonSqlTypeDescriptor.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonBinarySqlTypeDescriptor.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonBinarySqlTypeDescriptor.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonBytesSqlTypeDescriptor.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonBytesSqlTypeDescriptor.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonSqlTypeDescriptor.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonSqlTypeDescriptor.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonStringSqlTypeDescriptor.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonStringSqlTypeDescriptor.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonType.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonType.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonTypeDescriptor.kt (renamed from opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonTypeDescriptor.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/main/resources/META-INF/branding/logo.png (renamed from opendc-web/opendc-web-api/src/main/resources/META-INF/branding/logo.png)bin2825 -> 2825 bytes
-rw-r--r--opendc-web/opendc-web-server/src/main/resources/application-dev.properties (renamed from opendc-web/opendc-web-api/src/main/resources/application-dev.properties)15
-rw-r--r--opendc-web/opendc-web-server/src/main/resources/application-docker.properties50
-rw-r--r--opendc-web/opendc-web-server/src/main/resources/application-prod.properties (renamed from opendc-web/opendc-web-api/src/main/resources/application-prod.properties)23
-rw-r--r--opendc-web/opendc-web-server/src/main/resources/application-test.properties (renamed from opendc-web/opendc-web-api/src/main/resources/application-test.properties)5
-rw-r--r--opendc-web/opendc-web-server/src/main/resources/application.properties (renamed from opendc-web/opendc-web-api/src/main/resources/application.properties)15
-rw-r--r--opendc-web/opendc-web-server/src/main/resources/import.sql (renamed from opendc-web/opendc-web-api/src/main/resources/init-dev.sql)0
-rw-r--r--opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/SchedulerResourceTest.kt (renamed from opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/SchedulerResourceTest.kt)2
-rw-r--r--opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/TraceResourceTest.kt (renamed from opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/TraceResourceTest.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/runner/JobResourceTest.kt (renamed from opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/runner/JobResourceTest.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/PortfolioResourceTest.kt (renamed from opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/PortfolioResourceTest.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/PortfolioScenarioResourceTest.kt (renamed from opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/PortfolioScenarioResourceTest.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/ProjectResourceTest.kt (renamed from opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/ProjectResourceTest.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/ScenarioResourceTest.kt (renamed from opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/ScenarioResourceTest.kt)4
-rw-r--r--opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/TopologyResourceTest.kt (renamed from opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/TopologyResourceTest.kt)4
62 files changed, 176 insertions, 136 deletions
diff --git a/opendc-web/opendc-web-api/Dockerfile b/opendc-web/opendc-web-server/Dockerfile
index ff300170..444d787e 100644
--- a/opendc-web/opendc-web-api/Dockerfile
+++ b/opendc-web/opendc-web-server/Dockerfile
@@ -9,9 +9,9 @@ RUN ./gradlew --version
# Build project
COPY ./ /app/
-RUN ./gradlew --no-daemon :opendc-web:opendc-web-api:build
+RUN ./gradlew --no-daemon :opendc-web:opendc-web-server:quarkusBuild -Dquarkus.profile=docker
FROM openjdk:17-slim
-COPY --from=0 /app/opendc-web/opendc-web-api/build/quarkus-app /opt/opendc
+COPY --from=0 /app/opendc-web/opendc-web-server/build/quarkus-app /opt/opendc
WORKDIR /opt/opendc
CMD java -jar quarkus-run.jar
diff --git a/opendc-web/opendc-web-api/build.gradle.kts b/opendc-web/opendc-web-server/build.gradle.kts
index 89b8273c..d6b9164c 100644
--- a/opendc-web/opendc-web-api/build.gradle.kts
+++ b/opendc-web/opendc-web-server/build.gradle.kts
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-description = "REST API for the OpenDC website"
+description = "Web server of OpenDC"
/* Build configuration */
plugins {
@@ -49,7 +49,7 @@ dependencies {
implementation(libs.quarkus.hibernate.orm)
implementation(libs.quarkus.hibernate.validator)
implementation(libs.quarkus.jdbc.postgresql)
- quarkusDev(libs.quarkus.jdbc.h2)
+ implementation(libs.quarkus.jdbc.h2)
testImplementation(libs.quarkus.junit5.core)
testImplementation(libs.quarkus.junit5.mockk)
@@ -68,8 +68,8 @@ val createStartScripts by tasks.creating(CreateStartScripts::class) {
}
distributions {
- create("server") {
- distributionBaseName.set("opendc-server")
+ main {
+ distributionBaseName.set("opendc")
contents {
from("../../LICENSE.txt")
diff --git a/opendc-web/opendc-web-api/config/application.properties b/opendc-web/opendc-web-server/config/application.properties
index 30eaaef9..30eaaef9 100644
--- a/opendc-web/opendc-web-api/config/application.properties
+++ b/opendc-web/opendc-web-server/config/application.properties
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/OpenDCApplication.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/OpenDCApplication.kt
index ddbd5390..1a426095 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/OpenDCApplication.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/OpenDCApplication.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api
+package org.opendc.web.server
import javax.ws.rs.core.Application
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Job.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Job.kt
index b09b46a1..024e7b89 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Job.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Job.kt
@@ -20,12 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.web.api.model
+package org.opendc.web.server.model
import org.hibernate.annotations.Type
import org.hibernate.annotations.TypeDef
-import org.opendc.web.api.util.hibernate.json.JsonType
import org.opendc.web.proto.JobState
+import org.opendc.web.server.util.hibernate.json.JsonType
import java.time.Instant
import javax.persistence.*
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Portfolio.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Portfolio.kt
index c8b94daf..3e3f76a0 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Portfolio.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Portfolio.kt
@@ -20,12 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.web.api.model
+package org.opendc.web.server.model
import org.hibernate.annotations.Type
import org.hibernate.annotations.TypeDef
-import org.opendc.web.api.util.hibernate.json.JsonType
import org.opendc.web.proto.Targets
+import org.opendc.web.server.util.hibernate.json.JsonType
import javax.persistence.*
/**
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Project.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Project.kt
index e0440bf4..aa98b677 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Project.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Project.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.model
+package org.opendc.web.server.model
import java.time.Instant
import javax.persistence.*
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/ProjectAuthorization.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/ProjectAuthorization.kt
index a72ff06a..a353186e 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/ProjectAuthorization.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/ProjectAuthorization.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.model
+package org.opendc.web.server.model
import org.opendc.web.proto.user.ProjectRole
import javax.persistence.*
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/ProjectAuthorizationKey.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/ProjectAuthorizationKey.kt
index b5f66e70..449b6608 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/ProjectAuthorizationKey.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/ProjectAuthorizationKey.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.model
+package org.opendc.web.server.model
import javax.persistence.Column
import javax.persistence.Embeddable
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Scenario.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Scenario.kt
index 5c9cb259..e40cff47 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Scenario.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Scenario.kt
@@ -20,12 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.web.api.model
+package org.opendc.web.server.model
import org.hibernate.annotations.Type
import org.hibernate.annotations.TypeDef
-import org.opendc.web.api.util.hibernate.json.JsonType
import org.opendc.web.proto.OperationalPhenomena
+import org.opendc.web.server.util.hibernate.json.JsonType
import javax.persistence.*
/**
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Topology.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Topology.kt
index 9b64e382..a190b1ee 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Topology.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Topology.kt
@@ -20,12 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.web.api.model
+package org.opendc.web.server.model
import org.hibernate.annotations.Type
import org.hibernate.annotations.TypeDef
-import org.opendc.web.api.util.hibernate.json.JsonType
import org.opendc.web.proto.Room
+import org.opendc.web.server.util.hibernate.json.JsonType
import java.time.Instant
import javax.persistence.*
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Trace.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Trace.kt
index 2e2d71f8..8aaac613 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Trace.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Trace.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.model
+package org.opendc.web.server.model
import javax.persistence.*
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Workload.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Workload.kt
index 07fc096b..9c59dc25 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/model/Workload.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/model/Workload.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.model
+package org.opendc.web.server.model
import javax.persistence.Column
import javax.persistence.Embeddable
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/JobRepository.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/JobRepository.kt
index 558d7c38..5fee07a3 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/JobRepository.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/JobRepository.kt
@@ -20,10 +20,10 @@
* SOFTWARE.
*/
-package org.opendc.web.api.repository
+package org.opendc.web.server.repository
-import org.opendc.web.api.model.Job
import org.opendc.web.proto.JobState
+import org.opendc.web.server.model.Job
import java.time.Instant
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/PortfolioRepository.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/PortfolioRepository.kt
index 34b3598c..77130c15 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/PortfolioRepository.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/PortfolioRepository.kt
@@ -20,9 +20,9 @@
* SOFTWARE.
*/
-package org.opendc.web.api.repository
+package org.opendc.web.server.repository
-import org.opendc.web.api.model.Portfolio
+import org.opendc.web.server.model.Portfolio
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
import javax.persistence.EntityManager
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/ProjectRepository.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/ProjectRepository.kt
index 6529f778..519da3de 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/ProjectRepository.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/ProjectRepository.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.web.api.repository
+package org.opendc.web.server.repository
-import org.opendc.web.api.model.Project
-import org.opendc.web.api.model.ProjectAuthorization
-import org.opendc.web.api.model.ProjectAuthorizationKey
+import org.opendc.web.server.model.Project
+import org.opendc.web.server.model.ProjectAuthorization
+import org.opendc.web.server.model.ProjectAuthorizationKey
import java.time.Instant
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/ScenarioRepository.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/ScenarioRepository.kt
index de116ad6..145db71d 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/ScenarioRepository.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/ScenarioRepository.kt
@@ -20,9 +20,9 @@
* SOFTWARE.
*/
-package org.opendc.web.api.repository
+package org.opendc.web.server.repository
-import org.opendc.web.api.model.Scenario
+import org.opendc.web.server.model.Scenario
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
import javax.persistence.EntityManager
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/TopologyRepository.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/TopologyRepository.kt
index cd8f666e..e8eadd63 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/TopologyRepository.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/TopologyRepository.kt
@@ -20,9 +20,9 @@
* SOFTWARE.
*/
-package org.opendc.web.api.repository
+package org.opendc.web.server.repository
-import org.opendc.web.api.model.Topology
+import org.opendc.web.server.model.Topology
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
import javax.persistence.EntityManager
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/TraceRepository.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/TraceRepository.kt
index 6652fc80..f328eea6 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/repository/TraceRepository.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/repository/TraceRepository.kt
@@ -20,9 +20,9 @@
* SOFTWARE.
*/
-package org.opendc.web.api.repository
+package org.opendc.web.server.repository
-import org.opendc.web.api.model.Trace
+import org.opendc.web.server.model.Trace
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
import javax.persistence.EntityManager
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/SchedulerResource.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/SchedulerResource.kt
index 735fdd9b..919b25fc 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/SchedulerResource.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/SchedulerResource.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest
+package org.opendc.web.server.rest
import javax.ws.rs.GET
import javax.ws.rs.Path
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/TraceResource.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/TraceResource.kt
index e87fe602..f46f7f91 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/TraceResource.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/TraceResource.kt
@@ -20,10 +20,10 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest
+package org.opendc.web.server.rest
-import org.opendc.web.api.service.TraceService
import org.opendc.web.proto.Trace
+import org.opendc.web.server.service.TraceService
import javax.inject.Inject
import javax.ws.rs.*
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/error/GenericExceptionMapper.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/error/GenericExceptionMapper.kt
index fb253758..d8df72e0 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/error/GenericExceptionMapper.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/error/GenericExceptionMapper.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.error
+package org.opendc.web.server.rest.error
import org.opendc.web.proto.ProtocolError
import javax.ws.rs.WebApplicationException
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/error/MissingKotlinParameterExceptionMapper.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/error/MissingKotlinParameterExceptionMapper.kt
index 57cd35d1..e50917aa 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/error/MissingKotlinParameterExceptionMapper.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/error/MissingKotlinParameterExceptionMapper.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.error
+package org.opendc.web.server.rest.error
import com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException
import org.opendc.web.proto.ProtocolError
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/runner/JobResource.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/runner/JobResource.kt
index d9923505..351a2237 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/runner/JobResource.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/runner/JobResource.kt
@@ -20,10 +20,10 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.runner
+package org.opendc.web.server.rest.runner
-import org.opendc.web.api.service.JobService
import org.opendc.web.proto.runner.Job
+import org.opendc.web.server.service.JobService
import javax.annotation.security.RolesAllowed
import javax.inject.Inject
import javax.transaction.Transactional
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/PortfolioResource.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/PortfolioResource.kt
index e720de75..352dd491 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/PortfolioResource.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/PortfolioResource.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.user
+package org.opendc.web.server.rest.user
import io.quarkus.security.identity.SecurityIdentity
-import org.opendc.web.api.service.PortfolioService
import org.opendc.web.proto.user.Portfolio
+import org.opendc.web.server.service.PortfolioService
import javax.annotation.security.RolesAllowed
import javax.inject.Inject
import javax.transaction.Transactional
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/PortfolioScenarioResource.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/PortfolioScenarioResource.kt
index 8d24b2eb..f2372bde 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/PortfolioScenarioResource.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/PortfolioScenarioResource.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.user
+package org.opendc.web.server.rest.user
import io.quarkus.security.identity.SecurityIdentity
-import org.opendc.web.api.service.ScenarioService
import org.opendc.web.proto.user.Scenario
+import org.opendc.web.server.service.ScenarioService
import javax.annotation.security.RolesAllowed
import javax.inject.Inject
import javax.transaction.Transactional
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/ProjectResource.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/ProjectResource.kt
index a27d50e7..f3d96f55 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/ProjectResource.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/ProjectResource.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.user
+package org.opendc.web.server.rest.user
import io.quarkus.security.identity.SecurityIdentity
-import org.opendc.web.api.service.ProjectService
import org.opendc.web.proto.user.Project
+import org.opendc.web.server.service.ProjectService
import javax.annotation.security.RolesAllowed
import javax.inject.Inject
import javax.transaction.Transactional
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/ScenarioResource.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/ScenarioResource.kt
index 3690f987..24cdcb6a 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/ScenarioResource.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/ScenarioResource.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.user
+package org.opendc.web.server.rest.user
import io.quarkus.security.identity.SecurityIdentity
-import org.opendc.web.api.service.ScenarioService
import org.opendc.web.proto.user.Scenario
+import org.opendc.web.server.service.ScenarioService
import javax.annotation.security.RolesAllowed
import javax.inject.Inject
import javax.transaction.Transactional
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/TopologyResource.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/TopologyResource.kt
index 52c5eaaa..40b3741c 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/rest/user/TopologyResource.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/rest/user/TopologyResource.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.user
+package org.opendc.web.server.rest.user
import io.quarkus.security.identity.SecurityIdentity
-import org.opendc.web.api.service.TopologyService
import org.opendc.web.proto.user.Topology
+import org.opendc.web.server.service.TopologyService
import javax.annotation.security.RolesAllowed
import javax.inject.Inject
import javax.transaction.Transactional
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/JobService.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/JobService.kt
index 1b33248d..6b49e8b6 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/JobService.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/JobService.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.web.api.service
+package org.opendc.web.server.service
-import org.opendc.web.api.repository.JobRepository
import org.opendc.web.proto.JobState
import org.opendc.web.proto.runner.Job
+import org.opendc.web.server.repository.JobRepository
import java.time.Instant
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/PortfolioService.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/PortfolioService.kt
index 1f41c2d7..0d380190 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/PortfolioService.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/PortfolioService.kt
@@ -20,16 +20,16 @@
* SOFTWARE.
*/
-package org.opendc.web.api.service
+package org.opendc.web.server.service
-import org.opendc.web.api.model.*
-import org.opendc.web.api.repository.PortfolioRepository
-import org.opendc.web.api.repository.ProjectRepository
import org.opendc.web.proto.user.Portfolio
+import org.opendc.web.server.model.*
+import org.opendc.web.server.repository.PortfolioRepository
+import org.opendc.web.server.repository.ProjectRepository
import java.time.Instant
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
-import org.opendc.web.api.model.Portfolio as PortfolioEntity
+import org.opendc.web.server.model.Portfolio as PortfolioEntity
/**
* Service for managing [Portfolio]s.
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/ProjectService.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/ProjectService.kt
index c3e43395..44348195 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/ProjectService.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/ProjectService.kt
@@ -20,12 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.web.api.service
+package org.opendc.web.server.service
-import org.opendc.web.api.model.*
-import org.opendc.web.api.repository.ProjectRepository
import org.opendc.web.proto.user.Project
import org.opendc.web.proto.user.ProjectRole
+import org.opendc.web.server.model.*
+import org.opendc.web.server.repository.ProjectRepository
import java.time.Instant
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/RunnerConversions.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/RunnerConversions.kt
index 3722a641..1dcc95ee 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/RunnerConversions.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/RunnerConversions.kt
@@ -20,12 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.web.api.service
+package org.opendc.web.server.service
-import org.opendc.web.api.model.Job
-import org.opendc.web.api.model.Portfolio
-import org.opendc.web.api.model.Scenario
-import org.opendc.web.api.model.Topology
+import org.opendc.web.server.model.Job
+import org.opendc.web.server.model.Portfolio
+import org.opendc.web.server.model.Scenario
+import org.opendc.web.server.model.Topology
/**
* Conversions into DTOs provided to OpenDC runners.
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/ScenarioService.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/ScenarioService.kt
index dd51a929..5b56068d 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/ScenarioService.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/ScenarioService.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.web.api.service
+package org.opendc.web.server.service
-import org.opendc.web.api.model.*
-import org.opendc.web.api.repository.*
import org.opendc.web.proto.user.Scenario
+import org.opendc.web.server.model.*
+import org.opendc.web.server.repository.*
import java.time.Instant
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/TopologyService.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/TopologyService.kt
index f3460496..5c2a457a 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/TopologyService.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/TopologyService.kt
@@ -20,15 +20,15 @@
* SOFTWARE.
*/
-package org.opendc.web.api.service
+package org.opendc.web.server.service
-import org.opendc.web.api.repository.ProjectRepository
-import org.opendc.web.api.repository.TopologyRepository
import org.opendc.web.proto.user.Topology
+import org.opendc.web.server.repository.ProjectRepository
+import org.opendc.web.server.repository.TopologyRepository
import java.time.Instant
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
-import org.opendc.web.api.model.Topology as TopologyEntity
+import org.opendc.web.server.model.Topology as TopologyEntity
/**
* Service for managing [Topology]s.
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/TraceService.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/TraceService.kt
index a942696e..bd14950c 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/TraceService.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/TraceService.kt
@@ -20,10 +20,10 @@
* SOFTWARE.
*/
-package org.opendc.web.api.service
+package org.opendc.web.server.service
-import org.opendc.web.api.repository.TraceRepository
import org.opendc.web.proto.Trace
+import org.opendc.web.server.repository.TraceRepository
import javax.enterprise.context.ApplicationScoped
import javax.inject.Inject
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/UserConversions.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/UserConversions.kt
index 8612ee8c..ee78d103 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/UserConversions.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/UserConversions.kt
@@ -20,10 +20,10 @@
* SOFTWARE.
*/
-package org.opendc.web.api.service
+package org.opendc.web.server.service
-import org.opendc.web.api.model.*
import org.opendc.web.proto.user.Project
+import org.opendc.web.server.model.*
/**
* Conversions into DTOs provided to users.
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/Utils.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/Utils.kt
index 254be8b7..2d0da3b3 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/service/Utils.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/service/Utils.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.service
+package org.opendc.web.server.service
import org.opendc.web.proto.user.ProjectRole
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/DevSecurityOverrideFilter.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/DevSecurityOverrideFilter.kt
index ba2cf2ae..0bdf959a 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/DevSecurityOverrideFilter.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/DevSecurityOverrideFilter.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.util
+package org.opendc.web.server.util
import io.quarkus.arc.properties.IfBuildProperty
import java.security.Principal
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/KotlinModuleCustomizer.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/KotlinModuleCustomizer.kt
index 8d91a00c..8634c8a4 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/KotlinModuleCustomizer.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/KotlinModuleCustomizer.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.util
+package org.opendc.web.server.util
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.KotlinModule
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/AbstractJsonSqlTypeDescriptor.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/AbstractJsonSqlTypeDescriptor.kt
index 134739c9..9e29b734 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/AbstractJsonSqlTypeDescriptor.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/AbstractJsonSqlTypeDescriptor.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.util.hibernate.json
+package org.opendc.web.server.util.hibernate.json
import org.hibernate.type.descriptor.ValueExtractor
import org.hibernate.type.descriptor.WrapperOptions
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonBinarySqlTypeDescriptor.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonBinarySqlTypeDescriptor.kt
index 32f69928..45752d4e 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonBinarySqlTypeDescriptor.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonBinarySqlTypeDescriptor.kt
@@ -1,4 +1,4 @@
-package org.opendc.web.api.util.hibernate.json
+package org.opendc.web.server.util.hibernate.json
import com.fasterxml.jackson.databind.JsonNode
import org.hibernate.type.descriptor.ValueBinder
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonBytesSqlTypeDescriptor.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonBytesSqlTypeDescriptor.kt
index eaecc5b0..216c465f 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonBytesSqlTypeDescriptor.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonBytesSqlTypeDescriptor.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.util.hibernate.json
+package org.opendc.web.server.util.hibernate.json
import org.hibernate.type.descriptor.ValueBinder
import org.hibernate.type.descriptor.WrapperOptions
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonSqlTypeDescriptor.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonSqlTypeDescriptor.kt
index e005f368..f5069c4c 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonSqlTypeDescriptor.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonSqlTypeDescriptor.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.util.hibernate.json
+package org.opendc.web.server.util.hibernate.json
import org.hibernate.dialect.H2Dialect
import org.hibernate.dialect.PostgreSQL81Dialect
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonStringSqlTypeDescriptor.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonStringSqlTypeDescriptor.kt
index cf400c95..3d10cb0e 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonStringSqlTypeDescriptor.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonStringSqlTypeDescriptor.kt
@@ -1,4 +1,4 @@
-package org.opendc.web.api.util.hibernate.json
+package org.opendc.web.server.util.hibernate.json
import org.hibernate.type.descriptor.ValueBinder
import org.hibernate.type.descriptor.WrapperOptions
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonType.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonType.kt
index 2206e82f..98663640 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonType.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonType.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.util.hibernate.json
+package org.opendc.web.server.util.hibernate.json
import com.fasterxml.jackson.databind.ObjectMapper
import org.hibernate.type.AbstractSingleColumnStandardBasicType
diff --git a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonTypeDescriptor.kt b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonTypeDescriptor.kt
index 3386582e..6c6078dd 100644
--- a/opendc-web/opendc-web-api/src/main/kotlin/org/opendc/web/api/util/hibernate/json/JsonTypeDescriptor.kt
+++ b/opendc-web/opendc-web-server/src/main/kotlin/org/opendc/web/server/util/hibernate/json/JsonTypeDescriptor.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.util.hibernate.json
+package org.opendc.web.server.util.hibernate.json
import com.fasterxml.jackson.databind.ObjectMapper
import org.hibernate.HibernateException
diff --git a/opendc-web/opendc-web-api/src/main/resources/META-INF/branding/logo.png b/opendc-web/opendc-web-server/src/main/resources/META-INF/branding/logo.png
index d743038b..d743038b 100644
--- a/opendc-web/opendc-web-api/src/main/resources/META-INF/branding/logo.png
+++ b/opendc-web/opendc-web-server/src/main/resources/META-INF/branding/logo.png
Binary files differ
diff --git a/opendc-web/opendc-web-api/src/main/resources/application-dev.properties b/opendc-web/opendc-web-server/src/main/resources/application-dev.properties
index 98e53ee7..3f30e9c4 100644
--- a/opendc-web/opendc-web-api/src/main/resources/application-dev.properties
+++ b/opendc-web/opendc-web-server/src/main/resources/application-dev.properties
@@ -19,22 +19,19 @@
# SOFTWARE.
# Datasource (H2)
-quarkus.datasource.db-kind = h2
+quarkus.datasource.db-kind=h2
quarkus.datasource.jdbc.url=jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;INIT=CREATE TYPE IF NOT EXISTS "JSONB" AS blob;
# Hibernate
quarkus.hibernate-orm.dialect=org.hibernate.dialect.H2Dialect
quarkus.hibernate-orm.database.generation=drop-and-create
-quarkus.hibernate-orm.sql-load-script=init-dev.sql
-# OpenID
-quarkus.oidc.enabled=false
-quarkus.oidc.auth-server-url=
-quarkus.oidc.client-id=
+# Disable authentication
+opendc.security.enabled=false
-# OpenDC web UI
+# Mount web UI at root and API at "/api"
quarkus.opendc-ui.path=/
quarkus.resteasy.path=/api
-opendc.security.enabled=false
-quarkus.opendc-runner.auth.enabled=false
+# Swagger UI
+quarkus.smallrye-openapi.servers=http://localhost:8080
diff --git a/opendc-web/opendc-web-server/src/main/resources/application-docker.properties b/opendc-web/opendc-web-server/src/main/resources/application-docker.properties
new file mode 100644
index 00000000..cd1f9ff3
--- /dev/null
+++ b/opendc-web/opendc-web-server/src/main/resources/application-docker.properties
@@ -0,0 +1,50 @@
+# Copyright (c) 2022 AtLarge Research
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+# Configuration for standalone Docker server distribution without web UI.
+
+# Datasource
+quarkus.datasource.db-kind=postgresql
+quarkus.datasource.username=${OPENDC_DB_USERNAME}
+quarkus.datasource.password=${OPENDC_DB_PASSWORD}
+quarkus.datasource.jdbc.url=${OPENDC_DB_URL}
+
+# Hibernate
+quarkus.hibernate-orm.dialect=org.hibernate.dialect.PostgreSQL95Dialect
+quarkus.hibernate-orm.database.generation=validate
+
+# Disable OpenDC web UI
+quarkus.opendc-ui.include=false
+
+# Security
+opendc.security.enabled=true
+quarkus.oidc.auth-server-url=https://${OPENDC_AUTH0_DOMAIN}
+quarkus.oidc.client-id=${OPENDC_AUTH0_AUDIENCE}
+quarkus.oidc.token.audience=${quarkus.oidc.client-id}
+quarkus.oidc.roles.role-claim-path=scope
+
+# Swagger UI
+quarkus.swagger-ui.oauth-client-id=${OPENDC_AUTH0_DOCS_CLIENT_ID:}
+quarkus.swagger-ui.oauth-additional-query-string-params={"audience":"${OPENDC_AUTH0_AUDIENCE:https://api.opendc.org/v2/}"}
+
+quarkus.smallrye-openapi.security-scheme=oidc
+quarkus.smallrye-openapi.security-scheme-name=Auth0
+quarkus.smallrye-openapi.oidc-open-id-connect-url=https://${OPENDC_AUTH0_DOMAIN:opendc.eu.auth0.com}/.well-known/openid-configuration
+quarkus.smallrye-openapi.servers=https://api.opendc.org
diff --git a/opendc-web/opendc-web-api/src/main/resources/application-prod.properties b/opendc-web/opendc-web-server/src/main/resources/application-prod.properties
index cebcdaab..09653d59 100644
--- a/opendc-web/opendc-web-api/src/main/resources/application-prod.properties
+++ b/opendc-web/opendc-web-server/src/main/resources/application-prod.properties
@@ -18,16 +18,21 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
-# Datasource
-quarkus.datasource.db-kind=postgresql
-quarkus.datasource.username=${OPENDC_DB_USERNAME}
-quarkus.datasource.password=${OPENDC_DB_PASSWORD}
-quarkus.datasource.jdbc.url=${OPENDC_DB_URL}
+# Datasource (H2)
+quarkus.datasource.db-kind=h2
+quarkus.datasource.jdbc.url=jdbc:h2:file:./data/opendc;DB_CLOSE_DELAY=-1;INIT=CREATE TYPE IF NOT EXISTS "JSONB" AS blob;
# Hibernate
-quarkus.hibernate-orm.dialect=org.hibernate.dialect.PostgreSQL95Dialect
+quarkus.hibernate-orm.dialect=org.hibernate.dialect.H2Dialect
quarkus.hibernate-orm.database.generation=validate
-# Disable OpenDC web UI and runner
-quarkus.opendc-ui.include=false
-quarkus.opendc-runner.include=false
+# Disable authentication
+opendc.security.enabled=false
+quarkus.oidc.enabled=${opendc.security.enabled}
+
+# Mount web UI at root and API at "/api"
+quarkus.opendc-ui.path=/
+quarkus.resteasy.path=/api
+
+# Swagger UI
+quarkus.smallrye-openapi.servers=http://localhost:8080
diff --git a/opendc-web/opendc-web-api/src/main/resources/application-test.properties b/opendc-web/opendc-web-server/src/main/resources/application-test.properties
index 10197119..78512f3f 100644
--- a/opendc-web/opendc-web-api/src/main/resources/application-test.properties
+++ b/opendc-web/opendc-web-server/src/main/resources/application-test.properties
@@ -25,15 +25,12 @@ quarkus.datasource.jdbc.url=jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;INIT=CREATE TY
quarkus.hibernate-orm.dialect=org.hibernate.dialect.H2Dialect
quarkus.hibernate-orm.database.generation=drop-and-create
-# No OIDC for tests
+# Disable security
quarkus.oidc.enabled=false
-quarkus.oidc.auth-server-url=
-quarkus.oidc.client-id=
# Disable OpenAPI/Swagger
quarkus.smallrye-openapi.enable=false
quarkus.swagger-ui.enable=false
-quarkus.smallrye-openapi.oidc-open-id-connect-url=
# Disable OpenDC web UI and runner
quarkus.opendc-ui.include=false
diff --git a/opendc-web/opendc-web-api/src/main/resources/application.properties b/opendc-web/opendc-web-server/src/main/resources/application.properties
index e9285401..d0b567e5 100644
--- a/opendc-web/opendc-web-api/src/main/resources/application.properties
+++ b/opendc-web/opendc-web-server/src/main/resources/application.properties
@@ -18,13 +18,11 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+# Enable CORS
quarkus.http.cors=true
-# OpenID
-quarkus.oidc.auth-server-url=https://${OPENDC_AUTH0_DOMAIN}
-quarkus.oidc.client-id=${OPENDC_AUTH0_AUDIENCE}
-quarkus.oidc.token.audience=${quarkus.oidc.client-id}
-quarkus.oidc.roles.role-claim-path=scope
+# Security
+quarkus.oidc.enabled=${opendc.security.enabled}
# Runner logging
quarkus.log.category."org.opendc".level=ERROR
@@ -44,10 +42,3 @@ quarkus.smallrye-openapi.info-license-url=https://github.com/atlarge-research/op
quarkus.swagger-ui.path=docs
quarkus.swagger-ui.always-include=true
-quarkus.swagger-ui.oauth-client-id=${OPENDC_AUTH0_DOCS_CLIENT_ID:}
-quarkus.swagger-ui.oauth-additional-query-string-params={"audience":"${OPENDC_AUTH0_AUDIENCE:https://api.opendc.org/}"}
-
-quarkus.smallrye-openapi.security-scheme=oidc
-quarkus.smallrye-openapi.security-scheme-name=Auth0
-quarkus.smallrye-openapi.oidc-open-id-connect-url=https://${OPENDC_AUTH0_DOMAIN:opendc.eu.auth0.com}/.well-known/openid-configuration
-quarkus.smallrye-openapi.servers=http://localhost:8080
diff --git a/opendc-web/opendc-web-api/src/main/resources/init-dev.sql b/opendc-web/opendc-web-server/src/main/resources/import.sql
index 756eff46..756eff46 100644
--- a/opendc-web/opendc-web-api/src/main/resources/init-dev.sql
+++ b/opendc-web/opendc-web-server/src/main/resources/import.sql
diff --git a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/SchedulerResourceTest.kt b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/SchedulerResourceTest.kt
index e88e1c1c..c1460db9 100644
--- a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/SchedulerResourceTest.kt
+++ b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/SchedulerResourceTest.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest
+package org.opendc.web.server.rest
import io.quarkus.test.junit.QuarkusTest
import io.restassured.http.ContentType
diff --git a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/TraceResourceTest.kt b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/TraceResourceTest.kt
index 6fab9953..2490cf46 100644
--- a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/TraceResourceTest.kt
+++ b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/TraceResourceTest.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest
+package org.opendc.web.server.rest
import io.mockk.every
import io.quarkiverse.test.junit.mockk.InjectMock
@@ -34,8 +34,8 @@ import org.hamcrest.Matchers
import org.hamcrest.Matchers.equalTo
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
-import org.opendc.web.api.service.TraceService
import org.opendc.web.proto.Trace
+import org.opendc.web.server.service.TraceService
/**
* Test suite for [TraceResource].
diff --git a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/runner/JobResourceTest.kt b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/runner/JobResourceTest.kt
index b82c60e8..c96788b0 100644
--- a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/runner/JobResourceTest.kt
+++ b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/runner/JobResourceTest.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.runner
+package org.opendc.web.server.rest.runner
import io.mockk.every
import io.quarkiverse.test.junit.mockk.InjectMock
@@ -35,13 +35,13 @@ import io.restassured.module.kotlin.extensions.When
import org.hamcrest.Matchers.equalTo
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
-import org.opendc.web.api.service.JobService
import org.opendc.web.proto.*
import org.opendc.web.proto.Targets
import org.opendc.web.proto.runner.Job
import org.opendc.web.proto.runner.Portfolio
import org.opendc.web.proto.runner.Scenario
import org.opendc.web.proto.runner.Topology
+import org.opendc.web.server.service.JobService
import java.time.Instant
/**
diff --git a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/PortfolioResourceTest.kt b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/PortfolioResourceTest.kt
index f74efbca..5798d2e7 100644
--- a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/PortfolioResourceTest.kt
+++ b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/PortfolioResourceTest.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.user
+package org.opendc.web.server.rest.user
import io.mockk.every
import io.quarkiverse.test.junit.mockk.InjectMock
@@ -35,11 +35,11 @@ import io.restassured.module.kotlin.extensions.When
import org.hamcrest.Matchers
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
-import org.opendc.web.api.service.PortfolioService
import org.opendc.web.proto.Targets
import org.opendc.web.proto.user.Portfolio
import org.opendc.web.proto.user.Project
import org.opendc.web.proto.user.ProjectRole
+import org.opendc.web.server.service.PortfolioService
import java.time.Instant
/**
diff --git a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/PortfolioScenarioResourceTest.kt b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/PortfolioScenarioResourceTest.kt
index dbafa8c0..13c47d19 100644
--- a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/PortfolioScenarioResourceTest.kt
+++ b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/PortfolioScenarioResourceTest.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.user
+package org.opendc.web.server.rest.user
import io.mockk.every
import io.quarkiverse.test.junit.mockk.InjectMock
@@ -35,9 +35,9 @@ import io.restassured.module.kotlin.extensions.When
import org.hamcrest.Matchers
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
-import org.opendc.web.api.service.ScenarioService
import org.opendc.web.proto.*
import org.opendc.web.proto.user.*
+import org.opendc.web.server.service.ScenarioService
import java.time.Instant
/**
diff --git a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/ProjectResourceTest.kt b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/ProjectResourceTest.kt
index bcbcbab1..fec8759c 100644
--- a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/ProjectResourceTest.kt
+++ b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/ProjectResourceTest.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.user
+package org.opendc.web.server.rest.user
import io.mockk.every
import io.quarkiverse.test.junit.mockk.InjectMock
@@ -35,9 +35,9 @@ import io.restassured.module.kotlin.extensions.When
import org.hamcrest.Matchers.equalTo
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
-import org.opendc.web.api.service.ProjectService
import org.opendc.web.proto.user.Project
import org.opendc.web.proto.user.ProjectRole
+import org.opendc.web.server.service.ProjectService
import java.time.Instant
/**
diff --git a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/ScenarioResourceTest.kt b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/ScenarioResourceTest.kt
index 65e6e9a1..1d63679e 100644
--- a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/ScenarioResourceTest.kt
+++ b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/ScenarioResourceTest.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.user
+package org.opendc.web.server.rest.user
import io.mockk.every
import io.quarkiverse.test.junit.mockk.InjectMock
@@ -35,9 +35,9 @@ import io.restassured.module.kotlin.extensions.When
import org.hamcrest.Matchers
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
-import org.opendc.web.api.service.ScenarioService
import org.opendc.web.proto.*
import org.opendc.web.proto.user.*
+import org.opendc.web.server.service.ScenarioService
import java.time.Instant
/**
diff --git a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/TopologyResourceTest.kt b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/TopologyResourceTest.kt
index ececeaca..8a542d33 100644
--- a/opendc-web/opendc-web-api/src/test/kotlin/org/opendc/web/api/rest/user/TopologyResourceTest.kt
+++ b/opendc-web/opendc-web-server/src/test/kotlin/org/opendc/web/server/rest/user/TopologyResourceTest.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.web.api.rest.user
+package org.opendc.web.server.rest.user
import io.mockk.every
import io.quarkiverse.test.junit.mockk.InjectMock
@@ -35,10 +35,10 @@ import io.restassured.module.kotlin.extensions.When
import org.hamcrest.Matchers
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
-import org.opendc.web.api.service.TopologyService
import org.opendc.web.proto.user.Project
import org.opendc.web.proto.user.ProjectRole
import org.opendc.web.proto.user.Topology
+import org.opendc.web.server.service.TopologyService
import java.time.Instant
/**