diff --git a/.github/workflows/verify-cli-pr.yml b/.github/workflows/verify-cli-pr.yml index 937ee243ca..1075b9c895 100644 --- a/.github/workflows/verify-cli-pr.yml +++ b/.github/workflows/verify-cli-pr.yml @@ -7,13 +7,20 @@ on: jobs: build: runs-on: ubuntu-latest + if: '! github.event.pull_request.draft' steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v4 - - name: Fail if local Ansible collection is present in PR to master + - name: Fail if local build of Ansible collection or Python package are present in a PR to master branch run: | + RC=0 if [[ -e $GITHUB_WORKSPACE/image/cli/install/ibm-mas_devops.tar.gz ]]; then - echo "Found a local Ansible collection($GITHUB_WORKSPACE/image/cli/install/ibm-mas_devops.tar.gz) in this PR, Local ansible collection is not allowed in master branch. Failing build." - exit 1 + echo "Found local Ansible collection($GITHUB_WORKSPACE/image/cli/install/ibm-mas_devops.tar.gz) in this PR, Local collection is not allowed in the master branch." + RC=1 fi + if [[ -e $GITHUB_WORKSPACE/image/cli/install/mas_devops.tar.gz ]]; then + echo "Found local Python package ($GITHUB_WORKSPACE/image/cli/install/mas_devops.tar.gz) in this PR, Local package is not allowed in the master branch." + RC=1 + fi + exit $RC diff --git a/image/cli/app-root/src/run-role.sh b/image/cli/app-root/src/run-role.sh index 0b2f3cea1e..4bd182b237 100644 --- a/image/cli/app-root/src/run-role.sh +++ b/image/cli/app-root/src/run-role.sh @@ -14,7 +14,8 @@ source /opt/app-root/src/env.sh python3 /opt/app-root/src/register-start.py export ROLE_NAME=$1 -ansible-playbook ibm.mas_devops.run_role +shift +ansible-playbook ibm.mas_devops.run_role $@ rc=$? python3 /opt/app-root/src/save-junit-to-mongo.py exit $rc diff --git a/python/setup.py b/python/setup.py index 2718089d26..1fc6dfbda0 100644 --- a/python/setup.py +++ b/python/setup.py @@ -58,12 +58,12 @@ def get_version(rel_path): description='Python Admin CLI for Maximo Application Suite', long_description=long_description, install_requires=[ - 'mas-devops >= 1.7.1', # EPL - 'halo', # MIT License - 'prompt_toolkit', # BSD License - 'openshift', # Apache Software License - 'kubernetes', # Apache Software License - 'tabulate' # MIT License + 'mas-devops >= 1.10.0', # EPL + 'halo', # MIT License + 'prompt_toolkit', # BSD License + 'openshift', # Apache Software License + 'kubernetes', # Apache Software License + 'tabulate' # MIT License ], extras_require={ 'dev': [ diff --git a/python/src/mas/cli/cli.py b/python/src/mas/cli/cli.py index ca07d21159..c1ba6d2621 100644 --- a/python/src/mas/cli/cli.py +++ b/python/src/mas/cli/cli.py @@ -25,7 +25,7 @@ from openshift.dynamic import DynamicClient from openshift.dynamic.exceptions import NotFoundError -from prompt_toolkit import prompt, print_formatted_text, HTML +from prompt_toolkit import prompt, print_formatted_text, HTML, PromptSession from mas.devops.mas import isAirgapInstall from mas.devops.ocp import connect, isSNO, getNodes @@ -173,6 +173,7 @@ def __init__(self): "visualinspection": ["8.8.x", "8.7.x"] } } + self.promptSession = PromptSession() self.spinner = { "interval": 80, @@ -184,9 +185,9 @@ def __init__(self): self._dynClient = None self.printTitle(f"\nIBM Maximo Application Suite Admin CLI v{self.version}") - print_formatted_text(HTML("Powered by https://github.com/ibm-mas/ansible-devops/ and https://tekton.dev/\n")) + print_formatted_text(HTML("Powered by https://github.com/ibm-mas/ansible-devops/ and https://tekton.dev/\n")) if which("kubectl") is None: - self.fatalError("Could not find kubectl on the path, see https://kubernetes.io/docs/tasks/tools/#kubectl for installation instructions") + self.fatalError("Could not find kubectl on the path, see https://kubernetes.io/docs/tasks/tools/#kubectl for installation instructions") @logMethodCall def createTektonFileWithDigest(self) -> None: diff --git a/python/src/mas/cli/displayMixins.py b/python/src/mas/cli/displayMixins.py index 615ae73dc6..98c31e8f19 100644 --- a/python/src/mas/cli/displayMixins.py +++ b/python/src/mas/cli/displayMixins.py @@ -90,7 +90,11 @@ def promptForString(self, message: str, param: str = None, default: str = "", is if param is not None and default == "": default = getenv(param.upper(), default="") - response = prompt(masPromptValue(message), is_password=isPassword, default=default, completer=completer, validator=validator, validate_while_typing=False) + if completer is not None: + response = self.promptSession.prompt(masPromptValue(message), is_password=isPassword, default=default, completer=completer, validator=validator, validate_while_typing=False, pre_run=self.promptSession.default_buffer.start_completion) + else: + response = self.promptSession.prompt(masPromptValue(message), is_password=isPassword, default=default, completer=completer, validator=validator, validate_while_typing=False) + if param is not None: self.params[param] = response return response diff --git a/python/src/mas/cli/install/app.py b/python/src/mas/cli/install/app.py index 6c43ffc2b7..ccfbcada5f 100644 --- a/python/src/mas/cli/install/app.py +++ b/python/src/mas/cli/install/app.py @@ -14,10 +14,12 @@ from sys import exit from os import path, getenv import re +import calendar from openshift.dynamic.exceptions import NotFoundError from prompt_toolkit import prompt, print_formatted_text, HTML +from prompt_toolkit.completion import WordCompleter from tabulate import tabulate @@ -30,7 +32,7 @@ from .settings import InstallSettingsMixin from .summarizer import InstallSummarizerMixin from .params import requiredParams, optionalParams -from .catalogs import catalogChoices +from .catalogs import supportedCatalogs from mas.cli.validators import ( InstanceIDFormatValidator, @@ -41,7 +43,9 @@ OptimizerInstallPlanValidator ) -from mas.devops.ocp import createNamespace, getStorageClass, getStorageClasses +from mas.devops.ocp import createNamespace, getStorageClasses +from mas.devops.mas import getCurrentCatalog, getDefaultStorageClasses +from mas.devops.data import getCatalog from mas.devops.tekton import ( installOpenShiftPipelines, updateTektonDefinitions, @@ -102,17 +106,17 @@ def validateInternalRegistryAvailable(self): self.fatalError( "\n".join([ "Unable to proceed with installation of Maximo Manage. Could not detect the required \"image-registry\" service in the openshift-image-registry namespace", - "For more information refer to https://www.ibm.com/docs/en/masv-and-l/continuous-delivery?topic=installing-enabling-openshift-internal-image-registry" + "For more information refer to https://www.ibm.com/docs/en/masv-and-l/continuous-delivery?topic=installing-enabling-openshift-internal-image-registry" ]) ) @logMethodCall def licensePrompt(self): licenses = { - "8.9.x": " - https://ibm.biz/MAS89-License", - "8.10.x": " - https://ibm.biz/MAS810-License", - "8.11.x": " - https://ibm.biz/MAS811-License\n - https://ibm.biz/MAXIT81-License", - "9.0.x": " - https://ibm.biz/MAS90-License\n - https://ibm.biz/MaximoIT90-License\n - https://ibm.biz/MAXArcGIS90-License" + "8.9.x": " - https://ibm.biz/MAS89-License", + "8.10.x": " - https://ibm.biz/MAS810-License", + "8.11.x": " - https://ibm.biz/MAS811-License\n - https://ibm.biz/MAXIT81-License", + "9.0.x": " - https://ibm.biz/MAS90-License\n - https://ibm.biz/MaximoIT90-License\n - https://ibm.biz/MAXArcGIS90-License" } if not self.licenseAccepted: @@ -153,6 +157,87 @@ def configCertManager(self): self.setParam("cert_manager_provider", "redhat") self.setParam("cert_manager_action", "install") + def formatCatalog(self, name: str) -> str: + # Convert "v9-241107-amd64" into "November 2024 Update (v9-241107-amd64)" + date = name.split("-")[1] + month = int(date[2:4]) + monthName = calendar.month_name[month] + year = date[:2] + return f" - {monthName} 20{year} Update\n https://ibm-mas.github.io/cli/catalogs/{name}" + + def formatRelease(self, release: str) -> str: + return f"{release} ... {self.catalogReleases[release]['core']}" + + @logMethodCall + def processCatalogChoice(self) -> list: + self.catalogDigest = self.chosenCatalog["catalog_digest"] + self.catalogCp4dVersion = self.chosenCatalog["cpd_product_version_default"] + self.catalogMongoDbVersion = self.chosenCatalog["mongo_extras_version_default"] + + self.catalogReleases = ["9.0.x", "8.11.x", "8.10.x"] + + self.catalogTable = [ + { + "": "Core", + "9.0.x": self.chosenCatalog["mas_core_version"]["9.0.x"], + "8.11.x": self.chosenCatalog["mas_core_version"]["8.11.x"], + "8.10.x": self.chosenCatalog["mas_core_version"]["8.10.x"] + }, + { + "": "Manage", + "9.0.x": self.chosenCatalog["mas_manage_version"]["9.0.x"], + "8.11.x": self.chosenCatalog["mas_manage_version"]["8.11.x"], + "8.10.x": self.chosenCatalog["mas_manage_version"]["8.10.x"] + }, + { + "": "IoT", + "9.0.x": self.chosenCatalog["mas_iot_version"]["9.0.x"], + "8.11.x": self.chosenCatalog["mas_iot_version"]["8.11.x"], + "8.10.x": self.chosenCatalog["mas_iot_version"]["8.10.x"] + }, + { + "": "Monitor", + "9.0.x": self.chosenCatalog["mas_monitor_version"]["9.0.x"], + "8.11.x": self.chosenCatalog["mas_monitor_version"]["8.11.x"], + "8.10.x": self.chosenCatalog["mas_monitor_version"]["8.10.x"] + }, + { + "": "Assist", + "9.0.x": self.chosenCatalog["mas_assist_version"]["9.0.x"], + "8.11.x": self.chosenCatalog["mas_assist_version"]["8.11.x"], + "8.10.x": self.chosenCatalog["mas_assist_version"]["8.10.x"] + }, + { + "": "Optimizer", + "9.0.x": self.chosenCatalog["mas_optimizer_version"]["9.0.x"], + "8.11.x": self.chosenCatalog["mas_optimizer_version"]["8.11.x"], + "8.10.x": self.chosenCatalog["mas_optimizer_version"]["8.10.x"] + }, + { + "": "Predict", + "9.0.x": self.chosenCatalog["mas_predict_version"]["9.0.x"], + "8.11.x": self.chosenCatalog["mas_predict_version"]["8.11.x"], + "8.10.x": self.chosenCatalog["mas_predict_version"]["8.10.x"] + }, + { + "": "Inspection", + "9.0.x": self.chosenCatalog["mas_visualinspection_version"]["9.0.x"], + "8.11.x": self.chosenCatalog["mas_visualinspection_version"]["8.11.x"], + "8.10.x": self.chosenCatalog["mas_visualinspection_version"]["8.10.x"] + } + ] + + summary = [ + "", + "Catalog Details", + f"Catalog Image: icr.io/cpopen/ibm-maximo-operator-catalog:{self.getParam('mas_catalog_version')}", + f"Catalog Digest: {self.catalogDigest}", + f"MAS Releases: {', '.join(self.catalogReleases)}", + f"Cloud Pak for Data: {self.catalogCp4dVersion}", + f"MongoDb: {self.catalogMongoDbVersion}", + ] + return summary + @logMethodCall def configCatalog(self): self.printH1("IBM Maximo Operator Catalog Selection") @@ -160,11 +245,48 @@ def configCatalog(self): self.promptForString("Select catalog source", "mas_catalog_version", default="v9-master-amd64") self.promptForString("Select channel", "mas_channel", default="9.1.x-dev") else: - print(tabulate(self.installOptions, headers="keys", tablefmt="simple_grid")) - catalogSelection = self.promptForInt("Select catalog and release", default=1) + catalogInfo = getCurrentCatalog(self.dynamicClient) + + if catalogInfo is None: + self.printDescription([ + "The catalog you choose dictates the version of everything that is installed, with Maximo Application Suite this is the only version you need to remember; all other versions are determined by this choice.", + "Older catalogs can still be used, but we recommend using an older version of the CLI that aligns with the release date of the catalog.", + " - Learn more: https://ibm-mas.github.io/cli/catalogs/", + "" + ]) + print("Supported Catalogs:") + for catalog in self.catalogOptions: + catalogString = self.formatCatalog(catalog) + print_formatted_text(HTML(f"{catalogString}")) + print() + + catalogCompleter = WordCompleter(self.catalogOptions) + catalogSelection = self.promptForString("Select catalog", completer=catalogCompleter) + self.setParam("mas_catalog_version", catalogSelection) + + self.chosenCatalog = getCatalog(self.getParam("mas_catalog_version")) + else: + self.printDescription([ + f"The IBM Maximo Operator Catalog is already installed in this cluster ({catalogInfo['catalogId']}). If you wish to install MAS using a newer version of the catalog please first update the catalog using mas update." + ]) + self.setParam("mas_catalog_version", catalogInfo["catalogId"]) + + self.chosenCatalog = getCatalog(self.getParam("mas_catalog_version")) + catalogSummary = self.processCatalogChoice() + self.printDescription(catalogSummary) + self.printDescription([ + "", + "Multiple releases of Maximo Application Suite are available, each is supported under IBM's standard 3+1+3 support model.", + "Choose the release of IBM Maximo Application Suite that you want to use for this installation from the table below:", + "" + ]) + + print(tabulate(self.catalogTable, headers="keys", tablefmt="simple_grid")) + + releaseCompleter = WordCompleter(self.catalogReleases) + releaseSelection = self.promptForString("Select release", completer=releaseCompleter) - self.setParam("mas_catalog_version", self.installOptions[catalogSelection - 1]["catalog"]) - self.setParam("mas_channel", self.installOptions[catalogSelection - 1]["release"]) + self.setParam("mas_channel", releaseSelection) @logMethodCall def configSLS(self) -> None: @@ -219,12 +341,12 @@ def configSpecialCharacters(self): @logMethodCall def configCP4D(self): - if self.getParam("mas_catalog_version") in ["v9-240625-amd64", "v9-240730-amd64", "v9-240827-amd64", "v9-241003-amd64", "v9-241107-amd64"]: + if self.getParam("mas_catalog_version") in self.catalogOptions: logger.debug(f"Using automatic CP4D product version: {self.getParam('cpd_product_version')}") - self.setParam("cpd_product_version", "4.8.0") + self.setParam("cpd_product_version", self.catalogInfo["cpd_product_version_default"]) elif self.getParam("cpd_product_version") == "": if self.noConfirm: - self.fatalError("Cloud Pak for Data version must be set manually, but --no-confirm flag has been set") + self.fatalError("Cloud Pak for Data version must be set manually, but --no-confirm has been set without setting --cp4d-version") self.printDescription([ f"Unknown catalog {self.getParam('mas_catalog_version')}, please manually select the version of Cloud Pak for Data to use" ]) @@ -522,46 +644,14 @@ def configStorageClasses(self): " - ReadWriteMany volumes can be mounted as read-write by multiple pods across many nodes.", "" ]) - # 1. ROKS - if getStorageClass(self.dynamicClient, "ibmc-file-gold-gid") is not None: - print_formatted_text(HTML("Storage provider auto-detected: IBMCloud ROKS")) - print_formatted_text(HTML(" - Storage class (ReadWriteOnce): ibmc-block-gold")) - print_formatted_text(HTML(" - Storage class (ReadWriteMany): ibmc-file-gold-gid")) - self.storageClassProvider = "ibmc" - self.params["storage_class_rwo"] = "ibmc-block-gold" - self.params["storage_class_rwx"] = "ibmc-file-gold-gid" - # 2. OCS - elif getStorageClass(self.dynamicClient, "ocs-storagecluster-cephfs") is not None: - print_formatted_text(HTML("Storage provider auto-detected: OpenShift Container Storage")) - print_formatted_text(HTML(" - Storage class (ReadWriteOnce): ocs-storagecluster-ceph-rbd")) - print_formatted_text(HTML(" - Storage class (ReadWriteMany): ocs-storagecluster-cephfs")) - self.storageClassProvider = "ocs" - self.params["storage_class_rwo"] = "ocs-storagecluster-ceph-rbd" - self.params["storage_class_rwx"] = "ocs-storagecluster-cephfs" - # 3. NFS Client - elif getStorageClass(self.dynamicClient, "nfs-client") is not None: - print_formatted_text(HTML("Storage provider auto-detected: NFS Client")) - print_formatted_text(HTML(" - Storage class (ReadWriteOnce): nfs-client")) - print_formatted_text(HTML(" - Storage class (ReadWriteMany): nfs-client")) - self.storageClassProvider = "nfs" - self.params["storage_class_rwo"] = "nfs-client" - self.params["storage_class_rwx"] = "nfs-client" - # 4. Azure - elif getStorageClass(self.dynamicClient, "managed-premium") is not None: - print_formatted_text(HTML("Storage provider auto-detected: Azure Managed")) - print_formatted_text(HTML(" - Storage class (ReadWriteOnce): managed-premium")) - print_formatted_text(HTML(" - Storage class (ReadWriteMany): azurefiles-premium")) - self.storageClassProvider = "azure" - self.params["storage_class_rwo"] = "managed-premium" - self.params["storage_class_rwx"] = "azurefiles-premium" - # 5. AWS - elif getStorageClass(self.dynamicClient, "gp2") is not None: - print_formatted_text(HTML("Storage provider auto-detected: AWS gp2")) - print_formatted_text(HTML(" - Storage class (ReadWriteOnce): gp2")) - print_formatted_text(HTML(" - Storage class (ReadWriteMany): efs")) - self.storageClassProvider = "aws" - self.params["storage_class_rwo"] = "gp2" - self.params["storage_class_rwx"] = "efs" + defaultStorageClasses = getDefaultStorageClasses(self.dynamicClient) + if defaultStorageClasses.provider is not None: + print_formatted_text(HTML(f"Storage provider auto-detected: {defaultStorageClasses.providerName}")) + print_formatted_text(HTML(f" - Storage class (ReadWriteOnce): {defaultStorageClasses.rwo}")) + print_formatted_text(HTML(f" - Storage class (ReadWriteMany): {defaultStorageClasses.rwx}")) + self.storageClassProvider = defaultStorageClasses.provider + self.params["storage_class_rwo"] = defaultStorageClasses.rwo + self.params["storage_class_rwx"] = defaultStorageClasses.rwx overrideStorageClasses = False if "storage_class_rwx" in self.params and self.params["storage_class_rwx"] != "": @@ -925,7 +1015,7 @@ def install(self, argv): exit(1) # Configure the installOptions for the appropriate architecture - self.installOptions = catalogChoices[self.architecture] + self.catalogOptions = supportedCatalogs[self.architecture] # Basic settings before the user provides any input self.configICR() diff --git a/python/src/mas/cli/install/argBuilder.py b/python/src/mas/cli/install/argBuilder.py index 41098894e6..fa3890c97f 100644 --- a/python/src/mas/cli/install/argBuilder.py +++ b/python/src/mas/cli/install/argBuilder.py @@ -232,10 +232,10 @@ def buildCommand(self) -> str: # IBM Db2 Universal Operator # ----------------------------------------------------------------------------- - if self.getParam('db2_system') == "install" or self.getParam('db2_manage') == "install": - if self.getParam('db2_system') == "install": + if self.getParam('db2_action_system') == "install" or self.getParam('db2_action_manage') == "install": + if self.getParam('db2_action_system') == "install": command += f" --db2-system{newline}" - if self.getParam('db2_manage') == "install": + if self.getParam('db2_action_manage') == "install": command += f" --db2-manage{newline}" if self.getParam('db2_channel') != "": diff --git a/python/src/mas/cli/install/catalogs.py b/python/src/mas/cli/install/catalogs.py index 03e920445c..5ba2ceeae6 100644 --- a/python/src/mas/cli/install/catalogs.py +++ b/python/src/mas/cli/install/catalogs.py @@ -7,135 +7,13 @@ # http://www.eclipse.org/legal/epl-v10.html # # ***************************************************************************** - -catalogChoices = { +supportedCatalogs = { "amd64": [ - { - "#": 1, - "catalog": "v9-241107-amd64", - "release": "9.0.x", - "core": "9.0.5", - "assist": "9.0.2", - "iot": "9.0.4", - "manage": "9.0.5", - "monitor": "9.0.4", - "optimizer": "9.0.4", - "predict": "9.0.2", - "inspection": "9.0.4", - "aibroker": "9.0.3" - }, - { - "#": 2, - "catalog": "v9-241107-amd64", - "release": "8.11.x", - "core": "8.11.16", - "assist": "8.8.6", - "iot": "8.8.14", - "manage": "8.7.13", - "monitor": "8.11.12", - "optimizer": "8.5.10", - "predict": "8.9.5", - "inspection": "8.9.7" - }, - { - "#": 3, - "catalog": "v9-241107-amd64", - "release": "8.10.x", - "core": "8.10.19", - "assist": "8.7.7", - "iot": "8.7.18", - "manage": "8.6.19", - "monitor": "8.10.14", - "optimizer": "8.4.11", - "predict": "8.8.4", - "inspection": "8.8.4" - }, - { - "#": 4, - "catalog": "v9-241003-amd64", - "release": "9.0.x", - "core": "9.0.3", - "assist": "9.0.2", - "iot": "9.0.3", - "manage": "9.0.3", - "monitor": "9.0.3", - "optimizer": "9.0.3", - "predict": "9.0.2", - "inspection": "9.0.3" - }, - { - "#": 5, - "catalog": "v9-241003-amd64", - "release": "8.11.x", - "core": "8.11.15", - "assist": "8.8.6", - "iot": "8.8.13", - "manage": "8.7.12", - "monitor": "8.11.11", - "optimizer": "8.5.9", - "predict": "8.9.5", - "inspection": "8.9.6" - }, - { - "#": 6, - "catalog": "v9-241003-amd64", - "release": "8.10.x", - "core": "8.10.18", - "assist": "8.7.7", - "iot": "8.7.17", - "manage": "8.6.18", - "monitor": "8.10.14", - "optimizer": "8.4.10", - "predict": "8.8.3", - "inspection": "8.8.4" - }, - { - "#": 7, - "catalog": "v9-240827-amd64", - "release": "9.0.x", - "core": "9.0.2", - "assist": "9.0.2", - "iot": "9.0.2", - "manage": "9.0.2", - "monitor": "9.0.2", - "optimizer": "9.0.2", - "predict": "9.0.1", - "inspection": "9.0.2" - }, - { - "#": 8, - "catalog": "v9-240827-amd64", - "release": "8.11.x", - "core": "8.11.14", - "assist": "8.8.6", - "iot": "8.8.12", - "manage": "8.7.11", - "monitor": "8.11.10", - "optimizer": "8.5.8", - "predict": "8.9.3", - "inspection": "8.9.5" - }, - { - "#": 9, - "catalog": "v9-240827-amd64", - "release": "8.10.x", - "core": "8.10.17", - "assist": "8.7.7", - "iot": "8.7.16", - "manage": "8.6.17", - "monitor": "8.10.13", - "optimizer": "8.4.9", - "predict": "8.8.3", - "inspection": "8.8.4" - } + "v9-241107-amd64", + "v9-241003-amd64", + "v9-240827-amd64" ], "s390x": [ - { - "#": 1, - "catalog": "v9-241107-s390x", - "release": "9.0.x", - "core": "9.0.5", - "manage": "9.0.5" - } + "v9-241107-s390x" ] } diff --git a/python/src/mas/cli/install/settings/additionalConfigs.py b/python/src/mas/cli/install/settings/additionalConfigs.py index 2a8d0b50a7..9c5856d220 100644 --- a/python/src/mas/cli/install/settings/additionalConfigs.py +++ b/python/src/mas/cli/install/settings/additionalConfigs.py @@ -67,7 +67,7 @@ def podTemplates(self) -> None: self.printH1("Configure Pod Templates") self.printDescription([ "The CLI supports two pod template profiles out of the box that allow you to reconfigure MAS for either a guaranteed or best effort QoS level", - "For more information about the Kubernetes quality of service (QoS) levels, see https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/", + "For more information about the Kubernetes quality of service (QoS) levels, see https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/", "You may also choose to use your own customized pod template definitions" ]) diff --git a/python/src/mas/cli/install/settings/db2Settings.py b/python/src/mas/cli/install/settings/db2Settings.py index bedddb59a8..023774d492 100644 --- a/python/src/mas/cli/install/settings/db2Settings.py +++ b/python/src/mas/cli/install/settings/db2Settings.py @@ -164,8 +164,8 @@ def configDb2(self) -> None: "Note that the same settings are applied to both the IoT and Manage Db2 instances", "Use existing node labels and taints to control scheduling of the Db2 workload in your cluster", "For more information refer to the Red Hat documentation:", - " - https://docs.openshift.com/container-platform/4.12/nodes/scheduling/nodes-scheduler-node-affinity.html", - " - https://docs.openshift.com/container-platform/4.12/nodes/scheduling/nodes-scheduler-taints-tolerations.html" + " - https://docs.openshift.com/container-platform/4.12/nodes/scheduling/nodes-scheduler-node-affinity.html", + " - https://docs.openshift.com/container-platform/4.12/nodes/scheduling/nodes-scheduler-taints-tolerations.html" ]) if self.yesOrNo("Configure node affinity"): diff --git a/python/src/mas/cli/install/settings/kafkaSettings.py b/python/src/mas/cli/install/settings/kafkaSettings.py index 7367ef98e6..2abd082bc2 100644 --- a/python/src/mas/cli/install/settings/kafkaSettings.py +++ b/python/src/mas/cli/install/settings/kafkaSettings.py @@ -73,7 +73,7 @@ def configKafka(self) -> None: "While provisioning the AWS MSK instance, you will be required to provide the AWS Virtual Private Cloud ID and subnet details", "where your instance will be deployed to properly configure inbound and outbound connectivity.", "You should be able to find these information inside your VPC and subnet configurations in the target AWS account.", - "For more details about AWS subnet/CIDR configuration, refer: https://docs.aws.amazon.com/vpc/latest/userguide/subnet-sizing.html" + "For more details about AWS subnet/CIDR configuration, refer: https://docs.aws.amazon.com/vpc/latest/userguide/subnet-sizing.html" ]) self.promptForString("AWS Access Key ID", "aws_access_key_id", isPassword=True) self.promptForString("AWS Secret Access Key" "aws_secret_access_key", isPassword=True) diff --git a/python/src/mas/cli/install/settings/manageSettings.py b/python/src/mas/cli/install/settings/manageSettings.py index 151ea7493d..10344b5b1c 100644 --- a/python/src/mas/cli/install/settings/manageSettings.py +++ b/python/src/mas/cli/install/settings/manageSettings.py @@ -32,7 +32,7 @@ def arcgisSettings(self) -> None: "", "IBM Maximo Location Services for Esri License Terms", "For information about your IBM Maximo Location Services for Esri License visit: ", - " https://ibm.biz/MAXArcGIS90-License", + " - https://ibm.biz/MAXArcGIS90-License", "To continue with the installation, you must accept these additional license terms" ]) @@ -117,7 +117,7 @@ def manageSettingsComponents(self) -> None: if ",icd=" in self.params["mas_appws_components"]: self.printH2("Maximo IT License Terms") self.printDescription([ - "For information about your Maximo IT License, see https://ibm.biz/MAXIT81-License", + "For information about your Maximo IT License, see https://ibm.biz/MAXIT81-License", "To continue with the installation, you must accept these additional license terms" ]) @@ -217,7 +217,7 @@ def manageSettingsLanguages(self) -> None: self.printDescription([ "Define the additional languages to be configured in Maximo Manage. provide a comma-separated list of supported languages codes, for example: 'JA,DE,AR'", "A complete list of available language codes is available online:", - " https://www.ibm.com/docs/en/mas-cd/mhmpmh-and-p-u/continuous-delivery?topic=deploy-language-support" + " https://www.ibm.com/docs/en/mas-cd/mhmpmh-and-p-u/continuous-delivery?topic=deploy-language-support" ]) self.promptForString("Secondary languages", "mas_app_settings_secondary_langs") @@ -226,7 +226,7 @@ def manageSettingsCP4D(self) -> None: if self.getParam("mas_app_channel_manage") in ["8.7.x", "9.0.x"] and self.showAdvancedOptions: self.printDescription([ "Integration with Cognos Analytics provides additional support for reporting features in Maximo Manage, for more information refer to the documentation online: ", - " https://ibm.biz/BdMuxs" + " - https://ibm.biz/BdMuxs" ]) self.yesOrNo("Enable integration with Cognos Analytics", "cpd_install_cognos") self.yesOrNo("Enable integration with Watson Studio Local", "mas_appws_bindings_health_flag") diff --git a/python/src/mas/cli/install/settings/turbonomicSettings.py b/python/src/mas/cli/install/settings/turbonomicSettings.py index 108f361c9b..08cee7ca9f 100644 --- a/python/src/mas/cli/install/settings/turbonomicSettings.py +++ b/python/src/mas/cli/install/settings/turbonomicSettings.py @@ -18,7 +18,7 @@ def configTurbonomic(self) -> None: self.printH1("Configure Turbonomic") self.printDescription([ "The IBM Turbonomic hybrid cloud cost optimization platform allows you to eliminate this guesswork with solutions that save time and optimize costs", - " - Learn more: https://www.ibm.com/products/turbonomic" + " - Learn more: https://www.ibm.com/products/turbonomic" ]) if isAirgapInstall(self.dynamicClient): diff --git a/python/src/mas/cli/update/app.py b/python/src/mas/cli/update/app.py index 300c32deba..c3f049796d 100644 --- a/python/src/mas/cli/update/app.py +++ b/python/src/mas/cli/update/app.py @@ -9,7 +9,6 @@ # # ***************************************************************************** -import re import logging import logging.handlers from halo import Halo @@ -22,7 +21,7 @@ from .argParser import updateArgParser from mas.devops.ocp import createNamespace, getStorageClasses, getConsoleURL -from mas.devops.mas import listMasInstances +from mas.devops.mas import listMasInstances, getCurrentCatalog from mas.devops.tekton import preparePipelinesNamespace, installOpenShiftPipelines, updateTektonDefinitions, launchUpdatePipeline @@ -205,30 +204,19 @@ def update(self, argv): print() def reviewCurrentCatalog(self) -> None: - catalogsAPI = self.dynamicClient.resources.get(api_version="operators.coreos.com/v1alpha1", kind="CatalogSource") - try: - catalog = catalogsAPI.get(name="ibm-operator-catalog", namespace="openshift-marketplace") - catalogDisplayName = catalog.spec.displayName - catalogImage = catalog.spec.image - - m = re.match(r".+(?Pv[89]-(?P[0-9]+)-amd64)", catalogDisplayName) - if m: - # catalogId = v8-yymmdd-amd64 - # catalogVersion = yymmdd - self.installedCatalogId = m.group("catalogId") - elif re.match(r".+v8-amd64", catalogDisplayName): - self.installedCatalogId = "v8-amd64" - else: - self.installedCatalogId = None - self.printWarning("Unable to determine identity & version of currently installed ibm-maximo-operator-catalog") - + catalogInfo = getCurrentCatalog(self.dynamicClient) + self.installedCatalogId = None + if catalogInfo is None: + self.fatalError("Unable to locate existing install of the IBM Maximo Operator Catalog") + elif catalogInfo["catalogId"] is None: + self.printWarning("Unable to determine identity & version of currently installed ibm-maximo-operator-catalog") + else: + self.installedCatalogId = catalogInfo["catalogId"] self.printH1("Review Installed Catalog") self.printDescription([ - f"The currently installed Maximo Operator Catalog is {catalogDisplayName}", - f" {catalogImage}" + f"The currently installed Maximo Operator Catalog is {catalogInfo['displayName']}", + f" {catalogInfo['image']}" ]) - except NotFoundError as e: - self.fatalError("Unable to locate existing install of the IBM Maximo Operator Catalog", e) def reviewMASInstance(self) -> None: self.printH1("Review MAS Instances") diff --git a/tekton/src/pipelines/fvt-mobile-testng.yml.j2 b/tekton/src/pipelines/fvt-mobile-testng.yml.j2 index 34af16baee..85b28f491e 100644 --- a/tekton/src/pipelines/fvt-mobile-testng.yml.j2 +++ b/tekton/src/pipelines/fvt-mobile-testng.yml.j2 @@ -54,10 +54,10 @@ spec: # 2. Manage FVT - Manage Mobile # ------------------------------------------------------------------------- - {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase0-civil.yml.j2') | indent(4) }} + {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase1-setup.yml.j2') | indent(4) }} - {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase2-android-mobfound.yml.j2') | indent(4) }} - {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase3-android-apps.yml.j2') | indent(4) }} - {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase4-ios-mobfound.yml.j2') | indent(4) }} - {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase5-ios-apps.yml.j2') | indent(4) }} - {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase6-desktop.yml.j2') | indent(4) }} + {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase2-civil.yml.j2') | indent(4) }} + {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase3-mobfound.yml.j2') | indent(4) }} + {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase4-apps-android.yml.j2') | indent(4) }} + {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase5-apps-ios.yml.j2') | indent(4) }} + {{ lookup('template', 'taskdefs/fvt-mobile/testng/phase6-apps-desktop.yml.j2') | indent(4) }} diff --git a/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-manage.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-manage.yml.j2 index 4e668870db..c1d3435bac 100644 --- a/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-manage.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-manage.yml.j2 @@ -1,6 +1,7 @@ taskRef: kind: Task name: mas-fvt-manage +timeout: "0" when: - input: "$(params.fvt_digest_manage)" operator: notin diff --git a/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-pytest.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-pytest.yml.j2 index 1cdee90a9b..12b3507281 100644 --- a/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-pytest.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-pytest.yml.j2 @@ -1,6 +1,7 @@ taskRef: kind: Task name: mas-fvt-mobile-pytest +timeout: "0" workspaces: - name: configs workspace: shared-configs diff --git a/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-testng.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-testng.yml.j2 index 82047f5dc2..6c7b8db4c8 100644 --- a/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-testng.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-mobile/common/taskref-testng.yml.j2 @@ -1,6 +1,7 @@ taskRef: kind: Task name: mas-fvt-mobile-testng +timeout: "0" when: - input: "$(params.fvt_digest_mobile_testng)" operator: notin diff --git a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase2-android-mobfound.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase2-android-mobfound.yml.j2 deleted file mode 100644 index c77fde7234..0000000000 --- a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase2-android-mobfound.yml.j2 +++ /dev/null @@ -1,13 +0,0 @@ -## All Mobile Foundation MAS test suites -- name: fvt-mobile-testng-mobfound-android - {{ lookup('template', 'taskdefs/fvt-mobile/common/taskref-testng.yml.j2') | indent(2) }} - params: - {{ lookup('template', 'taskdefs/fvt-mobile/common/params-testng.yml.j2') | indent(4) }} - - name: fvt_mobile_app - value: disconnected-framework-automation - - name: mobile_device_type - value: android - - name: fvt_test_suite - value: mobfoundation-mvt-android - runAfter: - - fvt-mobile-setup-testng diff --git a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase0-civil.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase2-civil.yml.j2 similarity index 96% rename from tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase0-civil.yml.j2 rename to tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase2-civil.yml.j2 index 8c6974f129..e6da343d6e 100644 --- a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase0-civil.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase2-civil.yml.j2 @@ -5,6 +5,8 @@ {{ lookup('template', 'taskdefs/fvt-mobile/common/params-manage.yml.j2') | indent(4) }} - name: fvt_test_suite value: civil-bvt + runAfter: + - fvt-mobile-setup-testng ## Minimum Verification Test for Mobile Defects MAS test suites - name: fvt-mobile-testng-defects-android diff --git a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase3-mobfound.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase3-mobfound.yml.j2 new file mode 100644 index 0000000000..b304a2c072 --- /dev/null +++ b/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase3-mobfound.yml.j2 @@ -0,0 +1,29 @@ +## All Mobile Foundation MAS test suites +- name: fvt-mobile-testng-mobfound-android + {{ lookup('template', 'taskdefs/fvt-mobile/common/taskref-testng.yml.j2') | indent(2) }} + params: + {{ lookup('template', 'taskdefs/fvt-mobile/common/params-testng.yml.j2') | indent(4) }} + - name: fvt_mobile_app + value: disconnected-framework-automation + - name: mobile_device_type + value: android + - name: fvt_test_suite + value: mobfoundation-mvt-android + runAfter: + - fvt-mobile-setup-testng + + +## Minimum Verification Test for Mobile Foundation MAS test suites +- name: fvt-mobile-testng-mobfound-ios + {{ lookup('template', 'taskdefs/fvt-mobile/common/taskref-testng.yml.j2') | indent(2) }} + params: + {{ lookup('template', 'taskdefs/fvt-mobile/common/params-testng.yml.j2') | indent(4) }} + - name: fvt_mobile_app + value: disconnected-framework-automation + - name: mobile_device_type + value: ios + - name: fvt_test_suite + value: mobfoundation-mvt-ios + runAfter: + - fvt-mobile-setup-testng + diff --git a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase3-android-apps.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase4-apps-android.yml.j2 similarity index 93% rename from tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase3-android-apps.yml.j2 rename to tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase4-apps-android.yml.j2 index 19b749ce72..a0f96be91a 100644 --- a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase3-android-apps.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase4-apps-android.yml.j2 @@ -11,6 +11,7 @@ value: inspections-mvt-android runAfter: - fvt-mobile-testng-mobfound-android + - fvt-mobile-testng-mobfound-ios ## Minimum Verification Test for Mobile Asset Manager MAS test suites - name: fvt-mobile-testng-assetmng-android @@ -25,6 +26,7 @@ value: asset-manager-mvt-android runAfter: - fvt-mobile-testng-mobfound-android + - fvt-mobile-testng-mobfound-ios ## Mobile FVT - Inventory Counting Android - name: fvt-mobile-testng-ic-android @@ -39,6 +41,7 @@ value: inventory-counting-mvt-android runAfter: - fvt-mobile-testng-mobfound-android + - fvt-mobile-testng-mobfound-ios ## Minimum Verification Test for Mobile Service Request MAS test suites - name: fvt-mobile-testng-sr-android @@ -53,6 +56,7 @@ value: service-request-mvt-android runAfter: - fvt-mobile-testng-mobfound-android + - fvt-mobile-testng-mobfound-ios ## Mobile FVT - Inventory Receiving Android - name: fvt-mobile-testng-ir-android @@ -67,6 +71,7 @@ value: inventory-receiving-mvt-android runAfter: - fvt-mobile-testng-mobfound-android + - fvt-mobile-testng-mobfound-ios ## Minimum Verification Test for Mobile Technician MAS test suites - name: fvt-mobile-testng-technician-android @@ -81,6 +86,7 @@ value: technician-mvt-android runAfter: - fvt-mobile-testng-mobfound-android + - fvt-mobile-testng-mobfound-ios ## Minimum Verification Test for Mobile Supervisor MAS test suites - name: fvt-mobile-testng-supervisor-android @@ -95,6 +101,7 @@ value: supervisor-mvt-android runAfter: - fvt-mobile-testng-mobfound-android + - fvt-mobile-testng-mobfound-ios ## Minimum Verification Test for Mobile calibration MAS test suites - name: fvt-mobile-testng-calibration-android @@ -109,6 +116,7 @@ value: calibration-mvt-android runAfter: - fvt-mobile-testng-mobfound-android + - fvt-mobile-testng-mobfound-ios ## Mobile FVT - Issues and Transfers Android - name: fvt-mobile-testng-it-android @@ -123,3 +131,4 @@ value: issues-transfer-mvt-android runAfter: - fvt-mobile-testng-mobfound-android + - fvt-mobile-testng-mobfound-ios diff --git a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase4-ios-mobfound.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase4-ios-mobfound.yml.j2 deleted file mode 100644 index b665d8269d..0000000000 --- a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase4-ios-mobfound.yml.j2 +++ /dev/null @@ -1,21 +0,0 @@ -## Minimum Verification Test for Mobile Foundation MAS test suites -- name: fvt-mobile-testng-mobfound-ios - {{ lookup('template', 'taskdefs/fvt-mobile/common/taskref-testng.yml.j2') | indent(2) }} - params: - {{ lookup('template', 'taskdefs/fvt-mobile/common/params-testng.yml.j2') | indent(4) }} - - name: fvt_mobile_app - value: disconnected-framework-automation - - name: mobile_device_type - value: ios - - name: fvt_test_suite - value: mobfoundation-mvt-ios - runAfter: - - fvt-mobile-testng-assetmng-android - - fvt-mobile-testng-calibration-android - - fvt-mobile-testng-inspections-android - - fvt-mobile-testng-ic-android - - fvt-mobile-testng-ir-android - - fvt-mobile-testng-it-android - - fvt-mobile-testng-sr-android - - fvt-mobile-testng-supervisor-android - - fvt-mobile-testng-technician-android diff --git a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase5-ios-apps.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase5-apps-ios.yml.j2 similarity index 56% rename from tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase5-ios-apps.yml.j2 rename to tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase5-apps-ios.yml.j2 index 7f904ebade..942afb7a90 100644 --- a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase5-ios-apps.yml.j2 +++ b/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase5-apps-ios.yml.j2 @@ -10,7 +10,15 @@ - name: fvt_test_suite value: inspections-mvt-ios runAfter: - - fvt-mobile-testng-mobfound-ios + - fvt-mobile-testng-assetmng-android + - fvt-mobile-testng-calibration-android + - fvt-mobile-testng-inspections-android + - fvt-mobile-testng-ic-android + - fvt-mobile-testng-ir-android + - fvt-mobile-testng-it-android + - fvt-mobile-testng-sr-android + - fvt-mobile-testng-supervisor-android + - fvt-mobile-testng-technician-android ## Minimum Verification Test for Mobile Asset Manager MAS test suites - name: fvt-mobile-testng-assetmng-ios @@ -24,7 +32,15 @@ - name: fvt_test_suite value: asset-manager-mvt-ios runAfter: - - fvt-mobile-testng-mobfound-ios + - fvt-mobile-testng-assetmng-android + - fvt-mobile-testng-calibration-android + - fvt-mobile-testng-inspections-android + - fvt-mobile-testng-ic-android + - fvt-mobile-testng-ir-android + - fvt-mobile-testng-it-android + - fvt-mobile-testng-sr-android + - fvt-mobile-testng-supervisor-android + - fvt-mobile-testng-technician-android # Mobile FVT - Inventory Counting IOS - name: fvt-mobile-testng-ic-ios @@ -38,7 +54,15 @@ - name: fvt_test_suite value: inventory-counting-mvt-ios # xml for Mobile IC runAfter: - - fvt-mobile-testng-mobfound-ios + - fvt-mobile-testng-assetmng-android + - fvt-mobile-testng-calibration-android + - fvt-mobile-testng-inspections-android + - fvt-mobile-testng-ic-android + - fvt-mobile-testng-ir-android + - fvt-mobile-testng-it-android + - fvt-mobile-testng-sr-android + - fvt-mobile-testng-supervisor-android + - fvt-mobile-testng-technician-android ## Minimum Verification Test for Mobile Service Request MAS test suites - name: fvt-mobile-testng-sr-ios @@ -52,7 +76,15 @@ - name: fvt_test_suite value: service-request-mvt-ios runAfter: - - fvt-mobile-testng-mobfound-ios + - fvt-mobile-testng-assetmng-android + - fvt-mobile-testng-calibration-android + - fvt-mobile-testng-inspections-android + - fvt-mobile-testng-ic-android + - fvt-mobile-testng-ir-android + - fvt-mobile-testng-it-android + - fvt-mobile-testng-sr-android + - fvt-mobile-testng-supervisor-android + - fvt-mobile-testng-technician-android # Mobile FVT - Inventory Receiving IOS - name: fvt-mobile-testng-ir-ios @@ -66,7 +98,15 @@ - name: fvt_test_suite value: inventory-receiving-mvt-ios runAfter: - - fvt-mobile-testng-mobfound-ios + - fvt-mobile-testng-assetmng-android + - fvt-mobile-testng-calibration-android + - fvt-mobile-testng-inspections-android + - fvt-mobile-testng-ic-android + - fvt-mobile-testng-ir-android + - fvt-mobile-testng-it-android + - fvt-mobile-testng-sr-android + - fvt-mobile-testng-supervisor-android + - fvt-mobile-testng-technician-android ## Minimum Verification Test for Mobile Technician MAS test suites - name: fvt-mobile-testng-technician-ios @@ -80,7 +120,15 @@ - name: fvt_test_suite value: technician-mvt-ios runAfter: - - fvt-mobile-testng-mobfound-ios + - fvt-mobile-testng-assetmng-android + - fvt-mobile-testng-calibration-android + - fvt-mobile-testng-inspections-android + - fvt-mobile-testng-ic-android + - fvt-mobile-testng-ir-android + - fvt-mobile-testng-it-android + - fvt-mobile-testng-sr-android + - fvt-mobile-testng-supervisor-android + - fvt-mobile-testng-technician-android ## Minimum Verification Test for Mobile Supervisor MAS test suites - name: fvt-mobile-testng-supervisor-ios @@ -94,7 +142,15 @@ - name: fvt_test_suite value: supervisor-mvt-ios runAfter: - - fvt-mobile-testng-mobfound-ios + - fvt-mobile-testng-assetmng-android + - fvt-mobile-testng-calibration-android + - fvt-mobile-testng-inspections-android + - fvt-mobile-testng-ic-android + - fvt-mobile-testng-ir-android + - fvt-mobile-testng-it-android + - fvt-mobile-testng-sr-android + - fvt-mobile-testng-supervisor-android + - fvt-mobile-testng-technician-android ## Minimum Verification Test for Mobile Technician MAS test suites - name: fvt-mobile-testng-calibration-ios @@ -108,7 +164,15 @@ - name: fvt_test_suite value: calibration-mvt-ios runAfter: - - fvt-mobile-testng-mobfound-ios + - fvt-mobile-testng-assetmng-android + - fvt-mobile-testng-calibration-android + - fvt-mobile-testng-inspections-android + - fvt-mobile-testng-ic-android + - fvt-mobile-testng-ir-android + - fvt-mobile-testng-it-android + - fvt-mobile-testng-sr-android + - fvt-mobile-testng-supervisor-android + - fvt-mobile-testng-technician-android # Mobile FVT - Issues and Transfers IOS - name: fvt-mobile-testng-it-ios @@ -122,4 +186,12 @@ - name: fvt_test_suite value: issues-transfer-mvt-ios runAfter: - - fvt-mobile-testng-mobfound-ios + - fvt-mobile-testng-assetmng-android + - fvt-mobile-testng-calibration-android + - fvt-mobile-testng-inspections-android + - fvt-mobile-testng-ic-android + - fvt-mobile-testng-ir-android + - fvt-mobile-testng-it-android + - fvt-mobile-testng-sr-android + - fvt-mobile-testng-supervisor-android + - fvt-mobile-testng-technician-android diff --git a/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase6-desktop.yml.j2 b/tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase6-apps-desktop.yml.j2 similarity index 100% rename from tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase6-desktop.yml.j2 rename to tekton/src/pipelines/taskdefs/fvt-mobile/testng/phase6-apps-desktop.yml.j2 diff --git a/tekton/src/tasks/fvt/fvt-mobile-pytest.yml.j2 b/tekton/src/tasks/fvt/fvt-mobile-pytest.yml.j2 index ee84750a83..124b8ce9cf 100644 --- a/tekton/src/tasks/fvt/fvt-mobile-pytest.yml.j2 +++ b/tekton/src/tasks/fvt/fvt-mobile-pytest.yml.j2 @@ -74,7 +74,6 @@ spec: default: "default_output.data" stepTemplate: - name: 'fvt-mobile-$(params.fvt_test_suite)' env: - name: PRODUCT_ID value: $(params.product_id) diff --git a/tekton/src/tasks/fvt/fvt-mobile-testng.yml.j2 b/tekton/src/tasks/fvt/fvt-mobile-testng.yml.j2 index da69e16281..720548c1e1 100644 --- a/tekton/src/tasks/fvt/fvt-mobile-testng.yml.j2 +++ b/tekton/src/tasks/fvt/fvt-mobile-testng.yml.j2 @@ -56,7 +56,6 @@ spec: default: "" stepTemplate: - name: 'fvt-mobile-$(params.fvt_test_suite)' securityContext: privileged: true runAsUser: 0