too much for one commit
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
using System.Net.Http.Json;
|
||||
|
||||
namespace EntKube.Web.Components.Provisioning;
|
||||
|
||||
/// <summary>
|
||||
/// BFF proxy endpoints for Harbor operations. The Blazor frontend calls these
|
||||
/// endpoints to list Harbor projects and create pull secrets. Requests are
|
||||
/// forwarded to the Clusters microservice which has direct Harbor API access.
|
||||
/// </summary>
|
||||
public static class HarborProxyEndpoints
|
||||
{
|
||||
public static void Map(IEndpointRouteBuilder app)
|
||||
{
|
||||
RouteGroupBuilder group = app.MapGroup("/api/harbor")
|
||||
.RequireAuthorization()
|
||||
.DisableAntiforgery();
|
||||
|
||||
// GET /api/harbor/{clusterId}/projects — list Harbor projects on a cluster.
|
||||
|
||||
group.MapGet("{clusterId:guid}/projects", async (
|
||||
Guid clusterId,
|
||||
IHttpClientFactory httpClientFactory,
|
||||
CancellationToken ct) =>
|
||||
{
|
||||
HttpClient client = httpClientFactory.CreateClient("ClustersApi");
|
||||
HttpResponseMessage response = await client.GetAsync(
|
||||
$"/api/clusters/{clusterId}/harbor/projects", ct);
|
||||
|
||||
string body = await response.Content.ReadAsStringAsync(ct);
|
||||
return Results.Content(body, "application/json", statusCode: (int)response.StatusCode);
|
||||
});
|
||||
|
||||
// POST /api/harbor/{clusterId}/pull-secret — create a Harbor pull secret.
|
||||
|
||||
group.MapPost("{clusterId:guid}/pull-secret", async (
|
||||
Guid clusterId,
|
||||
CreateHarborPullSecretProxyRequest request,
|
||||
IHttpClientFactory httpClientFactory,
|
||||
CancellationToken ct) =>
|
||||
{
|
||||
HttpClient client = httpClientFactory.CreateClient("ClustersApi");
|
||||
HttpResponseMessage response = await client.PostAsJsonAsync(
|
||||
$"/api/clusters/{clusterId}/harbor/pull-secret", request, ct);
|
||||
|
||||
string body = await response.Content.ReadAsStringAsync(ct);
|
||||
return Results.Content(body, "application/json", statusCode: (int)response.StatusCode);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public record CreateHarborPullSecretProxyRequest(
|
||||
string ProjectName,
|
||||
string AppSlug,
|
||||
string TargetNamespace);
|
||||
Reference in New Issue
Block a user