Skip to content

Commit

Permalink
Merge pull request #13418 from SanjalKatiyar/remove_odf_ns
Browse files Browse the repository at this point in the history
OCPBUGS-25881: remove "openshift-storage" namespace usage from the console
  • Loading branch information
openshift-merge-bot[bot] committed Jan 29, 2024
2 parents a3b2364 + fd10cff commit 76ffc72
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 23 deletions.
16 changes: 5 additions & 11 deletions frontend/packages/console-shared/src/utils/storage-utils.ts
@@ -1,4 +1,3 @@
import * as _ from 'lodash';
import { StorageClass } from '@console/internal/components/storage-class-form';

export const cephStorageProvisioners = [
Expand All @@ -7,16 +6,11 @@ export const cephStorageProvisioners = [
'rbd.csi.ceph.com',
];

const objectStorageProvisioners = [
'openshift-storage.noobaa.io/obc',
'openshift-storage.ceph.rook.io/bucket',
];
const objectStorageProvisioners = ['noobaa.io/obc', 'ceph.rook.io/bucket'];

// To check if the provisioner is OCS based
export const isCephProvisioner = (scProvisioner: string): boolean => {
return cephStorageProvisioners.some((provisioner: string) =>
_.endsWith(scProvisioner, provisioner),
);
};
export const isCephProvisioner = (scProvisioner: string): boolean =>
cephStorageProvisioners.some((provisioner: string) => scProvisioner?.includes(provisioner));

export const isObjectSC = (sc: StorageClass) => objectStorageProvisioners.includes(sc.provisioner);
export const isObjectSC = (sc: StorageClass) =>
objectStorageProvisioners.some((provisioner: string) => sc.provisioner?.includes(provisioner));
4 changes: 2 additions & 2 deletions frontend/public/components/storage/create-pvc.tsx
Expand Up @@ -20,7 +20,7 @@ import { StorageClassDropdown } from '../utils/storage-class-dropdown';
import { Checkbox } from '../checkbox';
import { PersistentVolumeClaimModel } from '../../models';
import { StorageClass } from '../storage-class-form';
import { provisionerAccessModeMapping, initialAccessModes, dropdownUnits } from './shared';
import { getProvisionerModeMapping, initialAccessModes, dropdownUnits } from './shared';

const NameValueEditorComponent = (props) => (
<AsyncComponent
Expand Down Expand Up @@ -116,7 +116,7 @@ export const CreatePVCForm: React.FC<CreatePVCFormProps> = (props) => {
const handleStorageClass = (updatedStorageClass) => {
const provisioner: string = updatedStorageClass?.provisioner || '';
//setting message to display for various modes when a storage class of a know provisioner is selected
const displayMessage = provisionerAccessModeMapping[provisioner]
const displayMessage = getProvisionerModeMapping(provisioner)
? `${t('public~Access mode is set by StorageClass and cannot be changed')}`
: `${t('public~Permissions to the mounted drive')}`;
setAccessModeHelp(displayMessage);
Expand Down
34 changes: 24 additions & 10 deletions frontend/public/components/storage/shared.ts
Expand Up @@ -13,16 +13,18 @@ type VolumeMode = 'Filesystem' | 'Block';
export const initialAccessModes: AccessMode[] = ['ReadWriteOnce', 'ReadWriteMany', 'ReadOnlyMany'];
export const initialVolumeModes: VolumeMode[] = ['Filesystem', 'Block'];

type PartialMatch = { partialMatch?: boolean };
type ModeMapping = {
[volumeMode in VolumeMode]?: AccessMode[];
};
type AccessModeMapping = ModeMapping & PartialMatch;

type ProvisionerAccessModeMapping = {
[provisioner: string]: ModeMapping;
[provisioner: string]: AccessModeMapping;
};

// See https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes for more details
export const provisionerAccessModeMapping: ProvisionerAccessModeMapping = {
export const provisionerAccessModeMapping: ProvisionerAccessModeMapping = Object.freeze({
'kubernetes.io/no-provisioner': {
Filesystem: ['ReadWriteOnce'],
Block: ['ReadWriteOnce'],
Expand Down Expand Up @@ -100,14 +102,16 @@ export const provisionerAccessModeMapping: ProvisionerAccessModeMapping = {
Filesystem: ['ReadWriteOnce'],
Block: ['ReadWriteOnce'],
},
'openshift-storage.cephfs.csi.ceph.com': {
'cephfs.csi.ceph.com': {
Filesystem: ['ReadWriteOnce', 'ReadWriteMany', 'ReadOnlyMany'],
partialMatch: true,
},
'openshift-storage.rbd.csi.ceph.com': {
'rbd.csi.ceph.com': {
Filesystem: ['ReadWriteOnce', 'ReadOnlyMany'],
Block: ['ReadWriteOnce', 'ReadWriteMany', 'ReadOnlyMany'],
partialMatch: true,
},
};
});

export const getAccessModeRadios = () => [
{
Expand Down Expand Up @@ -141,17 +145,27 @@ export const dropdownUnits = {
Ti: 'TiB',
};

const getProvisionerAccessModeMapping = (provisioner: string): ModeMapping => {
return provisionerAccessModeMapping[provisioner] || {};
};
export const getProvisionerModeMapping = (provisioner: string): ModeMapping =>
_.omit(
_.find(provisionerAccessModeMapping, (value: AccessModeMapping, key: string) => {
if (value?.partialMatch && provisioner?.includes(key)) {
return true;
}
if (key === provisioner) {
return true;
}
return false;
}) || {},
'partialMatch',
);

export const getAccessModeForProvisioner = (
provisioner: string,
ignoreReadOnly?: boolean,
volumeMode?: string,
): AccessMode[] => {
let accessModes: AccessMode[];
const modeMapping: ModeMapping = getProvisionerAccessModeMapping(provisioner);
const modeMapping: ModeMapping = getProvisionerModeMapping(provisioner);

if (!_.isEmpty(modeMapping)) {
accessModes = volumeMode
Expand All @@ -174,7 +188,7 @@ export const getVolumeModeForProvisioner = (
provisioner: string,
accessMode: string,
): VolumeMode[] => {
const modeMapping: ModeMapping = getProvisionerAccessModeMapping(provisioner);
const modeMapping: ModeMapping = getProvisionerModeMapping(provisioner);

if (!_.isEmpty(modeMapping)) {
return accessMode
Expand Down

0 comments on commit 76ffc72

Please sign in to comment.