Skip to content

Commit bfd1eeb

Browse files
committed
refactor(model-server): drop /v2 prefix from the OpenAPI spec routes
After moving out v1 routes, we can instead declare the server to be available as /v2.
1 parent cf5f80e commit bfd1eeb

File tree

12 files changed

+43
-51
lines changed

12 files changed

+43
-51
lines changed

model-server-openapi/specifications/model-server-v2.yaml

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ info:
1313
description: "modelix public API"
1414
version: "1.0.0"
1515
servers:
16-
- url: '/'
16+
- url: '/v2'
1717
description: model-server
1818
tags:
1919
- name: ids
2020
paths:
21-
/v2/server-id:
21+
/server-id:
2222
get:
2323
summary: Returns the ID of the server
2424
tags:
@@ -29,7 +29,7 @@ paths:
2929
$ref: '#/components/responses/200'
3030
default:
3131
$ref: '#/components/responses/GeneralError'
32-
/v2/user-id:
32+
/user-id:
3333
get:
3434
tags:
3535
- ids
@@ -39,7 +39,7 @@ paths:
3939
$ref: '#/components/responses/200'
4040
default:
4141
$ref: '#/components/responses/GeneralError'
42-
/v2/generate-client-id:
42+
/generate-client-id:
4343
post:
4444
tags:
4545
- ids
@@ -49,15 +49,15 @@ paths:
4949
$ref: '#/components/responses/200'
5050
default:
5151
$ref: '#/components/responses/GeneralError'
52-
/v2/repositories:
52+
/repositories:
5353
get:
5454
operationId: getRepositories
5555
responses:
5656
"200":
5757
$ref: '#/components/responses/200'
5858
default:
5959
$ref: '#/components/responses/GeneralError'
60-
/v2/repositories/{repository}/objects:
60+
/repositories/{repository}/objects:
6161
put:
6262
operationId: putRepositoryObjects
6363
parameters:
@@ -75,7 +75,7 @@ paths:
7575
$ref: '#/components/responses/200json'
7676
default:
7777
$ref: '#/components/responses/GeneralError'
78-
/v2/repositories/{repository}/branches:
78+
/repositories/{repository}/branches:
7979
get:
8080
operationId: getRepositoryBranches
8181
parameters:
@@ -89,7 +89,7 @@ paths:
8989
$ref: '#/components/responses/200'
9090
default:
9191
$ref: '#/components/responses/GeneralError'
92-
/v2/repositories/{repository}/branches/{branch}:
92+
/repositories/{repository}/branches/{branch}:
9393
delete:
9494
operationId: deleteRepositoryBranch
9595
parameters:
@@ -167,7 +167,7 @@ paths:
167167
$ref: '#/components/responses/versionDelta'
168168
default:
169169
$ref: '#/components/responses/GeneralError'
170-
/v2/repositories/{repository}/branches/{branch}/hash:
170+
/repositories/{repository}/branches/{branch}/hash:
171171
get:
172172
operationId: getRepositoryBranchHash
173173
parameters:
@@ -188,7 +188,7 @@ paths:
188188
$ref: '#/components/responses/200'
189189
default:
190190
$ref: '#/components/responses/GeneralError'
191-
/v2/repositories/{repository}/branches/{branch}/poll:
191+
/repositories/{repository}/branches/{branch}/poll:
192192
get:
193193
operationId: pollRepositoryBranch
194194
parameters:
@@ -216,7 +216,7 @@ paths:
216216
$ref: '#/components/responses/versionDelta'
217217
default:
218218
$ref: '#/components/responses/GeneralError'
219-
/v2/repositories/{repository}/branches/{branch}/pollHash:
219+
/repositories/{repository}/branches/{branch}/pollHash:
220220
get:
221221
operationId: pollRepositoryBranchHash
222222
parameters:
@@ -249,7 +249,7 @@ paths:
249249
$ref: '#/components/responses/200'
250250
default:
251251
$ref: '#/components/responses/GeneralError'
252-
/v2/repositories/{repository}/branches/{branch}/query:
252+
/repositories/{repository}/branches/{branch}/query:
253253
post:
254254
operationId: postRepositoryBranchQuery
255255
parameters:
@@ -268,7 +268,7 @@ paths:
268268
$ref: '#/components/responses/200json'
269269
default:
270270
$ref: '#/components/responses/GeneralError'
271-
/v2/repositories/{repository}/init:
271+
/repositories/{repository}/init:
272272
post:
273273
operationId: initializeRepository
274274
parameters:
@@ -291,7 +291,7 @@ paths:
291291
$ref: '#/components/responses/versionDelta'
292292
default:
293293
$ref: '#/components/responses/GeneralError'
294-
/v2/repositories/{repository}/delete:
294+
/repositories/{repository}/delete:
295295
post:
296296
operationId: deleteRepository
297297
parameters:
@@ -309,7 +309,7 @@ paths:
309309
type: string
310310
"404":
311311
$ref: '#/components/responses/404'
312-
/v2/repositories/{repository}/versions/{versionHash}:
312+
/repositories/{repository}/versions/{versionHash}:
313313
get:
314314
operationId: getRepositoryVersionHash
315315
parameters:
@@ -339,7 +339,7 @@ paths:
339339
type: object
340340
default:
341341
$ref: '#/components/responses/GeneralError'
342-
/v2/repositories/{repository}/versions/{versionHash}/query:
342+
/repositories/{repository}/versions/{versionHash}/query:
343343
post:
344344
operationId: postRepositoryVersionHashQuery
345345
parameters:
@@ -359,7 +359,7 @@ paths:
359359
default:
360360
$ref: '#/components/responses/GeneralError'
361361

