web: reset links to the default mode, and keep CN agents dial-only by default [CI]
POST /api/admin/links/reset clears every manual link setting and turns automatic linking on. In the default rules a listening node in CN ranks below a listening node elsewhere, so the CN side dials; the links are pushed again when a node's country is first resolved or changes.
This commit is contained in:
1 parent
35207a70ea
commit
7fe9775f97
8 files changed
+222
-15
No files matched your search
@@ -21,6 +21,9 @@ public static class LinkEndpoints
|
||||
group.MapGet("/links", ListAsync)
|
||||
.Api("links_list", "Every possible dialer/listener pair: whether it is linked, the manual override and whether it is connected; plus the nodes and which of them listen", Tag).Returns<LinkMatrixDto>().ProducesProblems(401, 403)
|
||||
.Requires(Capability.FleetRead);
|
||||
group.MapPost("/links/reset", ResetAsync)
|
||||
.Api("links_reset", "Drop every manual link setting and turn automatic linking on: who dials whom follows the default rules again", Tag).Returns<LinkMatrixDto>().ProducesProblems(401, 403)
|
||||
.Requires(Capability.FleetWrite);
|
||||
group.MapPut("/links/{dialer_id}/{listener_id}", SetAsync)
|
||||
.Api("links_set", "Connect a node to a listening node (enabled: true), force the link off (false), or give it back to the automatic setting (null)", Tag).Returns<LinkDto>().ProducesProblems(400, 401, 403, 404, 409, 422)
|
||||
.Requires(Capability.FleetWrite);
|
||||
@@ -29,6 +32,13 @@ public static class LinkEndpoints
|
||||
.Requires(Capability.FleetWrite);
|
||||
}
|
||||
|
||||
private static async Task<IResult> ResetAsync(AgentService agents, LinkService links, LinkRuntime runtime, TimeProvider time, CancellationToken ct)
|
||||
{
|
||||
await links.ResetAsync(ct);
|
||||
await agents.AfterAgentSetChangedAsync(ct);
|
||||
return await ListAsync(agents, links, runtime, time, ct);
|
||||
}
|
||||
|
||||
private static async Task<IResult> ListAsync(AgentService agents, LinkService links, LinkRuntime runtime, TimeProvider time, CancellationToken ct)
|
||||
{
|
||||
LinkSnapshot snapshot = await links.SnapshotAsync(ct);
|
||||
@@ -42,8 +52,8 @@ public static class LinkEndpoints
|
||||
(AgentView Dialer, AgentView Listener)? pair =
|
||||
snapshot.IsLinked(nodes[i].Agent, nodes[j].Agent) ? (nodes[i], nodes[j])
|
||||
: snapshot.IsLinked(nodes[j].Agent, nodes[i].Agent) ? (nodes[j], nodes[i])
|
||||
: LinkSnapshot.IsDefaultDialer(nodes[i].Agent, nodes[j].Agent) ? (nodes[i], nodes[j])
|
||||
: LinkSnapshot.IsDefaultDialer(nodes[j].Agent, nodes[i].Agent) ? (nodes[j], nodes[i])
|
||||
: snapshot.IsDefaultDialer(nodes[i].Agent, nodes[j].Agent) ? (nodes[i], nodes[j])
|
||||
: snapshot.IsDefaultDialer(nodes[j].Agent, nodes[i].Agent) ? (nodes[j], nodes[i])
|
||||
: null;
|
||||
if (pair is { } p)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user