fix: expand g14 registry gc retention
This commit is contained in:
+30
-2
@@ -90,6 +90,7 @@ const defaultSshRuntimeTimeoutMs = 60_000;
|
||||
const maxSshRuntimeTimeoutMs = 60_000;
|
||||
export const sshShellCompatibilityPrelude = 'printf(){ if [ "${1+x}" = x ] && [ "$1" = "-v" ] && [ -n "${BASH_VERSION:-}" ]; then command printf "$@"; return $?; fi; if [ "${1+x}" = x ] && [ "$1" = "--" ]; then shift; fi; command printf -- "$@"; }';
|
||||
const k3sResourceKindAliases = new Set(["pod", "po", "pods", "deployment", "deploy", "deployments", "statefulset", "sts", "daemonset", "ds", "job", "jobs"]);
|
||||
const k3sPodRoutePrefixes = ["pod:", "po:", "pods:"];
|
||||
const legacyK3sOperationRouteSegments = new Set([
|
||||
"guard",
|
||||
"kubectl",
|
||||
@@ -944,7 +945,8 @@ export function parseSshRoute(target: string): ParsedSshRoute {
|
||||
return hostSshRoute(providerId, target, workspace);
|
||||
}
|
||||
if (plane !== "k3s") throw new Error(`unsupported ssh route plane: ${plane}`);
|
||||
const [first, second, third, fourth] = rest;
|
||||
const normalizedRest = normalizeK3sRouteRestSegments(rest);
|
||||
const [first, second, third, fourth] = normalizedRest;
|
||||
const operationInRoute = [first, second, third].map((segment) => segment === undefined ? undefined : routeSegmentHead(segment)).find((segment) => segment !== undefined && legacyK3sOperationRouteSegments.has(segment));
|
||||
if (operationInRoute !== undefined) throw new Error(k3sOperationInRouteMessage(target, operationInRoute));
|
||||
if (fourth !== undefined) throw new Error("ssh k3s target route supports at most provider:k3s:namespace:resource:container");
|
||||
@@ -1155,6 +1157,29 @@ function parseK3sRouteTargetSegments(rawResource: string | null, rawContainer: s
|
||||
};
|
||||
}
|
||||
|
||||
function normalizeK3sRouteRestSegments(rest: string[]): string[] {
|
||||
const normalized: string[] = [];
|
||||
for (let index = 0; index < rest.length; index += 1) {
|
||||
const current = rest[index] ?? "";
|
||||
const podPrefix = k3sPodRoutePrefixes.find((prefix) => current === prefix.slice(0, -1) || current.startsWith(prefix));
|
||||
if (podPrefix === undefined) {
|
||||
normalized.push(current);
|
||||
continue;
|
||||
}
|
||||
if (current === podPrefix.slice(0, -1)) {
|
||||
const next = rest[index + 1];
|
||||
if (next === undefined || next.length === 0) throw new Error("ssh k3s pod: route requires a pod name after pod:");
|
||||
normalized.push(`pod/${next}`);
|
||||
index += 1;
|
||||
continue;
|
||||
}
|
||||
const podName = current.slice(podPrefix.length);
|
||||
if (podName.length === 0) throw new Error("ssh k3s pod: route requires a pod name after pod:");
|
||||
normalized.push(`pod/${podName}`);
|
||||
}
|
||||
return normalized;
|
||||
}
|
||||
|
||||
function splitK3sResourceWorkspace(value: string | null): { resource: string | null; workspace: string | null } {
|
||||
if (value === null || value.length === 0) return { resource: null, workspace: null };
|
||||
const parts = value.split("/");
|
||||
@@ -1306,7 +1331,7 @@ function parseK3sRouteArgs(route: ParsedSshRoute, args: string[]): ParsedSshArgs
|
||||
return parseK3sControlPlaneOperation(route, args);
|
||||
}
|
||||
if (route.namespace === null || route.resource === null) {
|
||||
throw new Error("ssh k3s target route requires provider:k3s:<namespace>:<deployment|pod/resource>");
|
||||
throw new Error("ssh k3s target route requires provider:k3s:<namespace>:<deployment|pod:pod-name|pod/resource>");
|
||||
}
|
||||
return parseK3sTargetOperation(route, args);
|
||||
}
|
||||
@@ -1762,6 +1787,9 @@ function normalizeK3sResource(value: string): string {
|
||||
function normalizeK3sRouteResource(value: string): string {
|
||||
if (value.startsWith("deploy/")) return `deployment/${value.slice("deploy/".length)}`;
|
||||
if (value.startsWith("po/")) return `pod/${value.slice("po/".length)}`;
|
||||
if (value.startsWith("pod:")) return `pod/${value.slice("pod:".length)}`;
|
||||
if (value.startsWith("po:")) return `pod/${value.slice("po:".length)}`;
|
||||
if (value.startsWith("pods:")) return `pod/${value.slice("pods:".length)}`;
|
||||
if (value.includes("/")) return value;
|
||||
return `deployment/${value}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user