mas-cli 19.4.0__tar.gz → 19.5.1__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-19.4.0 → mas_cli-19.5.1}/PKG-INFO +1 -1
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/__init__.py +1 -1
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/cli.py +1 -1
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/app.py +92 -5
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/argBuilder.py +1 -1
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/settings/db2Settings.py +26 -6
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/settings/kafkaSettings.py +9 -2
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/ibm-mas-tekton.yaml +645 -221
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/upgrade/app.py +40 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas_cli.egg-info/PKG-INFO +1 -1
- {mas_cli-19.4.0 → mas_cli-19.5.1}/MANIFEST.in +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/README.rst +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/pyproject.toml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/setup.cfg +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/setup.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/aiservice/install/__init__.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/aiservice/install/app.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/aiservice/install/argBuilder.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/aiservice/install/argParser.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/aiservice/install/params.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/aiservice/install/summarizer.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/aiservice/upgrade/__init__.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/aiservice/upgrade/app.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/aiservice/upgrade/argParser.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/backup/__init__.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/backup/app.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/backup/argParser.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/displayMixins.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/gencfg.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/__init__.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/argParser.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/catalogs.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/params.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/settings/__init__.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/settings/additionalConfigs.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/settings/manageSettings.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/settings/mongodbSettings.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/install/summarizer.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/mirror/__init__.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/mirror/app.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/mirror/argParser.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/mirror/config.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/restore/__init__.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/restore/app.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/restore/argParser.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/facilities-configs.yml.j2 +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/jdbccfg.yml.j2 +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-data-dictionary-assetdatadictionary.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-bascfg.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-coreidp.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-actions.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-auth.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-datapower.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-devops.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dm.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dsc.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-edgeconfig.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-fpl.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-guardian.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-iot.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mbgx.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mfgx.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-monitor.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-orgmgmt.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-provision.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-registry.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-state.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-webui.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextaccelerator.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextworkspace.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-imagestitching.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageaccelerators.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageapp.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageworkspace.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-slackproxy.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-pushnotificationcfg.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-scimcfg.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-slscfg.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-smtpcfg.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-suite.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-visualinspection.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/best-effort/ibm-sls-licenseservice.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-data-dictionary-assetdatadictionary.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-bascfg.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-coreidp.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-actions.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-auth.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-datapower.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-devops.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dm.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dsc.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-edgeconfig.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-fpl.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-guardian.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-iot.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mbgx.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mfgx.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-monitor.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-orgmgmt.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-provision.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-registry.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-state.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-webui.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextaccelerator.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextworkspace.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-imagestitching.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageaccelerators.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageapp.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageworkspace.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-slackproxy.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-pushnotificationcfg.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-scimcfg.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-slscfg.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-smtpcfg.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-suite.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-visualinspection.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/pod-templates/guaranteed/ibm-sls-licenseservice.yml +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/templates/suite_mongocfg.yml.j2 +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/uninstall/__init__.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/uninstall/app.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/uninstall/argParser.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/update/__init__.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/update/app.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/update/argParser.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/upgrade/__init__.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/upgrade/argParser.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/upgrade/settings/__init__.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas/cli/validators.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas-cli +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas_cli.egg-info/SOURCES.txt +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas_cli.egg-info/dependency_links.txt +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas_cli.egg-info/requires.txt +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/src/mas_cli.egg-info/top_level.txt +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/test/test_baseapp.py +0 -0
- {mas_cli-19.4.0 → mas_cli-19.5.1}/test/test_help.py +0 -0
|
@@ -120,7 +120,7 @@ class BaseApp(PrintMixin, PromptMixin):
|
|
|
120
120
|
logging.getLogger('asyncio').setLevel(logging.INFO)
|
|
121
121
|
|
|
122
122
|
# Supports extended semver, unlike mas.cli.__version__
|
|
123
|
-
self.version: str = "19.
|
|
123
|
+
self.version: str = "19.5.1"
|
|
124
124
|
self.h1count: int = 0
|
|
125
125
|
self.h2count: int = 0
|
|
126
126
|
|
|
@@ -978,20 +978,79 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
978
978
|
@logMethodCall
|
|
979
979
|
def configApps(self):
|
|
980
980
|
self.printH1("Application Selection")
|
|
981
|
-
self.installIoT = self.yesOrNo("Install IoT")
|
|
982
981
|
|
|
982
|
+
# For Monitor >= 9.2.0: Monitor and IoT are independent (no dependency)
|
|
983
|
+
# For Monitor < 9.2.0: Monitor depends on IoT (original behavior)
|
|
984
|
+
# For IoT >= 9.2.0: IoT depends on Monitor
|
|
985
|
+
|
|
986
|
+
self.installIoT = self.yesOrNo("Install IoT")
|
|
983
987
|
if self.installIoT:
|
|
984
988
|
self.configAppChannel("iot")
|
|
989
|
+
iotChannel = self.getParam("mas_app_channel_iot")
|
|
990
|
+
|
|
991
|
+
# Prompt for Monitor installation
|
|
985
992
|
self.installMonitor = self.yesOrNo("Install Monitor")
|
|
993
|
+
if self.installMonitor:
|
|
994
|
+
self.configAppChannel("monitor")
|
|
995
|
+
|
|
996
|
+
# Validate version compatibility between IoT and Monitor
|
|
997
|
+
monitorChannel = self.getParam("mas_app_channel_monitor")
|
|
998
|
+
if iotChannel and monitorChannel:
|
|
999
|
+
iotIs920OrLater = isVersionEqualOrAfter('9.2.0', iotChannel)
|
|
1000
|
+
monitorIs920OrLater = isVersionEqualOrAfter('9.2.0', monitorChannel)
|
|
1001
|
+
|
|
1002
|
+
# IoT >= 9.2.0 requires Monitor >= 9.2.0
|
|
1003
|
+
if iotIs920OrLater and not monitorIs920OrLater:
|
|
1004
|
+
self.printDescription([
|
|
1005
|
+
"",
|
|
1006
|
+
"<Red>Error: IoT version 9.2.0 or later requires Monitor version 9.2.0 or later.</Red>",
|
|
1007
|
+
f"<Yellow>IoT channel: {iotChannel}, Monitor channel: {monitorChannel}</Yellow>",
|
|
1008
|
+
"<Yellow>Please select compatible versions for both applications.</Yellow>",
|
|
1009
|
+
""
|
|
1010
|
+
])
|
|
1011
|
+
self.fatalError("Incompatible IoT and Monitor versions selected")
|
|
1012
|
+
|
|
1013
|
+
# IoT < 9.2.0 requires Monitor < 9.2.0
|
|
1014
|
+
if not iotIs920OrLater and monitorIs920OrLater:
|
|
1015
|
+
self.printDescription([
|
|
1016
|
+
"",
|
|
1017
|
+
"<Red>Error: IoT version earlier than 9.2.0 requires Monitor version earlier than 9.2.0.</Red>",
|
|
1018
|
+
f"<Yellow>IoT channel: {iotChannel}, Monitor channel: {monitorChannel}</Yellow>",
|
|
1019
|
+
"<Yellow>Please select compatible versions for both applications.</Yellow>",
|
|
1020
|
+
""
|
|
1021
|
+
])
|
|
1022
|
+
self.fatalError("Incompatible IoT and Monitor versions selected")
|
|
1023
|
+
else:
|
|
1024
|
+
# User declined Monitor installation
|
|
1025
|
+
# Validate: IoT >= 9.2.0 requires Monitor
|
|
1026
|
+
if iotChannel and isVersionEqualOrAfter('9.2.0', iotChannel):
|
|
1027
|
+
self.printDescription([
|
|
1028
|
+
"",
|
|
1029
|
+
"<Red>Error: IoT version 9.2.0 or later requires Monitor to be installed.</Red>",
|
|
1030
|
+
"<Yellow>Please install Monitor to proceed with IoT 9.2.0+ installation.</Yellow>",
|
|
1031
|
+
""
|
|
1032
|
+
])
|
|
1033
|
+
self.fatalError("IoT 9.2.0+ requires Monitor to be installed")
|
|
1034
|
+
# For IoT < 9.2.0, Monitor is optional
|
|
986
1035
|
else:
|
|
987
|
-
|
|
1036
|
+
# If IoT not selected, check Monitor version to determine if standalone is allowed
|
|
1037
|
+
self.installMonitor = self.yesOrNo("Install Monitor")
|
|
1038
|
+
if self.installMonitor:
|
|
1039
|
+
self.configAppChannel("monitor")
|
|
1040
|
+
monitorChannel = self.getParam("mas_app_channel_monitor")
|
|
1041
|
+
# For Monitor < 9.2.0, Monitor requires IoT
|
|
1042
|
+
if monitorChannel and not isVersionEqualOrAfter('9.2.0', monitorChannel):
|
|
1043
|
+
self.printDescription([
|
|
1044
|
+
"",
|
|
1045
|
+
"<Red>Error: Monitor version earlier than 9.2.0 requires IoT to be installed.</Red>",
|
|
1046
|
+
"<Yellow>Please install IoT first, or choose Monitor 9.2.0+ for standalone installation.</Yellow>",
|
|
1047
|
+
""
|
|
1048
|
+
])
|
|
1049
|
+
self.installMonitor = False
|
|
988
1050
|
|
|
989
1051
|
# Initialize ArcGIS flag (will be set to True later in arcgisSettings() if needed)
|
|
990
1052
|
self.installArcgis = False
|
|
991
1053
|
|
|
992
|
-
if self.installMonitor:
|
|
993
|
-
self.configAppChannel("monitor")
|
|
994
|
-
|
|
995
1054
|
self.manageAppName = "Manage"
|
|
996
1055
|
self.isManageFoundation = False
|
|
997
1056
|
self.installManage = self.yesOrNo(f"Install {self.manageAppName}")
|
|
@@ -1009,6 +1068,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1009
1068
|
if self.installManage:
|
|
1010
1069
|
self.configAppChannel("manage")
|
|
1011
1070
|
|
|
1071
|
+
# Predict requires IoT + Manage (original behavior maintained)
|
|
1012
1072
|
if self.installIoT and self.installManage:
|
|
1013
1073
|
self.installPredict = self.yesOrNo("Install Predict")
|
|
1014
1074
|
else:
|
|
@@ -1106,6 +1166,32 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1106
1166
|
self.setParam("mas_app_settings_iot_fpl_pvc_storage_class", self.getParam("storage_class_rwo"))
|
|
1107
1167
|
self.setParam("mas_app_settings_iot_mqttbroker_pvc_storage_class", self.getParam("storage_class_rwo"))
|
|
1108
1168
|
|
|
1169
|
+
@logMethodCall
|
|
1170
|
+
def setMonitorInstallOrder(self) -> None:
|
|
1171
|
+
"""
|
|
1172
|
+
Determine the installation order for Monitor relative to IoT based on Monitor version.
|
|
1173
|
+
Monitor >= 9.2.0 installs before IoT (new behavior)
|
|
1174
|
+
Monitor < 9.2.0 installs after IoT (legacy behavior)
|
|
1175
|
+
"""
|
|
1176
|
+
if self.installMonitor and self.installIoT:
|
|
1177
|
+
from mas.devops.utils import isVersionEqualOrAfter
|
|
1178
|
+
monitorChannel = self.getParam("mas_app_channel_monitor")
|
|
1179
|
+
|
|
1180
|
+
if monitorChannel and isVersionEqualOrAfter('9.2.0', monitorChannel):
|
|
1181
|
+
# Monitor >= 9.2.0: Install Monitor before IoT
|
|
1182
|
+
self.setParam("mas_monitor_install_order", "before-iot")
|
|
1183
|
+
logger.debug(f"Monitor channel {monitorChannel} >= 9.2.0: Monitor will install before IoT")
|
|
1184
|
+
else:
|
|
1185
|
+
# Monitor < 9.2.0: Install Monitor after IoT (legacy)
|
|
1186
|
+
self.setParam("mas_monitor_install_order", "after-iot")
|
|
1187
|
+
logger.debug(f"Monitor channel {monitorChannel} < 9.2.0: Monitor will install after IoT (legacy behavior)")
|
|
1188
|
+
elif self.installMonitor:
|
|
1189
|
+
# Only Monitor, no IoT - order doesn't matter but set default
|
|
1190
|
+
self.setParam("mas_monitor_install_order", "before-iot")
|
|
1191
|
+
else:
|
|
1192
|
+
# No Monitor installed - set default
|
|
1193
|
+
self.setParam("mas_monitor_install_order", "after-iot")
|
|
1194
|
+
|
|
1109
1195
|
@logMethodCall
|
|
1110
1196
|
def optimizerSettings(self) -> None:
|
|
1111
1197
|
if self.installOptimizer:
|
|
@@ -1866,6 +1952,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1866
1952
|
|
|
1867
1953
|
# After we've configured the basic inputs, we can calculate these ones
|
|
1868
1954
|
self.setIoTStorageClasses()
|
|
1955
|
+
self.setMonitorInstallOrder()
|
|
1869
1956
|
if self.deployCP4D:
|
|
1870
1957
|
self.configCP4D()
|
|
1871
1958
|
|
|
@@ -62,7 +62,7 @@ class installArgBuilderMixin():
|
|
|
62
62
|
command += f" --mas-workspace-name \"{self.getParam('mas_workspace_name')}\"{newline}"
|
|
63
63
|
|
|
64
64
|
if self.getParam('mas_special_characters') == "true":
|
|
65
|
-
command += f" --allow-special-chars
|
|
65
|
+
command += f" --allow-special-chars {newline}"
|
|
66
66
|
|
|
67
67
|
# ECK Integration
|
|
68
68
|
# -----------------------------------------------------------------------------
|
|
@@ -93,8 +93,9 @@ class Db2SettingsMixin():
|
|
|
93
93
|
|
|
94
94
|
self.setDB2DefaultChannel() # Set default channel for Db2 if not already set
|
|
95
95
|
|
|
96
|
-
# If neither
|
|
97
|
-
|
|
96
|
+
# If neither Monitor, Manage or Facilities is being installed, we have nothing to do
|
|
97
|
+
# Note: For Monitor >= 9.2.0, Monitor requires Db2; for Monitor < 9.2.0, IoT requires Db2
|
|
98
|
+
if not self.installMonitor and not self.installIoT and not self.installManage and not self.installFacilities:
|
|
98
99
|
print_formatted_text("No applications have been selected that require a Db2 installation")
|
|
99
100
|
self.setParam("db2_action_system", "none")
|
|
100
101
|
self.setParam("db2_action_manage", "none")
|
|
@@ -110,15 +111,34 @@ class Db2SettingsMixin():
|
|
|
110
111
|
|
|
111
112
|
self.setDB2DefaultSettings()
|
|
112
113
|
|
|
114
|
+
# Determine which application requires the system database based on Monitor version
|
|
115
|
+
# For Monitor >= 9.2.0: Monitor requires system Db2
|
|
116
|
+
# For Monitor < 9.2.0: IoT requires system Db2 (original behavior)
|
|
117
|
+
from mas.devops.utils import isVersionEqualOrAfter
|
|
118
|
+
monitorChannel = self.getParam("mas_app_channel_monitor")
|
|
119
|
+
useNewDependency = monitorChannel and isVersionEqualOrAfter('9.2.0', monitorChannel)
|
|
113
120
|
instanceId = self.getParam('mas_instance_id')
|
|
114
|
-
# Do we need to set up
|
|
115
|
-
if self.
|
|
121
|
+
# Do we need to set up a system database?
|
|
122
|
+
if useNewDependency and self.installMonitor:
|
|
123
|
+
# New behavior: Monitor >= 9.2.0 requires system Db2
|
|
124
|
+
if not silentMode:
|
|
125
|
+
self.printH2("Database Configuration for Maximo Monitor")
|
|
126
|
+
self.printDescription([
|
|
127
|
+
"Maximo Monitor requires a shared system-scope Db2 instance because other applications in the suite require access to the same database source",
|
|
128
|
+
" - Only IBM Db2 is supported for this database"
|
|
129
|
+
])
|
|
130
|
+
elif self.installIoT:
|
|
131
|
+
# Original behavior: IoT requires system Db2
|
|
116
132
|
if not silentMode:
|
|
117
133
|
self.printH2("Database Configuration for Maximo IoT")
|
|
118
134
|
self.printDescription([
|
|
119
|
-
"Maximo IoT requires a shared system-scope Db2 instance because
|
|
135
|
+
"Maximo IoT requires a shared system-scope Db2 instance because other applications in the suite require access to the same database source",
|
|
120
136
|
" - Only IBM Db2 is supported for this database"
|
|
121
137
|
])
|
|
138
|
+
else:
|
|
139
|
+
self.setParam("db2_action_system", "none")
|
|
140
|
+
|
|
141
|
+
if (useNewDependency and self.installMonitor) or (not useNewDependency and self.installIoT):
|
|
122
142
|
createSystemDb2UsingUniversalOperator = True
|
|
123
143
|
if not silentMode:
|
|
124
144
|
createSystemDb2UsingUniversalOperator = self.yesOrNo("Create system Db2 instance using the IBM Db2 Universal Operator")
|
|
@@ -153,7 +173,7 @@ class Db2SettingsMixin():
|
|
|
153
173
|
])
|
|
154
174
|
# Determine whether to use the system or a dedicated database
|
|
155
175
|
reuseSystemDb2 = False
|
|
156
|
-
if self.installIoT:
|
|
176
|
+
if (useNewDependency and self.installMonitor) or (not useNewDependency and self.installIoT):
|
|
157
177
|
if not silentMode:
|
|
158
178
|
reuseSystemDb2 = self.yesOrNo(f"Re-use System Db2 instance for {self.manageAppName} application")
|
|
159
179
|
if reuseSystemDb2:
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
from typing import TYPE_CHECKING, Dict, List, NoReturn
|
|
12
12
|
from os import path
|
|
13
13
|
from prompt_toolkit import print_formatted_text
|
|
14
|
+
from mas.devops.utils import isVersionEqualOrAfter
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
if TYPE_CHECKING:
|
|
@@ -23,6 +24,7 @@ class KafkaSettingsMixin():
|
|
|
23
24
|
# Attributes from BaseApp and other mixins
|
|
24
25
|
params: Dict[str, str]
|
|
25
26
|
installIoT: bool
|
|
27
|
+
installMonitor: bool
|
|
26
28
|
showAdvancedOptions: bool
|
|
27
29
|
localConfigDir: str | None
|
|
28
30
|
|
|
@@ -72,10 +74,15 @@ class KafkaSettingsMixin():
|
|
|
72
74
|
...
|
|
73
75
|
|
|
74
76
|
def configKafka(self) -> None:
|
|
75
|
-
if
|
|
77
|
+
# Check if we should use the new dependency (Monitor >= 9.2.0)
|
|
78
|
+
monitorChannel = self.getParam("mas_app_channel_monitor")
|
|
79
|
+
useNewDependency = monitorChannel and isVersionEqualOrAfter('9.2.0', monitorChannel)
|
|
80
|
+
|
|
81
|
+
if (useNewDependency and self.installMonitor) or (not useNewDependency and self.installIoT):
|
|
82
|
+
appName = "Monitor" if (useNewDependency and self.installMonitor) else "IoT"
|
|
76
83
|
self.printH1("Configure Kafka")
|
|
77
84
|
self.printDescription([
|
|
78
|
-
"Maximo
|
|
85
|
+
f"Maximo {appName} requires a shared system-scope Kafka instance",
|
|
79
86
|
"Supported Kafka providers: Strimzi, Red Hat AMQ Streams, IBM Cloud Event Streams and AWS MSK",
|
|
80
87
|
"You may also choose to configure MAS to use an existing Kafka instance by providing a pre-existing configuration file"
|
|
81
88
|
])
|