#!/bin/bash # # Copyright (c) 2019-2023 Red Hat, Inc. # This program and the accompanying materials are made # available under the terms of the Eclipse Public License 2.0 # which is available at https://www.eclipse.org/legal/epl-2.0/ # # SPDX-License-Identifier: EPL-2.0 # # Contributors: # Red Hat, Inc. - initial API and implementation # set -e OPERATOR_REPO=$(dirname "$(dirname "$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")")") source "${OPERATOR_REPO}/build/scripts/oc-tests/oc-common.sh" init() { unset CHANNEL unset NAMESPACE unset VERBOSE unset CATALOG_IMAGE while [[ "$#" -gt 0 ]]; do case $1 in '--channel'|'-c') CHANNEL="$2"; shift 1;; '--namespace'|'-n') NAMESPACE="$2"; shift 1;; '--catalog-image'|'-i') CATALOG_IMAGE="$2"; shift 1;; '--verbose'|'-v') VERBOSE=1;; '--help'|'-h') usage; exit;; esac shift 1 done [[ ! ${NAMESPACE} ]] && NAMESPACE="eclipse-che" if [[ ! ${CHANNEL} ]] || [[ ! ${CATALOG_IMAGE} ]]; then usage; exit 1; fi } usage () { echo "Deploy and update Eclipse Che from a custom catalog." echo echo "Usage:" echo -e "\t$0 -i CATALOG_IMAGE -c CHANNEL [-n NAMESPACE] [--verbose]" echo echo "OPTIONS:" echo -e "\t-i,--catalog-image Catalog image" echo -e "\t-c,--channel Olm channel to deploy Eclipse Che from" echo -e "\t-n,--namespace [default: eclipse-che] Kubernetes namespace to deploy Eclipse Che into" echo -e "\t-v,--verbose Verbose mode" echo echo "Example:" echo -e "\t$0 -i quay.io/eclipse/eclipse-che-olm-catalog:next -c next" echo -e "\t$0 -i quay.io/eclipse/eclipse-che-olm-catalog:stable -c stable" } run() { make create-namespace NAMESPACE="${NAMESPACE}" VERBOSE=${VERBOSE} make create-catalogsource NAME="${ECLIPSE_CHE_CATALOG_SOURCE_NAME}" IMAGE="${CATALOG_IMAGE}" VERBOSE=${VERBOSE} NAMESPACE="openshift-marketplace" discoverEclipseCheBundles "${CHANNEL}" if [[ "${PREVIOUS_CSV_NAME}" == "${LATEST_CSV_NAME}" ]]; then echo "[ERROR] Nothing to update. OLM channel '${CHANNEL}' contains only one bundle '${LATEST_CSV_NAME}'" exit 1 fi if [[ "${LATEST_VERSION}" == "null" ]]; then echo "[ERROR] CatalogSource does not contain any bundles." exit 1 fi if [[ "${PREVIOUS_VERSION}" == "null" ]]; then echo "[ERROR] CatalogSource contains only one bundle." exit 1 fi if [[ ${CHANNEL} == "next" ]]; then make install-devworkspace CHANNEL=next VERBOSE=${VERBOSE} OPERATOR_NAMESPACE="openshift-operators" else make install-devworkspace CHANNEL=fast VERBOSE=${VERBOSE} OPERATOR_NAMESPACE="openshift-operators" fi echo "[INFO] Test update from version: ${PREVIOUS_VERSION} to: ${LASTEST_VERSION}" make create-subscription \ NAME="${ECLIPSE_CHE_SUBSCRIPTION_NAME}" \ NAMESPACE="openshift-operators" \ PACKAGE_NAME="${ECLIPSE_CHE_PACKAGE_NAME}" \ CHANNEL="${CHANNEL}" \ SOURCE="${ECLIPSE_CHE_CATALOG_SOURCE_NAME}" \ SOURCE_NAMESPACE="openshift-marketplace" \ INSTALL_PLAN_APPROVAL="Manual" \ STARTING_CSV="${PREVIOUS_CSV_NAME}" \ VERBOSE=${VERBOSE} make approve-installplan SUBSCRIPTION_NAME="${ECLIPSE_CHE_SUBSCRIPTION_NAME}" NAMESPACE="openshift-operators" make wait-pod-running NAMESPACE="openshift-operators" SELECTOR="app.kubernetes.io/component=che-operator" getCheClusterCRFromInstalledCSV | oc apply -n "${NAMESPACE}" -f - make wait-eclipseche-version VERSION="${PREVIOUS_VERSION}" NAMESPACE=${NAMESPACE} VERBOSE=${VERBOSE} make approve-installplan SUBSCRIPTION_NAME="${ECLIPSE_CHE_SUBSCRIPTION_NAME}" NAMESPACE="openshift-operators" VERBOSE=${VERBOSE} make wait-eclipseche-version VERSION="${LATEST_VERSION}" NAMESPACE=${NAMESPACE} VERBOSE=${VERBOSE} } init "$@" [[ ${VERBOSE} == 1 ]] && set -x pushd "${OPERATOR_REPO}" >/dev/null run popd >/dev/null echo "[INFO] Done"