Skip to content

Commit 8f66da2

Browse files
committed
feat: stop servers started after specific Timestamp
1 parent c3fc829 commit 8f66da2

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

controller-runtime/src/main/kotlin/app/simplecloud/controller/runtime/server/ServerService.kt

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import io.grpc.Status
1717
import io.grpc.StatusException
1818
import org.apache.logging.log4j.LogManager
1919
import java.time.LocalDateTime
20+
import java.time.ZoneOffset
2021
import java.util.*
2122

2223
class ServerService(
@@ -331,6 +332,14 @@ class ServerService(
331332
override suspend fun stopServer(request: StopServerRequest): ServerDefinition {
332333
val server = serverRepository.find(request.serverId)
333334
?: throw StatusException(Status.NOT_FOUND.withDescription("No server was found matching this id."))
335+
336+
request.since?.let { sinceTimestamp ->
337+
val sinceLocalDateTime = LocalDateTime.ofEpochSecond(sinceTimestamp.seconds, sinceTimestamp.nanos, ZoneOffset.UTC)
338+
if (server.createdAt.isBefore(sinceLocalDateTime)) {
339+
return server.toDefinition()
340+
}
341+
}
342+
334343
try {
335344
val stopped = stopServer(server.toDefinition(), request.stopCause)
336345
return stopped
@@ -340,21 +349,30 @@ class ServerService(
340349
}
341350

342351
override suspend fun stopServersByGroupWithTimeout(request: StopServersByGroupWithTimeoutRequest): StopServersByGroupResponse {
343-
return stopServersByGroup(request.groupName, request.timeoutSeconds, request.stopCause)
352+
val sinceLocalDateTime = request.since?.let {
353+
LocalDateTime.ofEpochSecond(it.seconds, it.nanos, ZoneOffset.UTC)
354+
}
355+
return stopServersByGroup(request.groupName, request.timeoutSeconds, request.stopCause, sinceLocalDateTime)
344356
}
345357

346358
override suspend fun stopServersByGroup(request: StopServersByGroupRequest): StopServersByGroupResponse {
347-
return stopServersByGroup(request.groupName, null, request.stopCause)
359+
val sinceLocalDateTime = request.since?.let {
360+
LocalDateTime.ofEpochSecond(it.seconds, it.nanos, ZoneOffset.UTC)
361+
}
362+
return stopServersByGroup(request.groupName, null, request.stopCause, sinceLocalDateTime)
348363
}
349364

350365
private suspend fun stopServersByGroup(
351366
groupName: String,
352367
timeout: Int?,
353-
cause: ServerStopCause = ServerStopCause.NATURAL_STOP
368+
cause: ServerStopCause = ServerStopCause.NATURAL_STOP,
369+
since: LocalDateTime? = null
354370
): StopServersByGroupResponse {
355371
val group = groupRepository.find(groupName)
356372
?: throw StatusException(Status.NOT_FOUND.withDescription("No group was found matching this name. $groupName"))
357373
val groupServers = serverRepository.findServersByGroup(group.name)
374+
.filter { since == null || it.createdAt.isAfter(since) }
375+
358376
if (groupServers.isEmpty()) {
359377
throw StatusException(Status.NOT_FOUND.withDescription("No server was found matching this group name. ${group.name}"))
360378
}

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ kotlin = "2.0.20"
33
kotlin-coroutines = "1.9.0"
44
shadow = "8.3.3"
55
log4j = "2.20.0"
6-
droplet-api = "0.0.1-dev.4d43f53"
6+
droplet-api = "0.0.1-dev.16b322c"
77
simplecloud-pubsub = "1.0.5"
88
simplecloud-metrics = "1.0.0"
99
jooq = "3.19.3"

0 commit comments

Comments
 (0)