mas-cli 21.9.0__tar.gz → 21.9.2__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.9.0/python/src/mas_cli.egg-info → mas_cli-21.9.2}/PKG-INFO +1 -1
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/__init__.py +1 -1
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/cli.py +1 -1
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/app.py +0 -3
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/aiservice/instance.py +41 -8
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/aiservice/tenant.py +4 -4
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/app.py +13 -1
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/arg_parser.py +1 -1
- mas_cli-21.9.2/python/src/mas/cli/must_gather/dependencies/rhoai.py +129 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/ibm-mas-tekton.yaml +135 -144
- {mas_cli-21.9.0 → mas_cli-21.9.2/python/src/mas_cli.egg-info}/PKG-INFO +1 -1
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas_cli.egg-info/SOURCES.txt +1 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/LICENSE +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/README.md +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/pyproject.toml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/README.md +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/__main__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/aiservice/install/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/aiservice/install/app.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/aiservice/install/argBuilder.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/aiservice/install/argParser.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/aiservice/install/params.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/aiservice/install/summarizer.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/aiservice/upgrade/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/aiservice/upgrade/app.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/aiservice/upgrade/argParser.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/backup/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/backup/app.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/backup/argParser.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/displayMixins.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/gencfg.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/argBuilder.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/argParser.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/catalogs.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/facilities/agents.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/params.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/settings/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/settings/additionalConfigs.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/settings/aiSettings.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/settings/db2Settings.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/settings/kafkaSettings.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/settings/manageSettings.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/settings/mongodbSettings.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/install/summarizer.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/mirror/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/mirror/app.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/mirror/argParser.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/mirror/config.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/aiservice/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/aiservice/pipelines.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/argo/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/argo/applications.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/collection_plan.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/common/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/common/coreapi.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/common/crd_processor.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/common/parallel.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/common/pod_exec.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/common/pods.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/common/reconcile_logs.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/common/resources.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/common/secrets.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/common/task_generation.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/common/thread_safe_client.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/dependencies/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/dependencies/cert_manager.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/dependencies/cp4d.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/dependencies/db2.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/dependencies/grafana.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/dependencies/kafka.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/dependencies/mongodb.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/dependencies/sls.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/dependencies/utils.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/mas/apps.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/mas/core.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/mas/licensing.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/mas/manage.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/mas/network_tests.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/mas/pipelines.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/mas/version.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/ocp/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/ocp/airgap.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/ocp/cluster.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/ocp/marketplace.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/ocp/nodes.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/output.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/parallel_executor.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/summarizer/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/summarizer/licensing.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/summarizer/nodes.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/summarizer/subscriptions.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/summarizer/suite.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/timer.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/web_viewer/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/web_viewer/__main__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/must_gather/web_viewer/templates/viewer.html +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/pre_install/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/pre_install/app.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/pre_install/argParser.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/rbac_utils.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/restore/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/restore/app.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/restore/argParser.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/setup_rbac/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/setup_rbac/app.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/setup_rbac/argParser.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/aicfg.yml.j2 +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/facilities-configs.yml.j2 +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/jdbccfg.yml.j2 +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-data-dictionary-assetdatadictionary.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-bascfg.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-coreidp.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-actions.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-auth.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-datapower.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-devops.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dm.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dsc.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-edgeconfig.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-fpl.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-guardian.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-iot.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mbgx.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mfgx.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-monitor.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-orgmgmt.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-provision.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-registry.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-state.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-webui.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextaccelerator.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextworkspace.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-imagestitching.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageaccelerators.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageapp.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageworkspace.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-slackproxy.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-pushnotificationcfg.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-scimcfg.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-slscfg.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-smtpcfg.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-suite.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-visualinspection.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/best-effort/ibm-sls-licenseservice.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-data-dictionary-assetdatadictionary.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-bascfg.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-coreidp.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-actions.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-auth.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-datapower.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-devops.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dm.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dsc.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-edgeconfig.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-fpl.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-guardian.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-iot.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mbgx.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mfgx.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-monitor.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-orgmgmt.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-provision.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-registry.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-state.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-webui.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextaccelerator.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextworkspace.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-imagestitching.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageaccelerators.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageapp.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageworkspace.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-slackproxy.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-pushnotificationcfg.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-scimcfg.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-slscfg.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-smtpcfg.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-suite.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-visualinspection.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/pod-templates/guaranteed/ibm-sls-licenseservice.yml +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/templates/suite_mongocfg.yml.j2 +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/uninstall/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/uninstall/app.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/uninstall/argParser.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/update/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/update/app.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/update/argParser.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/upgrade/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/upgrade/app.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/upgrade/argParser.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/upgrade/settings/__init__.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas/cli/validators.py +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas_cli.egg-info/dependency_links.txt +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas_cli.egg-info/entry_points.txt +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas_cli.egg-info/requires.txt +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/python/src/mas_cli.egg-info/top_level.txt +0 -0
- {mas_cli-21.9.0 → mas_cli-21.9.2}/setup.cfg +0 -0
|
@@ -126,7 +126,7 @@ class BaseApp(PrintMixin, PromptMixin):
|
|
|
126
126
|
logging.getLogger("urllib3").setLevel(logging.INFO)
|
|
127
127
|
|
|
128
128
|
# Supports extended semver, unlike mas.cli.__version__
|
|
129
|
-
self.version: str = "21.9.
|
|
129
|
+
self.version: str = "21.9.2"
|
|
130
130
|
self.h1count: int = 0
|
|
131
131
|
self.h2count: int = 0
|
|
132
132
|
|
|
@@ -273,11 +273,8 @@ class InstallApp(
|
|
|
273
273
|
|
|
274
274
|
# Generate catalogTable
|
|
275
275
|
for application, key in applications.items():
|
|
276
|
-
# Add 9.1-feature channel based off 9.0 to those apps that have not onboarded yet
|
|
277
276
|
if key in self.chosenCatalog:
|
|
278
277
|
tempChosenCatalog = self.chosenCatalog[key].copy()
|
|
279
|
-
if "9.1.x-feature" not in tempChosenCatalog and "9.0.x" in tempChosenCatalog:
|
|
280
|
-
tempChosenCatalog.update({"9.1.x-feature": tempChosenCatalog["9.0.x"]})
|
|
281
278
|
|
|
282
279
|
self.catalogTable.append({"": application} | {key.replace(".x", ""): value for key, value in sorted(tempChosenCatalog.items(), reverse=True)})
|
|
283
280
|
|
|
@@ -17,6 +17,18 @@ from kubernetes.dynamic import DynamicClient
|
|
|
17
17
|
|
|
18
18
|
logger = logging.getLogger(__name__)
|
|
19
19
|
|
|
20
|
+
# Tekton resources to collect (both v1 and v1beta1 for compatibility)
|
|
21
|
+
TEKTON_RESOURCES = [
|
|
22
|
+
("tekton.dev/v1", "Pipeline"),
|
|
23
|
+
("tekton.dev/v1", "PipelineRun"),
|
|
24
|
+
("tekton.dev/v1", "Task"),
|
|
25
|
+
("tekton.dev/v1", "TaskRun"),
|
|
26
|
+
("tekton.dev/v1beta1", "Pipeline"),
|
|
27
|
+
("tekton.dev/v1beta1", "PipelineRun"),
|
|
28
|
+
("tekton.dev/v1beta1", "Task"),
|
|
29
|
+
("tekton.dev/v1beta1", "TaskRun"),
|
|
30
|
+
]
|
|
31
|
+
|
|
20
32
|
|
|
21
33
|
def discoverAIServiceInstances(dynClient: DynamicClient, instanceIds: Optional[str] = None) -> List[str]:
|
|
22
34
|
"""Discover AI Service instances in the cluster.
|
|
@@ -111,7 +123,7 @@ def _generateAIServiceSummary(dynClient: DynamicClient, namespace: str, outputFi
|
|
|
111
123
|
f.write("-" * 80 + "\n")
|
|
112
124
|
try:
|
|
113
125
|
api = dynClient.resources.get(api_version="aiservice.ibm.com/v1", kind="AIServiceTenant")
|
|
114
|
-
tenants = api.get(
|
|
126
|
+
tenants = api.get()
|
|
115
127
|
if tenants.items:
|
|
116
128
|
for tenant in tenants.items:
|
|
117
129
|
f.write(f"Name: {tenant.metadata.name}\n")
|
|
@@ -133,8 +145,8 @@ def addAIServiceToCollectionPlan(plan, dynClient: DynamicClient, outputDir: str,
|
|
|
133
145
|
"""Add AI Service collection tasks to the collection plan.
|
|
134
146
|
|
|
135
147
|
Discovers AI Service instances and for each instance, adds collection groups for:
|
|
136
|
-
- The instance namespace (
|
|
137
|
-
- Tenant namespaces (
|
|
148
|
+
- The instance namespace (aiservice-{instance})
|
|
149
|
+
- Tenant namespaces (aiservice-{instance}-{tenant})
|
|
138
150
|
- Pipeline namespaces (aiservice-{instance}-pipelines)
|
|
139
151
|
|
|
140
152
|
Args:
|
|
@@ -147,6 +159,7 @@ def addAIServiceToCollectionPlan(plan, dynClient: DynamicClient, outputDir: str,
|
|
|
147
159
|
from mas.cli.must_gather.common.task_generation import generateNamespaceCollectionTasks
|
|
148
160
|
from mas.cli.must_gather.aiservice import tenant as aiservice_tenant
|
|
149
161
|
from mas.cli.must_gather.aiservice import pipelines as aiservice_pipelines
|
|
162
|
+
from mas.cli.must_gather.common import generateReconcileLogsCollectionTasks
|
|
150
163
|
|
|
151
164
|
logger.info("Discovering AI Service instances")
|
|
152
165
|
try:
|
|
@@ -155,7 +168,7 @@ def addAIServiceToCollectionPlan(plan, dynClient: DynamicClient, outputDir: str,
|
|
|
155
168
|
logger.info(f"Discovered {len(instanceIds)} AI Service instance(s): {', '.join(sorted(instanceIds))}")
|
|
156
169
|
for instanceId in sorted(instanceIds):
|
|
157
170
|
# Generate tasks for AI Service instance namespace
|
|
158
|
-
instanceNamespace = f"
|
|
171
|
+
instanceNamespace = f"aiservice-{instanceId}"
|
|
159
172
|
tasks = generateNamespaceCollectionTasks(
|
|
160
173
|
dynClient=dynClient,
|
|
161
174
|
namespace=instanceNamespace,
|
|
@@ -165,27 +178,47 @@ def addAIServiceToCollectionPlan(plan, dynClient: DynamicClient, outputDir: str,
|
|
|
165
178
|
customResources=None,
|
|
166
179
|
ibmCRDs=ibmCRDs,
|
|
167
180
|
)
|
|
181
|
+
|
|
182
|
+
# Add AI Service specific reconcile logs tasks
|
|
183
|
+
operators = [
|
|
184
|
+
(instanceNamespace, "control-plane", "ibm-aiservice"),
|
|
185
|
+
(instanceNamespace, "aiservice.ibm.com/appType", "entitymgr-tenant-operator"),
|
|
186
|
+
(instanceNamespace, "control-plane", "controller-manager"),
|
|
187
|
+
(instanceNamespace, "operator", "ibm-truststore-mgr"),
|
|
188
|
+
]
|
|
189
|
+
tasks.extend(generateReconcileLogsCollectionTasks(operators, outputDir))
|
|
190
|
+
|
|
168
191
|
plan.addGroup(f"AI Service Instance ({instanceId})", tasks)
|
|
169
192
|
logger.debug(f"Added {len(tasks)} AI Service instance collection tasks for {instanceId}")
|
|
170
193
|
|
|
171
194
|
# Discover tenants for this instance
|
|
195
|
+
# Discover InferenceServices created by each tenant
|
|
196
|
+
ISVC_RESOURCES = [("serving.kserve.io/v1beta1", "InferenceService")]
|
|
172
197
|
logger.debug(f"Discovering AI Service tenants for instance {instanceId}")
|
|
173
198
|
try:
|
|
174
199
|
tenantIds = aiservice_tenant.discoverAIServiceTenants(dynClient, instanceId=instanceId)
|
|
175
200
|
if tenantIds:
|
|
176
201
|
logger.info(f"Discovered {len(tenantIds)} AI Service tenant(s) for instance {instanceId}: {', '.join(sorted(tenantIds))}")
|
|
177
202
|
for tenantId in sorted(tenantIds):
|
|
178
|
-
tenantNamespace = f"mas-{instanceId}-aiservice-{tenantId}"
|
|
179
203
|
# Generate tasks for AI Service tenant namespace
|
|
180
204
|
tasks = generateNamespaceCollectionTasks(
|
|
181
205
|
dynClient=dynClient,
|
|
182
|
-
namespace=
|
|
206
|
+
namespace=tenantId,
|
|
183
207
|
outputDir=outputDir,
|
|
184
208
|
noLogs=noLogs,
|
|
185
209
|
secretData=False,
|
|
186
|
-
customResources=
|
|
210
|
+
customResources=ISVC_RESOURCES,
|
|
187
211
|
ibmCRDs=ibmCRDs,
|
|
188
212
|
)
|
|
213
|
+
|
|
214
|
+
# Add AI Service tenant specific reconcile logs tasks
|
|
215
|
+
operators = [
|
|
216
|
+
(tenantId, "control-plane", "ibm-aiservice-tenant"),
|
|
217
|
+
(tenantId, "control-plane", "controller-manager"),
|
|
218
|
+
(tenantId, "operator", "ibm-truststore-mgr"),
|
|
219
|
+
]
|
|
220
|
+
tasks.extend(generateReconcileLogsCollectionTasks(operators, outputDir))
|
|
221
|
+
|
|
189
222
|
plan.addGroup(f"AI Service Tenant ({instanceId}/{tenantId})", tasks)
|
|
190
223
|
logger.debug(f"Added {len(tasks)} AI Service tenant collection tasks for {instanceId}/{tenantId}")
|
|
191
224
|
else:
|
|
@@ -209,7 +242,7 @@ def addAIServiceToCollectionPlan(plan, dynClient: DynamicClient, outputDir: str,
|
|
|
209
242
|
outputDir=outputDir,
|
|
210
243
|
noLogs=noLogs,
|
|
211
244
|
secretData=False,
|
|
212
|
-
customResources=
|
|
245
|
+
customResources=TEKTON_RESOURCES,
|
|
213
246
|
ibmCRDs=ibmCRDs,
|
|
214
247
|
)
|
|
215
248
|
plan.addGroup(f"AI Service Pipelines ({pipelineNamespace})", tasks)
|
|
@@ -32,21 +32,21 @@ def discoverAIServiceTenants(dynClient: DynamicClient, instanceId: str, tenantId
|
|
|
32
32
|
List[str]: List of AI Service tenant IDs
|
|
33
33
|
"""
|
|
34
34
|
tenants = []
|
|
35
|
-
namespace = f"aiservice-{instanceId}"
|
|
36
35
|
|
|
37
36
|
try:
|
|
38
37
|
api = dynClient.resources.get(api_version="aiservice.ibm.com/v1", kind="AIServiceTenant")
|
|
39
|
-
|
|
38
|
+
label_selector = f"aiservice.ibm.com/instanceId={instanceId}"
|
|
39
|
+
aiserviceTenants = api.get(label_selector=label_selector)
|
|
40
40
|
|
|
41
41
|
for tenantCr in aiserviceTenants.items:
|
|
42
42
|
tenantId = tenantCr.metadata.name
|
|
43
43
|
if tenantId not in tenants:
|
|
44
44
|
tenants.append(tenantId)
|
|
45
45
|
|
|
46
|
-
logger.info(f"Discovered {len(tenants)} AI Service tenants
|
|
46
|
+
logger.info(f"Discovered {len(tenants)} AI Service tenants")
|
|
47
47
|
|
|
48
48
|
except Exception as e:
|
|
49
|
-
logger.debug(f"Could not discover AI Service tenants
|
|
49
|
+
logger.debug(f"Could not discover AI Service tenants: {e}")
|
|
50
50
|
|
|
51
51
|
# Filter by tenant IDs if provided
|
|
52
52
|
if tenantIds:
|
|
@@ -281,7 +281,7 @@ class MustGatherApp(BaseApp):
|
|
|
281
281
|
CollectionPlan: Complete plan with all collection tasks organized into groups
|
|
282
282
|
"""
|
|
283
283
|
from .collection_plan import CollectionPlan
|
|
284
|
-
from .dependencies import kafka, mongodb, grafana, cert_manager, db2, cp4d
|
|
284
|
+
from .dependencies import kafka, mongodb, grafana, cert_manager, db2, cp4d, rhoai
|
|
285
285
|
|
|
286
286
|
# Type assertion: dynClient is guaranteed to be non-None by connect()
|
|
287
287
|
assert self.dynamicClient is not None, "Kubernetes client must be initialized before planning collection"
|
|
@@ -380,6 +380,18 @@ class MustGatherApp(BaseApp):
|
|
|
380
380
|
else:
|
|
381
381
|
logger.debug("Skipping CP4D collection (not in collectors list)")
|
|
382
382
|
|
|
383
|
+
# Red Hat OpenShift AI
|
|
384
|
+
if "rhoai" in enabledCollectors:
|
|
385
|
+
rhoai.addRHOAIToCollectionPlan(
|
|
386
|
+
plan=plan,
|
|
387
|
+
dynClient=self.dynamicClient,
|
|
388
|
+
outputDir=outputDir,
|
|
389
|
+
noLogs=parsedArgs.no_logs,
|
|
390
|
+
ibmCRDs=self.ibmCRDsList,
|
|
391
|
+
)
|
|
392
|
+
else:
|
|
393
|
+
logger.debug("Skipping Red Hat OpenShift AI collection (not in collectors list)")
|
|
394
|
+
|
|
383
395
|
# SLS
|
|
384
396
|
if "sls" in enabledCollectors:
|
|
385
397
|
masInstanceIds = parsedArgs.mas_instance_ids.split(",") if parsedArgs.mas_instance_ids else None
|
|
@@ -72,7 +72,7 @@ def _parse_args_wrapper(args=None, namespace=None):
|
|
|
72
72
|
|
|
73
73
|
|
|
74
74
|
# Define all available collectors
|
|
75
|
-
ALL_COLLECTORS = ["ocp", "db2", "kafka", "mongodb", "cp4d", "cert-manager", "grafana", "sls", "mas", "aiservice", "lic"]
|
|
75
|
+
ALL_COLLECTORS = ["ocp", "db2", "kafka", "mongodb", "cp4d", "cert-manager", "grafana", "sls", "mas", "rhoai", "aiservice", "lic"]
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
def validateCollectors(collectorsStr: str) -> str:
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# *****************************************************************************
|
|
2
|
+
# Copyright (c) 2026 IBM Corporation and other Contributors.
|
|
3
|
+
#
|
|
4
|
+
# All rights reserved. This program and the accompanying materials
|
|
5
|
+
# are made available under the terms of the Eclipse Public License v1.0
|
|
6
|
+
# which accompanies this distribution, and is available at
|
|
7
|
+
# http://www.eclipse.org/legal/epl-v10.html
|
|
8
|
+
#
|
|
9
|
+
# *****************************************************************************
|
|
10
|
+
|
|
11
|
+
"""Red Hat OpenShift AI dependency collector."""
|
|
12
|
+
|
|
13
|
+
import logging
|
|
14
|
+
from typing import Set, List, Tuple, Optional
|
|
15
|
+
from kubernetes.dynamic import DynamicClient
|
|
16
|
+
|
|
17
|
+
from mas.cli.must_gather.common.task_generation import generateNamespaceCollectionTasks
|
|
18
|
+
from .utils import checkNamespaceExists
|
|
19
|
+
|
|
20
|
+
logger = logging.getLogger(__name__)
|
|
21
|
+
|
|
22
|
+
# ODH Resources that are provided by RHOAI operator and used by AI Service
|
|
23
|
+
ODH_RESOURCES = [
|
|
24
|
+
("datasciencecluster.opendatahub.io/v1", "DataScienceCluster"),
|
|
25
|
+
("dscinitialization.opendatahub.io/v1", "DSCInitialization"),
|
|
26
|
+
("components.platform.opendatahub.io/v1alpha1", "Kserve"),
|
|
27
|
+
("components.platform.opendatahub.io/v1alpha1", "ModelController"),
|
|
28
|
+
("services.platform.opendatahub.io/v1alpha1", "Auth"),
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _discoverRHOAINamespaces(dynClient: DynamicClient) -> Set[str]:
|
|
33
|
+
"""Discover Red Hat OpenShift AI namespaces.
|
|
34
|
+
|
|
35
|
+
Checks for standard RHOAI namespaces and returns those that exist.
|
|
36
|
+
RHOAI typically uses these namespaces:
|
|
37
|
+
- redhat-ods-operator: Operator namespace
|
|
38
|
+
- redhat-ods-applications: Applications namespace
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
dynClient (DynamicClient): Kubernetes Dynamic Client for API access
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
set: Set of RHOAI namespace names that exist in the cluster
|
|
45
|
+
"""
|
|
46
|
+
# RHOAI namespaces to check
|
|
47
|
+
candidateNamespaces = ["redhat-ods-operator", "redhat-ods-applications"]
|
|
48
|
+
|
|
49
|
+
discoveredNamespaces = set()
|
|
50
|
+
for namespace in candidateNamespaces:
|
|
51
|
+
if checkNamespaceExists(dynClient, namespace):
|
|
52
|
+
discoveredNamespaces.add(namespace)
|
|
53
|
+
logger.debug(f"Found RHOAI namespace: {namespace}")
|
|
54
|
+
|
|
55
|
+
return discoveredNamespaces
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _generateRHOAICollectionTasks(
|
|
59
|
+
dynClient: DynamicClient,
|
|
60
|
+
namespace: str,
|
|
61
|
+
outputDir: str,
|
|
62
|
+
noLogs: bool = False,
|
|
63
|
+
customResources: Optional[List[Tuple[str, str]]] = None,
|
|
64
|
+
ibmCRDs: Optional[List[Tuple[str, str]]] = None,
|
|
65
|
+
) -> List[Tuple]:
|
|
66
|
+
"""Generate collection tasks for a RHOAI namespace.
|
|
67
|
+
|
|
68
|
+
Creates a list of collection tasks that can be executed in parallel
|
|
69
|
+
for collecting RHOAI resources from a specific namespace.
|
|
70
|
+
|
|
71
|
+
Args:
|
|
72
|
+
dynClient (DynamicClient): Kubernetes Dynamic Client for API access
|
|
73
|
+
namespace (str): Target namespace for collection
|
|
74
|
+
outputDir (str): Base output directory for collected resources
|
|
75
|
+
noLogs (bool, optional): If True, skip pod log collection. Defaults to False.
|
|
76
|
+
customResources (list, optional): Custom CRD tuples (apiVersion, kind) specific to this namespace type. Defaults to None.
|
|
77
|
+
ibmCRDs (list, optional): List of IBM CRD tuples (apiVersion, kind) to collect. Defaults to None.
|
|
78
|
+
|
|
79
|
+
Returns:
|
|
80
|
+
list: List of task tuples in format (task_name, func, *args)
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
# Use common namespace collection task generation
|
|
84
|
+
tasks = generateNamespaceCollectionTasks(
|
|
85
|
+
dynClient=dynClient,
|
|
86
|
+
namespace=namespace,
|
|
87
|
+
outputDir=outputDir,
|
|
88
|
+
noLogs=noLogs,
|
|
89
|
+
secretData=False,
|
|
90
|
+
customResources=customResources,
|
|
91
|
+
ibmCRDs=ibmCRDs,
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
return tasks
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def addRHOAIToCollectionPlan(plan, dynClient: DynamicClient, outputDir: str, noLogs: bool, ibmCRDs: list):
|
|
98
|
+
"""Add RHOAI collection tasks to the collection plan.
|
|
99
|
+
|
|
100
|
+
Discovers RHOAI namespaces and adds collection groups for each namespace
|
|
101
|
+
to the provided collection plan.
|
|
102
|
+
|
|
103
|
+
Args:
|
|
104
|
+
plan (CollectionPlan): Collection plan to add tasks to
|
|
105
|
+
dynClient (DynamicClient): Kubernetes Dynamic Client for API access
|
|
106
|
+
outputDir (str): Base output directory for collected resources
|
|
107
|
+
noLogs (bool): If True, skip pod log collection
|
|
108
|
+
ibmCRDs (list): List of IBM CRD information for collection
|
|
109
|
+
"""
|
|
110
|
+
logger.info("💭 Discovering Red Hat OpenShift AI namespaces")
|
|
111
|
+
try:
|
|
112
|
+
rhoaiNamespaces = _discoverRHOAINamespaces(dynClient)
|
|
113
|
+
if rhoaiNamespaces:
|
|
114
|
+
logger.debug(f"Discovered {len(rhoaiNamespaces)} RHOAI namespace(s): {', '.join(sorted(rhoaiNamespaces))}")
|
|
115
|
+
for ns in sorted(rhoaiNamespaces):
|
|
116
|
+
tasks = _generateRHOAICollectionTasks(
|
|
117
|
+
dynClient=dynClient,
|
|
118
|
+
namespace=ns,
|
|
119
|
+
outputDir=outputDir,
|
|
120
|
+
noLogs=noLogs,
|
|
121
|
+
customResources=ODH_RESOURCES if ns == "redhat-ods-applications" else None,
|
|
122
|
+
ibmCRDs=ibmCRDs,
|
|
123
|
+
)
|
|
124
|
+
plan.addGroup(f"Red Hat OpenShift AI ({ns})", tasks)
|
|
125
|
+
logger.debug(f"✅ {ns}: Added {len(tasks)} collection tasks")
|
|
126
|
+
else:
|
|
127
|
+
logger.warning("⚠️ No Red Hat OpenShift AI namespaces discovered")
|
|
128
|
+
except Exception as e:
|
|
129
|
+
logger.error(f"❌ RHOAI discovery failed: {e}")
|