Started adding node-daemon communication. Added status endpoint

This commit is contained in:
=
2024-09-06 13:53:41 +00:00
parent 66e0fa2283
commit 6d4e1cdaaf
11 changed files with 144 additions and 24 deletions

View File

@@ -5,7 +5,9 @@ using MoonCore.Helpers;
using Moonlight.ApiServer.App.Attributes;
using Moonlight.ApiServer.App.Exceptions;
using Moonlight.ApiServer.App.Helpers;
using MoonlightServers.DaemonShared.Http.Resources.Sys;
using MoonlightServers.ApiServer.Database.Entities;
using MoonlightServers.ApiServer.Extensions;
using MoonlightServers.Shared.Http.Requests.Admin.Nodes;
using MoonlightServers.Shared.Http.Responses.Admin.Nodes;
@@ -14,7 +16,7 @@ namespace MoonlightServers.ApiServer.Http.Controllers.Admin.Nodes;
[ApiController]
[Route("admin/servers/nodes")]
public class NodesController : BaseCrudController<Node, DetailNodeResponse, CreateNodeRequest, DetailNodeResponse, UpdateNodeRequest, DetailNodeResponse>
{
{
public NodesController(DatabaseRepository<Node> itemRepository) : base(itemRepository)
{
PermissionPrefix = "admin.servers.nodes";
@@ -49,6 +51,21 @@ public class NodesController : BaseCrudController<Node, DetailNodeResponse, Crea
return Ok(Mapper.Map<DetailNodeResponse>(item));
}
[HttpGet("{id}/status")]
[RequirePermission("admin.servers.nodes.status")]
public async Task<ActionResult<StatusNodeResponse>> Status(int id)
{
var node = LoadItemById(id);
using var httpClient = node.CreateClient();
var response = await httpClient.GetJson<SystemInfoResponse>("system/info");
var result = Mapper.Map<StatusNodeResponse>(response);
return Ok(result);
}
private void ValidateFqdn(string fqdn, bool ssl)
{
if (ssl)