mas-cli 13.1.1__py3-none-any.whl → 13.3.0__py3-none-any.whl
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/__init__.py +1 -1
- mas/cli/cli.py +3 -2
- mas/cli/install/app.py +117 -43
- mas/cli/install/argBuilder.py +18 -3
- mas/cli/install/argParser.py +39 -0
- mas/cli/install/catalogs.py +2 -1
- mas/cli/install/params.py +4 -0
- mas/cli/install/settings/additionalConfigs.py +14 -1
- mas/cli/install/summarizer.py +10 -2
- mas/cli/templates/ibm-mas-tekton.yaml +315 -114
- mas/cli/update/app.py +8 -6
- {mas_cli-13.1.1.dist-info → mas_cli-13.3.0.dist-info}/METADATA +1 -1
- {mas_cli-13.1.1.dist-info → mas_cli-13.3.0.dist-info}/RECORD +16 -16
- {mas_cli-13.1.1.data → mas_cli-13.3.0.data}/scripts/mas-cli +0 -0
- {mas_cli-13.1.1.dist-info → mas_cli-13.3.0.dist-info}/WHEEL +0 -0
- {mas_cli-13.1.1.dist-info → mas_cli-13.3.0.dist-info}/top_level.txt +0 -0
mas/cli/__init__.py
CHANGED
mas/cli/cli.py
CHANGED
|
@@ -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
|
mas/cli/install/app.py
CHANGED
|
@@ -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,47 +159,67 @@ 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"]
|
|
167
|
-
self.catalogCp4dVersion = self.chosenCatalog["cpd_product_version_default"]
|
|
168
165
|
self.catalogMongoDbVersion = self.chosenCatalog["mongo_extras_version_default"]
|
|
166
|
+
if self.architecture != "s390x":
|
|
167
|
+
self.catalogCp4dVersion = self.chosenCatalog["cpd_product_version_default"]
|
|
168
|
+
|
|
169
|
+
applications = {
|
|
170
|
+
"Core": "mas_core_version",
|
|
171
|
+
"Manage": "mas_manage_version",
|
|
172
|
+
"IoT": "mas_iot_version",
|
|
173
|
+
"Monitor": "mas_monitor_version",
|
|
174
|
+
"Assist": "mas_assist_version",
|
|
175
|
+
"Optimizer": "mas_optimizer_version",
|
|
176
|
+
"Predict": "mas_predict_version",
|
|
177
|
+
"Inspection": "mas_visualinspection_version",
|
|
178
|
+
}
|
|
179
|
+
else:
|
|
180
|
+
applications = {
|
|
181
|
+
"Core": "mas_core_version",
|
|
182
|
+
"Manage": "mas_manage_version",
|
|
183
|
+
}
|
|
169
184
|
|
|
170
|
-
self.catalogReleases =
|
|
185
|
+
self.catalogReleases = {}
|
|
171
186
|
self.catalogTable = []
|
|
172
187
|
|
|
173
|
-
applications = {
|
|
174
|
-
"Core": "mas_core_version",
|
|
175
|
-
"Manage": "mas_manage_version",
|
|
176
|
-
"IoT": "mas_iot_version",
|
|
177
|
-
"Monitor": "mas_monitor_version",
|
|
178
|
-
"Assist": "mas_assist_version",
|
|
179
|
-
"Optimizer": "mas_optimizer_version",
|
|
180
|
-
"Predict": "mas_predict_version",
|
|
181
|
-
"Inspection": "mas_visualinspection_version",
|
|
182
|
-
}
|
|
183
|
-
|
|
184
188
|
# Dynamically fetch the channels from the chosen catalog
|
|
185
189
|
# based on mas core
|
|
186
190
|
for channel in self.chosenCatalog["mas_core_version"]:
|
|
187
|
-
|
|
191
|
+
# {"9.1-feature": "9.1.x-feature"}
|
|
192
|
+
self.catalogReleases.update({channel.replace('.x', ''): channel})
|
|
188
193
|
|
|
189
194
|
# Generate catalogTable
|
|
190
195
|
for application, key in applications.items():
|
|
191
|
-
|
|
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)})
|
|
202
|
+
|
|
203
|
+
if self.architecture == "s390x":
|
|
204
|
+
summary = [
|
|
205
|
+
"",
|
|
206
|
+
"<u>Catalog Details</u>",
|
|
207
|
+
f"Catalog Image: icr.io/cpopen/ibm-maximo-operator-catalog:{self.getParam('mas_catalog_version')}",
|
|
208
|
+
f"Catalog Digest: {self.catalogDigest}",
|
|
209
|
+
f"MAS Releases: {', '.join(sorted(self.catalogReleases, reverse=True))}",
|
|
210
|
+
f"MongoDb: {self.catalogMongoDbVersion}",
|
|
211
|
+
]
|
|
212
|
+
else:
|
|
213
|
+
summary = [
|
|
214
|
+
"",
|
|
215
|
+
"<u>Catalog Details</u>",
|
|
216
|
+
f"Catalog Image: icr.io/cpopen/ibm-maximo-operator-catalog:{self.getParam('mas_catalog_version')}",
|
|
217
|
+
f"Catalog Digest: {self.catalogDigest}",
|
|
218
|
+
f"MAS Releases: {', '.join(sorted(self.catalogReleases, reverse=True))}",
|
|
219
|
+
f"Cloud Pak for Data: {self.catalogCp4dVersion}",
|
|
220
|
+
f"MongoDb: {self.catalogMongoDbVersion}",
|
|
221
|
+
]
|
|
192
222
|
|
|
193
|
-
summary = [
|
|
194
|
-
"",
|
|
195
|
-
"<u>Catalog Details</u>",
|
|
196
|
-
f"Catalog Image: icr.io/cpopen/ibm-maximo-operator-catalog:{self.getParam('mas_catalog_version')}",
|
|
197
|
-
f"Catalog Digest: {self.catalogDigest}",
|
|
198
|
-
f"MAS Releases: {', '.join(self.catalogReleases)}",
|
|
199
|
-
f"Cloud Pak for Data: {self.catalogCp4dVersion}",
|
|
200
|
-
f"MongoDb: {self.catalogMongoDbVersion}",
|
|
201
|
-
]
|
|
202
223
|
return summary
|
|
203
224
|
|
|
204
225
|
@logMethodCall
|
|
@@ -237,28 +258,64 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
237
258
|
self.printDescription(catalogSummary)
|
|
238
259
|
self.printDescription([
|
|
239
260
|
"",
|
|
240
|
-
"
|
|
241
|
-
"
|
|
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.",
|
|
242
264
|
""
|
|
243
265
|
])
|
|
244
266
|
|
|
245
267
|
print(tabulate(self.catalogTable, headers="keys", tablefmt="simple_grid"))
|
|
246
268
|
|
|
247
|
-
releaseCompleter = WordCompleter(self.catalogReleases)
|
|
269
|
+
releaseCompleter = WordCompleter(sorted(self.catalogReleases, reverse=True))
|
|
248
270
|
releaseSelection = self.promptForString("Select release", completer=releaseCompleter)
|
|
249
271
|
|
|
250
|
-
self.setParam("mas_channel", releaseSelection)
|
|
272
|
+
self.setParam("mas_channel", self.catalogReleases[releaseSelection])
|
|
251
273
|
|
|
252
274
|
@logMethodCall
|
|
253
275
|
def configSLS(self) -> None:
|
|
254
|
-
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
|
+
|
|
255
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:
|
|
256
314
|
self.promptForString("Contact e-mail address", "uds_contact_email")
|
|
257
315
|
self.promptForString("Contact first name", "uds_contact_firstname")
|
|
258
316
|
self.promptForString("Contact last name", "uds_contact_lastname")
|
|
259
317
|
|
|
260
318
|
if self.showAdvancedOptions:
|
|
261
|
-
self.promptForString("IBM Suite License Services (SLS) Namespace", "sls_namespace", default="ibm-sls")
|
|
262
319
|
self.promptForString("IBM Data Reporter Operator (DRO) Namespace", "dro_namespace", default="redhat-marketplace")
|
|
263
320
|
|
|
264
321
|
@logMethodCall
|
|
@@ -379,6 +436,9 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
379
436
|
])
|
|
380
437
|
self.promptForString("Workspace name", "mas_workspace_name", validator=WorkspaceNameFormatValidator())
|
|
381
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
|
+
|
|
382
442
|
self.configOperationMode()
|
|
383
443
|
self.configCATrust()
|
|
384
444
|
self.configDNSAndCerts()
|
|
@@ -730,6 +790,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
730
790
|
|
|
731
791
|
# Licensing (SLS and DRO)
|
|
732
792
|
self.configSLS()
|
|
793
|
+
self.configDRO()
|
|
733
794
|
self.configICRCredentials()
|
|
734
795
|
|
|
735
796
|
# MAS Core
|
|
@@ -778,6 +839,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
778
839
|
self.deployCP4D = False
|
|
779
840
|
self.db2SetAffinity = False
|
|
780
841
|
self.db2SetTolerations = False
|
|
842
|
+
self.slsLicenseFileLocal = None
|
|
781
843
|
|
|
782
844
|
self.approvals = {
|
|
783
845
|
"approval_core": {"id": "suite-verify"}, # After Core Platform verification has completed
|
|
@@ -886,6 +948,14 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
886
948
|
self.setParam(key, value)
|
|
887
949
|
if value in ["jms", "snojms"]:
|
|
888
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")
|
|
889
959
|
|
|
890
960
|
# These settings are used by the CLI rather than passed to the PipelineRun
|
|
891
961
|
elif key == "storage_accessmode":
|
|
@@ -896,10 +966,6 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
896
966
|
if value is None:
|
|
897
967
|
self.fatalError(f"{key} must be set")
|
|
898
968
|
self.pipelineStorageClass = value
|
|
899
|
-
elif key == "license_file":
|
|
900
|
-
if value is None:
|
|
901
|
-
self.fatalError(f"{key} must be set")
|
|
902
|
-
self.slsLicenseFileLocal = value
|
|
903
969
|
|
|
904
970
|
elif key.startswith("approval_"):
|
|
905
971
|
if key not in self.approvals:
|
|
@@ -937,6 +1003,13 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
937
1003
|
# Load the catalog information
|
|
938
1004
|
self.chosenCatalog = getCatalog(self.getParam("mas_catalog_version"))
|
|
939
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
|
+
|
|
940
1013
|
# Once we've processed the inputs, we should validate the catalog source & prompt to accept the license terms
|
|
941
1014
|
if not self.devMode:
|
|
942
1015
|
self.validateCatalogSource()
|
|
@@ -960,6 +1033,10 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
960
1033
|
self.devMode = args.dev_mode
|
|
961
1034
|
self.skipGrafanaInstall = args.skip_grafana_install
|
|
962
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
|
+
|
|
963
1040
|
self.approvals = {}
|
|
964
1041
|
|
|
965
1042
|
# Store all args
|
|
@@ -1007,13 +1084,10 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1007
1084
|
if self.deployCP4D:
|
|
1008
1085
|
self.configCP4D()
|
|
1009
1086
|
|
|
1010
|
-
#
|
|
1011
|
-
entitlementFileBaseName = path.basename(self.slsLicenseFileLocal)
|
|
1012
|
-
self.setParam("sls_entitlement_file", f"/workspace/entitlement/{entitlementFileBaseName}")
|
|
1013
|
-
|
|
1014
|
-
# 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
|
|
1015
1088
|
self.additionalConfigs()
|
|
1016
1089
|
self.podTemplates()
|
|
1090
|
+
self.slsLicenseFile()
|
|
1017
1091
|
self.manualCertificates()
|
|
1018
1092
|
|
|
1019
1093
|
# Show a summary of the installation configuration
|
|
@@ -1065,7 +1139,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1065
1139
|
prepareInstallSecrets(
|
|
1066
1140
|
dynClient=self.dynamicClient,
|
|
1067
1141
|
instanceId=self.getParam("mas_instance_id"),
|
|
1068
|
-
slsLicenseFile=self.
|
|
1142
|
+
slsLicenseFile=self.slsLicenseFileSecret,
|
|
1069
1143
|
additionalConfigs=self.additionalConfigsSecret,
|
|
1070
1144
|
podTemplates=self.podTemplatesSecret,
|
|
1071
1145
|
certs=self.certsSecret
|
mas/cli/install/argBuilder.py
CHANGED
|
@@ -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
|
mas/cli/install/argParser.py
CHANGED
|
@@ -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
|
# -----------------------------------------------------------------------------
|
mas/cli/install/catalogs.py
CHANGED
|
@@ -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",
|
mas/cli/install/params.py
CHANGED
|
@@ -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
|
mas/cli/install/summarizer.py
CHANGED
|
@@ -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")
|