From c42c449a1e982ff471f35a02a7eec5a7ea753470 Mon Sep 17 00:00:00 2001 From: yaacov Date: Wed, 9 Sep 2020 09:29:48 +0300 Subject: [PATCH 1/4] Add deleting status --- .../kubevirt-plugin/src/components/vms/vm.tsx | 21 ++----------------- .../src/constants/vm/vm-status.ts | 4 ++++ .../src/statuses/vm/vm-status.ts | 13 +++++++++++- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/frontend/packages/kubevirt-plugin/src/components/vms/vm.tsx b/frontend/packages/kubevirt-plugin/src/components/vms/vm.tsx index a4da1af58fd..cc703458467 100644 --- a/frontend/packages/kubevirt-plugin/src/components/vms/vm.tsx +++ b/frontend/packages/kubevirt-plugin/src/components/vms/vm.tsx @@ -8,14 +8,11 @@ import { dimensifyHeader, dimensifyRow, getCreationTimestamp, - getDeletetionTimestamp, getName, getNamespace, - getOwnerReferences, getUID, getLabels, } from '@console/shared'; -import { compareOwnerReference } from '@console/shared/src/utils/owner-references'; import { NamespaceModel, PodModel, @@ -46,7 +43,7 @@ import { VirtualMachineModel, } from '../../models'; import { VMIKind, VMKind } from '../../types'; -import { buildOwnerReferenceForModel, getBasicID, getLoadedData } from '../../utils'; +import { getBasicID, getLoadedData } from '../../utils'; import { getVMStatus } from '../../statuses/vm/vm-status'; import { getVmiIpAddresses, getVMINodeName } from '../../selectors/vmi'; import { isVMImport, isVM, isVMI } from '../../selectors/check-type'; @@ -359,21 +356,7 @@ const VirtualMachinesPage: React.FC = (props) => { ...objectBundle, }; }) - .filter(({ vm, vmi, vmImport, metadata }) => { - if (vmImport && metadata.vmImportStatus?.isCompleted()) { - return false; - } - - if (vm || !getDeletetionTimestamp(vmi)) { - return true; - } - const vmOwnerReference = buildOwnerReferenceForModel(VirtualMachineModel, getName(vmi)); - - // show finalizing VMIs only if they are not owned by VM - return !(getOwnerReferences(vmi) || []).some((o) => - compareOwnerReference(o, vmOwnerReference), - ); - }); + .filter(({ vmImport, metadata }) => !(vmImport && metadata.vmImportStatus?.isCompleted())); }; const createAccessReview = skipAccessReview ? null : { model: VirtualMachineModel, namespace }; diff --git a/frontend/packages/kubevirt-plugin/src/constants/vm/vm-status.ts b/frontend/packages/kubevirt-plugin/src/constants/vm/vm-status.ts index 550540b04e0..60e9b7e2e0b 100644 --- a/frontend/packages/kubevirt-plugin/src/constants/vm/vm-status.ts +++ b/frontend/packages/kubevirt-plugin/src/constants/vm/vm-status.ts @@ -13,6 +13,7 @@ export enum VMStatusSimpleLabel { Stopping = 'Stopping', Running = 'Running', Off = 'Off', + Deleting = 'Deleting', } export const VM_STATUS_SIMPLE_LABELS = [ @@ -43,6 +44,9 @@ export class VMStatus extends StatusEnum isVMIPaused(vmi) ? { status: VMStatus.PAUSED, message: PAUSED_VM_MODAL_MESSAGE } : null; +const isDeleting = (vm: VMKind, vmi: VMIKind): VMStatusBundle => + (vm && !!getDeletetionTimestamp(vm)) || (!vm && vmi && !!getDeletetionTimestamp(vmi)) + ? { status: VMStatus.DELETING } + : null; + const isV2VVMWareConversion = (vm: VMKind, pods?: PodKind[]): VMStatusBundle => { if (!vm || !pods) { return null; @@ -309,6 +319,7 @@ export const getVMStatus = ({ isV2VVMImportConversion(vm, vmImports) || isBeingMigrated(vm, vmi, migrations) || isBeingImported(vm, pods, pvcs, dataVolumes) || + isDeleting(vm, vmi) || isVMError(vm) || isBeingStopped(vm) || isOff(vm) || From 7751361825da0ff5a471fa6d478bb146d85849b5 Mon Sep 17 00:00:00 2001 From: yaacov Date: Wed, 9 Sep 2020 13:22:43 +0300 Subject: [PATCH 2/4] move is-deleting to it's currect place --- .../kubevirt-plugin/src/statuses/vm/vm-status.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/packages/kubevirt-plugin/src/statuses/vm/vm-status.ts b/frontend/packages/kubevirt-plugin/src/statuses/vm/vm-status.ts index 2885884e8ce..93f62ec6848 100644 --- a/frontend/packages/kubevirt-plugin/src/statuses/vm/vm-status.ts +++ b/frontend/packages/kubevirt-plugin/src/statuses/vm/vm-status.ts @@ -62,11 +62,6 @@ import { PAUSED_VM_MODAL_MESSAGE } from '../../strings/vm/messages'; const isPaused = (vmi: VMIKind): VMStatusBundle => isVMIPaused(vmi) ? { status: VMStatus.PAUSED, message: PAUSED_VM_MODAL_MESSAGE } : null; -const isDeleting = (vm: VMKind, vmi: VMIKind): VMStatusBundle => - (vm && !!getDeletetionTimestamp(vm)) || (!vm && vmi && !!getDeletetionTimestamp(vmi)) - ? { status: VMStatus.DELETING } - : null; - const isV2VVMWareConversion = (vm: VMKind, pods?: PodKind[]): VMStatusBundle => { if (!vm || !pods) { return null; @@ -213,6 +208,11 @@ const isBeingImported = ( }; }; +const isDeleting = (vm: VMKind, vmi: VMIKind): VMStatusBundle => + (vm && !!getDeletetionTimestamp(vm)) || (!vm && vmi && !!getDeletetionTimestamp(vmi)) + ? { status: VMStatus.DELETING } + : null; + const isVMError = (vm: VMKind): VMStatusBundle => { const vmFailureCond = getStatusConditionOfType(vm, 'Failure'); if (vmFailureCond) { From d554f7c126d31c7e0febff0cbfcf6456c117d639 Mon Sep 17 00:00:00 2001 From: yaacov Date: Wed, 9 Sep 2020 13:28:01 +0300 Subject: [PATCH 3/4] add detleting status to status group and topoligy class list --- .../components/dashboards-page/overview-dashboard/inventory.tsx | 1 + .../kubevirt-plugin/src/topology/components/nodes/VmNode.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/frontend/packages/kubevirt-plugin/src/components/dashboards-page/overview-dashboard/inventory.tsx b/frontend/packages/kubevirt-plugin/src/components/dashboards-page/overview-dashboard/inventory.tsx index 032980e4529..f93d12ffd45 100644 --- a/frontend/packages/kubevirt-plugin/src/components/dashboards-page/overview-dashboard/inventory.tsx +++ b/frontend/packages/kubevirt-plugin/src/components/dashboards-page/overview-dashboard/inventory.tsx @@ -50,6 +50,7 @@ export const getVMStatusGroups: StatusGroupMapper = ( VMStatusSimpleLabel.Migrating, VMStatusSimpleLabel.Stopping, StatusSimpleLabel.Pending, + VMStatusSimpleLabel.Deleting, ], count: 0, filterType: 'vm-status', diff --git a/frontend/packages/kubevirt-plugin/src/topology/components/nodes/VmNode.tsx b/frontend/packages/kubevirt-plugin/src/topology/components/nodes/VmNode.tsx index f1cc6e4c933..13334287f0a 100644 --- a/frontend/packages/kubevirt-plugin/src/topology/components/nodes/VmNode.tsx +++ b/frontend/packages/kubevirt-plugin/src/topology/components/nodes/VmNode.tsx @@ -125,6 +125,7 @@ const ObservedVmNode: React.FC = ({ case VMStatus.STARTING: statusClass = 'kubevirt-m-not-ready'; break; + case VMStatus.DELETING: case VMStatus.STOPPING: statusClass = 'kubevirt-m-terminating'; break; From 86af5eb7ad115c226cbb0846a93929f86f3d20be Mon Sep 17 00:00:00 2001 From: yaacov Date: Wed, 9 Sep 2020 14:05:50 +0300 Subject: [PATCH 4/4] move delete after error --- .../kubevirt-plugin/src/statuses/vm/vm-status.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/packages/kubevirt-plugin/src/statuses/vm/vm-status.ts b/frontend/packages/kubevirt-plugin/src/statuses/vm/vm-status.ts index 93f62ec6848..ba9ce7f5fc0 100644 --- a/frontend/packages/kubevirt-plugin/src/statuses/vm/vm-status.ts +++ b/frontend/packages/kubevirt-plugin/src/statuses/vm/vm-status.ts @@ -208,11 +208,6 @@ const isBeingImported = ( }; }; -const isDeleting = (vm: VMKind, vmi: VMIKind): VMStatusBundle => - (vm && !!getDeletetionTimestamp(vm)) || (!vm && vmi && !!getDeletetionTimestamp(vmi)) - ? { status: VMStatus.DELETING } - : null; - const isVMError = (vm: VMKind): VMStatusBundle => { const vmFailureCond = getStatusConditionOfType(vm, 'Failure'); if (vmFailureCond) { @@ -225,6 +220,11 @@ const isVMError = (vm: VMKind): VMStatusBundle => { return null; }; +const isDeleting = (vm: VMKind, vmi: VMIKind): VMStatusBundle => + (vm && !!getDeletetionTimestamp(vm)) || (!vm && vmi && !!getDeletetionTimestamp(vmi)) + ? { status: VMStatus.DELETING } + : null; + const isBeingStopped = (vm: VMKind): VMStatusBundle => { if (vm && !isVMExpectedRunning(vm) && isVMCreated(vm)) { return { @@ -319,8 +319,8 @@ export const getVMStatus = ({ isV2VVMImportConversion(vm, vmImports) || isBeingMigrated(vm, vmi, migrations) || isBeingImported(vm, pods, pvcs, dataVolumes) || - isDeleting(vm, vmi) || isVMError(vm) || + isDeleting(vm, vmi) || isBeingStopped(vm) || isOff(vm) || isError(vm, vmi, launcherPod) ||