fix: use RWO for single-replica Longhorn volumes
This commit is contained in:
@@ -38,6 +38,7 @@ describe("volume conversion", () => {
|
||||
expect(claims[0]).toMatchObject({
|
||||
metadata: { name: "project-data", namespace: "project" },
|
||||
spec: {
|
||||
accessModes: ["ReadWriteMany"],
|
||||
resources: { requests: { storage: "1Gi" } },
|
||||
storageClassName: expect.stringMatching(
|
||||
/^kuber-longhorn-[a-f0-9]{12}$/,
|
||||
@@ -64,6 +65,16 @@ describe("volume conversion", () => {
|
||||
]);
|
||||
});
|
||||
|
||||
test("renders single-replica Longhorn volumes as ReadWriteOnce", () => {
|
||||
const service = { volumes: ["data(20Gi on 1 fast):/data"] } as Service;
|
||||
const [claim] = volumesToPvc("project", service);
|
||||
const [storageClass] = volumesToStorageClasses(service);
|
||||
|
||||
expect(claim?.spec?.accessModes).toEqual(["ReadWriteOnce"]);
|
||||
expect(claim?.spec?.storageClassName).toBe(storageClass?.metadata?.name);
|
||||
expect(storageClass?.parameters?.numberOfReplicas).toBe("1");
|
||||
});
|
||||
|
||||
test("parses inline storage sizing and placement", () => {
|
||||
const [claim] = volumesToPvc("project", {
|
||||
volumes: ["data(20Gi on 3 fast,archive):/data"],
|
||||
@@ -71,6 +82,7 @@ describe("volume conversion", () => {
|
||||
expect(claim).toMatchObject({
|
||||
metadata: { name: "project-data" },
|
||||
spec: {
|
||||
accessModes: ["ReadWriteMany"],
|
||||
resources: { requests: { storage: "20Gi" } },
|
||||
storageClassName: expect.stringMatching(/^kuber-longhorn-/),
|
||||
},
|
||||
@@ -103,11 +115,29 @@ describe("volume conversion", () => {
|
||||
} as ComposeSpecification["volumes"],
|
||||
);
|
||||
expect(claim?.spec).toMatchObject({
|
||||
accessModes: ["ReadWriteMany"],
|
||||
resources: { requests: { storage: "50Gi" } },
|
||||
storageClassName: expect.stringMatching(/^kuber-longhorn-/),
|
||||
});
|
||||
});
|
||||
|
||||
test("uses top-level single-replica policy for the PVC and StorageClass", () => {
|
||||
const service = { volumes: ["data:/data"] } as Service;
|
||||
const volumes = {
|
||||
data: { "x-replicaCount": 1 },
|
||||
} as ComposeSpecification["volumes"];
|
||||
const [claim] = volumesToPvc("project", service, process.cwd(), volumes);
|
||||
const [storageClass] = volumesToStorageClasses(
|
||||
service,
|
||||
process.cwd(),
|
||||
volumes,
|
||||
);
|
||||
|
||||
expect(claim?.spec?.accessModes).toEqual(["ReadWriteOnce"]);
|
||||
expect(claim?.spec?.storageClassName).toBe(storageClass?.metadata?.name);
|
||||
expect(storageClass?.parameters?.numberOfReplicas).toBe("1");
|
||||
});
|
||||
|
||||
test("does not create PVCs for anonymous, tmpfs, or managed claims", () => {
|
||||
expect(
|
||||
volumesToPvc("project", {
|
||||
|
||||
Reference in New Issue
Block a user