mas-cli 13.2.0__tar.gz → 13.3.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.
Potentially problematic release.
This version of mas-cli might be problematic. Click here for more details.
- {mas_cli-13.2.0 → mas_cli-13.3.0}/PKG-INFO +1 -1
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/__init__.py +1 -1
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/cli.py +3 -2
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/app.py +81 -24
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/argBuilder.py +18 -3
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/argParser.py +39 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/catalogs.py +2 -1
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/params.py +4 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/settings/additionalConfigs.py +14 -1
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/summarizer.py +10 -2
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/ibm-mas-tekton.yaml +289 -114
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/update/app.py +8 -6
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas_cli.egg-info/PKG-INFO +1 -1
- {mas_cli-13.2.0 → mas_cli-13.3.0}/MANIFEST.in +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/README.rst +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/pyproject.toml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/setup.cfg +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/setup.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/displayMixins.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/gencfg.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/__init__.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/settings/__init__.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/settings/db2Settings.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/settings/kafkaSettings.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/settings/manageSettings.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/settings/mongodbSettings.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/install/settings/turbonomicSettings.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/jdbccfg.yml.j2 +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-data-dictionary-assetdatadictionary.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-bascfg.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-coreidp.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-actions.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-auth.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-datapower.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-devops.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dm.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dsc.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-edgeconfig.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-fpl.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-guardian.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-iot.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mbgx.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mfgx.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-monitor.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-orgmgmt.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-provision.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-registry.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-state.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-webui.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextaccelerator.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextworkspace.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-imagestitching.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageaccelerators.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageapp.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageworkspace.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-slackproxy.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-pushnotificationcfg.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-scimcfg.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-slscfg.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-smtpcfg.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-suite.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-visualinspection.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-sls-licenseservice.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-data-dictionary-assetdatadictionary.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-bascfg.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-coreidp.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-actions.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-auth.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-datapower.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-devops.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dm.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dsc.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-edgeconfig.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-fpl.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-guardian.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-iot.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mbgx.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mfgx.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-monitor.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-orgmgmt.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-provision.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-registry.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-state.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-webui.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextaccelerator.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextworkspace.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-imagestitching.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageaccelerators.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageapp.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageworkspace.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-slackproxy.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-pushnotificationcfg.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-scimcfg.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-slscfg.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-smtpcfg.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-suite.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-visualinspection.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-sls-licenseservice.yml +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/templates/suite_mongocfg.yml.j2 +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/uninstall/__init__.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/uninstall/app.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/uninstall/argParser.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/update/__init__.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/update/argParser.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/upgrade/__init__.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/upgrade/app.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/upgrade/argParser.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas/cli/validators.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas-cli +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas_cli.egg-info/SOURCES.txt +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas_cli.egg-info/dependency_links.txt +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas_cli.egg-info/requires.txt +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/src/mas_cli.egg-info/top_level.txt +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/test/test_help.py +0 -0
- {mas_cli-13.2.0 → mas_cli-13.3.0}/test/test_install.py +0 -0
|
@@ -117,7 +117,7 @@ class BaseApp(PrintMixin, PromptMixin):
|
|
|
117
117
|
logging.getLogger('asyncio').setLevel(logging.INFO)
|
|
118
118
|
|
|
119
119
|
# Supports extended semver, unlike mas.cli.__version__
|
|
120
|
-
self.version = "13.
|
|
120
|
+
self.version = "13.3.0"
|
|
121
121
|
self.h1count = 0
|
|
122
122
|
self.h2count = 0
|
|
123
123
|
|
|
@@ -132,9 +132,10 @@ class BaseApp(PrintMixin, PromptMixin):
|
|
|
132
132
|
# Initialize the dictionary that will hold the parameters we pass to a PipelineRun
|
|
133
133
|
self.params = dict()
|
|
134
134
|
|
|
135
|
-
# These dicts will hold the additional-configs, pod-templates and manual certificates secrets
|
|
135
|
+
# These dicts will hold the additional-configs, pod-templates, sls license file and manual certificates secrets
|
|
136
136
|
self.additionalConfigsSecret = None
|
|
137
137
|
self.podTemplatesSecret = None
|
|
138
|
+
self.slsLicenseFileSecret = None
|
|
138
139
|
self.certsSecret = None
|
|
139
140
|
|
|
140
141
|
self._isSNO = None
|
|
@@ -45,6 +45,7 @@ from mas.cli.validators import (
|
|
|
45
45
|
|
|
46
46
|
from mas.devops.ocp import createNamespace, getStorageClasses
|
|
47
47
|
from mas.devops.mas import getCurrentCatalog, getDefaultStorageClasses
|
|
48
|
+
from mas.devops.sls import findSLSByNamespace
|
|
48
49
|
from mas.devops.data import getCatalog
|
|
49
50
|
from mas.devops.tekton import (
|
|
50
51
|
installOpenShiftPipelines,
|
|
@@ -158,9 +159,6 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
158
159
|
year = date[:2]
|
|
159
160
|
return f" - {monthName} 20{year} Update\n <Orange><u>https://ibm-mas.github.io/cli/catalogs/{name}</u></Orange>"
|
|
160
161
|
|
|
161
|
-
def formatRelease(self, release: str) -> str:
|
|
162
|
-
return f"{release} ... {self.catalogReleases[release]['core']}"
|
|
163
|
-
|
|
164
162
|
@logMethodCall
|
|
165
163
|
def processCatalogChoice(self) -> list:
|
|
166
164
|
self.catalogDigest = self.chosenCatalog["catalog_digest"]
|
|
@@ -184,17 +182,23 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
184
182
|
"Manage": "mas_manage_version",
|
|
185
183
|
}
|
|
186
184
|
|
|
187
|
-
self.catalogReleases =
|
|
185
|
+
self.catalogReleases = {}
|
|
188
186
|
self.catalogTable = []
|
|
189
187
|
|
|
190
188
|
# Dynamically fetch the channels from the chosen catalog
|
|
191
189
|
# based on mas core
|
|
192
190
|
for channel in self.chosenCatalog["mas_core_version"]:
|
|
193
|
-
|
|
191
|
+
# {"9.1-feature": "9.1.x-feature"}
|
|
192
|
+
self.catalogReleases.update({channel.replace('.x', ''): channel})
|
|
194
193
|
|
|
195
194
|
# Generate catalogTable
|
|
196
195
|
for application, key in applications.items():
|
|
197
|
-
|
|
196
|
+
# Add 9.1-feature channel based off 9.0 to those apps that have not onboarded yet
|
|
197
|
+
tempChosenCatalog = self.chosenCatalog[key].copy()
|
|
198
|
+
if '9.1.x-feature' not in tempChosenCatalog:
|
|
199
|
+
tempChosenCatalog.update({"9.1.x-feature": tempChosenCatalog["9.0.x"]})
|
|
200
|
+
|
|
201
|
+
self.catalogTable.append({"": application} | {key.replace(".x", ""): value for key, value in sorted(tempChosenCatalog.items(), reverse=True)})
|
|
198
202
|
|
|
199
203
|
if self.architecture == "s390x":
|
|
200
204
|
summary = [
|
|
@@ -202,7 +206,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
202
206
|
"<u>Catalog Details</u>",
|
|
203
207
|
f"Catalog Image: icr.io/cpopen/ibm-maximo-operator-catalog:{self.getParam('mas_catalog_version')}",
|
|
204
208
|
f"Catalog Digest: {self.catalogDigest}",
|
|
205
|
-
f"MAS Releases: {', '.join(self.catalogReleases)}",
|
|
209
|
+
f"MAS Releases: {', '.join(sorted(self.catalogReleases, reverse=True))}",
|
|
206
210
|
f"MongoDb: {self.catalogMongoDbVersion}",
|
|
207
211
|
]
|
|
208
212
|
else:
|
|
@@ -211,7 +215,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
211
215
|
"<u>Catalog Details</u>",
|
|
212
216
|
f"Catalog Image: icr.io/cpopen/ibm-maximo-operator-catalog:{self.getParam('mas_catalog_version')}",
|
|
213
217
|
f"Catalog Digest: {self.catalogDigest}",
|
|
214
|
-
f"MAS Releases: {', '.join(self.catalogReleases)}",
|
|
218
|
+
f"MAS Releases: {', '.join(sorted(self.catalogReleases, reverse=True))}",
|
|
215
219
|
f"Cloud Pak for Data: {self.catalogCp4dVersion}",
|
|
216
220
|
f"MongoDb: {self.catalogMongoDbVersion}",
|
|
217
221
|
]
|
|
@@ -254,28 +258,64 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
254
258
|
self.printDescription(catalogSummary)
|
|
255
259
|
self.printDescription([
|
|
256
260
|
"",
|
|
257
|
-
"
|
|
258
|
-
"
|
|
261
|
+
"Two types of release are available:",
|
|
262
|
+
" - GA releases of Maximo Application Suite are supported under IBM's standard 3+1+3 support lifecycle policy.",
|
|
263
|
+
" - 'Feature' releases allow early access to new features for evaluation in non-production environments and are only supported through to the next GA release.",
|
|
259
264
|
""
|
|
260
265
|
])
|
|
261
266
|
|
|
262
267
|
print(tabulate(self.catalogTable, headers="keys", tablefmt="simple_grid"))
|
|
263
268
|
|
|
264
|
-
releaseCompleter = WordCompleter(self.catalogReleases)
|
|
269
|
+
releaseCompleter = WordCompleter(sorted(self.catalogReleases, reverse=True))
|
|
265
270
|
releaseSelection = self.promptForString("Select release", completer=releaseCompleter)
|
|
266
271
|
|
|
267
|
-
self.setParam("mas_channel", releaseSelection)
|
|
272
|
+
self.setParam("mas_channel", self.catalogReleases[releaseSelection])
|
|
268
273
|
|
|
269
274
|
@logMethodCall
|
|
270
275
|
def configSLS(self) -> None:
|
|
271
|
-
self.printH1("Configure
|
|
276
|
+
self.printH1("Configure AppPoint Licensing")
|
|
277
|
+
self.printDescription(
|
|
278
|
+
[
|
|
279
|
+
"By default the MAS instance will be configured to use a cluster-shared License, this provides a shared pool of AppPoints available to all MAS instances on the cluster.",
|
|
280
|
+
"",
|
|
281
|
+
]
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
self.slsMode = 1
|
|
285
|
+
self.slsLicenseFileLocal = None
|
|
286
|
+
|
|
287
|
+
if self.showAdvancedOptions:
|
|
288
|
+
self.printDescription(
|
|
289
|
+
[
|
|
290
|
+
"Alternatively you may choose to install using a dedicated license only available to this MAS instance.",
|
|
291
|
+
" 1. Install MAS with Cluster-Shared License (AppPoints)",
|
|
292
|
+
" 2. Install MAS with Dedicated License (AppPoints)",
|
|
293
|
+
]
|
|
294
|
+
)
|
|
295
|
+
self.slsMode = self.promptForInt("SLS Mode", default=1)
|
|
296
|
+
|
|
297
|
+
if self.slsMode not in [1, 2]:
|
|
298
|
+
self.fatalError(f"Invalid selection: {self.slsMode}")
|
|
299
|
+
|
|
300
|
+
if not (self.slsMode == 2 and not self.getParam("sls_namespace")):
|
|
301
|
+
sls_namespace = "ibm-sls" if self.slsMode == 1 else self.getParam("sls_namespace")
|
|
302
|
+
if findSLSByNamespace(sls_namespace, dynClient=self.dynamicClient):
|
|
303
|
+
print_formatted_text(HTML(f"<MediumSeaGreen>SLS auto-detected: {sls_namespace}</MediumSeaGreen>"))
|
|
304
|
+
print()
|
|
305
|
+
if not self.yesOrNo("Upload/Replace the license file"):
|
|
306
|
+
self.setParam("sls_action", "gencfg")
|
|
307
|
+
return
|
|
308
|
+
|
|
272
309
|
self.slsLicenseFileLocal = self.promptForFile("License file", mustExist=True, envVar="SLS_LICENSE_FILE_LOCAL")
|
|
310
|
+
self.setParam("sls_action", "install")
|
|
311
|
+
|
|
312
|
+
@logMethodCall
|
|
313
|
+
def configDRO(self) -> None:
|
|
273
314
|
self.promptForString("Contact e-mail address", "uds_contact_email")
|
|
274
315
|
self.promptForString("Contact first name", "uds_contact_firstname")
|
|
275
316
|
self.promptForString("Contact last name", "uds_contact_lastname")
|
|
276
317
|
|
|
277
318
|
if self.showAdvancedOptions:
|
|
278
|
-
self.promptForString("IBM Suite License Services (SLS) Namespace", "sls_namespace", default="ibm-sls")
|
|
279
319
|
self.promptForString("IBM Data Reporter Operator (DRO) Namespace", "dro_namespace", default="redhat-marketplace")
|
|
280
320
|
|
|
281
321
|
@logMethodCall
|
|
@@ -396,6 +436,9 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
396
436
|
])
|
|
397
437
|
self.promptForString("Workspace name", "mas_workspace_name", validator=WorkspaceNameFormatValidator())
|
|
398
438
|
|
|
439
|
+
if self.slsMode == 2 and not self.getParam("sls_namespace"):
|
|
440
|
+
self.setParam("sls_namespace", f"mas-{self.getParam('mas_instance_id')}-sls")
|
|
441
|
+
|
|
399
442
|
self.configOperationMode()
|
|
400
443
|
self.configCATrust()
|
|
401
444
|
self.configDNSAndCerts()
|
|
@@ -747,6 +790,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
747
790
|
|
|
748
791
|
# Licensing (SLS and DRO)
|
|
749
792
|
self.configSLS()
|
|
793
|
+
self.configDRO()
|
|
750
794
|
self.configICRCredentials()
|
|
751
795
|
|
|
752
796
|
# MAS Core
|
|
@@ -795,6 +839,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
795
839
|
self.deployCP4D = False
|
|
796
840
|
self.db2SetAffinity = False
|
|
797
841
|
self.db2SetTolerations = False
|
|
842
|
+
self.slsLicenseFileLocal = None
|
|
798
843
|
|
|
799
844
|
self.approvals = {
|
|
800
845
|
"approval_core": {"id": "suite-verify"}, # After Core Platform verification has completed
|
|
@@ -903,6 +948,14 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
903
948
|
self.setParam(key, value)
|
|
904
949
|
if value in ["jms", "snojms"]:
|
|
905
950
|
self.setParam("mas_app_settings_persistent_volumes_flag", "true")
|
|
951
|
+
# SLS
|
|
952
|
+
elif key == "license_file":
|
|
953
|
+
if value is not None and value != "":
|
|
954
|
+
self.slsLicenseFileLocal = value
|
|
955
|
+
self.setParam("sls_action", "install")
|
|
956
|
+
elif key == "dedicated_sls":
|
|
957
|
+
if value:
|
|
958
|
+
self.setParam("sls_namespace", f"mas-{self.args.mas_instance_id}-sls")
|
|
906
959
|
|
|
907
960
|
# These settings are used by the CLI rather than passed to the PipelineRun
|
|
908
961
|
elif key == "storage_accessmode":
|
|
@@ -913,10 +966,6 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
913
966
|
if value is None:
|
|
914
967
|
self.fatalError(f"{key} must be set")
|
|
915
968
|
self.pipelineStorageClass = value
|
|
916
|
-
elif key == "license_file":
|
|
917
|
-
if value is None:
|
|
918
|
-
self.fatalError(f"{key} must be set")
|
|
919
|
-
self.slsLicenseFileLocal = value
|
|
920
969
|
|
|
921
970
|
elif key.startswith("approval_"):
|
|
922
971
|
if key not in self.approvals:
|
|
@@ -954,6 +1003,13 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
954
1003
|
# Load the catalog information
|
|
955
1004
|
self.chosenCatalog = getCatalog(self.getParam("mas_catalog_version"))
|
|
956
1005
|
|
|
1006
|
+
# License file is only optional for existing SLS instance
|
|
1007
|
+
if self.slsLicenseFileLocal is None:
|
|
1008
|
+
if findSLSByNamespace(self.getParam("sls_namespace"), dynClient=self.dynamicClient):
|
|
1009
|
+
self.setParam("sls_action", "gencfg")
|
|
1010
|
+
else:
|
|
1011
|
+
self.fatalError("--license-file must be set for new SLS install")
|
|
1012
|
+
|
|
957
1013
|
# Once we've processed the inputs, we should validate the catalog source & prompt to accept the license terms
|
|
958
1014
|
if not self.devMode:
|
|
959
1015
|
self.validateCatalogSource()
|
|
@@ -977,6 +1033,10 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
977
1033
|
self.devMode = args.dev_mode
|
|
978
1034
|
self.skipGrafanaInstall = args.skip_grafana_install
|
|
979
1035
|
|
|
1036
|
+
# Set image_pull_policy of the CLI in interactive mode
|
|
1037
|
+
if args.image_pull_policy and args.image_pull_policy != "":
|
|
1038
|
+
self.setParam("image_pull_policy", args.image_pull_policy)
|
|
1039
|
+
|
|
980
1040
|
self.approvals = {}
|
|
981
1041
|
|
|
982
1042
|
# Store all args
|
|
@@ -1024,13 +1084,10 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1024
1084
|
if self.deployCP4D:
|
|
1025
1085
|
self.configCP4D()
|
|
1026
1086
|
|
|
1027
|
-
#
|
|
1028
|
-
entitlementFileBaseName = path.basename(self.slsLicenseFileLocal)
|
|
1029
|
-
self.setParam("sls_entitlement_file", f"/workspace/entitlement/{entitlementFileBaseName}")
|
|
1030
|
-
|
|
1031
|
-
# Set up the secrets for additional configs, podtemplates and manual certificates
|
|
1087
|
+
# Set up the secrets for additional configs, podtemplates, sls license file and manual certificates
|
|
1032
1088
|
self.additionalConfigs()
|
|
1033
1089
|
self.podTemplates()
|
|
1090
|
+
self.slsLicenseFile()
|
|
1034
1091
|
self.manualCertificates()
|
|
1035
1092
|
|
|
1036
1093
|
# Show a summary of the installation configuration
|
|
@@ -1082,7 +1139,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1082
1139
|
prepareInstallSecrets(
|
|
1083
1140
|
dynClient=self.dynamicClient,
|
|
1084
1141
|
instanceId=self.getParam("mas_instance_id"),
|
|
1085
|
-
slsLicenseFile=self.
|
|
1142
|
+
slsLicenseFile=self.slsLicenseFileSecret,
|
|
1086
1143
|
additionalConfigs=self.additionalConfigsSecret,
|
|
1087
1144
|
podTemplates=self.podTemplatesSecret,
|
|
1088
1145
|
certs=self.certsSecret
|
|
@@ -122,9 +122,15 @@ class installArgBuilderMixin():
|
|
|
122
122
|
|
|
123
123
|
# IBM Suite License Service
|
|
124
124
|
# -----------------------------------------------------------------------------
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
if self.getParam("sls_namespace") and self.getParam("sls_namespace") != "ibm-sls":
|
|
126
|
+
if self.getParam("mas_instance_id") and self.getParam("sls_namespace") == f"mas-{self.getParam('mas_instance_id')}-sls":
|
|
127
|
+
command += " --dedicated-sls"
|
|
128
|
+
else:
|
|
129
|
+
command += f" --sls-namespace \"{self.getParam('sls_namespace')}\""
|
|
130
|
+
if self.slsLicenseFileLocal:
|
|
131
|
+
command += f" --license-file \"{self.slsLicenseFileLocal}\""
|
|
132
|
+
if self.getParam("sls_namespace") and self.getParam("sls_namespace") != "ibm-sls" or self.slsLicenseFileLocal:
|
|
133
|
+
command += newline
|
|
128
134
|
|
|
129
135
|
# IBM Data Reporting Operator (DRO)
|
|
130
136
|
# -----------------------------------------------------------------------------
|
|
@@ -222,6 +228,9 @@ class installArgBuilderMixin():
|
|
|
222
228
|
if self.getParam('mas_manage_attachment_configuration_mode') != "":
|
|
223
229
|
command += f" --manage-attachments-mode \"{self.getParam('mas_manage_attachment_configuration_mode')}\"{newline}"
|
|
224
230
|
|
|
231
|
+
if self.getParam('mas_appws_bindings_health_wsl_flag') == "true":
|
|
232
|
+
command += f" --manage-health-wsl{newline}"
|
|
233
|
+
|
|
225
234
|
# IBM Cloud Pak for Data
|
|
226
235
|
# -----------------------------------------------------------------------------
|
|
227
236
|
if self.getParam('cpd_product_version') != "":
|
|
@@ -232,6 +241,12 @@ class installArgBuilderMixin():
|
|
|
232
241
|
command += " --cp4d-install-openscal"
|
|
233
242
|
if self.getParam('cpd_install_cognos') == "install":
|
|
234
243
|
command += " --cp4d-install-cognos"
|
|
244
|
+
if self.getParam('cpd_install_ws') == "install":
|
|
245
|
+
command += " --cp4d-install-ws"
|
|
246
|
+
if self.getParam('cpd_install_wml') == "install":
|
|
247
|
+
command += " --cp4d-install-wml"
|
|
248
|
+
if self.getParam('cpd_install_ae') == "install":
|
|
249
|
+
command += " --cp4d-install-ae"
|
|
235
250
|
command += newline
|
|
236
251
|
|
|
237
252
|
# IBM Db2 Universal Operator
|
|
@@ -263,6 +263,12 @@ slsArgGroup.add_argument(
|
|
|
263
263
|
help="Customize the SLS install namespace",
|
|
264
264
|
default="ibm-sls"
|
|
265
265
|
)
|
|
266
|
+
slsArgGroup.add_argument(
|
|
267
|
+
"--dedicated-sls",
|
|
268
|
+
action="store_true",
|
|
269
|
+
default=False,
|
|
270
|
+
help="Set the SLS namespace to mas-<instanceid>-sls"
|
|
271
|
+
)
|
|
266
272
|
|
|
267
273
|
# IBM Data Reporting Operator (DRO)
|
|
268
274
|
# -----------------------------------------------------------------------------
|
|
@@ -562,6 +568,15 @@ manageArgGroup.add_argument(
|
|
|
562
568
|
default="base=latest,health=latest"
|
|
563
569
|
)
|
|
564
570
|
|
|
571
|
+
manageArgGroup.add_argument(
|
|
572
|
+
"--manage-health-wsl",
|
|
573
|
+
dest="mas_appws_bindings_health_wsl_flag",
|
|
574
|
+
required=False,
|
|
575
|
+
help="Set boolean value indicating if Watson Studio must be bound to Manage. It is expected a system level WatsonStudioCfg applied in the cluster.",
|
|
576
|
+
action="store_const",
|
|
577
|
+
const="true"
|
|
578
|
+
)
|
|
579
|
+
|
|
565
580
|
manageArgGroup.add_argument(
|
|
566
581
|
"--manage-customization-archive-name",
|
|
567
582
|
dest="mas_app_settings_customization_archive_name",
|
|
@@ -707,6 +722,30 @@ cpdAppsArgGroup.add_argument(
|
|
|
707
722
|
action="store_const",
|
|
708
723
|
const="install"
|
|
709
724
|
)
|
|
725
|
+
cpdAppsArgGroup.add_argument(
|
|
726
|
+
"--cp4d-install-ws",
|
|
727
|
+
dest="cpd_install_ws",
|
|
728
|
+
required=False,
|
|
729
|
+
help="Add Watson Studio as part of Cloud Pak for Data",
|
|
730
|
+
action="store_const",
|
|
731
|
+
const="install"
|
|
732
|
+
)
|
|
733
|
+
cpdAppsArgGroup.add_argument(
|
|
734
|
+
"--cp4d-install-wml",
|
|
735
|
+
dest="cpd_install_wml",
|
|
736
|
+
required=False,
|
|
737
|
+
help="Add Watson Machine Learning as part of Cloud Pak for Data",
|
|
738
|
+
action="store_const",
|
|
739
|
+
const="install"
|
|
740
|
+
)
|
|
741
|
+
cpdAppsArgGroup.add_argument(
|
|
742
|
+
"--cp4d-install-ae",
|
|
743
|
+
dest="cpd_install_ae",
|
|
744
|
+
required=False,
|
|
745
|
+
help="Add Spark Analytics Engine as part of Cloud Pak for Data",
|
|
746
|
+
action="store_const",
|
|
747
|
+
const="install"
|
|
748
|
+
)
|
|
710
749
|
|
|
711
750
|
# IBM Db2 Universal Operator
|
|
712
751
|
# -----------------------------------------------------------------------------
|
|
@@ -9,12 +9,13 @@
|
|
|
9
9
|
# *****************************************************************************
|
|
10
10
|
supportedCatalogs = {
|
|
11
11
|
"amd64": [
|
|
12
|
+
"v9-250206-amd64",
|
|
12
13
|
"v9-250109-amd64",
|
|
13
14
|
"v9-241205-amd64",
|
|
14
15
|
"v9-241107-amd64",
|
|
15
|
-
"v9-241003-amd64",
|
|
16
16
|
],
|
|
17
17
|
"s390x": [
|
|
18
|
+
"v9-250206-s390x",
|
|
18
19
|
"v9-250109-s390x",
|
|
19
20
|
"v9-241205-s390x",
|
|
20
21
|
"v9-241107-s390x",
|
|
@@ -57,6 +57,7 @@ optionalParams = [
|
|
|
57
57
|
"mas_app_settings_server_timezone",
|
|
58
58
|
"mas_appws_bindings_jdbc_manage",
|
|
59
59
|
"mas_appws_components",
|
|
60
|
+
"mas_appws_bindings_health_wsl_flag",
|
|
60
61
|
"mas_domain",
|
|
61
62
|
# SLS
|
|
62
63
|
"sls_namespace",
|
|
@@ -98,6 +99,9 @@ optionalParams = [
|
|
|
98
99
|
"cpd_install_cognos",
|
|
99
100
|
"cpd_install_openscale",
|
|
100
101
|
"cpd_install_spss",
|
|
102
|
+
"cpd_install_ws",
|
|
103
|
+
"cpd_install_wml",
|
|
104
|
+
"cpd_install_ae",
|
|
101
105
|
# Kafka
|
|
102
106
|
"kafka_namespace",
|
|
103
107
|
"kafka_version",
|
|
@@ -89,7 +89,7 @@ class AdditionalConfigsMixin():
|
|
|
89
89
|
elif podTemplateChoice == 2:
|
|
90
90
|
self.setParam("mas_pod_templates_dir", path.join(self.templatesDir, "pod-templates", "best-effort"))
|
|
91
91
|
elif podTemplateChoice == 3:
|
|
92
|
-
self.promptForDir("Pod templates directory",
|
|
92
|
+
self.setParam("mas_pod_templates_dir", self.promptForDir("Pod templates directory", mustExist=True))
|
|
93
93
|
else:
|
|
94
94
|
self.fatalError(f"Invalid selection: {podTemplateChoice}")
|
|
95
95
|
|
|
@@ -182,6 +182,19 @@ class AdditionalConfigsMixin():
|
|
|
182
182
|
|
|
183
183
|
self.certsSecret = certsSecret
|
|
184
184
|
|
|
185
|
+
def slsLicenseFile(self) -> None:
|
|
186
|
+
if self.slsLicenseFileLocal:
|
|
187
|
+
slsLicenseFileSecret = {
|
|
188
|
+
"apiVersion": "v1",
|
|
189
|
+
"kind": "Secret",
|
|
190
|
+
"type": "Opaque",
|
|
191
|
+
"metadata": {
|
|
192
|
+
"name": "pipeline-sls-entitlement"
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
self.setParam("sls_entitlement_file", f"/workspace/entitlement/{path.basename(self.slsLicenseFileLocal)}")
|
|
196
|
+
self.slsLicenseFileSecret = self.addFilesToSecret(slsLicenseFileSecret, self.slsLicenseFileLocal, '')
|
|
197
|
+
|
|
185
198
|
def addFilesToSecret(self, secretDict: dict, configPath: str, extension: str, keyPrefix: str = '') -> dict:
|
|
186
199
|
"""
|
|
187
200
|
Add file (or files) to pipeline-additional-configs
|
|
@@ -252,6 +252,11 @@ class InstallSummarizerMixin():
|
|
|
252
252
|
self.printSummary("Watson Studio Local", "Install (Required by Maximo Predict)")
|
|
253
253
|
self.printSummary("Watson Machine Learning", "Install (Required by Maximo Predict)")
|
|
254
254
|
self.printSummary("Analytics Engine", "Install (Required by Maximo Predict)")
|
|
255
|
+
else:
|
|
256
|
+
self.printSummary("Watson Studio Local", "Install" if self.getParam("cpd_install_ws") == "true" else "Do Not Install")
|
|
257
|
+
self.printSummary("Watson Machine Learning", "Install" if self.getParam("cpd_install_wml") == "true" else "Do Not Install")
|
|
258
|
+
self.printSummary("Analytics Engine", "Install" if self.getParam("cpd_install_ae") == "true" else "Do Not Install")
|
|
259
|
+
|
|
255
260
|
self.printSummary("Watson Openscale", "Install" if self.getParam("cpd_install_openscale") == "true" else "Do Not Install")
|
|
256
261
|
self.printSummary("SPSS Modeler", "Install" if self.getParam("cpd_install_spss") == "true" else "Do Not Install")
|
|
257
262
|
self.printSummary("Cognos Analytics", "Install" if self.getParam("cpd_install_cognos") == "true" else "Do Not Install")
|
|
@@ -265,9 +270,12 @@ class InstallSummarizerMixin():
|
|
|
265
270
|
|
|
266
271
|
def slsSummary(self) -> None:
|
|
267
272
|
self.printH2("IBM Suite License Service")
|
|
268
|
-
self.printSummary("License File", self.slsLicenseFileLocal)
|
|
269
|
-
self.printParamSummary("IBM Open Registry", "sls_icr_cpopen")
|
|
270
273
|
self.printParamSummary("Namespace", "sls_namespace")
|
|
274
|
+
if self.getParam("sls_action") == "install":
|
|
275
|
+
self.printSummary("Subscription Channel", "3.x")
|
|
276
|
+
self.printParamSummary("IBM Open Registry", "sls_icr_cpopen")
|
|
277
|
+
if self.slsLicenseFileLocal:
|
|
278
|
+
self.printSummary("License File", self.slsLicenseFileLocal)
|
|
271
279
|
|
|
272
280
|
def cosSummary(self) -> None:
|
|
273
281
|
self.printH2("Cloud Object Storage")
|