Skip to content

Commit

Permalink
CNV-38577: Fix initial load of serial console
Browse files Browse the repository at this point in the history
Signed-off-by: Matan Schatzman <mschatzm@redhat.com>
  • Loading branch information
metalice committed Mar 5, 2024
1 parent a7c3df0 commit 3c47fc4
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 8 deletions.
3 changes: 2 additions & 1 deletion src/utils/resources/vmi/utils/pod.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { IoK8sApiCoreV1Pod } from '@kubevirt-ui/kubevirt-api/kubernetes';
import { V1VirtualMachineInstance } from '@kubevirt-ui/kubevirt-api/kubevirt';
import { K8sResourceCommon } from '@openshift-console/dynamic-plugin-sdk';

Expand All @@ -19,7 +20,7 @@ export const isPodReady = (pod): boolean =>
* @param {K8sResourceCommon[]} pods - The pods to check
* @returns {*}
*/
export const getVMIPod = (vmi: V1VirtualMachineInstance, pods: K8sResourceCommon[]) => {
export const getVMIPod = (vmi: V1VirtualMachineInstance, pods: IoK8sApiCoreV1Pod[]) => {
if (!pods || !vmi) {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,10 @@ const GuestSystemLogsAccess: FC<GuestSystemLogsAccessProps> = ({
const [error, setError] = useState<Error>(null);
const [isChecked, setIsChecked] = useState<boolean>();

useEffect(() => setIsChecked(!disableSerialConsoleLog), [disableSerialConsoleLog]);
useEffect(() => {
guestSystemLogsAccessToggle(!!disableSerialConsoleLog);
setIsChecked(!disableSerialConsoleLog);
}, [disableSerialConsoleLog, guestSystemLogsAccessToggle]);

const onChange = async (checked: boolean) => {
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import React from 'react';

import { V1Devices } from '@kubevirt-ui/kubevirt-api/kubevirt';
import Loading from '@kubevirt-utils/components/Loading/Loading';
import { getChangedGuestSystemAccessLog } from '@kubevirt-utils/components/PendingChanges/utils/helpers';
import { DISABLED_GUEST_SYSTEM_LOGS_ACCESS } from '@kubevirt-utils/hooks/useFeatures/constants';
import { useFeatures } from '@kubevirt-utils/hooks/useFeatures/useFeatures';
Expand All @@ -15,31 +16,44 @@ import VirtualMachineBasicLogViewer from './VirtualMachineBasicLogViewer/Virtual

const VirtualMachineLogViewer = ({ connect, vm }) => {
const { t } = useKubevirtTranslation();
const { pods, vmi } = useVMIAndPodsForVM(vm?.metadata?.name, vm?.metadata?.namespace);
const { loaded, pods, vmi } = useVMIAndPodsForVM(vm?.metadata?.name, vm?.metadata?.namespace);
const pod = getVMIPod(vmi, pods);
const { featureEnabled: isClusterDisabledGuestSystemLogs } = useFeatures(
DISABLED_GUEST_SYSTEM_LOGS_ACCESS,
);

const isDisabledAtVM =
(getDevices(vm) as V1Devices & { logSerialConsole: boolean })?.logSerialConsole === false &&
!isClusterDisabledGuestSystemLogs;

const isNeededRestart = getChangedGuestSystemAccessLog(vm, vmi);

const { data } = useVirtualMachineLogData({ connect, pod });
const isPodLogContainerExist = Boolean(
pod?.spec?.containers?.find((container) => container?.name === 'guest-console-log'),
);

if (!isRunning(vm)) {
return <Bullseye>{t('Virtual machine is not running')}</Bullseye>;
const { data } = useVirtualMachineLogData({ connect: connect && isPodLogContainerExist, pod });

if (!loaded) {
return (
<Bullseye>
<Loading />
</Bullseye>
);
}

if (isNeededRestart) {
return <Bullseye>{t('Guest system logs not ready. Restart required')}</Bullseye>;
if (!isRunning(vm)) {
return <Bullseye>{t('Virtual machine is not running')}</Bullseye>;
}

if (isClusterDisabledGuestSystemLogs) {
return <Bullseye>{t('Guest system logs are disabled at cluster')}</Bullseye>;
}

if (isNeededRestart || !isPodLogContainerExist) {
return <Bullseye>{t('Guest system logs not ready. Restart required')}</Bullseye>;
}

if (isDisabledAtVM) {
return <Bullseye>{t('Guest system logs are disabled at VirtualMachine')}</Bullseye>;
}
Expand Down

0 comments on commit 3c47fc4

Please sign in to comment.