Skip to content

Commit

Permalink
Updated accessMode and volumeMode for common-template without source …
Browse files Browse the repository at this point in the history
…pvc from storage class if exist

Signed-off-by: Matan Schatzman <mschatzm@redhat.com>
  • Loading branch information
metalice committed Jan 28, 2021
1 parent 85d737a commit 7be96ac
Showing 1 changed file with 62 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ import { iGetCommonData, iGetLoadedCommonData } from '../../selectors/immutable/
import { toShallowJS } from '../../../../utils/immutable';
import { getEmptyInstallStorage } from '../../../../utils/storage';
import { getDataVolumeStorageClassName } from '../../../../selectors/dv/selectors';
import {
getDefaultSCAccessModes,
getDefaultSCVolumeMode,
} from '../../../../selectors/config-map/sc-defaults';

export const prefillInitialDiskUpdater = ({ id, prevState, dispatch, getState }: UpdateOptions) => {
const state = getState();
Expand Down Expand Up @@ -225,6 +229,63 @@ const initialStorageDiskUpdater = ({ id, prevState, dispatch, getState }: Update

const initialStorageClassUpdater = ({ id, prevState, dispatch, getState }: UpdateOptions) => {
const state = getState();
const provisionSourceStorage = iGetProvisionSourceStorage(state, id)?.toJSON();
const storageClassConfigMap = iGetCommonData(
state,
id,
VMWizardProps.storageClassConfigMap,
)?.toJSON();

const { commonTemplateName } = iGetCommonData(state, id, VMWizardProps.initialData).toJSON();

if (
!hasStoragesChanged(prevState, state, id) ||
!storageClassConfigMap ||
!commonTemplateName ||
!provisionSourceStorage
) {
return;
}

const provisionSourceStorageClassName = getDataVolumeStorageClassName(
provisionSourceStorage?.dataVolume,
);

const storageClassVolumeMode = getDefaultSCVolumeMode(
storageClassConfigMap?.data,
provisionSourceStorageClassName,
);

const storageClassAccessMode = getDefaultSCAccessModes(
storageClassConfigMap?.data,
provisionSourceStorageClassName,
);

if (
storageClassVolumeMode &&
storageClassAccessMode &&
!provisionSourceStorage?.dataVolume?.spec?.source?.pvc
) {
const updatedStorage = new DataVolumeWrapper(provisionSourceStorage.dataVolume)
.setVolumeMode(storageClassVolumeMode)
.setAccessModes(storageClassAccessMode)
.asResource();
dispatch(
vmWizardInternalActions[InternalActionType.UpdateStorage](id, {
...provisionSourceStorage,
dataVolume: updatedStorage,
}),
);
}
};

const initialDefaultStorageClassUpdater = ({
id,
prevState,
dispatch,
getState,
}: UpdateOptions) => {
const state = getState();

if (
!hasVMSettingsValueChanged(prevState, state, id, VMSettingsField.DEFAULT_STORAGE_CLASS) &&
Expand Down Expand Up @@ -262,6 +323,7 @@ export const updateStorageTabState = (options: UpdateOptions) =>
prefillInitialDiskUpdater,
windowsToolsUpdater,
internalStorageDiskBusUpdater,
initialDefaultStorageClassUpdater,
initialStorageClassUpdater,
initialStorageDiskUpdater,
].forEach((updater) => {
Expand Down

0 comments on commit 7be96ac

Please sign in to comment.