Skip to content

Commit

Permalink
Don't panic on no disk base images
Browse files Browse the repository at this point in the history
  • Loading branch information
yaacov committed Sep 17, 2020
1 parent deb66a9 commit efe14f5
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,11 @@ const CreateVMWizardComponent: React.FC<CreateVMWizardComponentProps> = (props)

// Store previuse props
const prevProps = usePrevious<CreateVMWizardComponentProps>(props);
const prevPVCsProp = usePrevious<PersistentVolumeClaimKind[]>(dataVolumePVCs);
const prevDataVolumePVCData = usePrevious<[PersistentVolumeClaimKind[], boolean, string]>([
dataVolumePVCs,
dataVolumePVCsLoaded,
dataVolumePVCsLoadError,
]);

// componentDidUpdate
React.useEffect(() => {
Expand All @@ -119,9 +123,13 @@ const CreateVMWizardComponent: React.FC<CreateVMWizardComponentProps> = (props)
return changedPropsAcc;
}, new Set()) as ChangedCommonData;
const referencesChanged = !_.isEqual(prevProps.dataIDReferences, props.dataIDReferences);
const dataPVCsChanged = !_.isEqual(prevPVCsProp, dataVolumePVCs);
const dataVolumePVCsChanged = !_.isEqual(prevDataVolumePVCData, [
dataVolumePVCs,
dataVolumePVCsLoaded,
dataVolumePVCsLoadError,
]);

if (changedProps.size > 0 || referencesChanged || dataPVCsChanged) {
if (changedProps.size > 0 || referencesChanged || dataVolumePVCsChanged) {
let commonDataUpdate: CommonData = referencesChanged
? { dataIDReferences: props.dataIDReferences }
: undefined;
Expand All @@ -133,7 +141,7 @@ const CreateVMWizardComponent: React.FC<CreateVMWizardComponentProps> = (props)
},
};
}
if (dataPVCsChanged && dataVolumePVCsLoaded && !dataVolumePVCsLoadError) {
if (dataVolumePVCsChanged) {
commonDataUpdate = {
...commonDataUpdate,
data: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ export const Flavor: React.FC<FlavorProps> = React.memo(
os,
flavorField,
workloadProfile,
cnvBaseImages,
onChange,
openshiftFlag,
}) => {
Expand All @@ -54,7 +53,6 @@ export const Flavor: React.FC<FlavorProps> = React.memo(
const loadingResources = openshiftFlag
? {
commonTemplates,
cnvBaseImages,
}
: {};

Expand Down Expand Up @@ -109,7 +107,6 @@ type FlavorProps = {
flavorField: any;
os: string;
workloadProfile: string;
cnvBaseImages: any;
openshiftFlag: boolean;
onChange: (key: string, value: string | boolean) => void;
};
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ export const OS: React.FC<OSProps> = React.memo(
const loadingResources = openshiftFlag
? {
commonTemplates,
cnvBaseImages,
}
: {};

Expand All @@ -121,6 +120,7 @@ export const OS: React.FC<OSProps> = React.memo(
}

const loadedBaseImages = iGetLoadedData(cnvBaseImages);
const baseImagesLoadError = iGetLoadError(cnvBaseImages);
const operatingSystemBaseImages = operatingSystems.map(
(operatingSystem: OperatingSystemRecord) => {
const pvcName = operatingSystem?.dataVolumeName;
Expand All @@ -140,7 +140,7 @@ export const OS: React.FC<OSProps> = React.memo(
checkboxDescription: '',
};

if (!iUserTemplate) {
if (!iUserTemplate && !baseImagesLoadError) {
if (baseImageFoundInCluster && pvcName) {
osField.message = isBaseImageUploading
? BASE_IMAGE_AND_PVC_UPLOADING_SHORT
Expand Down Expand Up @@ -176,7 +176,7 @@ export const OS: React.FC<OSProps> = React.memo(

const numOfMountedDisks = cloneBaseDiskImage + mountWindowsGuestTools; // using boolean addition operator to count true
const mountedDisksHelpMsg = numOfMountedDisks > 0 && (
<Text className="kv-create-vm__input-text-help-msg">
<Text className="pf-c-form__helper-text kv-create-vm__input-text-help-msg">
View the mounted {pluralize(numOfMountedDisks, 'disk')} in the{' '}
<Button
isDisabled={!goToStorageStep}
Expand All @@ -189,6 +189,12 @@ export const OS: React.FC<OSProps> = React.memo(
step
</Text>
);
const mountedDisksErrorMsg = baseImagesLoadError && (
<Text className="pf-c-form__helper-text kv-create-vm__input-text-help-msg">
Could not access default operating system images. Contact your administrator to gain access
to these images. Otherwise provide a manual boot source below.
</Text>
);

return (
<>
Expand Down Expand Up @@ -232,6 +238,7 @@ export const OS: React.FC<OSProps> = React.memo(
/>
</FormField>
</FormFieldRow>
{mountedDisksErrorMsg}
<FormFieldRow
field={mountWindowsGuestToolsField}
fieldType={FormFieldType.INLINE_CHECKBOX}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@ export const VMSettingsTabComponent: React.FC<VMSettingsTabComponentProps> = ({
os={getFieldValue(VMSettingsField.OPERATING_SYSTEM)}
flavorField={getField(VMSettingsField.FLAVOR)}
workloadProfile={getFieldValue(VMSettingsField.WORKLOAD_PROFILE)}
cnvBaseImages={cnvBaseImages}
onChange={onFieldChange}
openshiftFlag={openshiftFlag}
/>
Expand All @@ -127,7 +126,6 @@ export const VMSettingsTabComponent: React.FC<VMSettingsTabComponentProps> = ({
workloadProfileField={getField(VMSettingsField.WORKLOAD_PROFILE)}
operatingSystem={getFieldValue(VMSettingsField.OPERATING_SYSTEM)}
flavor={getFieldValue(VMSettingsField.FLAVOR)}
cnvBaseImages={cnvBaseImages}
onChange={onFieldChange}
/>
</Form>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,7 @@ import { iGetFieldValue } from '../../selectors/immutable/field';
import { FormPFSelect } from '../../../form/form-pf-select';

export const WorkloadProfile: React.FC<WorkloadProps> = React.memo(
({
iUserTemplate,
commonTemplates,
workloadProfileField,
operatingSystem,
flavor,
cnvBaseImages,
onChange,
}) => {
({ iUserTemplate, commonTemplates, workloadProfileField, operatingSystem, flavor, onChange }) => {
const isUserTemplateValid = iGetIsLoaded(iUserTemplate) && !iGetLoadError(iUserTemplate);

const templates = iUserTemplate
Expand All @@ -43,7 +35,6 @@ export const WorkloadProfile: React.FC<WorkloadProps> = React.memo(

const loadingResources = {
commonTemplates,
cnvBaseImages,
};

if (iUserTemplate) {
Expand Down Expand Up @@ -80,6 +71,5 @@ type WorkloadProps = {
workloadProfileField: any;
flavor: string;
operatingSystem: string;
cnvBaseImages: any;
onChange: (key: string, value: string) => void;
};

0 comments on commit efe14f5

Please sign in to comment.