mas-cli 19.5.1__tar.gz → 19.7.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-19.5.1 → mas_cli-19.7.0}/PKG-INFO +1 -1
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/__init__.py +1 -1
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/app.py +13 -3
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/argBuilder.py +4 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/argParser.py +17 -1
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/params.py +3 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/summarizer.py +2 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/cli.py +3 -1
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/app.py +18 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/argBuilder.py +5 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/argParser.py +12 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/__init__.py +2 -1
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/manageSettings.py +4 -0
- mas_cli-19.7.0/src/mas/cli/install/settings/redisSettings.py +70 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/summarizer.py +8 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/ibm-mas-tekton.yaml +621 -222
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/update/app.py +42 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas_cli.egg-info/PKG-INFO +1 -1
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas_cli.egg-info/SOURCES.txt +1 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/MANIFEST.in +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/README.rst +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/pyproject.toml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/setup.cfg +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/setup.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/__init__.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/upgrade/__init__.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/upgrade/app.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/upgrade/argParser.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/backup/__init__.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/backup/app.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/backup/argParser.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/displayMixins.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/gencfg.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/__init__.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/catalogs.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/params.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/additionalConfigs.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/db2Settings.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/kafkaSettings.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/mongodbSettings.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/mirror/__init__.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/mirror/app.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/mirror/argParser.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/mirror/config.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/restore/__init__.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/restore/app.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/restore/argParser.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/facilities-configs.yml.j2 +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/jdbccfg.yml.j2 +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-data-dictionary-assetdatadictionary.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-bascfg.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-coreidp.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-actions.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-auth.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-datapower.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-devops.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dm.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dsc.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-edgeconfig.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-fpl.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-guardian.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-iot.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mbgx.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mfgx.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-monitor.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-orgmgmt.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-provision.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-registry.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-state.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-webui.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextaccelerator.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextworkspace.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-imagestitching.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageaccelerators.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageapp.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageworkspace.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-slackproxy.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-pushnotificationcfg.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-scimcfg.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-slscfg.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-smtpcfg.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-suite.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-visualinspection.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-sls-licenseservice.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-data-dictionary-assetdatadictionary.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-bascfg.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-coreidp.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-actions.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-auth.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-datapower.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-devops.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dm.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dsc.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-edgeconfig.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-fpl.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-guardian.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-iot.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mbgx.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mfgx.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-monitor.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-orgmgmt.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-provision.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-registry.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-state.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-webui.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextaccelerator.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextworkspace.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-imagestitching.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageaccelerators.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageapp.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageworkspace.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-slackproxy.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-pushnotificationcfg.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-scimcfg.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-slscfg.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-smtpcfg.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-suite.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-visualinspection.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-sls-licenseservice.yml +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/suite_mongocfg.yml.j2 +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/uninstall/__init__.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/uninstall/app.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/uninstall/argParser.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/update/__init__.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/update/argParser.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/upgrade/__init__.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/upgrade/app.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/upgrade/argParser.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/upgrade/settings/__init__.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/validators.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas-cli +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas_cli.egg-info/dependency_links.txt +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas_cli.egg-info/requires.txt +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas_cli.egg-info/top_level.txt +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/test/test_baseapp.py +0 -0
- {mas_cli-19.5.1 → mas_cli-19.7.0}/test/test_help.py +0 -0
|
@@ -130,6 +130,7 @@ class AiServiceInstallApp(BaseApp, aiServiceInstallArgBuilderMixin, aiServiceIns
|
|
|
130
130
|
self.printDescription([
|
|
131
131
|
"There are two flavours of the interactive install to choose from: <u>Simplified</u> and <u>Advanced</u>. The simplified option will present fewer dialogs, but you lose the ability to configure the following aspects of the installation:",
|
|
132
132
|
" - Configure certificate issuer",
|
|
133
|
+
" - Enable IPv6 SingleStack networking for services",
|
|
133
134
|
])
|
|
134
135
|
self.showAdvancedOptions = self.yesOrNo("Show advanced installation options")
|
|
135
136
|
|
|
@@ -332,14 +333,14 @@ class AiServiceInstallApp(BaseApp, aiServiceInstallArgBuilderMixin, aiServiceIns
|
|
|
332
333
|
|
|
333
334
|
elif key == "manual_certificates":
|
|
334
335
|
if value is not None:
|
|
335
|
-
self.setParam("mas_manual_cert_mgmt",
|
|
336
|
+
self.setParam("mas_manual_cert_mgmt", "true")
|
|
336
337
|
self.manualCertsDir = value
|
|
337
338
|
else:
|
|
338
|
-
self.setParam("mas_manual_cert_mgmt",
|
|
339
|
+
self.setParam("mas_manual_cert_mgmt", "false")
|
|
339
340
|
self.manualCertsDir = None
|
|
340
341
|
|
|
341
342
|
elif key == "enable_ipv6":
|
|
342
|
-
self.setParam("enable_ipv6",
|
|
343
|
+
self.setParam("enable_ipv6", "true")
|
|
343
344
|
|
|
344
345
|
# Fail if there's any arguments we don't know how to handle
|
|
345
346
|
else:
|
|
@@ -565,6 +566,9 @@ class AiServiceInstallApp(BaseApp, aiServiceInstallArgBuilderMixin, aiServiceIns
|
|
|
565
566
|
# Configure Certificate Issuer
|
|
566
567
|
self.configCertIssuer()
|
|
567
568
|
|
|
569
|
+
# Configure Network configuration for services
|
|
570
|
+
self.configNetworking()
|
|
571
|
+
|
|
568
572
|
@logMethodCall
|
|
569
573
|
def configCertIssuer(self):
|
|
570
574
|
if self.showAdvancedOptions:
|
|
@@ -573,6 +577,12 @@ class AiServiceInstallApp(BaseApp, aiServiceInstallArgBuilderMixin, aiServiceIns
|
|
|
573
577
|
if configureCertIssuer:
|
|
574
578
|
self.promptForString("Certificate issuer name", "aiservice_certificate_issuer")
|
|
575
579
|
|
|
580
|
+
@logMethodCall
|
|
581
|
+
def configNetworking(self):
|
|
582
|
+
if self.showAdvancedOptions:
|
|
583
|
+
self.printH1("Network configuration for services")
|
|
584
|
+
self.yesOrNo('Enable IPv6 SingleStack networking', 'enable_ipv6')
|
|
585
|
+
|
|
576
586
|
@logMethodCall
|
|
577
587
|
def aiServiceTenantSettings(self) -> None:
|
|
578
588
|
self.printH1("AI Service Tenant Settings")
|
|
@@ -108,6 +108,10 @@ class aiServiceInstallArgBuilderMixin():
|
|
|
108
108
|
if self.getParam('aiservice_certificate_issuer') != "":
|
|
109
109
|
command += f" --aiservice-certificate-issuer \"{self.getParam('aiservice_certificate_issuer')}\"{newline}"
|
|
110
110
|
|
|
111
|
+
# Enable IPv6 networking
|
|
112
|
+
if self.getParam('enable_ipv6').lower() == "true":
|
|
113
|
+
command += f" --enable-ipv6{newline}"
|
|
114
|
+
|
|
111
115
|
if self.getParam('aiservice_s3_accesskey') != "":
|
|
112
116
|
command += f" --s3-accesskey \"{self.getParam('aiservice_s3_accesskey')}\"{newline}"
|
|
113
117
|
if self.getParam('aiservice_s3_secretkey') != "":
|
|
@@ -422,12 +422,28 @@ aiServiceArgGroup.add_argument(
|
|
|
422
422
|
default="non-production",
|
|
423
423
|
help="Environment type (default: non-production)"
|
|
424
424
|
)
|
|
425
|
-
|
|
425
|
+
|
|
426
|
+
# AI Service advanced configuration
|
|
427
|
+
# -----------------------------------------------------------------------------
|
|
428
|
+
aiserviceAdvancedArgGroup = aiServiceinstallArgParser.add_argument_group(
|
|
429
|
+
"Advanced configuration for AI Service",
|
|
430
|
+
"Advanced configuration options for AI Service including certificates issuer and IPv6 support"
|
|
431
|
+
)
|
|
432
|
+
aiserviceAdvancedArgGroup.add_argument(
|
|
426
433
|
"--aiservice-certificate-issuer",
|
|
427
434
|
dest="aiservice_certificate_issuer",
|
|
428
435
|
required=False,
|
|
429
436
|
help="Provide the name of the Issuer to configure AI Service to issue certificates",
|
|
430
437
|
)
|
|
438
|
+
aiserviceAdvancedArgGroup.add_argument(
|
|
439
|
+
"--enable-ipv6",
|
|
440
|
+
dest="enable_ipv6",
|
|
441
|
+
required=False,
|
|
442
|
+
default="false",
|
|
443
|
+
help="Configure AI Service to run in IPv6. Before setting this option, be sure your cluster is configured in IPv6",
|
|
444
|
+
action="store_const",
|
|
445
|
+
const="true"
|
|
446
|
+
)
|
|
431
447
|
|
|
432
448
|
|
|
433
449
|
# IBM Db2 Universal Operator
|
|
@@ -50,6 +50,8 @@ class aiServiceInstallSummarizerMixin():
|
|
|
50
50
|
if "aiservice_certificate_issuer" in self.params:
|
|
51
51
|
self.printParamSummary("Certificate Issuer", "aiservice_certificate_issuer")
|
|
52
52
|
|
|
53
|
+
self.printParamSummary("Configure AI Service to run in IPv6 mode", "enable_ipv6")
|
|
54
|
+
|
|
53
55
|
self.printH2("AI Service Tenant Entitlement")
|
|
54
56
|
self.printParamSummary("Entitlement Type", "tenant_entitlement_type")
|
|
55
57
|
self.printParamSummary("Start Date", "tenant_entitlement_start_date")
|
|
@@ -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.7.0"
|
|
124
124
|
self.h1count: int = 0
|
|
125
125
|
self.h2count: int = 0
|
|
126
126
|
|
|
@@ -153,6 +153,8 @@ class BaseApp(PrintMixin, PromptMixin):
|
|
|
153
153
|
"manage": ["9.2.x-feature", "9.1.x"],
|
|
154
154
|
"optimizer": ["9.2.x-feature", "9.1.x"],
|
|
155
155
|
"visualinspection": ["9.2.x-feature", "9.1.x"],
|
|
156
|
+
"iot": ["9.2.x-feature", "9.1.x"],
|
|
157
|
+
"monitor": ["9.2.x-feature", "9.1.x"],
|
|
156
158
|
},
|
|
157
159
|
"9.1.x": {
|
|
158
160
|
"facilities": ["9.1.x"],
|
|
@@ -846,7 +846,11 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
846
846
|
if self.isSNO():
|
|
847
847
|
self.setParam("mongodb_replicas", "1")
|
|
848
848
|
self.setParam("mongodb_cpu_requests", "500m")
|
|
849
|
+
self.setParam("redis_replicas", "1")
|
|
849
850
|
self.setParam("mas_app_settings_aio_flag", "false")
|
|
851
|
+
else:
|
|
852
|
+
# Multi-node cluster: use 3 replicas for Redis HA
|
|
853
|
+
self.setParam("redis_replicas", "3")
|
|
850
854
|
|
|
851
855
|
@logMethodCall
|
|
852
856
|
def configDNSAndCerts(self):
|
|
@@ -1718,6 +1722,12 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1718
1722
|
if value is not None and value != "":
|
|
1719
1723
|
self.setParam(key, value)
|
|
1720
1724
|
self.setParam("sls_mongodb_cfg_file", f"/workspace/configs/mongo-{value}.yml")
|
|
1725
|
+
# Redis
|
|
1726
|
+
elif key == "redis_namespace":
|
|
1727
|
+
if value is not None and value != "":
|
|
1728
|
+
self.setParam(key, value)
|
|
1729
|
+
self.setParam("redis_action", "install")
|
|
1730
|
+
self.setParam("redis_cfg_file", f"/workspace/configs/redis-{value}.yml")
|
|
1721
1731
|
|
|
1722
1732
|
# SLS
|
|
1723
1733
|
elif key == "license_file":
|
|
@@ -1870,6 +1880,14 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1870
1880
|
if ((self.getParam("mas_app_channel_predict") is not None and self.getParam("mas_app_channel_predict") != "") and 'health' not in self.getParam("mas_appws_components")):
|
|
1871
1881
|
self.fatalError("--manage-components must include 'health' component when installing Predict")
|
|
1872
1882
|
|
|
1883
|
+
# Configure Redis if Collaborate addon is enabled
|
|
1884
|
+
if self.installManage and "collaborate=" in self.getParam("mas_appws_components"):
|
|
1885
|
+
logger.debug("Collaborate addon detected in mas_appws_components, configuring Redis")
|
|
1886
|
+
self.setParam("redis_action", "install")
|
|
1887
|
+
if self.getParam("redis_namespace") == "":
|
|
1888
|
+
self.setParam("redis_namespace", "redis")
|
|
1889
|
+
self.setParam("redis_cfg_file", f"/workspace/configs/redis-{self.getParam('redis_namespace')}.yml")
|
|
1890
|
+
|
|
1873
1891
|
# Validate ArcGIS installation requirements in non-interactive mode
|
|
1874
1892
|
if self.installArcgis:
|
|
1875
1893
|
hasSpatial = self.installManage and "spatial=" in self.getParam("mas_appws_components")
|
|
@@ -180,6 +180,11 @@ class installArgBuilderMixin():
|
|
|
180
180
|
if self.getParam('mongodb_namespace') != "":
|
|
181
181
|
command += f" --mongodb-namespace \"{self.getParam('mongodb_namespace')}\"{newline}"
|
|
182
182
|
|
|
183
|
+
# Redis Configuration
|
|
184
|
+
# -----------------------------------------------------------------------------
|
|
185
|
+
if self.getParam('redis_namespace') != "":
|
|
186
|
+
command += f" --redis-namespace \"{self.getParam('redis_namespace')}\"{newline}"
|
|
187
|
+
|
|
183
188
|
# OCP Configuration
|
|
184
189
|
# -----------------------------------------------------------------------------
|
|
185
190
|
if self.getParam('ocp_ingress_tls_secret_name') != "":
|
|
@@ -423,6 +423,18 @@ mongoArgGroup.add_argument(
|
|
|
423
423
|
help="Namespace for MongoDB Community Operator"
|
|
424
424
|
)
|
|
425
425
|
|
|
426
|
+
# Redis Configuration
|
|
427
|
+
# -----------------------------------------------------------------------------
|
|
428
|
+
redisArgGroup = installArgParser.add_argument_group(
|
|
429
|
+
"Redis",
|
|
430
|
+
"Configure the namespace for Redis deployment (required for Collaborate addon)."
|
|
431
|
+
)
|
|
432
|
+
redisArgGroup.add_argument(
|
|
433
|
+
"--redis-namespace",
|
|
434
|
+
required=False,
|
|
435
|
+
help="Namespace for Redis deployment (default: redis)"
|
|
436
|
+
)
|
|
437
|
+
|
|
426
438
|
# OCP Configuration
|
|
427
439
|
# -----------------------------------------------------------------------------
|
|
428
440
|
ocpArgGroup = installArgParser.add_argument_group(
|
|
@@ -10,12 +10,13 @@
|
|
|
10
10
|
|
|
11
11
|
from .db2Settings import Db2SettingsMixin
|
|
12
12
|
from .mongodbSettings import MongoDbSettingsMixin
|
|
13
|
+
from .redisSettings import RedisSettingsMixin
|
|
13
14
|
from .kafkaSettings import KafkaSettingsMixin
|
|
14
15
|
from .manageSettings import ManageSettingsMixin
|
|
15
16
|
from .additionalConfigs import AdditionalConfigsMixin
|
|
16
17
|
|
|
17
18
|
|
|
18
|
-
class InstallSettingsMixin(Db2SettingsMixin, MongoDbSettingsMixin, KafkaSettingsMixin, ManageSettingsMixin, AdditionalConfigsMixin):
|
|
19
|
+
class InstallSettingsMixin(Db2SettingsMixin, MongoDbSettingsMixin, RedisSettingsMixin, KafkaSettingsMixin, ManageSettingsMixin, AdditionalConfigsMixin):
|
|
19
20
|
"""
|
|
20
21
|
This class collects all the Mixins providing interactive prompts for mas-install
|
|
21
22
|
"""
|
|
@@ -176,6 +176,10 @@ class ManageSettingsMixin():
|
|
|
176
176
|
self.params["mas_appws_components"] += ",aip=latest"
|
|
177
177
|
if self.yesOrNo(" - Vegetation Management"):
|
|
178
178
|
self.params["mas_appws_components"] += ",vegm=latest"
|
|
179
|
+
if self.yesOrNo(" - Collaborate"):
|
|
180
|
+
self.params["mas_appws_components"] += ",collaborate=latest"
|
|
181
|
+
# Configure Redis for Collaborate addon
|
|
182
|
+
self.configRedis()
|
|
179
183
|
logger.debug(f"Generated mas_appws_components = {self.params['mas_appws_components']}")
|
|
180
184
|
|
|
181
185
|
if ",icd=" in self.params["mas_appws_components"]:
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# *****************************************************************************
|
|
2
|
+
# Copyright (c) 2024, 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
|
+
from typing import TYPE_CHECKING, Dict, List
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from prompt_toolkit.completion import WordCompleter
|
|
16
|
+
from prompt_toolkit.validation import Validator
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class RedisSettingsMixin():
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
# Attributes from BaseApp and other mixins
|
|
22
|
+
params: Dict[str, str]
|
|
23
|
+
showAdvancedOptions: bool
|
|
24
|
+
|
|
25
|
+
# Methods from BaseApp
|
|
26
|
+
def setParam(self, param: str, value: str) -> None:
|
|
27
|
+
...
|
|
28
|
+
|
|
29
|
+
def getParam(self, param: str) -> str:
|
|
30
|
+
...
|
|
31
|
+
|
|
32
|
+
# Methods from PrintMixin
|
|
33
|
+
def printH1(self, message: str) -> None:
|
|
34
|
+
...
|
|
35
|
+
|
|
36
|
+
def printDescription(self, content: List[str]) -> None:
|
|
37
|
+
...
|
|
38
|
+
|
|
39
|
+
# Methods from PromptMixin
|
|
40
|
+
def promptForString(
|
|
41
|
+
self,
|
|
42
|
+
message: str,
|
|
43
|
+
param: str | None = None,
|
|
44
|
+
default: str = "",
|
|
45
|
+
isPassword: bool = False,
|
|
46
|
+
validator: Validator | None = None,
|
|
47
|
+
completer: WordCompleter | None = None
|
|
48
|
+
) -> str:
|
|
49
|
+
...
|
|
50
|
+
|
|
51
|
+
def configRedis(self) -> None:
|
|
52
|
+
"""
|
|
53
|
+
Configure Redis for Collaborate addon.
|
|
54
|
+
Redis will be deployed automatically when Collaborate is enabled.
|
|
55
|
+
"""
|
|
56
|
+
self.printH1("Configure Redis for Collaborate")
|
|
57
|
+
self.printDescription([
|
|
58
|
+
"Redis is required for the Collaborate addon to support caching.",
|
|
59
|
+
"The installer will automatically deploy Redis with high availability (Sentinel + HAProxy)."
|
|
60
|
+
])
|
|
61
|
+
|
|
62
|
+
if self.showAdvancedOptions:
|
|
63
|
+
self.promptForString("Redis namespace", "redis_namespace", default="redis")
|
|
64
|
+
else:
|
|
65
|
+
# Use default namespace
|
|
66
|
+
self.setParam("redis_namespace", "redis")
|
|
67
|
+
|
|
68
|
+
# Always install Redis when Collaborate is enabled
|
|
69
|
+
self.setParam("redis_action", "install")
|
|
70
|
+
self.setParam("redis_cfg_file", f"/workspace/configs/redis-{self.getParam('redis_namespace')}.yml")
|
|
@@ -198,6 +198,7 @@ class InstallSummarizerMixin():
|
|
|
198
198
|
self.printSummary(" + Workday Applications", "Enabled" if "workday=" in self.getParam("mas_appws_components") else "Disabled")
|
|
199
199
|
self.printSummary(" + AIP", "Enabled" if "aip=" in self.getParam("mas_appws_components") else "Disabled")
|
|
200
200
|
self.printSummary(" + Vegetation Management", "Enabled" if "vegm=" in self.getParam("mas_appws_components") else "Disabled")
|
|
201
|
+
self.printSummary(" + Collaborate", "Enabled" if "collaborate=" in self.getParam("mas_appws_components") else "Disabled")
|
|
201
202
|
|
|
202
203
|
self.printParamSummary("+ Upgrade Type", "mas_appws_upgrade_type")
|
|
203
204
|
|
|
@@ -375,6 +376,12 @@ class InstallSummarizerMixin():
|
|
|
375
376
|
else:
|
|
376
377
|
self.fatalError(f"Unexpected value for mongodb_action parameter: {self.getParam('mongodb_action')}")
|
|
377
378
|
|
|
379
|
+
def redisSummary(self) -> None:
|
|
380
|
+
if self.getParam("redis_action") == "install":
|
|
381
|
+
self.printH2("Redis")
|
|
382
|
+
self.printSummary("Type", "Redis with Sentinel HA")
|
|
383
|
+
self.printParamSummary("Install Namespace", "redis_namespace")
|
|
384
|
+
|
|
378
385
|
def kafkaSummary(self) -> None:
|
|
379
386
|
if self.getParam("kafka_action_system") != "":
|
|
380
387
|
self.printH2("Kafka")
|
|
@@ -445,6 +452,7 @@ class InstallSummarizerMixin():
|
|
|
445
452
|
|
|
446
453
|
# Application Dependencies
|
|
447
454
|
self.mongoSummary()
|
|
455
|
+
self.redisSummary()
|
|
448
456
|
self.db2Summary()
|
|
449
457
|
self.cosSummary()
|
|
450
458
|
self.kafkaSummary()
|