diff --git a/.github/workflows/minikube-chectl-commands-tests.yml b/.github/workflows/minikube-chectl-commands-tests.yml index ac6a27d43..6ae32275a 100644 --- a/.github/workflows/minikube-chectl-commands-tests.yml +++ b/.github/workflows/minikube-chectl-commands-tests.yml @@ -24,7 +24,7 @@ jobs: - name: Start minikube cluster uses: che-incubator/setup-minikube-action@next with: - minikube-version: v1.23.2 + minikube-version: v1.29.0 - name: Install NodeJS uses: actions/setup-node@v3 with: @@ -51,7 +51,7 @@ jobs: - name: Start minikube cluster uses: che-incubator/setup-minikube-action@next with: - minikube-version: v1.23.2 + minikube-version: v1.29.0 - name: Install chectl from the stable channel run: bash <(curl -sL https://www.eclipse.org/che/chectl/) --channel=stable - name: Install NodeJS diff --git a/.github/workflows/minikube-chectl-release-test.yml b/.github/workflows/minikube-chectl-release-test.yml index 50598ec34..0bb2405f0 100644 --- a/.github/workflows/minikube-chectl-release-test.yml +++ b/.github/workflows/minikube-chectl-release-test.yml @@ -24,7 +24,7 @@ jobs: - name: Start minikube cluster uses: che-incubator/setup-minikube-action@next with: - minikube-version: v1.23.2 + minikube-version: v1.29.0 - name: Install NodeJS uses: actions/setup-node@v3 with: diff --git a/src/tasks/che-tasks.ts b/src/tasks/che-tasks.ts index 766152f60..97357d8fe 100644 --- a/src/tasks/che-tasks.ts +++ b/src/tasks/che-tasks.ts @@ -59,13 +59,22 @@ export namespace CheTasks { title: 'Wait all pods deleted', task: async (_ctx: any, _task: any) => { const flags = CheCtlContext.getFlags() + const kubeHelper = KubeClient.getInstance() + const cheCluster = await kubeHelper.getCheCluster(flags[CHE_NAMESPACE_FLAG]) const tasks = newListr() - tasks.add(PodTasks.getPodDeletedTask(EclipseChe.CHE_SERVER, EclipseChe.CHE_SERVER_SELECTOR, flags[CHE_NAMESPACE_FLAG])) - tasks.add(PodTasks.getPodDeletedTask(EclipseChe.DASHBOARD, EclipseChe.DASHBOARD_SELECTOR, flags[CHE_NAMESPACE_FLAG])) - tasks.add(PodTasks.getPodDeletedTask(EclipseChe.DEVFILE_REGISTRY, EclipseChe.DEVFILE_REGISTRY_SELECTOR, flags[CHE_NAMESPACE_FLAG])) - tasks.add(PodTasks.getPodDeletedTask(EclipseChe.PLUGIN_REGISTRY, EclipseChe.PLUGIN_REGISTRY_SELECTOR, flags[CHE_NAMESPACE_FLAG])) tasks.add(PodTasks.getPodDeletedTask(EclipseChe.GATEWAY, EclipseChe.GATEWAY_SELECTOR, flags[CHE_NAMESPACE_FLAG])) + tasks.add(PodTasks.getPodDeletedTask(EclipseChe.DASHBOARD, EclipseChe.DASHBOARD_SELECTOR, flags[CHE_NAMESPACE_FLAG])) + tasks.add(PodTasks.getPodDeletedTask(EclipseChe.CHE_SERVER, EclipseChe.CHE_SERVER_SELECTOR, flags[CHE_NAMESPACE_FLAG])) + + if (!cheCluster?.spec?.components?.devfileRegistry?.disableInternalRegistry) { + tasks.add(PodTasks.getPodDeletedTask(EclipseChe.DEVFILE_REGISTRY, EclipseChe.DEVFILE_REGISTRY_SELECTOR, flags[CHE_NAMESPACE_FLAG])) + } + + if (!cheCluster?.spec?.components?.pluginRegistry?.disableInternalRegistry) { + tasks.add(PodTasks.getPodDeletedTask(EclipseChe.PLUGIN_REGISTRY, EclipseChe.PLUGIN_REGISTRY_SELECTOR, flags[CHE_NAMESPACE_FLAG])) + } + return tasks }, } @@ -76,13 +85,21 @@ export namespace CheTasks { title: `Scale ${EclipseChe.PRODUCT_NAME} down`, task: async (_ctx: any, _task: any) => { const flags = CheCtlContext.getFlags() + const kubeHelper = KubeClient.getInstance() + const cheCluster = await kubeHelper.getCheCluster(flags[CHE_NAMESPACE_FLAG]) const tasks = newListr() tasks.add(PodTasks.getScaleDeploymentTask(EclipseChe.GATEWAY, EclipseChe.GATEWAY_DEPLOYMENT_NAME, 0, flags[CHE_NAMESPACE_FLAG])) tasks.add(PodTasks.getScaleDeploymentTask(EclipseChe.DASHBOARD, EclipseChe.DASHBOARD_DEPLOYMENT_NAME, 0, flags[CHE_NAMESPACE_FLAG])) tasks.add(PodTasks.getScaleDeploymentTask(EclipseChe.CHE_SERVER, EclipseChe.CHE_SERVER_DEPLOYMENT_NAME, 0, flags[CHE_NAMESPACE_FLAG])) - tasks.add(PodTasks.getScaleDeploymentTask(EclipseChe.PLUGIN_REGISTRY, EclipseChe.PLUGIN_REGISTRY_DEPLOYMENT_NAME, 0, flags[CHE_NAMESPACE_FLAG])) - tasks.add(PodTasks.getScaleDeploymentTask(EclipseChe.DEVFILE_REGISTRY, EclipseChe.DEVFILE_REGISTRY_DEPLOYMENT_NAME, 0, flags[CHE_NAMESPACE_FLAG])) + if (!cheCluster?.spec?.components?.pluginRegistry?.disableInternalRegistry) { + tasks.add(PodTasks.getScaleDeploymentTask(EclipseChe.PLUGIN_REGISTRY, EclipseChe.PLUGIN_REGISTRY_DEPLOYMENT_NAME, 0, flags[CHE_NAMESPACE_FLAG])) + } + + if (!cheCluster?.spec?.components?.devfileRegistry?.disableInternalRegistry) { + tasks.add(PodTasks.getScaleDeploymentTask(EclipseChe.DEVFILE_REGISTRY, EclipseChe.DEVFILE_REGISTRY_DEPLOYMENT_NAME, 0, flags[CHE_NAMESPACE_FLAG])) + } + return tasks }, } @@ -94,9 +111,9 @@ export namespace CheTasks { task: async (_ctx: any, _task: any) => { const flags = CheCtlContext.getFlags() const kubeHelper = KubeClient.getInstance() + const cheCluster = await kubeHelper.getCheCluster(flags[CHE_NAMESPACE_FLAG]) const tasks = newListr() - const cheCluster = await kubeHelper.getCheCluster(flags[CHE_NAMESPACE_FLAG]) if (cheCluster) { if (!cheCluster.spec?.components?.devfileRegistry?.disableInternalRegistry) { tasks.add(PodTasks.getScaleDeploymentTask(EclipseChe.DEVFILE_REGISTRY, EclipseChe.DEVFILE_REGISTRY_DEPLOYMENT_NAME, 1, flags[CHE_NAMESPACE_FLAG])) diff --git a/src/tasks/pod-tasks.ts b/src/tasks/pod-tasks.ts index 3062db990..de5058b1f 100644 --- a/src/tasks/pod-tasks.ts +++ b/src/tasks/pod-tasks.ts @@ -10,7 +10,7 @@ * Red Hat, Inc. - initial API and implementation */ -import { ux } from '@oclif/core' +import {ux} from '@oclif/core' import * as Listr from 'listr' import {KubeClient} from '../api/kube-client' import {KubeHelperContext} from '../context' @@ -265,8 +265,8 @@ export namespace PodTasks { } /** - * Checks if there is any reason for a given pod state and returns message if so. - */ + * Checks if there is any reason for a given pod state and returns message if so. + */ async function getContainerFailState(namespace: string, selector: string, state: string): Promise { const kubeHelper = KubeClient.getInstance() const waitingState = await kubeHelper.getPodWaitingState(namespace, selector, state) @@ -278,38 +278,38 @@ export namespace PodTasks { /** * Returns extended timeout error message explaining a failure. */ - async function getTimeOutErrorMessage(namespace: string, selector: string): Promise { - const kubeHelper = KubeClient.getInstance() - const pods = await kubeHelper.getPodListByLabel(namespace, selector) - if (!pods.length) { - throw new Error(`Timeout: there are no pods in the namespace: ${namespace}, selector: ${selector}. Check ${EclipseChe.PRODUCT_NAME} logs for details. Consider increasing error recheck timeout with --k8spoderrorrechecktimeout flag.`) - } - - let errorMessage = 'Timeout:' - for (const pod of pods) { - errorMessage += `\nPod: ${pod.metadata!.name}` - if (pod.status) { - if (pod.status.containerStatuses) { - errorMessage += `\n\t\tstatus: ${JSON.stringify(pod.status.containerStatuses, undefined, ' ')}` - } - - if (pod.status.conditions) { - errorMessage += `\n\t\tconditions: ${JSON.stringify(pod.status.conditions, undefined, ' ')}` - } - } else { - errorMessage += ', status not found.' - } - } - - return errorMessage - } - - async function getCheClusterFailState(namespace: string): Promise { - const kubeHelper = KubeClient.getInstance() - const cheCluster = await kubeHelper.getCheCluster(namespace) - if (cheCluster?.status?.reason && cheCluster?.status?.message) { - return cheCluster.status - } - } + async function getTimeOutErrorMessage(namespace: string, selector: string): Promise { + const kubeHelper = KubeClient.getInstance() + const pods = await kubeHelper.getPodListByLabel(namespace, selector) + if (!pods.length) { + throw new Error(`Timeout: there are no pods in the namespace: ${namespace}, selector: ${selector}. Check ${EclipseChe.PRODUCT_NAME} logs for details. Consider increasing error recheck timeout with --k8spoderrorrechecktimeout flag.`) + } + + let errorMessage = 'Timeout:' + for (const pod of pods) { + errorMessage += `\nPod: ${pod.metadata!.name}` + if (pod.status) { + if (pod.status.containerStatuses) { + errorMessage += `\n\t\tstatus: ${JSON.stringify(pod.status.containerStatuses, undefined, ' ')}` + } + + if (pod.status.conditions) { + errorMessage += `\n\t\tconditions: ${JSON.stringify(pod.status.conditions, undefined, ' ')}` + } + } else { + errorMessage += ', status not found.' + } + } + + return errorMessage + } + + async function getCheClusterFailState(namespace: string): Promise { + const kubeHelper = KubeClient.getInstance() + const cheCluster = await kubeHelper.getCheCluster(namespace) + if (cheCluster?.status?.reason && cheCluster?.status?.message) { + return cheCluster.status + } + } } diff --git a/yarn.lock b/yarn.lock index 86db56ed5..55fff0017 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3673,7 +3673,7 @@ detect-newline@^3.0.0: "devworkspace-operator@https://github.com/devfile/devworkspace-operator#main": version "0.0.0" - resolved "https://github.com/devfile/devworkspace-operator#8f3eafb9f91be8cdc0bc5c6df76e36900f5b000e" + resolved "https://github.com/devfile/devworkspace-operator#54561af09cf51e78e5e1295fb9f78b542138a0b9" dezalgo@^1.0.0: version "1.0.4" @@ -3734,7 +3734,7 @@ ecc-jsbn@~0.1.1: "eclipse-che-operator@https://github.com/eclipse-che/che-operator#main": version "0.0.0" - resolved "https://github.com/eclipse-che/che-operator#1ae01423c15e14cb9aff32c65bc2c71686a99ca5" + resolved "https://github.com/eclipse-che/che-operator#76b21ea63282e75c664913f0ed47f708870fdcc2" editorconfig@^0.15.0: version "0.15.3"