@appforge-ci/admin-cli 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/agents.d.ts +19 -0
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +63 -2
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/agents.test.js +46 -1
- package/dist/commands/agents.test.js.map +1 -1
- package/dist/commands/vpn-hosts.d.ts +10 -0
- package/dist/commands/vpn-hosts.d.ts.map +1 -0
- package/dist/commands/vpn-hosts.js +107 -0
- package/dist/commands/vpn-hosts.js.map +1 -0
- package/dist/commands/vpn-hosts.test.d.ts +2 -0
- package/dist/commands/vpn-hosts.test.d.ts.map +1 -0
- package/dist/commands/vpn-hosts.test.js +68 -0
- package/dist/commands/vpn-hosts.test.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -21,6 +21,25 @@ export declare function formatVpnState(a: {
|
|
|
21
21
|
* command wiring is testable without a config file or process.exit.
|
|
22
22
|
*/
|
|
23
23
|
export declare function setVpnApprovedForAgent(api: Pick<ApiClient, "listAgents" | "setAgentVpnApproved">, orgId: string, agentId: string, approved: boolean): Promise<string | null>;
|
|
24
|
+
/**
|
|
25
|
+
* The capability part of an `agents list` row (migrations/0043): what the Mac
|
|
26
|
+
* reported it can enforce and the operator's dedication taint. Prints nothing
|
|
27
|
+
* for the default (no features, no enforcement, shared Mac) so the common row
|
|
28
|
+
* is unchanged. Exported for direct testing.
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatCapabilityState(a: {
|
|
31
|
+
vpnFeatures?: string;
|
|
32
|
+
enforcementLevel?: string;
|
|
33
|
+
dedicatedOrgId?: string | null;
|
|
34
|
+
coHostedRunner?: number | null;
|
|
35
|
+
}): string;
|
|
36
|
+
/**
|
|
37
|
+
* Shared body of `dedicate --org` / `dedicate --clear`: confirms the agent
|
|
38
|
+
* exists in this org, sets or clears `Agent.dedicatedOrgId` through the
|
|
39
|
+
* platform-admin route, and returns the line to print — or null when the agent
|
|
40
|
+
* isn't in the org. `dedicatedOrgId: null` clears. Exported for testing.
|
|
41
|
+
*/
|
|
42
|
+
export declare function setDedicatedOrgForAgent(api: Pick<ApiClient, "listAgents" | "setAgentDedicatedOrg">, orgId: string, agentId: string, dedicatedOrgId: string | null): Promise<string | null>;
|
|
24
43
|
/**
|
|
25
44
|
* Polls `GET /agents/:agentId/commands` for one specific command (an
|
|
26
45
|
* UPDATE_AGENT the CLI just sent) until it leaves `pending`/`acked` for a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,SAAS,
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,SAAS,EAQT,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAa3B;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAIvF;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,qBAAqB,CAAC,EAC1D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,GAAG,MAAM,CAYT;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,sBAAsB,CAAC,EAC3D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB;AAUD;;;;;;;;;;;;;GAaG;AACH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG9D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,GAAG,gBAAgB,CAAC,GACvG,MAAM,CAIR;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,MAAgC,GAC/C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAS9B;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAydtD"}
|
package/dist/commands/agents.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
2
|
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
-
import { ApiClient, computeAgentReadiness, effectiveAgentStatus, isAgentVersionCurrent, parseActiveBuildIds, CURRENT_AGENT_VERSION, } from "@appforge-ci/core";
|
|
3
|
+
import { ApiClient, computeAgentReadiness, effectiveAgentStatus, isAgentVersionCurrent, parseActiveBuildIds, parseEnforcementLevel, parseVpnFeatures, CURRENT_AGENT_VERSION, } from "@appforge-ci/core";
|
|
4
4
|
import { collectSystemInfo } from "@appforge-ci/agent/dist/lib/system-info.js";
|
|
5
5
|
import { saveConfig as saveAgentConfig, configPath as agentConfigPath } from "@appforge-ci/agent/dist/lib/config.js";
|
|
6
6
|
import { loadAdminCliConfig } from "../lib/config.js";
|
|
@@ -44,6 +44,47 @@ export async function setVpnApprovedForAgent(api, orgId, agentId, approved) {
|
|
|
44
44
|
const note = target.vpnCapable === 1 ? "" : " It reports no verified WireGuard helper yet, so it won't take VPN builds until it does.";
|
|
45
45
|
return `VPN duty is now APPROVED for "${target.name}" (${agentId}) — it may now be leased orgs' VPN builds and receive their tunnel keys.${note}`;
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* The capability part of an `agents list` row (migrations/0043): what the Mac
|
|
49
|
+
* reported it can enforce and the operator's dedication taint. Prints nothing
|
|
50
|
+
* for the default (no features, no enforcement, shared Mac) so the common row
|
|
51
|
+
* is unchanged. Exported for direct testing.
|
|
52
|
+
*/
|
|
53
|
+
export function formatCapabilityState(a) {
|
|
54
|
+
const parts = [];
|
|
55
|
+
const features = parseVpnFeatures(a.vpnFeatures);
|
|
56
|
+
if (features.length > 0)
|
|
57
|
+
parts.push(`features ${features.join(",")}`);
|
|
58
|
+
const level = parseEnforcementLevel(a.enforcementLevel);
|
|
59
|
+
if (level !== "none")
|
|
60
|
+
parts.push(`enforcement ${level}`);
|
|
61
|
+
if (a.dedicatedOrgId)
|
|
62
|
+
parts.push(`DEDICATED to ${a.dedicatedOrgId}`);
|
|
63
|
+
// Only the states that matter: a runner found, or (on a dedicated Mac) not yet
|
|
64
|
+
// reported, which blocks dedicating / leasing a dedicated tunnel's builds.
|
|
65
|
+
if (a.coHostedRunner === 1)
|
|
66
|
+
parts.push("GITHUB RUNNER CO-HOSTED");
|
|
67
|
+
else if (a.dedicatedOrgId && a.coHostedRunner === null)
|
|
68
|
+
parts.push("runner state unreported");
|
|
69
|
+
return parts.length > 0 ? ` ${parts.join(" ")}` : "";
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Shared body of `dedicate --org` / `dedicate --clear`: confirms the agent
|
|
73
|
+
* exists in this org, sets or clears `Agent.dedicatedOrgId` through the
|
|
74
|
+
* platform-admin route, and returns the line to print — or null when the agent
|
|
75
|
+
* isn't in the org. `dedicatedOrgId: null` clears. Exported for testing.
|
|
76
|
+
*/
|
|
77
|
+
export async function setDedicatedOrgForAgent(api, orgId, agentId, dedicatedOrgId) {
|
|
78
|
+
const { agents: fleet } = await api.listAgents(orgId);
|
|
79
|
+
const target = fleet.find((a) => a.id === agentId);
|
|
80
|
+
if (!target)
|
|
81
|
+
return null;
|
|
82
|
+
await api.setAgentDedicatedOrg(orgId, agentId, dedicatedOrgId);
|
|
83
|
+
if (dedicatedOrgId === null) {
|
|
84
|
+
return `"${target.name}" (${agentId}) is no longer dedicated — it takes any org's builds again.`;
|
|
85
|
+
}
|
|
86
|
+
return `"${target.name}" (${agentId}) is now DEDICATED to org ${dedicatedOrgId}: no other org's builds (VPN or not) will be leased to it from now on. Builds already running are not interrupted — drain it first if it must be free of other orgs' work.`;
|
|
87
|
+
}
|
|
47
88
|
function client() {
|
|
48
89
|
const cfg = loadAdminCliConfig();
|
|
49
90
|
return {
|
|
@@ -144,7 +185,7 @@ export function registerAgentsCommands(program) {
|
|
|
144
185
|
// See docs/fleet-management.md's "Concurrent builds" section —
|
|
145
186
|
// one Mac mini can run more than one build at once now.
|
|
146
187
|
const slots = `${parseActiveBuildIds(a.activeBuildIds).length}/${a.maxConcurrentBuilds}`;
|
|
147
|
-
console.log(`${a.id} ${a.name.padEnd(20)} ${status.padEnd(10)} slots ${slots.padEnd(5)} ${(ready ? "Ready" : "NotReady").padEnd(9)} cpu ${a.cpuUsagePercent}% mem ${a.memUsagePercent}% disk free ${a.diskFreeGb}GB ${formatVpnState(a)} last seen ${a.lastSeenAt}${versionSuffix}`);
|
|
188
|
+
console.log(`${a.id} ${a.name.padEnd(20)} ${status.padEnd(10)} slots ${slots.padEnd(5)} ${(ready ? "Ready" : "NotReady").padEnd(9)} cpu ${a.cpuUsagePercent}% mem ${a.memUsagePercent}% disk free ${a.diskFreeGb}GB ${formatVpnState(a)} ${formatCapabilityState(a)} last seen ${a.lastSeenAt}${versionSuffix}`);
|
|
148
189
|
}
|
|
149
190
|
if (agents.length === 0)
|
|
150
191
|
console.log("No Mac minis enrolled yet. Run 'appforge-admin agents add-mac' on the Mac mini you want to add.");
|
|
@@ -452,6 +493,26 @@ export function registerAgentsCommands(program) {
|
|
|
452
493
|
console.log(line);
|
|
453
494
|
});
|
|
454
495
|
}
|
|
496
|
+
agents
|
|
497
|
+
.command("dedicate <agentId>")
|
|
498
|
+
.description("Dedicate this Mac to ONE org (--org <orgId>): the scheduler then refuses every other org's builds on it, VPN or not (a taint; needed for regulated VPN tenants). Refused while a GitHub Actions runner shares the machine, or until the agent has reported that none does. --clear returns it to the shared pool. Only changes who gets NEW leases. Platform admins only (see docs/fleet-management.md)")
|
|
499
|
+
.option("--org <orgId>", "The org this Mac serves exclusively")
|
|
500
|
+
.option("--clear", "Remove the dedication")
|
|
501
|
+
.action(async (agentId, opts) => {
|
|
502
|
+
if (!opts.clear === !opts.org) {
|
|
503
|
+
// Both or neither: no single unambiguous intent. Same "require exactly
|
|
504
|
+
// one" shape `allow-remote-control`'s --on/--off check uses.
|
|
505
|
+
console.error("Specify exactly one of --org <orgId> or --clear.");
|
|
506
|
+
process.exit(1);
|
|
507
|
+
}
|
|
508
|
+
const { cfg, api } = client();
|
|
509
|
+
const line = await setDedicatedOrgForAgent(api, cfg.orgId, agentId, opts.clear ? null : opts.org);
|
|
510
|
+
if (line === null) {
|
|
511
|
+
console.error(`No agent ${agentId} in this org. 'appforge-admin agents list' shows the current fleet.`);
|
|
512
|
+
process.exit(1);
|
|
513
|
+
}
|
|
514
|
+
console.log(line);
|
|
515
|
+
});
|
|
455
516
|
agents
|
|
456
517
|
.command("set-device-stream-hostname <agentId> [hostname]")
|
|
457
518
|
.description("Point this agent's VNC \"Connect\" sessions at its own device-stream tunnel hostname — needed once per Mac as soon as more than one agent in the org runs device-stream (a Cloudflare Tunnel only ever resolves to the one Mac that owns its credentials). Run infra/mac-mini-setup/setup-device-stream-tunnel.sh <hostname> on that Mac first, then this. Omit [hostname] to clear it (falls back to the org's global DEVICE_STREAM_WS_URL).")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import "../test-support/home-sandbox.js";
|
|
3
3
|
import { test } from "node:test";
|
|
4
4
|
import assert from "node:assert/strict";
|
|
5
|
-
import { waitForCommandResolution, parseTimeoutSeconds, formatAgentCommandLine, formatVpnState, setVpnApprovedForAgent } from "./agents.js";
|
|
5
|
+
import { waitForCommandResolution, parseTimeoutSeconds, formatAgentCommandLine, formatVpnState, setVpnApprovedForAgent, formatCapabilityState, setDedicatedOrgForAgent } from "./agents.js";
|
|
6
6
|
/**
|
|
7
7
|
* `parseTimeoutSeconds` guards `agents update`'s `--timeout` option
|
|
8
8
|
* before it ever reaches `waitForCommandResolution`'s deadline math: a
|
|
@@ -166,4 +166,49 @@ test("setVpnApprovedForAgent returns null and writes nothing for an agent not in
|
|
|
166
166
|
assert.equal(await setVpnApprovedForAgent(api, "org-1", "nope", true), null);
|
|
167
167
|
assert.deepEqual(calls, []);
|
|
168
168
|
});
|
|
169
|
+
/** Capability negotiation (migrations/0043): `agents list` surfaces features/enforcement/dedication, `dedicate` sets the taint. */
|
|
170
|
+
test("formatCapabilityState prints nothing for the default row, and only what is non-default otherwise", () => {
|
|
171
|
+
assert.equal(formatCapabilityState({}), "");
|
|
172
|
+
assert.equal(formatCapabilityState({ vpnFeatures: "[]", enforcementLevel: "none", dedicatedOrgId: null }), "");
|
|
173
|
+
assert.equal(formatCapabilityState({ vpnFeatures: '["ssh-v1","egress-policy-v1"]', enforcementLevel: "sandbox", dedicatedOrgId: "org-9" }), " features egress-policy-v1,ssh-v1 enforcement sandbox DEDICATED to org-9");
|
|
174
|
+
assert.equal(formatCapabilityState({ enforcementLevel: "bogus", vpnFeatures: "garbage" }), "");
|
|
175
|
+
});
|
|
176
|
+
test("formatCapabilityState flags a co-hosted GitHub runner, and an unreported runner state only on a dedicated Mac", () => {
|
|
177
|
+
assert.equal(formatCapabilityState({ coHostedRunner: 0 }), "");
|
|
178
|
+
assert.equal(formatCapabilityState({ coHostedRunner: null }), "", "an ordinary Mac that has not reported is not interesting");
|
|
179
|
+
assert.equal(formatCapabilityState({ coHostedRunner: 1 }), " GITHUB RUNNER CO-HOSTED");
|
|
180
|
+
assert.equal(formatCapabilityState({ dedicatedOrgId: "org-9", coHostedRunner: null }), " DEDICATED to org-9 runner state unreported");
|
|
181
|
+
assert.equal(formatCapabilityState({ dedicatedOrgId: "org-9", coHostedRunner: 0 }), " DEDICATED to org-9");
|
|
182
|
+
});
|
|
183
|
+
function dedicateApi(agents) {
|
|
184
|
+
const calls = [];
|
|
185
|
+
const api = {
|
|
186
|
+
async listAgents() {
|
|
187
|
+
return { agents };
|
|
188
|
+
},
|
|
189
|
+
async setAgentDedicatedOrg(orgId, agentId, dedicatedOrgId) {
|
|
190
|
+
calls.push([orgId, agentId, dedicatedOrgId]);
|
|
191
|
+
return { agentId, dedicatedOrgId };
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
return { api, calls };
|
|
195
|
+
}
|
|
196
|
+
test("setDedicatedOrgForAgent dedicates via the API and says only new leases are affected", async () => {
|
|
197
|
+
const { api, calls } = dedicateApi([{ id: "a1", name: "mini-1" }]);
|
|
198
|
+
const line = await setDedicatedOrgForAgent(api, "org-1", "a1", "org-9");
|
|
199
|
+
assert.deepEqual(calls, [["org-1", "a1", "org-9"]]);
|
|
200
|
+
assert.match(line, /DEDICATED to org org-9/);
|
|
201
|
+
assert.match(line, /not interrupted/);
|
|
202
|
+
});
|
|
203
|
+
test("setDedicatedOrgForAgent --clear sends null", async () => {
|
|
204
|
+
const { api, calls } = dedicateApi([{ id: "a1", name: "mini-1" }]);
|
|
205
|
+
const line = await setDedicatedOrgForAgent(api, "org-1", "a1", null);
|
|
206
|
+
assert.deepEqual(calls, [["org-1", "a1", null]]);
|
|
207
|
+
assert.match(line, /no longer dedicated/);
|
|
208
|
+
});
|
|
209
|
+
test("setDedicatedOrgForAgent returns null and writes nothing for an agent not in the org", async () => {
|
|
210
|
+
const { api, calls } = dedicateApi([{ id: "a1", name: "mini-1" }]);
|
|
211
|
+
assert.equal(await setDedicatedOrgForAgent(api, "org-1", "nope", "org-9"), null);
|
|
212
|
+
assert.deepEqual(calls, []);
|
|
213
|
+
});
|
|
169
214
|
//# sourceMappingURL=agents.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.test.js","sourceRoot":"","sources":["../../src/commands/agents.test.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,iCAAiC,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"agents.test.js","sourceRoot":"","sources":["../../src/commands/agents.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import { type VpnHostPlacement, type VpnHostPolicy } from "@appforge-ci/core";
|
|
3
|
+
/** Multi-line rendering of a tunnel's placement. Exported for testing. */
|
|
4
|
+
export declare function formatHostPlacement(p: VpnHostPlacement): string;
|
|
5
|
+
/** Validates the `policy` positional. Exported for testing. */
|
|
6
|
+
export declare function parseHostPolicyArg(raw: string): VpnHostPolicy | null;
|
|
7
|
+
/** The note printed after a change of policy. Exported for testing. */
|
|
8
|
+
export declare function policyChangeNote(policy: VpnHostPolicy): string;
|
|
9
|
+
export declare function registerVpnHostsCommands(program: Command): void;
|
|
10
|
+
//# sourceMappingURL=vpn-hosts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-hosts.d.ts","sourceRoot":"","sources":["../../src/commands/vpn-hosts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAuD,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA6BnI,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAiB/D;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAEpE;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAS9D;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,QAgDxD"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { ApiClient, VPN_HOST_POLICIES, VPN_HOST_WAIT_SECONDS } from "@appforge-ci/core";
|
|
2
|
+
import { loadAdminCliConfig } from "../lib/config.js";
|
|
3
|
+
/**
|
|
4
|
+
* `appforge-admin vpn-hosts ...` — which Macs may build a customer org's VPN
|
|
5
|
+
* tunnel (host pinning, migrations/0047). Platform admins only: the commands
|
|
6
|
+
* talk to apps/admin-api, which a customer cannot reach, and the customer-facing
|
|
7
|
+
* `appforge vpn status` shows the policy read-only.
|
|
8
|
+
*
|
|
9
|
+
* The orgs here are two different things, and the commands say so:
|
|
10
|
+
* <customerOrgId> the org that owns the tunnel (the customer);
|
|
11
|
+
* the fleet org the org your Macs are enrolled in (this CLI's configured org).
|
|
12
|
+
*/
|
|
13
|
+
function client() {
|
|
14
|
+
const cfg = loadAdminCliConfig();
|
|
15
|
+
return {
|
|
16
|
+
cfg,
|
|
17
|
+
api: new ApiClient({ baseUrl: cfg.apiUrl, token: cfg.token, adminApiUrl: cfg.adminApiUrl }),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const POLICY_MEANING = {
|
|
21
|
+
shared: "any approved VPN-capable Mac (exclusive lock only: one org's tunnel at a time)",
|
|
22
|
+
pinned: "only the Macs pinned to this tunnel (node affinity; they may still run other orgs' non-VPN builds)",
|
|
23
|
+
dedicated: "only pinned Macs that are ALSO dedicated to this org (`agents dedicate`) and report no co-hosted GitHub Actions runner. This is scheduling exclusivity on a shared macOS user, not hardware isolation or a compliance attestation",
|
|
24
|
+
};
|
|
25
|
+
/** Multi-line rendering of a tunnel's placement. Exported for testing. */
|
|
26
|
+
export function formatHostPlacement(p) {
|
|
27
|
+
const lines = [
|
|
28
|
+
`Tunnel "${p.tunnelName}" of org ${p.orgId} (status ${p.tunnelStatus})`,
|
|
29
|
+
`Host policy: ${p.hostPolicy} — ${POLICY_MEANING[p.hostPolicy]}`,
|
|
30
|
+
];
|
|
31
|
+
if (p.hosts.length === 0)
|
|
32
|
+
lines.push("Pinned Macs: none");
|
|
33
|
+
else {
|
|
34
|
+
lines.push(`Pinned Macs (${p.hosts.length}):`);
|
|
35
|
+
for (const h of p.hosts) {
|
|
36
|
+
const runner = h.coHostedRunner === 1 ? "runner CO-HOSTED" : h.coHostedRunner === 0 ? "no runner" : "runner unreported";
|
|
37
|
+
const taint = h.dedicatedOrgId ? `dedicated to ${h.dedicatedOrgId}` : "shared";
|
|
38
|
+
lines.push(` ${h.agentId} ${h.name.padEnd(20)} ${h.ready ? "READY " : "NOT READY"} ${taint} ${runner} last seen ${h.lastSeenAt}`);
|
|
39
|
+
for (const reason of h.notReadyReasons)
|
|
40
|
+
lines.push(` - ${reason}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
for (const w of p.warnings)
|
|
44
|
+
lines.push(`WARNING: ${w}`);
|
|
45
|
+
return lines.join("\n");
|
|
46
|
+
}
|
|
47
|
+
/** Validates the `policy` positional. Exported for testing. */
|
|
48
|
+
export function parseHostPolicyArg(raw) {
|
|
49
|
+
return VPN_HOST_POLICIES.includes(raw) ? raw : null;
|
|
50
|
+
}
|
|
51
|
+
/** The note printed after a change of policy. Exported for testing. */
|
|
52
|
+
export function policyChangeNote(policy) {
|
|
53
|
+
switch (policy) {
|
|
54
|
+
case "shared":
|
|
55
|
+
return "Builds of this tunnel may now lease to any approved VPN-capable Mac. Existing pins are kept but have no effect.";
|
|
56
|
+
case "pinned":
|
|
57
|
+
return `New VPN builds of this tunnel lease only to its pinned Macs. A build waiting ${VPN_HOST_WAIT_SECONDS / 60} minutes with no ready pinned Mac fails and is refunded. Running builds are not moved.`;
|
|
58
|
+
case "dedicated":
|
|
59
|
+
return `New VPN builds of this tunnel lease only to pinned Macs that are dedicated to this org with no co-hosted runner. A build waiting ${VPN_HOST_WAIT_SECONDS / 60} minutes with no such Mac fails and is refunded. Running builds are not moved. See docs/fleet-management.md for what 'dedicated' does and does not mean.`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function registerVpnHostsCommands(program) {
|
|
63
|
+
const hosts = program
|
|
64
|
+
.command("vpn-hosts")
|
|
65
|
+
.description("Pin a customer org's VPN tunnel to specific Macs and set its host policy (platform admins only; see docs/fleet-management.md)");
|
|
66
|
+
hosts
|
|
67
|
+
.command("show <customerOrgId>")
|
|
68
|
+
.description("Show the tunnel's host policy, its pinned Macs, and whether each is ready to take its builds")
|
|
69
|
+
.action(async (customerOrgId) => {
|
|
70
|
+
const { cfg, api } = client();
|
|
71
|
+
const { placement } = await api.getVpnHostPlacement(cfg.orgId, customerOrgId);
|
|
72
|
+
console.log(formatHostPlacement(placement));
|
|
73
|
+
});
|
|
74
|
+
hosts
|
|
75
|
+
.command("policy <customerOrgId> <policy>")
|
|
76
|
+
.description(`Set the tunnel's host policy: ${VPN_HOST_POLICIES.join(" | ")}. Only changes where NEW builds lease`)
|
|
77
|
+
.action(async (customerOrgId, rawPolicy) => {
|
|
78
|
+
const policy = parseHostPolicyArg(rawPolicy);
|
|
79
|
+
if (!policy) {
|
|
80
|
+
console.error(`Unknown policy '${rawPolicy}': use one of ${VPN_HOST_POLICIES.join(", ")}.`);
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
const { cfg, api } = client();
|
|
84
|
+
const { placement } = await api.setVpnHostPolicy(cfg.orgId, customerOrgId, policy);
|
|
85
|
+
console.log(policyChangeNote(policy));
|
|
86
|
+
console.log(formatHostPlacement(placement));
|
|
87
|
+
});
|
|
88
|
+
hosts
|
|
89
|
+
.command("pin <customerOrgId> <agentId>")
|
|
90
|
+
.description("Pin a Mac to the org's tunnel (it must be one of this fleet's Macs; refused if it is dedicated to a different org)")
|
|
91
|
+
.action(async (customerOrgId, agentId) => {
|
|
92
|
+
const { cfg, api } = client();
|
|
93
|
+
const { placement } = await api.pinVpnHost(cfg.orgId, customerOrgId, agentId);
|
|
94
|
+
console.log(`Pinned ${agentId}.`);
|
|
95
|
+
console.log(formatHostPlacement(placement));
|
|
96
|
+
});
|
|
97
|
+
hosts
|
|
98
|
+
.command("unpin <customerOrgId> <agentId>")
|
|
99
|
+
.description("Remove a Mac from the org's tunnel. Builds already running there are not interrupted")
|
|
100
|
+
.action(async (customerOrgId, agentId) => {
|
|
101
|
+
const { cfg, api } = client();
|
|
102
|
+
const { placement } = await api.unpinVpnHost(cfg.orgId, customerOrgId, agentId);
|
|
103
|
+
console.log(`Unpinned ${agentId}.`);
|
|
104
|
+
console.log(formatHostPlacement(placement));
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=vpn-hosts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-hosts.js","sourceRoot":"","sources":["../../src/commands/vpn-hosts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-hosts.test.d.ts","sourceRoot":"","sources":["../../src/commands/vpn-hosts.test.ts"],"names":[],"mappings":"AACA,OAAO,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Must stay the FIRST import — see agents.test.ts.
|
|
2
|
+
import "../test-support/home-sandbox.js";
|
|
3
|
+
import { test } from "node:test";
|
|
4
|
+
import assert from "node:assert/strict";
|
|
5
|
+
import { Command } from "commander";
|
|
6
|
+
import { formatHostPlacement, parseHostPolicyArg, policyChangeNote, registerVpnHostsCommands } from "./vpn-hosts.js";
|
|
7
|
+
const placement = (over = {}) => ({
|
|
8
|
+
tunnelId: "t1",
|
|
9
|
+
orgId: "org-cust",
|
|
10
|
+
tunnelName: "HQ",
|
|
11
|
+
tunnelStatus: "ready",
|
|
12
|
+
hostPolicy: "dedicated",
|
|
13
|
+
hosts: [
|
|
14
|
+
{ agentId: "m1", name: "mini-1", ready: true, notReadyReasons: [], vpnApproved: true, dedicatedOrgId: "org-cust", coHostedRunner: 0, lastSeenAt: "2026-10-02 10:00:00" },
|
|
15
|
+
{ agentId: "m2", name: "mini-2", ready: false, notReadyReasons: ["a GitHub Actions runner shares this machine"], vpnApproved: true, dedicatedOrgId: null, coHostedRunner: 1, lastSeenAt: "2026-10-02 10:00:00" },
|
|
16
|
+
],
|
|
17
|
+
warnings: [],
|
|
18
|
+
...over,
|
|
19
|
+
});
|
|
20
|
+
test("formatHostPlacement shows the policy with its honest meaning, each Mac's readiness and the reasons it is not ready", () => {
|
|
21
|
+
const out = formatHostPlacement(placement());
|
|
22
|
+
assert.match(out, /Host policy: dedicated/);
|
|
23
|
+
assert.match(out, /scheduling exclusivity on a shared macOS user, not hardware isolation or a compliance attestation/);
|
|
24
|
+
assert.match(out, /m1 .*READY .*dedicated to org-cust .*no runner/);
|
|
25
|
+
assert.match(out, /m2 .*NOT READY .*shared .*runner CO-HOSTED/);
|
|
26
|
+
assert.match(out, /- a GitHub Actions runner shares this machine/);
|
|
27
|
+
});
|
|
28
|
+
test("formatHostPlacement: no pinned Macs, and warnings are printed", () => {
|
|
29
|
+
const out = formatHostPlacement(placement({ hosts: [], hostPolicy: "pinned", warnings: ["no Mac is pinned"] }));
|
|
30
|
+
assert.match(out, /Pinned Macs: none/);
|
|
31
|
+
assert.match(out, /WARNING: no Mac is pinned/);
|
|
32
|
+
assert.match(formatHostPlacement(placement({ hosts: [{ ...placement().hosts[0], coHostedRunner: null }] })), /runner unreported/);
|
|
33
|
+
});
|
|
34
|
+
test("parseHostPolicyArg accepts exactly the three policies", () => {
|
|
35
|
+
for (const p of ["shared", "pinned", "dedicated"])
|
|
36
|
+
assert.equal(parseHostPolicyArg(p), p);
|
|
37
|
+
for (const bad of ["", "Shared", "exclusive", "dedicated "])
|
|
38
|
+
assert.equal(parseHostPolicyArg(bad), null);
|
|
39
|
+
});
|
|
40
|
+
test("policyChangeNote says builds wait ten minutes and are refunded, that running builds are not moved, and does not over-claim for dedicated", () => {
|
|
41
|
+
assert.match(policyChangeNote("pinned"), /10 minutes.*refunded.*not moved/);
|
|
42
|
+
assert.match(policyChangeNote("dedicated"), /10 minutes.*refunded.*not moved/);
|
|
43
|
+
assert.match(policyChangeNote("dedicated"), /does and does not mean/);
|
|
44
|
+
assert.doesNotMatch(policyChangeNote("dedicated"), /compliant|isolated|secure/i);
|
|
45
|
+
assert.match(policyChangeNote("shared"), /any approved/);
|
|
46
|
+
});
|
|
47
|
+
test("the vpn-hosts command group registers show / policy / pin / unpin, and an unknown policy exits 1 before any network call", async () => {
|
|
48
|
+
const program = new Command();
|
|
49
|
+
registerVpnHostsCommands(program);
|
|
50
|
+
const group = program.commands.find((c) => c.name() === "vpn-hosts");
|
|
51
|
+
assert.deepEqual(group.commands.map((c) => c.name()).sort(), ["pin", "policy", "show", "unpin"]);
|
|
52
|
+
const errors = [];
|
|
53
|
+
const origErr = console.error;
|
|
54
|
+
const origExit = process.exit;
|
|
55
|
+
console.error = (m) => void errors.push(String(m));
|
|
56
|
+
process.exit = (code) => {
|
|
57
|
+
throw new Error(`exit ${code}`);
|
|
58
|
+
};
|
|
59
|
+
try {
|
|
60
|
+
await assert.rejects(group.parseAsync(["policy", "org-cust", "exclusive"], { from: "user" }), /exit 1/);
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
console.error = origErr;
|
|
64
|
+
process.exit = origExit;
|
|
65
|
+
}
|
|
66
|
+
assert.match(errors.join("\n"), /Unknown policy 'exclusive'/);
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=vpn-hosts.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-hosts.test.js","sourceRoot":"","sources":["../../src/commands/vpn-hosts.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { Command } from "commander";
|
|
|
3
3
|
import { apiErrorMessage } from "@appforge-ci/core";
|
|
4
4
|
import { registerLoginCommand } from "./commands/login.js";
|
|
5
5
|
import { registerAgentsCommands } from "./commands/agents.js";
|
|
6
|
+
import { registerVpnHostsCommands } from "./commands/vpn-hosts.js";
|
|
6
7
|
/**
|
|
7
8
|
* appforge-admin — fleet management for the AppForge platform operator.
|
|
8
9
|
*
|
|
@@ -22,6 +23,7 @@ program
|
|
|
22
23
|
.version("0.1.0");
|
|
23
24
|
registerLoginCommand(program);
|
|
24
25
|
registerAgentsCommands(program);
|
|
26
|
+
registerVpnHostsCommands(program);
|
|
25
27
|
program.parseAsync(process.argv).catch((err) => {
|
|
26
28
|
// Preserves the original "print whatever was thrown" fallback for a
|
|
27
29
|
// non-Error throw (rare, but not this fix's concern) — only the
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,uFAAuF,CAAC;KACpG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAElC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,oEAAoE;IACpE,gEAAgE;IAChE,2DAA2D;IAC3D,sEAAsE;IACtE,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appforge-ci/admin-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"chalk": "^5.3.0",
|
|
17
17
|
"commander": "^12.1.0",
|
|
18
|
-
"@appforge-ci/core": "0.
|
|
19
|
-
"@appforge-ci/agent": "0.
|
|
18
|
+
"@appforge-ci/core": "0.3.0",
|
|
19
|
+
"@appforge-ci/agent": "0.3.0"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@types/node": "^20.16.5",
|