362-
/v2/versions/{versionHash}:
362+
/versions/{versionHash}:
363363
get:
364364
operationId: getVersionHash
365365
deprecated: true

model-server/src/main/kotlin/org/modelix/model/server/Main.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,8 @@ object Main {
221221
jsonModelServer.init(this)
222222
modelReplicationServer.init(this)
223223
metricsApi.init(this)
224+
IdsApiImpl(repositoriesManager, localModelClient).init(this)
224225
routing {
225-
IdsApiImpl(repositoriesManager, localModelClient).installRoutes(this)
226226
HealthApiImpl(repositoriesManager, globalStoreClient, inMemoryModels).installRoutes(this)
227227

228228
staticResources("/public", "public")

model-server/src/main/kotlin/org/modelix/model/server/handlers/IdsApiImpl.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@
1616

1717
package org.modelix.model.server.handlers
1818

19+
import io.ktor.server.application.Application
1920
import io.ktor.server.application.ApplicationCall
2021
import io.ktor.server.application.call
2122
import io.ktor.server.plugins.origin
2223
import io.ktor.server.response.respondText
24+
import io.ktor.server.routing.route
25+
import io.ktor.server.routing.routing
2326
import io.ktor.util.pipeline.PipelineContext
2427
import org.modelix.api.v2.IdsApi
2528
import org.modelix.authorization.getUserName
@@ -58,4 +61,14 @@ class IdsApiImpl(
5861
override suspend fun PipelineContext<Unit, ApplicationCall>.generateClientId() {
5962
call.respondText(storeClient.generateId("clientId").toString())
6063
}
64+
65+
fun init(application: Application) {
66+
application.apply {
67+
routing {
68+
route("/v2") {
69+
installRoutes(this)
70+
}
71+
}
72+
}
73+
}
6174
}

model-server/src/main/kotlin/org/modelix/model/server/handlers/ModelReplicationServer.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import io.ktor.server.response.respond
3131
import io.ktor.server.response.respondBytesWriter
3232
import io.ktor.server.response.respondText
3333
import io.ktor.server.routing.Route
34+
import io.ktor.server.routing.route
3435
import io.ktor.server.routing.routing
3536
import io.ktor.util.cio.use
3637
import io.ktor.util.pipeline.PipelineContext
@@ -91,7 +92,9 @@ class ModelReplicationServer(
9192
fun init(application: Application) {
9293
application.apply {
9394
routing {
94-
installHandlers()
95+
route("/v2") {
96+
installHandlers()
97+
}
9598
}
9699
}
97100
}

model-server/src/test/kotlin/org/modelix/model/server/ModelClientV2Test.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
package org.modelix.model.server
1717

18-
import io.ktor.server.routing.routing
1918
import io.ktor.server.testing.ApplicationTestBuilder
2019
import io.ktor.server.testing.testApplication
2120
import org.modelix.authorization.installAuthentication
@@ -54,9 +53,7 @@ class ModelClientV2Test {
5453
installDefaultServerPlugins()
5554
val storeClient = InMemoryStoreClient().forContextRepository()
5655
ModelReplicationServer(storeClient).init(this)
57-
routing {
58-
IdsApiImpl(storeClient).installRoutes(this)
59-
}
56+
IdsApiImpl(storeClient).init(this)
6057
}
6158
block()
6259
}

model-server/src/test/kotlin/org/modelix/model/server/PullPerformanceTest.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package org.modelix.model.server
1818

19-
import io.ktor.server.routing.routing
2019
import io.ktor.server.testing.ApplicationTestBuilder
2120
import io.ktor.server.testing.testApplication
2221
import kotlinx.coroutines.coroutineScope
@@ -50,9 +49,7 @@ class PullPerformanceTest {
5049
installDefaultServerPlugins()
5150
ModelReplicationServer(repositoriesManager, LocalModelClient(storeClientWithStatistics), inMemoryModels).init(this)
5251
KeyValueLikeModelServer(repositoriesManager, storeClientWithStatistics.forGlobalRepository(), inMemoryModels).init(this)
53-
routing {
54-
IdsApiImpl(repositoriesManager, LocalModelClient(storeClientWithStatistics)).installRoutes(this)
55-
}
52+
IdsApiImpl(repositoriesManager, LocalModelClient(storeClientWithStatistics)).init(this)
5653
}
5754

5855
coroutineScope {

model-server/src/test/kotlin/org/modelix/model/server/ReplicatedModelTest.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package org.modelix.model.server
1818

19-
import io.ktor.server.routing.routing
2019
import io.ktor.server.testing.ApplicationTestBuilder
2120
import io.ktor.server.testing.testApplication
2221
import io.ktor.util.reflect.instanceOf
@@ -138,9 +137,7 @@ class ReplicatedModelTest {
138137
installDefaultServerPlugins()
139138
val storeClient = InMemoryStoreClient().forContextRepository()
140139
ModelReplicationServer(storeClient).init(this)
141-
routing {
142-
IdsApiImpl(storeClient).installRoutes(this)
143-
}
140+
IdsApiImpl(storeClient).init(this)
144141
}
145142
block()
146143
}

model-server/src/test/kotlin/org/modelix/model/server/ReplicatedRepositoryTest.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
package org.modelix.model.server
1717

18-
import io.ktor.server.routing.routing
1918
import io.ktor.server.testing.ApplicationTestBuilder
2019
import io.ktor.server.testing.testApplication
2120
import kotlinx.coroutines.CoroutineScope
@@ -79,9 +78,7 @@ class ReplicatedRepositoryTest {
7978
val inMemoryModels = InMemoryModels()
8079
ModelReplicationServer(repositoriesManager, modelClient, inMemoryModels).init(this)
8180
KeyValueLikeModelServer(repositoriesManager, storeClient.forGlobalRepository(), inMemoryModels).init(this)
82-
routing {
83-
IdsApiImpl(repositoriesManager, modelClient).installRoutes(this)
84-
}
81+
IdsApiImpl(repositoriesManager, modelClient).init(this)
8582
}
8683

8784
coroutineScope {

model-server/src/test/kotlin/org/modelix/model/server/RepositoryStorageBackwardsCompatiblityTest.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package org.modelix.model.server
1818

19-
import io.ktor.server.routing.routing
2019
import io.ktor.server.testing.ApplicationTestBuilder
2120
import io.ktor.server.testing.testApplication
2221
import org.modelix.authorization.installAuthentication
@@ -47,9 +46,7 @@ class RepositoryStorageBackwardsCompatiblityTest {
4746
val repositoriesManager = RepositoriesManager(LocalModelClient(store.forContextRepository()))
4847
KeyValueLikeModelServer(repositoriesManager, store.forGlobalRepository(), InMemoryModels()).init(this)
4948
ModelReplicationServer(repositoriesManager).init(this)
50-
routing {
51-
IdsApiImpl(repositoriesManager).installRoutes(this)
52-
}
49+
IdsApiImpl(repositoriesManager).init(this)
5350
}
5451
block()
5552
}

model-server/src/test/kotlin/org/modelix/model/server/handlers/ContentExplorerTest.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import io.ktor.client.statement.bodyAsText
2424
import io.ktor.http.ContentType
2525
import io.ktor.http.contentType
2626
import io.ktor.serialization.kotlinx.json.json
27-
import io.ktor.server.routing.routing
2827
import io.ktor.server.testing.ApplicationTestBuilder
2928
import io.ktor.server.testing.testApplication
3029
import org.jsoup.Jsoup
@@ -59,9 +58,7 @@ class ContentExplorerTest {
5958
installDefaultServerPlugins()
6059
ModelReplicationServer(repoManager).init(this)
6160
ContentExplorer(modelClient, repoManager).init(this)
62-
routing {
63-
IdsApiImpl(repoManager, modelClient).installRoutes(this)
64-
}
61+
IdsApiImpl(repoManager, modelClient).init(this)
6562
}
6663
body()
6764
}

0 commit comments

Comments
 (0)