Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions frontend/public/components/storage/__tests__/shared.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
import {
getAccessModeForProvisioner,
getProvisionerModeMapping,
getVolumeModeForProvisioner,
} from '../shared';

describe('storage shared helpers', () => {
describe('getAccessModeForProvisioner', () => {
it('includes ReadWriteOncePod for Cinder CSI Filesystem', () => {
expect(getAccessModeForProvisioner('cinder.csi.openstack.org', false, 'Filesystem')).toEqual([
'ReadWriteOnce',
'ReadWriteOncePod',
]);
});

it('includes ReadWriteOncePod for Cinder CSI Block', () => {
expect(getAccessModeForProvisioner('cinder.csi.openstack.org', false, 'Block')).toEqual([
'ReadWriteOnce',
'ReadWriteOncePod',
]);
});

it('includes ReadWriteOncePod for in-tree Cinder without duplicates', () => {
expect(getAccessModeForProvisioner('kubernetes.io/cinder', false, 'Filesystem')).toEqual([
'ReadWriteOnce',
'ReadWriteOncePod',
]);
});

it('does not enable RWOP for Manila CSI', () => {
expect(getAccessModeForProvisioner('manila.csi.openstack.org')).toEqual([
'ReadWriteOnce',
'ReadWriteMany',
'ReadOnlyMany',
]);
});

it('filters ReadOnlyMany when ignoreReadOnly is true', () => {
expect(getAccessModeForProvisioner('manila.csi.openstack.org', true, 'Filesystem')).toEqual([
'ReadWriteOnce',
'ReadWriteMany',
]);
});

it('falls back to all access modes for unknown provisioners', () => {
expect(getAccessModeForProvisioner('unknown.provisioner.example')).toEqual([
'ReadWriteOnce',
'ReadWriteMany',
'ReadOnlyMany',
'ReadWriteOncePod',
]);
});

it('does not offer RWX or ROX for Cinder CSI', () => {
const modes = getAccessModeForProvisioner('cinder.csi.openstack.org');
expect(modes).toEqual(['ReadWriteOnce', 'ReadWriteOncePod']);
expect(modes).not.toContain('ReadWriteMany');
expect(modes).not.toContain('ReadOnlyMany');
});
});

describe('getProvisionerModeMapping', () => {
it('returns Filesystem and Block mappings for Cinder CSI including RWOP', () => {
expect(getProvisionerModeMapping('cinder.csi.openstack.org')).toEqual({
Filesystem: ['ReadWriteOnce', 'ReadWriteOncePod'],
Block: ['ReadWriteOnce', 'ReadWriteOncePod'],
});
});

it('does not duplicate ReadWriteOncePod for in-tree Cinder', () => {
expect(getProvisionerModeMapping('kubernetes.io/cinder')).toEqual({
Filesystem: ['ReadWriteOnce', 'ReadWriteOncePod'],
Block: ['ReadWriteOnce', 'ReadWriteOncePod'],
});
});
});

describe('getVolumeModeForProvisioner', () => {
it('allows Filesystem and Block for Cinder CSI with ReadWriteOncePod', () => {
expect(getVolumeModeForProvisioner('cinder.csi.openstack.org', 'ReadWriteOncePod')).toEqual([
'Filesystem',
'Block',
]);
});
});
});
8 changes: 4 additions & 4 deletions frontend/public/components/storage/shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ export const provisionerAccessModeMapping: ProvisionerAccessModeMapping = Object
Block: ['ReadWriteOnce', 'ReadWriteMany', 'ReadOnlyMany', 'ReadWriteOncePod'],
},
'kubernetes.io/cinder': {
Filesystem: ['ReadWriteOnce', 'ReadWriteOncePod', 'ReadWriteOncePod'],
Block: ['ReadWriteOnce', 'ReadWriteOncePod', 'ReadWriteOncePod'],
Filesystem: ['ReadWriteOnce', 'ReadWriteOncePod'],
Block: ['ReadWriteOnce', 'ReadWriteOncePod'],
},
'kubernetes.io/azure-file': {
Filesystem: ['ReadWriteOnce', 'ReadWriteMany', 'ReadOnlyMany', 'ReadWriteOncePod'],
Expand Down Expand Up @@ -101,8 +101,8 @@ export const provisionerAccessModeMapping: ProvisionerAccessModeMapping = Object
Block: ['ReadWriteOnce'],
},
'cinder.csi.openstack.org': {
Filesystem: ['ReadWriteOnce'],
Block: ['ReadWriteOnce'],
Filesystem: ['ReadWriteOnce', 'ReadWriteOncePod'],
Block: ['ReadWriteOnce', 'ReadWriteOncePod'],
},
'pd.csi.storage.gke.io': {
Filesystem: ['ReadWriteOnce', 'ReadWriteOncePod'],
Expand Down