@@ -201,54 +201,38 @@ class ServerService(
201
201
return getServersByTypeResponse { servers.addAll(typeServers.map { it.toDefinition() }) }
202
202
}
203
203
204
+ override suspend fun startMultipleServers (request : ControllerStartMultipleServersRequest ): StartMultipleServerResponse {
205
+ val host = hostRepository.find(serverRepository)
206
+ ? : throw StatusException (Status .NOT_FOUND .withDescription(" No server host found, could not start servers" ))
207
+ val group = groupRepository.find(request.groupName)
208
+ ? : throw StatusException (Status .NOT_FOUND .withDescription(" No group was found matching this name" ))
209
+
210
+ val startedServers = mutableListOf<ServerDefinition >()
211
+
212
+ try {
213
+ for (i in 1 .. request.amount) {
214
+ val server = startServer(host, group)
215
+ publishServerStartEvents(server, request.startCause)
216
+ startedServers.add(server)
217
+ }
218
+ } catch (e: Exception ) {
219
+ throw StatusException (Status .INTERNAL .withDescription(" Error whilst starting multiple servers" ).withCause(e))
220
+ }
221
+
222
+ return StartMultipleServerResponse .newBuilder()
223
+ .addAllServers(startedServers)
224
+ .build()
225
+ }
226
+
204
227
override suspend fun startServer (request : ControllerStartServerRequest ): ServerDefinition {
205
228
val host = hostRepository.find(serverRepository)
206
229
? : throw StatusException (Status .NOT_FOUND .withDescription(" No server host found, could not start server" ))
207
230
val group = groupRepository.find(request.groupName)
208
231
? : throw StatusException (Status .NOT_FOUND .withDescription(" No group was found matching this name" ))
209
232
try {
210
233
val server = startServer(host, group)
211
- pubSubClient.publish(
212
- " event" , ServerStartEvent .newBuilder()
213
- .setServer(server)
214
- .setStartedAt(ProtobufTimestamp .fromLocalDateTime(LocalDateTime .now()))
215
- .setStartCause(request.startCause)
216
- .build()
217
- )
218
234
219
- pubSubClient.publish(MetricsEventNames .RECORD_METRIC , metric {
220
- metricType = " ACTIVITY_LOG"
221
- metricValue = 1L
222
- time = ProtobufTimestamp .fromLocalDateTime(LocalDateTime .now())
223
- meta.addAll(
224
- listOf (
225
- metricMeta {
226
- dataName = " displayName"
227
- dataValue = " ${server.groupName} #${server.numericalId} "
228
- },
229
- metricMeta {
230
- dataName = " status"
231
- dataValue = " STARTED"
232
- },
233
- metricMeta {
234
- dataName = " resourceType"
235
- dataValue = " SERVER"
236
- },
237
- metricMeta {
238
- dataName = " groupName"
239
- dataValue = server.groupName
240
- },
241
- metricMeta {
242
- dataName = " numericalId"
243
- dataValue = server.numericalId.toString()
244
- },
245
- metricMeta {
246
- dataName = " by"
247
- dataValue = request.startCause.toString()
248
- }
249
- )
250
- )
251
- })
235
+ publishServerStartEvents(server, request.startCause)
252
236
253
237
return server
254
238
} catch (e: Exception ) {
@@ -279,6 +263,50 @@ class ServerService(
279
263
}
280
264
}
281
265
266
+ private suspend fun publishServerStartEvents (server : ServerDefinition , startCause : ServerStartCause ) {
267
+ pubSubClient.publish(
268
+ " event" , ServerStartEvent .newBuilder()
269
+ .setServer(server)
270
+ .setStartedAt(ProtobufTimestamp .fromLocalDateTime(LocalDateTime .now()))
271
+ .setStartCause(startCause)
272
+ .build()
273
+ )
274
+
275
+ pubSubClient.publish(MetricsEventNames .RECORD_METRIC , metric {
276
+ metricType = " ACTIVITY_LOG"
277
+ metricValue = 1L
278
+ time = ProtobufTimestamp .fromLocalDateTime(LocalDateTime .now())
279
+ meta.addAll(
280
+ listOf (
281
+ metricMeta {
282
+ dataName = " displayName"
283
+ dataValue = " ${server.groupName} #${server.numericalId} "
284
+ },
285
+ metricMeta {
286
+ dataName = " status"
287
+ dataValue = " STARTED"
288
+ },
289
+ metricMeta {
290
+ dataName = " resourceType"
291
+ dataValue = " SERVER"
292
+ },
293
+ metricMeta {
294
+ dataName = " groupName"
295
+ dataValue = server.groupName
296
+ },
297
+ metricMeta {
298
+ dataName = " numericalId"
299
+ dataValue = server.numericalId.toString()
300
+ },
301
+ metricMeta {
302
+ dataName = " by"
303
+ dataValue = startCause.toString()
304
+ }
305
+ )
306
+ )
307
+ })
308
+ }
309
+
282
310
private fun buildServer (group : Group , numericalId : Int ): Server {
283
311
return Server .fromDefinition(
284
312
ServerDefinition .newBuilder()
0 commit comments