Skip to content

Commit 489b7d4

Browse files
committed
feat: node log cache api
1 parent c045d63 commit 489b7d4

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

cloudnet-rest-module/src/main/java/eu/cloudnetservice/ext/modules/rest/v3/V3HttpHandlerNode.java

+10
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import eu.cloudnetservice.node.command.source.DriverCommandSource;
5050
import eu.cloudnetservice.node.config.Configuration;
5151
import eu.cloudnetservice.node.config.JsonConfiguration;
52+
import eu.cloudnetservice.node.log.QueuedConsoleLogAppender;
5253
import eu.cloudnetservice.node.service.CloudServiceManager;
5354
import jakarta.inject.Inject;
5455
import jakarta.inject.Named;
@@ -74,6 +75,7 @@ public final class V3HttpHandlerNode {
7475
private final NodeServerProvider nodeServerProvider;
7576
private final CloudServiceManager cloudServiceManager;
7677
private final ServiceTaskProvider serviceTaskProvider;
78+
private final QueuedConsoleLogAppender consoleLogAppender;
7779
private final GroupConfigurationProvider groupConfigurationProvider;
7880

7981
@Inject
@@ -87,6 +89,7 @@ public V3HttpHandlerNode(
8789
@NonNull NodeServerProvider nodeServerProvider,
8890
@NonNull CloudServiceManager cloudServiceManager,
8991
@NonNull ServiceTaskProvider serviceTaskProvider,
92+
@NonNull QueuedConsoleLogAppender consoleLogAppender,
9093
@NonNull GroupConfigurationProvider groupConfigurationProvider
9194
) {
9295
this.logger = logger;
@@ -98,6 +101,7 @@ public V3HttpHandlerNode(
98101
this.nodeServerProvider = nodeServerProvider;
99102
this.cloudServiceManager = cloudServiceManager;
100103
this.serviceTaskProvider = serviceTaskProvider;
104+
this.consoleLogAppender = consoleLogAppender;
101105
this.groupConfigurationProvider = groupConfigurationProvider;
102106
}
103107

@@ -201,6 +205,12 @@ public V3HttpHandlerNode(
201205
return HttpResponseCode.SWITCHING_PROTOCOLS;
202206
}
203207

208+
@RequestHandler(path = "/api/v3/node/logLines")
209+
@Authentication(providers = "jwt", scopes = {"cloudnet_rest:node_read", "cloudnet_rest:node_log_lines"})
210+
public @NonNull IntoResponse<?> handleLogLinesRequest() {
211+
return JsonResponse.builder().body(Map.of("lines", this.consoleLogAppender.formattedCachedLogLines()));
212+
}
213+
204214
private void reloadConfig() {
205215
this.configuration.reloadFrom(JsonConfiguration.loadFromFile());
206216
this.serviceTaskProvider.reload();

cloudnet-rest-module/src/main/resources/documentation/swagger.yaml

+24
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,30 @@ paths:
696696
$ref: '#/components/responses/Problem'
697697
'403':
698698
$ref: '#/components/responses/Problem'
699+
/node/logLines:
700+
get:
701+
tags:
702+
- Node
703+
summary: Get the cached log lines of the node the request is sent to
704+
description: |
705+
One of the following scopes is needed to execute the request:
706+
- `cloudnet_rest:node_read`
707+
- `cloudnet_rest:node_log_lines`
708+
responses:
709+
'200':
710+
description: OK
711+
content:
712+
application/json:
713+
schema:
714+
properties:
715+
lines:
716+
type: array
717+
items:
718+
type: string
719+
'401':
720+
$ref: '#/components/responses/Problem'
721+
'403':
722+
$ref: '#/components/responses/Problem'
699723
/node/reload:
700724
parameters:
701725
- name: type

0 commit comments

Comments
 (0)