fix(operator): StatefulSet 显式保留世界卷,同名旧世界卷仍在时建服回 409 world_volume_exists,文档写明孤儿卷查找与单节点约束
This commit is contained in:
11 files changed
+112
-22
No files matched your search
@@ -392,6 +392,13 @@ describe("api access-control wire shapes", () => {
|
||||
expect(humanizeError({ code: "console_unavailable" })).toMatch(/console/i);
|
||||
});
|
||||
|
||||
it("says a server name is held by a world volume left behind", async () => {
|
||||
const { humanizeError } = await import("./api");
|
||||
expect(humanizeError({ status: 409, code: "world_volume_exists" })).toBe(
|
||||
"An earlier server with that name left its world volume behind. Choose another name, or ask the operator to delete the old volume.",
|
||||
);
|
||||
});
|
||||
|
||||
it("says why a user change was refused for the caller's own or the owner account", async () => {
|
||||
const { humanizeError } = await import("./api");
|
||||
expect(humanizeError({ status: 403, code: "self_protected" })).toBe(
|
||||
|
||||
@@ -910,6 +910,10 @@ export function humanizeError(e: unknown): string {
|
||||
return t("subdomain_taken");
|
||||
case "already_exists":
|
||||
return t("already_exists");
|
||||
// A server deleted by hand left its world volume; the name stays taken so a
|
||||
// new server cannot mount the old world.
|
||||
case "world_volume_exists":
|
||||
return t("world_volume_exists");
|
||||
case "cooldown":
|
||||
return t("cooldown");
|
||||
// Access control (spec §7): the server must be Running for any RCON-backed
|
||||
|
||||
Reference in new issue
Block a user