mas-cli 21.8.2__tar.gz → 21.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mas_cli-21.8.2/python/src/mas_cli.egg-info → mas_cli-21.9.0}/PKG-INFO +1 -2
- {mas_cli-21.8.2 → mas_cli-21.9.0}/pyproject.toml +6 -2
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/__init__.py +1 -1
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/__main__.py +0 -7
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/aiservice/install/app.py +1 -1
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/aiservice/upgrade/app.py +6 -3
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/backup/app.py +12 -4
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/cli.py +32 -4
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/app.py +8 -3
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/settings/aiSettings.py +12 -71
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/settings/db2Settings.py +3 -2
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/settings/manageSettings.py +89 -83
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/summarizer.py +14 -26
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/ibm-mas-tekton.yaml +15775 -37327
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/uninstall/app.py +6 -3
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/update/app.py +9 -4
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/upgrade/app.py +10 -4
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/validators.py +1 -2
- {mas_cli-21.8.2 → mas_cli-21.9.0/python/src/mas_cli.egg-info}/PKG-INFO +1 -2
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas_cli.egg-info/requires.txt +0 -1
- {mas_cli-21.8.2 → mas_cli-21.9.0}/LICENSE +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/README.md +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/README.md +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/aiservice/install/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/aiservice/install/argBuilder.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/aiservice/install/argParser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/aiservice/install/params.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/aiservice/install/summarizer.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/aiservice/upgrade/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/aiservice/upgrade/argParser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/backup/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/backup/argParser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/displayMixins.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/gencfg.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/argBuilder.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/argParser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/catalogs.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/facilities/agents.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/params.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/settings/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/settings/additionalConfigs.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/settings/kafkaSettings.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/install/settings/mongodbSettings.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/mirror/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/mirror/app.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/mirror/argParser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/mirror/config.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/aiservice/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/aiservice/instance.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/aiservice/pipelines.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/aiservice/tenant.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/app.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/arg_parser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/argo/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/argo/applications.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/collection_plan.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/common/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/common/coreapi.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/common/crd_processor.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/common/parallel.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/common/pod_exec.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/common/pods.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/common/reconcile_logs.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/common/resources.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/common/secrets.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/common/task_generation.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/common/thread_safe_client.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/dependencies/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/dependencies/cert_manager.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/dependencies/cp4d.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/dependencies/db2.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/dependencies/grafana.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/dependencies/kafka.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/dependencies/mongodb.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/dependencies/sls.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/dependencies/utils.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/mas/apps.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/mas/core.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/mas/licensing.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/mas/manage.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/mas/network_tests.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/mas/pipelines.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/mas/version.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/ocp/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/ocp/airgap.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/ocp/cluster.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/ocp/marketplace.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/ocp/nodes.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/output.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/parallel_executor.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/summarizer/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/summarizer/licensing.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/summarizer/nodes.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/summarizer/subscriptions.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/summarizer/suite.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/timer.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/web_viewer/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/web_viewer/__main__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/must_gather/web_viewer/templates/viewer.html +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/pre_install/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/pre_install/app.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/pre_install/argParser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/rbac_utils.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/restore/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/restore/app.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/restore/argParser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/setup_rbac/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/setup_rbac/app.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/setup_rbac/argParser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/aicfg.yml.j2 +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/facilities-configs.yml.j2 +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/jdbccfg.yml.j2 +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-data-dictionary-assetdatadictionary.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-bascfg.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-coreidp.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-actions.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-auth.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-datapower.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-devops.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dm.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dsc.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-edgeconfig.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-fpl.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-guardian.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-iot.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mbgx.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mfgx.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-monitor.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-orgmgmt.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-provision.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-registry.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-state.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-webui.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextaccelerator.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextworkspace.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-imagestitching.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageaccelerators.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageapp.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageworkspace.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-slackproxy.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-pushnotificationcfg.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-scimcfg.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-slscfg.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-smtpcfg.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-suite.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-visualinspection.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-sls-licenseservice.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-data-dictionary-assetdatadictionary.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-bascfg.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-coreidp.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-actions.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-auth.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-datapower.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-devops.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dm.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dsc.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-edgeconfig.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-fpl.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-guardian.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-iot.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mbgx.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mfgx.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-monitor.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-orgmgmt.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-provision.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-registry.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-state.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-webui.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextaccelerator.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextworkspace.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-imagestitching.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageaccelerators.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageapp.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageworkspace.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-slackproxy.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-pushnotificationcfg.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-scimcfg.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-slscfg.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-smtpcfg.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-suite.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-visualinspection.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-sls-licenseservice.yml +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/templates/suite_mongocfg.yml.j2 +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/uninstall/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/uninstall/argParser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/update/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/update/argParser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/upgrade/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/upgrade/argParser.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas/cli/upgrade/settings/__init__.py +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas_cli.egg-info/SOURCES.txt +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas_cli.egg-info/dependency_links.txt +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas_cli.egg-info/entry_points.txt +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/python/src/mas_cli.egg-info/top_level.txt +0 -0
- {mas_cli-21.8.2 → mas_cli-21.9.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mas-cli
|
|
3
|
-
Version: 21.
|
|
3
|
+
Version: 21.9.0
|
|
4
4
|
Summary: Python Admin CLI for Maximo Application Suite
|
|
5
5
|
Author-email: David Parker <parkerda@uk.ibm.com>
|
|
6
6
|
License-Expression: EPL-1.0
|
|
@@ -21,7 +21,6 @@ Requires-Dist: mas-devops>=9.0.0
|
|
|
21
21
|
Requires-Dist: alive-progress
|
|
22
22
|
Requires-Dist: halo
|
|
23
23
|
Requires-Dist: prompt_toolkit
|
|
24
|
-
Requires-Dist: openshift
|
|
25
24
|
Requires-Dist: kubernetes==33.1.0
|
|
26
25
|
Requires-Dist: tabulate
|
|
27
26
|
Requires-Dist: prettytable
|
|
@@ -21,7 +21,6 @@ dependencies = [
|
|
|
21
21
|
"alive-progress",
|
|
22
22
|
"halo",
|
|
23
23
|
"prompt_toolkit",
|
|
24
|
-
"openshift",
|
|
25
24
|
"kubernetes == 33.1.0",
|
|
26
25
|
"tabulate",
|
|
27
26
|
"prettytable",
|
|
@@ -86,7 +85,12 @@ max-line-length = 160
|
|
|
86
85
|
|
|
87
86
|
[tool.basedpyright]
|
|
88
87
|
# Only check must-gather module during gradual rollout
|
|
89
|
-
include = [
|
|
88
|
+
include = [
|
|
89
|
+
"python/src/mas/cli/must_gather",
|
|
90
|
+
"python/src/mas/cli/update",
|
|
91
|
+
"python/src/mas/cli/upgrade",
|
|
92
|
+
"python/tests/unit/must_gather"
|
|
93
|
+
]
|
|
90
94
|
|
|
91
95
|
# Use "basic" mode - focuses on our code, lenient with untyped dependencies
|
|
92
96
|
# Options: "off", "basic", "standard", "strict"
|
|
@@ -12,7 +12,6 @@ import logging
|
|
|
12
12
|
from sys import argv
|
|
13
13
|
|
|
14
14
|
from jinja2.exceptions import TemplateNotFound
|
|
15
|
-
from kubeconfig.exceptions import KubectlCommandError
|
|
16
15
|
from kubernetes.client.exceptions import ApiException
|
|
17
16
|
from prompt_toolkit import HTML, print_formatted_text
|
|
18
17
|
from urllib3.exceptions import MaxRetryError
|
|
@@ -161,12 +160,6 @@ def main() -> None:
|
|
|
161
160
|
else:
|
|
162
161
|
logger.error("Could not find template", exc_info=exception)
|
|
163
162
|
raise SystemExit(1) from exception
|
|
164
|
-
except KubectlCommandError as exception:
|
|
165
|
-
if app:
|
|
166
|
-
app.fatalError("Could not execute kubectl command", exception=exception)
|
|
167
|
-
else:
|
|
168
|
-
logger.error("Could not execute kubectl command", exc_info=exception)
|
|
169
|
-
raise SystemExit(1) from exception
|
|
170
163
|
|
|
171
164
|
|
|
172
165
|
if __name__ == "__main__":
|
|
@@ -17,7 +17,7 @@ from datetime import datetime
|
|
|
17
17
|
from dateutil.relativedelta import relativedelta
|
|
18
18
|
from sys import exit
|
|
19
19
|
from os import path, getenv
|
|
20
|
-
from
|
|
20
|
+
from kubernetes.dynamic.exceptions import NotFoundError
|
|
21
21
|
from prompt_toolkit import prompt, print_formatted_text, HTML
|
|
22
22
|
from prompt_toolkit.completion import WordCompleter
|
|
23
23
|
from tabulate import tabulate
|
|
@@ -24,7 +24,7 @@ from .argParser import upgradeArgParser
|
|
|
24
24
|
from mas.devops.ocp import createNamespace
|
|
25
25
|
from mas.devops.aiservice import listAiServiceInstances, getAiserviceChannel
|
|
26
26
|
from mas.devops.tekton import installOpenShiftPipelines, updateTektonDefinitions, launchAiServiceUpgradePipeline
|
|
27
|
-
from
|
|
27
|
+
from kubernetes.dynamic.exceptions import ResourceNotFoundError
|
|
28
28
|
|
|
29
29
|
logger = logging.getLogger(__name__)
|
|
30
30
|
|
|
@@ -69,8 +69,11 @@ class AiServiceUpgradeApp(BaseApp):
|
|
|
69
69
|
sys.exit(1)
|
|
70
70
|
|
|
71
71
|
for aiservice in aiserviceInstances:
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
instanceId = aiservice["metadata"]["name"]
|
|
73
|
+
reconciledVersion = self.getReconciledVersion(aiservice)
|
|
74
|
+
|
|
75
|
+
print_formatted_text(HTML(f"- <u>{instanceId}</u> v{reconciledVersion}"))
|
|
76
|
+
aiserviceOptions.append(instanceId)
|
|
74
77
|
|
|
75
78
|
aiserviceCompleter = WordCompleter(aiserviceOptions)
|
|
76
79
|
print()
|
|
@@ -15,7 +15,7 @@ from halo import Halo
|
|
|
15
15
|
from prompt_toolkit import prompt, print_formatted_text, HTML
|
|
16
16
|
from prompt_toolkit.completion import WordCompleter
|
|
17
17
|
|
|
18
|
-
from
|
|
18
|
+
from kubernetes.dynamic.exceptions import ResourceNotFoundError
|
|
19
19
|
|
|
20
20
|
from ..cli import BaseApp
|
|
21
21
|
from ..validators import InstanceIDValidator, StorageClassValidator
|
|
@@ -270,7 +270,10 @@ class BackupApp(BaseApp):
|
|
|
270
270
|
instances = listMasInstances(self.dynamicClient)
|
|
271
271
|
self.printDescription(["The following MAS instances are installed on the target cluster:"])
|
|
272
272
|
for instance in instances:
|
|
273
|
-
|
|
273
|
+
instanceId = instance["metadata"]["name"]
|
|
274
|
+
reconciledVersion = self.getReconciledVersion(instance)
|
|
275
|
+
|
|
276
|
+
self.printDescription([f"- <u>{instanceId}</u> v{reconciledVersion}"])
|
|
274
277
|
return True
|
|
275
278
|
except ResourceNotFoundError:
|
|
276
279
|
self.printDescription(["No MAS instances were detected on the cluster (Suite.core.mas.ibm.com/v1 API is not available)"])
|
|
@@ -284,13 +287,18 @@ class BackupApp(BaseApp):
|
|
|
284
287
|
self.fatalError("No MAS instances found on the cluster")
|
|
285
288
|
elif len(instances) == 1:
|
|
286
289
|
instanceId = instances[0]["metadata"]["name"]
|
|
290
|
+
reconciledVersion = self.getReconciledVersion(instances[0])
|
|
291
|
+
|
|
287
292
|
self.setParam("mas_instance_id", instanceId)
|
|
288
293
|
self.printDescription([f"Using MAS instance: <u>{instanceId}</u>"])
|
|
289
294
|
else:
|
|
290
295
|
instanceOptions = []
|
|
291
296
|
for instance in instances:
|
|
292
|
-
|
|
293
|
-
|
|
297
|
+
instanceId = instance["metadata"]["name"]
|
|
298
|
+
reconciledVersion = self.getReconciledVersion(instance)
|
|
299
|
+
|
|
300
|
+
self.printDescription([f"- <u>{instanceId}</u> v{reconciledVersion}"])
|
|
301
|
+
instanceOptions.append(instanceId)
|
|
294
302
|
|
|
295
303
|
instanceCompleter = WordCompleter(instanceOptions)
|
|
296
304
|
print()
|
|
@@ -21,12 +21,11 @@ import threading
|
|
|
21
21
|
import json
|
|
22
22
|
from typing import List, Dict, Any, Callable, Type, NoReturn
|
|
23
23
|
|
|
24
|
-
# Use of the openshift client rather than the kubernetes client allows us access to "apply"
|
|
25
24
|
from kubernetes import config
|
|
26
25
|
from kubernetes.client.api_client import ApiClient
|
|
27
26
|
from kubernetes.client import Configuration
|
|
28
|
-
from
|
|
29
|
-
from
|
|
27
|
+
from kubernetes.dynamic import DynamicClient
|
|
28
|
+
from kubernetes.dynamic.exceptions import NotFoundError
|
|
30
29
|
|
|
31
30
|
from prompt_toolkit import prompt, print_formatted_text, HTML
|
|
32
31
|
|
|
@@ -127,7 +126,7 @@ class BaseApp(PrintMixin, PromptMixin):
|
|
|
127
126
|
logging.getLogger("urllib3").setLevel(logging.INFO)
|
|
128
127
|
|
|
129
128
|
# Supports extended semver, unlike mas.cli.__version__
|
|
130
|
-
self.version: str = "21.
|
|
129
|
+
self.version: str = "21.9.0"
|
|
131
130
|
self.h1count: int = 0
|
|
132
131
|
self.h2count: int = 0
|
|
133
132
|
|
|
@@ -427,6 +426,35 @@ class BaseApp(PrintMixin, PromptMixin):
|
|
|
427
426
|
logger.exception(e, stack_info=True)
|
|
428
427
|
return None
|
|
429
428
|
|
|
429
|
+
def getReconciledVersion(self, instance: Dict[str, Any]) -> str:
|
|
430
|
+
"""
|
|
431
|
+
Get the reconciled version from an instance's status.
|
|
432
|
+
|
|
433
|
+
Checks if the instance is in a healthy state by verifying the presence of a reconciled version.
|
|
434
|
+
If the instance is unhealthy (missing reconciled version), triggers a fatal error with a clear message.
|
|
435
|
+
|
|
436
|
+
Args:
|
|
437
|
+
instance (dict): The instance resource dictionary containing metadata, kind, and status
|
|
438
|
+
|
|
439
|
+
Returns:
|
|
440
|
+
str: The reconciled version if the instance is healthy
|
|
441
|
+
|
|
442
|
+
Raises:
|
|
443
|
+
SystemExit: Via fatalError if the instance is unhealthy
|
|
444
|
+
"""
|
|
445
|
+
instanceId = instance["metadata"]["name"]
|
|
446
|
+
instanceKind = instance.get("kind", "Instance")
|
|
447
|
+
reconciledVersion = instance.get("status", {}).get("versions", {}).get("reconciled")
|
|
448
|
+
|
|
449
|
+
if not reconciledVersion:
|
|
450
|
+
self.fatalError(
|
|
451
|
+
f"{instanceKind} '{instanceId}' is in an unhealthy state (missing reconciled version). "
|
|
452
|
+
f"We do not recommend (and thus do not support) continuing when there are unhealthy instances on the cluster. "
|
|
453
|
+
f"Please resolve the instance health issues before attempting to proceed."
|
|
454
|
+
)
|
|
455
|
+
|
|
456
|
+
return reconciledVersion
|
|
457
|
+
|
|
430
458
|
@logMethodCall
|
|
431
459
|
def connect(self) -> None:
|
|
432
460
|
promptForNewServer = False
|
|
@@ -17,7 +17,8 @@ from datetime import datetime
|
|
|
17
17
|
from dateutil.relativedelta import relativedelta
|
|
18
18
|
import re
|
|
19
19
|
import calendar
|
|
20
|
-
from
|
|
20
|
+
from kubernetes.dynamic.exceptions import NotFoundError
|
|
21
|
+
from urllib3.exceptions import MaxRetryError
|
|
21
22
|
|
|
22
23
|
from typing import Dict, Any
|
|
23
24
|
|
|
@@ -181,6 +182,8 @@ class InstallApp(
|
|
|
181
182
|
]
|
|
182
183
|
)
|
|
183
184
|
)
|
|
185
|
+
except MaxRetryError:
|
|
186
|
+
self.fatalError("Unable to connect to the Kubernetes API server. Please verify cluster connectivity and try again.")
|
|
184
187
|
|
|
185
188
|
@logMethodCall
|
|
186
189
|
def licensePrompt(self):
|
|
@@ -1295,7 +1298,7 @@ class InstallApp(
|
|
|
1295
1298
|
self.installFacilities = False
|
|
1296
1299
|
|
|
1297
1300
|
# AI Service is only installable on Manage 9.x as AI Config Application is not supported on Manage 8.x
|
|
1298
|
-
if isVersionEqualOrAfter("9.0.0", self.getParam("mas_app_channel_manage")):
|
|
1301
|
+
if self.getParam("mas_app_channel_manage") != "" and isVersionEqualOrAfter("9.0.0", self.getParam("mas_app_channel_manage")):
|
|
1299
1302
|
self.installAIService = self.yesOrNo("Install AI Service")
|
|
1300
1303
|
if self.installAIService:
|
|
1301
1304
|
self.configAIService()
|
|
@@ -1323,8 +1326,11 @@ class InstallApp(
|
|
|
1323
1326
|
" - ReadWriteOnce volumes can be mounted as read-write by multiple pods on a single node.",
|
|
1324
1327
|
" - ReadWriteMany volumes can be mounted as read-write by multiple pods across many nodes.",
|
|
1325
1328
|
"",
|
|
1329
|
+
"Note: Remote file systems are often slower than local file systems, using a storage class backed by a remote file system (e.g. NFS) as the RWO storage class may result in degraded performance",
|
|
1330
|
+
"",
|
|
1326
1331
|
]
|
|
1327
1332
|
)
|
|
1333
|
+
|
|
1328
1334
|
defaultStorageClasses = getDefaultStorageClasses(self.dynamicClient)
|
|
1329
1335
|
if defaultStorageClasses.provider is not None:
|
|
1330
1336
|
print_formatted_text(HTML(f"<MediumSeaGreen>Storage provider auto-detected: {defaultStorageClasses.providerName}</MediumSeaGreen>"))
|
|
@@ -2367,7 +2373,6 @@ class InstallApp(
|
|
|
2367
2373
|
self.fatalError(f"Unknown option: {key} {value}")
|
|
2368
2374
|
|
|
2369
2375
|
if self.installManage:
|
|
2370
|
-
|
|
2371
2376
|
# Configure Storage and Access mode
|
|
2372
2377
|
self.manageStorageAndAccessMode()
|
|
2373
2378
|
|
|
@@ -62,11 +62,10 @@ class AiSettingsMixin:
|
|
|
62
62
|
|
|
63
63
|
def generateAiCfg(self, instanceId: str, scope: str, destination: str, workspaceId: str = "") -> None: ...
|
|
64
64
|
|
|
65
|
-
def configAi(self
|
|
65
|
+
def configAi(self) -> None:
|
|
66
66
|
"""Configure AiCfg for MAS installation"""
|
|
67
67
|
|
|
68
|
-
#
|
|
69
|
-
# This must be done BEFORE checking user preferences to prevent errors on 9.1
|
|
68
|
+
# AiCfg is only supported in MAS 9.2+
|
|
70
69
|
mas_channel = self.getParam("mas_channel")
|
|
71
70
|
is_mas_92_or_later = False
|
|
72
71
|
|
|
@@ -83,44 +82,22 @@ class AiSettingsMixin:
|
|
|
83
82
|
|
|
84
83
|
# If MAS 9.1 or earlier, force disable AiCfg regardless of user input
|
|
85
84
|
if not is_mas_92_or_later:
|
|
86
|
-
if not silentMode:
|
|
87
|
-
self.printH1("Configure AiCfg")
|
|
88
|
-
self.printDescription(
|
|
89
|
-
[
|
|
90
|
-
"⚠️ IMPORTANT: AiCfg is only available in MAS 9.2 and later.",
|
|
91
|
-
f" Your MAS channel is: {mas_channel or 'not set'}",
|
|
92
|
-
"",
|
|
93
|
-
"AiCfg configuration will be skipped.",
|
|
94
|
-
"If you upgrade to MAS 9.2+ in the future, you can configure AiCfg then.",
|
|
95
|
-
]
|
|
96
|
-
)
|
|
97
|
-
self.setParam("configure_aiassistant", "none")
|
|
98
|
-
print_formatted_text("⚠️ AiCfg configuration skipped (requires MAS 9.2+)")
|
|
99
85
|
return
|
|
100
86
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
]
|
|
110
|
-
)
|
|
87
|
+
self.printH1("Maximo AI Configuration")
|
|
88
|
+
self.printDescription(
|
|
89
|
+
[
|
|
90
|
+
"The installer can configure AiCfg integration for your MAS instance.",
|
|
91
|
+
"AiCfg provides AI/ML capabilities for MAS applications like Manage, Monitor, and Predict.",
|
|
92
|
+
"AiCfg is configured at system scope and available to all workspaces.",
|
|
93
|
+
]
|
|
94
|
+
)
|
|
111
95
|
|
|
112
96
|
# Ask if user wants to configure AiCfg
|
|
113
|
-
|
|
114
|
-
# Interactive mode - ask user
|
|
115
|
-
configureAi = self.yesOrNo("Do you want to configure AiCfg")
|
|
116
|
-
else:
|
|
117
|
-
# Silent mode - check if explicitly requested via parameter
|
|
118
|
-
# Default to False (skip) unless parameter says otherwise
|
|
119
|
-
configureAi = self.getParam("configure_aiassistant") not in [None, "none", ""]
|
|
97
|
+
configureAi = self.yesOrNo("Do you want to configure AiCfg")
|
|
120
98
|
|
|
121
99
|
if not configureAi:
|
|
122
100
|
self.setParam("configure_aiassistant", "none")
|
|
123
|
-
print_formatted_text("AiCfg configuration skipped")
|
|
124
101
|
return
|
|
125
102
|
|
|
126
103
|
instanceId = self.getParam("mas_instance_id")
|
|
@@ -132,50 +109,14 @@ class AiSettingsMixin:
|
|
|
132
109
|
|
|
133
110
|
# Check if AI Service is being installed on the same cluster
|
|
134
111
|
if hasattr(self, "installAIService") and self.installAIService:
|
|
135
|
-
# AI Service will be installed - defer AiCfg generation to pipeline
|
|
136
|
-
if not silentMode:
|
|
137
|
-
self.printH2("AiCfg Configuration (Automatic)")
|
|
138
|
-
self.printDescription(
|
|
139
|
-
[
|
|
140
|
-
"AI Service is being installed on this cluster.",
|
|
141
|
-
"The AiCfg will be automatically generated and applied by the pipeline",
|
|
142
|
-
"AFTER AI Service installation completes.",
|
|
143
|
-
"",
|
|
144
|
-
"The pipeline will:",
|
|
145
|
-
" 1. Install AI Service first",
|
|
146
|
-
" 2. Auto-detect connection details (URL, API key, certificate)",
|
|
147
|
-
" 3. Generate and apply AiCfg automatically",
|
|
148
|
-
"",
|
|
149
|
-
"No manual configuration needed!",
|
|
150
|
-
]
|
|
151
|
-
)
|
|
152
|
-
|
|
153
112
|
# Set action to indicate pipeline should handle it
|
|
154
113
|
self.setParam("configure_aiassistant", "pipeline")
|
|
155
114
|
print_formatted_text("\n✓ AiCfg will be automatically configured by the pipeline after AI Service installation")
|
|
156
115
|
else:
|
|
157
116
|
# Manual configuration for external AI Service
|
|
158
|
-
|
|
159
|
-
self.printH2("AiCfg Configuration")
|
|
160
|
-
self.printDescription(
|
|
161
|
-
[
|
|
162
|
-
"You can provide connection details for an existing AI Service instance.",
|
|
163
|
-
"The installer will generate the AiCfg YAML file with your connection details.",
|
|
164
|
-
"",
|
|
165
|
-
"IMPORTANT: The AiCfg file must be applied AFTER the MAS Core operator is installed,",
|
|
166
|
-
"as the AiCfg CRD is created by the operator (not during initial config phase).",
|
|
167
|
-
"Do NOT include this file in the initial configuration directory.",
|
|
168
|
-
"Apply it after the operator creates the CRD.",
|
|
169
|
-
]
|
|
170
|
-
)
|
|
171
|
-
|
|
172
|
-
createAiConfig = True
|
|
173
|
-
if not silentMode:
|
|
174
|
-
createAiConfig = self.yesOrNo("Generate AiCfg configuration file (apply after operator install)")
|
|
175
|
-
|
|
117
|
+
createAiConfig = self.yesOrNo("Generate AiCfg configuration file (apply after operator install)")
|
|
176
118
|
if createAiConfig:
|
|
177
119
|
self.setParam("configure_aiassistant", "configure")
|
|
178
|
-
|
|
179
120
|
self.selectLocalConfigDir()
|
|
180
121
|
|
|
181
122
|
# Check if a configuration already exists before creating a new one
|
|
@@ -12,6 +12,8 @@ from os import path
|
|
|
12
12
|
from typing import TYPE_CHECKING, Dict, List, Any
|
|
13
13
|
from prompt_toolkit import print_formatted_text
|
|
14
14
|
|
|
15
|
+
from mas.devops.utils import isVersionEqualOrAfter
|
|
16
|
+
|
|
15
17
|
if TYPE_CHECKING:
|
|
16
18
|
# Type hints for methods and attributes provided by other mixins
|
|
17
19
|
# These are only used during type checking and have no runtime cost
|
|
@@ -25,6 +27,7 @@ class Db2SettingsMixin:
|
|
|
25
27
|
params: Dict[str, str]
|
|
26
28
|
devMode: bool
|
|
27
29
|
installIoT: bool
|
|
30
|
+
installMonitor: bool
|
|
28
31
|
installManage: bool
|
|
29
32
|
installFacilities: bool
|
|
30
33
|
manageAppName: str
|
|
@@ -100,8 +103,6 @@ class Db2SettingsMixin:
|
|
|
100
103
|
# Determine which application requires the system database based on Monitor version
|
|
101
104
|
# For Monitor >= 9.2.0: Monitor requires system Db2
|
|
102
105
|
# For Monitor < 9.2.0: IoT requires system Db2 (original behavior)
|
|
103
|
-
from mas.devops.utils import isVersionEqualOrAfter
|
|
104
|
-
|
|
105
106
|
monitorChannel = self.getParam("mas_app_channel_monitor")
|
|
106
107
|
useNewDependency = monitorChannel and isVersionEqualOrAfter("9.2.0", monitorChannel)
|
|
107
108
|
instanceId = self.getParam("mas_instance_id")
|