mas-cli 12.0.0__py3-none-any.whl → 12.27.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/aiservice/install/__init__.py +11 -0
- mas/cli/aiservice/install/app.py +810 -0
- mas/cli/aiservice/install/argBuilder.py +232 -0
- mas/cli/aiservice/install/argParser.py +742 -0
- mas/cli/aiservice/install/params.py +120 -0
- mas/cli/aiservice/install/summarizer.py +193 -0
- mas/cli/cli.py +36 -9
- mas/cli/gencfg.py +23 -0
- mas/cli/install/app.py +295 -85
- mas/cli/install/argBuilder.py +92 -14
- mas/cli/install/argParser.py +200 -147
- mas/cli/install/catalogs.py +11 -6
- mas/cli/install/params.py +32 -6
- mas/cli/install/settings/additionalConfigs.py +18 -1
- mas/cli/install/settings/db2Settings.py +121 -72
- mas/cli/install/settings/kafkaSettings.py +2 -2
- mas/cli/install/settings/manageSettings.py +154 -159
- mas/cli/install/settings/mongodbSettings.py +1 -1
- mas/cli/install/settings/turbonomicSettings.py +1 -3
- mas/cli/install/summarizer.py +85 -68
- mas/cli/templates/facilities-configs.yml.j2 +25 -0
- mas/cli/templates/ibm-mas-tekton.yaml +16683 -7870
- mas/cli/update/app.py +43 -9
- mas/cli/upgrade/app.py +52 -20
- mas/cli/upgrade/argParser.py +7 -0
- mas/cli/upgrade/settings/__init__.py +19 -0
- mas/cli/validators.py +13 -0
- {mas_cli-12.0.0.data → mas_cli-12.27.0.data}/scripts/mas-cli +5 -1
- {mas_cli-12.0.0.dist-info → mas_cli-12.27.0.dist-info}/METADATA +12 -3
- {mas_cli-12.0.0.dist-info → mas_cli-12.27.0.dist-info}/RECORD +33 -25
- {mas_cli-12.0.0.dist-info → mas_cli-12.27.0.dist-info}/WHEEL +1 -1
- {mas_cli-12.0.0.dist-info → mas_cli-12.27.0.dist-info}/top_level.txt +0 -0
mas/cli/update/app.py
CHANGED
|
@@ -32,7 +32,7 @@ class UpdateApp(BaseApp):
|
|
|
32
32
|
|
|
33
33
|
def update(self, argv):
|
|
34
34
|
"""
|
|
35
|
-
|
|
35
|
+
Update MAS instance
|
|
36
36
|
"""
|
|
37
37
|
self.args = updateArgParser.parse_args(args=argv)
|
|
38
38
|
self.noConfirm = self.args.no_confirm
|
|
@@ -90,6 +90,9 @@ class UpdateApp(BaseApp):
|
|
|
90
90
|
if self.dynamicClient is None:
|
|
91
91
|
self.fatalError("The Kubernetes dynamic Client is not available. See log file for details")
|
|
92
92
|
|
|
93
|
+
# Perform a check whether the cluster is set up for airgap install, this will trigger an early failure if the cluster is using the now
|
|
94
|
+
# deprecated MaximoApplicationSuite ImageContentSourcePolicy instead of the new ImageDigestMirrorSet
|
|
95
|
+
self.isAirgap()
|
|
93
96
|
self.reviewCurrentCatalog()
|
|
94
97
|
self.reviewMASInstance()
|
|
95
98
|
|
|
@@ -109,6 +112,13 @@ class UpdateApp(BaseApp):
|
|
|
109
112
|
else:
|
|
110
113
|
h.stop_and_persist(symbol=self.successIcon, text="IBM Watson Discovery is not installed")
|
|
111
114
|
|
|
115
|
+
with Halo(text='Checking for IBM Watson Openscale', spinner=self.spinner) as h:
|
|
116
|
+
if self.isWatsonOpenscaleInstalled():
|
|
117
|
+
h.stop_and_persist(symbol=self.failureIcon, text="IBM Watson Openscale is installed")
|
|
118
|
+
self.fatalError("Watson Openscale is currently installed in the instance of Cloud Pak for Data that is managed by the MAS CLI (in the ibm-cpd namespace), this is no longer supported and the update can not proceed as a result. Please contact IBM support for assistance")
|
|
119
|
+
else:
|
|
120
|
+
h.stop_and_persist(symbol=self.successIcon, text="IBM Watson Openscale is not installed")
|
|
121
|
+
|
|
112
122
|
with Halo(text='Checking for IBM Certificate-Manager', spinner=self.spinner) as h:
|
|
113
123
|
if self.isIBMCertManagerInstalled():
|
|
114
124
|
h.stop_and_persist(symbol=self.successIcon, text="IBM Certificate-Manager will be replaced by Red Hat Certificate-Manager")
|
|
@@ -232,13 +242,13 @@ class UpdateApp(BaseApp):
|
|
|
232
242
|
self.printH1("Select IBM Maximo Operator Catalog Version")
|
|
233
243
|
self.printDescription([
|
|
234
244
|
"Select MAS Catalog",
|
|
235
|
-
" 1)
|
|
236
|
-
" 2)
|
|
237
|
-
" 3)
|
|
245
|
+
" 1) Jun 05 2025 Update (MAS 9.1.0, 9.0.12, 8.11.21, & 8.10.26)",
|
|
246
|
+
" 2) May 01 2025 Update (MAS 9.0.11, 8.11.22, & 8.10.25)",
|
|
247
|
+
" 3) Apr 03 2025 Update (MAS 9.0.10, 8.11.21, & 8.10.24)",
|
|
238
248
|
])
|
|
239
249
|
|
|
240
250
|
catalogOptions = [
|
|
241
|
-
"v9-
|
|
251
|
+
"v9-250624-amd64", "v9-250501-amd64", "v9-250403-amd64",
|
|
242
252
|
]
|
|
243
253
|
self.promptForListSelect("Select catalog version", catalogOptions, "mas_catalog_version", default=1)
|
|
244
254
|
|
|
@@ -257,6 +267,17 @@ class UpdateApp(BaseApp):
|
|
|
257
267
|
# Watson Discovery has never been installed on this cluster
|
|
258
268
|
return False
|
|
259
269
|
|
|
270
|
+
def isWatsonOpenscaleInstalled(self) -> bool:
|
|
271
|
+
try:
|
|
272
|
+
wosAPI = self.dynamicClient.resources.get(api_version="wos.cpd.ibm.com/v1", kind="WOService")
|
|
273
|
+
wos = wosAPI.get(namespace="ibm-cpd").to_dict()['items']
|
|
274
|
+
if len(wos) > 0:
|
|
275
|
+
return True
|
|
276
|
+
return False
|
|
277
|
+
except (ResourceNotFoundError, NotFoundError):
|
|
278
|
+
# Watson Openscale has never been installed on this cluster
|
|
279
|
+
return False
|
|
280
|
+
|
|
260
281
|
def isIBMCertManagerInstalled(self) -> bool:
|
|
261
282
|
"""
|
|
262
283
|
Check whether the deprecated IBM Certificate-Manager is installed, if it is then we will
|
|
@@ -329,14 +350,20 @@ class UpdateApp(BaseApp):
|
|
|
329
350
|
# the case bundles in there anymore
|
|
330
351
|
# Longer term we will centralise this information inside the mas-devops python collection,
|
|
331
352
|
# where it can be made available to both the ansible collection and this python package.
|
|
332
|
-
defaultMongoVersion = "
|
|
353
|
+
defaultMongoVersion = "7.0.12"
|
|
333
354
|
mongoVersions = {
|
|
334
355
|
"v9-240625-amd64": "6.0.12",
|
|
335
356
|
"v9-240730-amd64": "6.0.12",
|
|
336
357
|
"v9-240827-amd64": "6.0.12",
|
|
337
358
|
"v9-241003-amd64": "6.0.12",
|
|
338
359
|
"v9-241107-amd64": "7.0.12",
|
|
339
|
-
"v9-241205-amd64": "7.0.12"
|
|
360
|
+
"v9-241205-amd64": "7.0.12",
|
|
361
|
+
"v9-250109-amd64": "7.0.12",
|
|
362
|
+
"v9-250206-amd64": "7.0.12",
|
|
363
|
+
"v9-250306-amd64": "7.0.12",
|
|
364
|
+
"v9-250403-amd64": "7.0.12",
|
|
365
|
+
"v9-250501-amd64": "7.0.12",
|
|
366
|
+
"v9-250624-amd64": "7.0.12",
|
|
340
367
|
}
|
|
341
368
|
catalogVersion = self.getParam('mas_catalog_version')
|
|
342
369
|
if catalogVersion in mongoVersions:
|
|
@@ -350,6 +377,7 @@ class UpdateApp(BaseApp):
|
|
|
350
377
|
currentMongoVersionMajor = currentMongoVersion.split(".")[0]
|
|
351
378
|
|
|
352
379
|
if targetMongoVersionMajor > currentMongoVersionMajor:
|
|
380
|
+
self.setParam("mongodb_action", "install")
|
|
353
381
|
# Let users know that Mongo will be upgraded if existing MongoDb major.minor version
|
|
354
382
|
# is lower than the target major version
|
|
355
383
|
# We don't show this message for normal updates, e.g. 5.0.1 to 5.0.2
|
|
@@ -374,7 +402,7 @@ class UpdateApp(BaseApp):
|
|
|
374
402
|
self.showMongoDependencyUpdateNotice(currentMongoVersion, targetMongoVersion)
|
|
375
403
|
self.fatalError(f"Existing MongoDB Community Edition installation at version {currentMongoVersion} cannot be downgraded to version {targetMongoVersion}")
|
|
376
404
|
else:
|
|
377
|
-
h.stop_and_persist(symbol=self.successIcon, text=f"MongoDb CE is
|
|
405
|
+
h.stop_and_persist(symbol=self.successIcon, text=f"MongoDb CE is already installed at version {targetMongoVersion}")
|
|
378
406
|
else:
|
|
379
407
|
# There's no MongoDb instance installed in the cluster, so nothing to do
|
|
380
408
|
h.stop_and_persist(symbol=self.successIcon, text="No MongoDb CE instances found")
|
|
@@ -465,7 +493,13 @@ class UpdateApp(BaseApp):
|
|
|
465
493
|
"v9-240827-amd64": "4.8.0",
|
|
466
494
|
"v9-241003-amd64": "4.8.0",
|
|
467
495
|
"v9-241107-amd64": "4.8.0",
|
|
468
|
-
"v9-241205-amd64": "5.0.0"
|
|
496
|
+
"v9-241205-amd64": "5.0.0",
|
|
497
|
+
"v9-250109-amd64": "5.0.0",
|
|
498
|
+
"v9-250206-amd64": "5.0.0",
|
|
499
|
+
"v9-250306-amd64": "5.0.0",
|
|
500
|
+
"v9-250403-amd64": "5.0.0",
|
|
501
|
+
"v9-250501-amd64": "5.0.0",
|
|
502
|
+
"v9-250624-amd64": "5.1.3",
|
|
469
503
|
}
|
|
470
504
|
|
|
471
505
|
with Halo(text='Checking for IBM Cloud Pak for Data', spinner=self.spinner) as h:
|
mas/cli/upgrade/app.py
CHANGED
|
@@ -20,15 +20,16 @@ from halo import Halo
|
|
|
20
20
|
from ..cli import BaseApp
|
|
21
21
|
from ..validators import InstanceIDValidator
|
|
22
22
|
from .argParser import upgradeArgParser
|
|
23
|
+
from .settings import UpgradeSettingsMixin
|
|
23
24
|
|
|
24
25
|
from mas.devops.ocp import createNamespace
|
|
25
|
-
from mas.devops.mas import listMasInstances,
|
|
26
|
+
from mas.devops.mas import listMasInstances, getMasChannel, getWorkspaceId, verifyAppInstance
|
|
26
27
|
from mas.devops.tekton import installOpenShiftPipelines, updateTektonDefinitions, launchUpgradePipeline
|
|
27
28
|
|
|
28
29
|
logger = logging.getLogger(__name__)
|
|
29
30
|
|
|
30
31
|
|
|
31
|
-
class UpgradeApp(BaseApp):
|
|
32
|
+
class UpgradeApp(BaseApp, UpgradeSettingsMixin):
|
|
32
33
|
def upgrade(self, argv):
|
|
33
34
|
"""
|
|
34
35
|
Upgrade MAS instance
|
|
@@ -38,7 +39,7 @@ class UpgradeApp(BaseApp):
|
|
|
38
39
|
self.noConfirm = args.no_confirm
|
|
39
40
|
self.skipPreCheck = args.skip_pre_check
|
|
40
41
|
self.licenseAccepted = args.accept_license
|
|
41
|
-
|
|
42
|
+
self.devMode = args.dev_mode
|
|
42
43
|
|
|
43
44
|
if instanceId is None:
|
|
44
45
|
self.printH1("Set Target OpenShift Cluster")
|
|
@@ -46,6 +47,8 @@ class UpgradeApp(BaseApp):
|
|
|
46
47
|
self.connect()
|
|
47
48
|
else:
|
|
48
49
|
logger.debug("MAS instance ID is set, so we assume already connected to the desired OCP")
|
|
50
|
+
# Need to lookup target architecture because configDb2 will try to access self.architecture
|
|
51
|
+
self.lookupTargetArchitecture()
|
|
49
52
|
|
|
50
53
|
if self.dynamicClient is None:
|
|
51
54
|
print_formatted_text(HTML("<Red>Error: The Kubernetes dynamic Client is not available. See log file for details</Red>"))
|
|
@@ -69,24 +72,28 @@ class UpgradeApp(BaseApp):
|
|
|
69
72
|
suiteCompleter = WordCompleter(suiteOptions)
|
|
70
73
|
print()
|
|
71
74
|
instanceId = prompt(HTML('<Yellow>Enter MAS instance ID: </Yellow>'), completer=suiteCompleter, validator=InstanceIDValidator(), validate_while_typing=False)
|
|
72
|
-
else:
|
|
73
|
-
# Non-interactive mode
|
|
74
|
-
if not verifyMasInstance(self.dynamicClient, instanceId):
|
|
75
|
-
print_formatted_text(HTML(f"<Red>Error: MAS instance {instanceId} not found on this cluster</Red>"))
|
|
76
|
-
sys.exit(1)
|
|
77
|
-
|
|
78
|
-
current_mas_channel = getMasChannel(self.dynamicClient, instanceId)
|
|
79
|
-
|
|
80
|
-
if current_mas_channel not in self.upgrade_path:
|
|
81
|
-
self.fatalError(f"No upgrade available, {instanceId} is are already on the latest release {current_mas_channel}")
|
|
82
75
|
|
|
83
|
-
|
|
76
|
+
currentChannel = getMasChannel(self.dynamicClient, instanceId)
|
|
77
|
+
if currentChannel is not None:
|
|
78
|
+
if self.devMode:
|
|
79
|
+
# This is mainly used for the scenario where Manage Foundation would be installed, because core-upgrade does not use the value of nextChannel,
|
|
80
|
+
# it uses a compatibility_matrix object in ansible-devops to determine the next channel, so nextChannel is only informative for core upgrade purposes
|
|
81
|
+
nextChannel = prompt(HTML('<Yellow>Custom channel</Yellow> '))
|
|
82
|
+
else:
|
|
83
|
+
if currentChannel not in self.upgrade_path:
|
|
84
|
+
self.fatalError(f"No upgrade available, {instanceId} is are already on the latest release {currentChannel}")
|
|
85
|
+
nextChannel = self.upgrade_path[currentChannel]
|
|
86
|
+
else:
|
|
87
|
+
# We still allow the upgrade to proceed even though we can't detect the MAS instance. The upgrade may be being
|
|
88
|
+
# queued up to run after install for instance
|
|
89
|
+
currentChannel = "Unknown"
|
|
90
|
+
nextChannel = "Unknown"
|
|
84
91
|
|
|
85
|
-
if not self.licenseAccepted:
|
|
92
|
+
if not self.licenseAccepted and not self.devMode:
|
|
86
93
|
self.printH1("License Terms")
|
|
87
94
|
self.printDescription([
|
|
88
95
|
"To continue with the upgrade, you must accept the license terms:",
|
|
89
|
-
self.licenses[
|
|
96
|
+
self.licenses[nextChannel]
|
|
90
97
|
])
|
|
91
98
|
|
|
92
99
|
if self.noConfirm:
|
|
@@ -95,15 +102,40 @@ class UpgradeApp(BaseApp):
|
|
|
95
102
|
if not self.yesOrNo("Do you accept the license terms"):
|
|
96
103
|
exit(1)
|
|
97
104
|
|
|
105
|
+
# The only scenario where Manage Foundation needs to be installed during an upgrade is from 9.0.x to 9.1.x (if Manage was not already installed in 9.0.x).
|
|
106
|
+
self.setParam("should_install_manage_foundation", "false")
|
|
107
|
+
if nextChannel.startswith("9.1") and not verifyAppInstance(self.dynamicClient, instanceId, "manage"):
|
|
108
|
+
self.manageAppName = "Manage foundation"
|
|
109
|
+
self.showAdvancedOptions = False
|
|
110
|
+
self.installIoT = False
|
|
111
|
+
self.installFacilities = False
|
|
112
|
+
self.installManage = True
|
|
113
|
+
self.isManageFoundation = True
|
|
114
|
+
self.printDescription([f"{self.manageAppName} installs the following capabilities: User, Security groups, Application configurator and Mobile configurator."])
|
|
115
|
+
self.printH1("Configure IBM Container Registry")
|
|
116
|
+
self.promptForString("IBM entitlement key", "ibm_entitlement_key", isPassword=True)
|
|
117
|
+
if self.devMode:
|
|
118
|
+
self.promptForString("Artifactory username", "artifactory_username")
|
|
119
|
+
self.promptForString("Artifactory token", "artifactory_token", isPassword=True)
|
|
120
|
+
self.setParam("should_install_manage_foundation", "true")
|
|
121
|
+
self.setParam("is_full_manage", "false")
|
|
122
|
+
self.setParam("mas_appws_components", "")
|
|
123
|
+
self.setParam("mas_app_settings_aio_flag", "false")
|
|
124
|
+
self.setParam("mas_app_channel_manage", nextChannel)
|
|
125
|
+
self.setParam("mas_workspace_id", getWorkspaceId(self.dynamicClient, instanceId))
|
|
126
|
+
# It has been decided that we don't need to ask for any specific Manage Settings
|
|
127
|
+
# self.manageSettings()
|
|
128
|
+
self.configDb2(silentMode=True)
|
|
129
|
+
|
|
98
130
|
self.printH1("Review Settings")
|
|
99
131
|
print_formatted_text(HTML(f"<LightSlateGrey>Instance ID ..................... {instanceId}</LightSlateGrey>"))
|
|
100
|
-
print_formatted_text(HTML(f"<LightSlateGrey>Current MAS Channel ............. {
|
|
101
|
-
print_formatted_text(HTML(f"<LightSlateGrey>Next MAS Channel ................ {
|
|
132
|
+
print_formatted_text(HTML(f"<LightSlateGrey>Current MAS Channel ............. {currentChannel}</LightSlateGrey>"))
|
|
133
|
+
print_formatted_text(HTML(f"<LightSlateGrey>Next MAS Channel ................ {nextChannel}</LightSlateGrey>"))
|
|
102
134
|
print_formatted_text(HTML(f"<LightSlateGrey>Skip Pre-Upgrade Checks ......... {self.skipPreCheck}</LightSlateGrey>"))
|
|
103
135
|
|
|
104
136
|
if not self.noConfirm:
|
|
105
137
|
print()
|
|
106
|
-
continueWithUpgrade = self.yesOrNo("Proceed with these settings
|
|
138
|
+
continueWithUpgrade = self.yesOrNo("Proceed with these settings")
|
|
107
139
|
|
|
108
140
|
if self.noConfirm or continueWithUpgrade:
|
|
109
141
|
self.createTektonFileWithDigest()
|
|
@@ -124,7 +156,7 @@ class UpgradeApp(BaseApp):
|
|
|
124
156
|
h.stop_and_persist(symbol=self.successIcon, text=f"Latest Tekton definitions are installed (v{self.version})")
|
|
125
157
|
|
|
126
158
|
with Halo(text='Submitting PipelineRun for {instanceId} upgrade', spinner=self.spinner) as h:
|
|
127
|
-
pipelineURL = launchUpgradePipeline(self.dynamicClient, instanceId, self.skipPreCheck)
|
|
159
|
+
pipelineURL = launchUpgradePipeline(self.dynamicClient, instanceId, self.skipPreCheck, params=self.params)
|
|
128
160
|
if pipelineURL is not None:
|
|
129
161
|
h.stop_and_persist(symbol=self.successIcon, text=f"PipelineRun for {instanceId} upgrade submitted")
|
|
130
162
|
print_formatted_text(HTML(f"\nView progress:\n <Cyan><u>{pipelineURL}</u></Cyan>\n"))
|
mas/cli/upgrade/argParser.py
CHANGED
|
@@ -53,6 +53,13 @@ otherArgGroup.add_argument(
|
|
|
53
53
|
default=False,
|
|
54
54
|
help="Accept all license terms without prompting"
|
|
55
55
|
)
|
|
56
|
+
otherArgGroup.add_argument(
|
|
57
|
+
"--dev-mode",
|
|
58
|
+
required=False,
|
|
59
|
+
action="store_true",
|
|
60
|
+
default=False,
|
|
61
|
+
help="Configure upgrade for development mode",
|
|
62
|
+
)
|
|
56
63
|
otherArgGroup.add_argument(
|
|
57
64
|
'-h', "--help",
|
|
58
65
|
action='help',
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# *****************************************************************************
|
|
2
|
+
# Copyright (c) 2025 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 ...install.settings.db2Settings import Db2SettingsMixin
|
|
12
|
+
from ...install.settings.manageSettings import ManageSettingsMixin
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class UpgradeSettingsMixin(Db2SettingsMixin, ManageSettingsMixin):
|
|
16
|
+
"""
|
|
17
|
+
This class collects all the Mixins providing interactive prompts for mas-upgrade
|
|
18
|
+
"""
|
|
19
|
+
pass
|
mas/cli/validators.py
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
from re import match
|
|
12
12
|
from os import path
|
|
13
|
+
from json import loads, JSONDecodeError
|
|
13
14
|
|
|
14
15
|
# Use of the openshift client rather than the kubernetes client allows us access to "apply"
|
|
15
16
|
from openshift import dynamic
|
|
@@ -136,3 +137,15 @@ class OptimizerInstallPlanValidator(Validator):
|
|
|
136
137
|
response = document.text
|
|
137
138
|
if response not in ["full", "limited"]:
|
|
138
139
|
raise ValidationError(message='Enter a valid response: full, limited', cursor_position=len(response))
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class JsonValidator(Validator):
|
|
143
|
+
def validate(self, document):
|
|
144
|
+
"""
|
|
145
|
+
Validate that a response is a valid JSON
|
|
146
|
+
"""
|
|
147
|
+
inputJson = document.text
|
|
148
|
+
try:
|
|
149
|
+
loads(inputJson)
|
|
150
|
+
except JSONDecodeError:
|
|
151
|
+
raise (ValidationError(message='Enter a valid JSON', cursor_position=len(inputJson)))
|
|
@@ -15,6 +15,7 @@ from sys import argv
|
|
|
15
15
|
|
|
16
16
|
from mas.cli import __version__ as VERSION
|
|
17
17
|
from mas.cli.install.app import InstallApp
|
|
18
|
+
from mas.cli.aiservice.install.app import AiServiceInstallApp
|
|
18
19
|
from mas.cli.update.app import UpdateApp
|
|
19
20
|
from mas.cli.upgrade.app import UpgradeApp
|
|
20
21
|
from mas.cli.uninstall.app import UninstallApp
|
|
@@ -54,6 +55,9 @@ if __name__ == '__main__':
|
|
|
54
55
|
if function == "install":
|
|
55
56
|
app = InstallApp()
|
|
56
57
|
app.install(argv[2:])
|
|
58
|
+
elif function == "aiservice-install":
|
|
59
|
+
app = AiServiceInstallApp()
|
|
60
|
+
app.install(argv[2:])
|
|
57
61
|
elif function == "uninstall":
|
|
58
62
|
app = UninstallApp()
|
|
59
63
|
app.uninstall(argv[2:])
|
|
@@ -74,7 +78,7 @@ if __name__ == '__main__':
|
|
|
74
78
|
except KeyboardInterrupt:
|
|
75
79
|
pass
|
|
76
80
|
except ApiException as e:
|
|
77
|
-
app.fatalError(message=f"
|
|
81
|
+
app.fatalError(message=f"[{e.status}:{e.reason}] {e.summary()}")
|
|
78
82
|
except MaxRetryError as e:
|
|
79
83
|
app.fatalError(message="Unable to connect to API server", exception=e)
|
|
80
84
|
except TemplateNotFound as e:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: mas-cli
|
|
3
|
-
Version: 12.
|
|
3
|
+
Version: 12.27.0
|
|
4
4
|
Summary: Python Admin CLI for Maximo Application Suite
|
|
5
5
|
Home-page: https://github.com/ibm-mas/cli
|
|
6
6
|
Author: David Parker
|
|
@@ -17,7 +17,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
17
17
|
Classifier: Topic :: Communications
|
|
18
18
|
Classifier: Topic :: Internet
|
|
19
19
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
-
Requires-Dist: mas-devops>=
|
|
20
|
+
Requires-Dist: mas-devops>=2.0.0
|
|
21
21
|
Requires-Dist: halo
|
|
22
22
|
Requires-Dist: prompt_toolkit
|
|
23
23
|
Requires-Dist: openshift
|
|
@@ -28,6 +28,15 @@ Requires-Dist: build; extra == "dev"
|
|
|
28
28
|
Requires-Dist: flake8; extra == "dev"
|
|
29
29
|
Requires-Dist: pytest; extra == "dev"
|
|
30
30
|
Requires-Dist: pyinstaller; extra == "dev"
|
|
31
|
+
Dynamic: author
|
|
32
|
+
Dynamic: author-email
|
|
33
|
+
Dynamic: classifier
|
|
34
|
+
Dynamic: description
|
|
35
|
+
Dynamic: home-page
|
|
36
|
+
Dynamic: license
|
|
37
|
+
Dynamic: provides-extra
|
|
38
|
+
Dynamic: requires-dist
|
|
39
|
+
Dynamic: summary
|
|
31
40
|
|
|
32
41
|
mas.devops
|
|
33
42
|
----------
|
|
@@ -1,23 +1,30 @@
|
|
|
1
|
-
mas/cli/__init__.py,sha256=
|
|
2
|
-
mas/cli/cli.py,sha256=
|
|
1
|
+
mas/cli/__init__.py,sha256=HvgJWgWdFR6efb6Tn2a7S2Cx2HzeP4bVJ43Zycq8Zx8,527
|
|
2
|
+
mas/cli/cli.py,sha256=ypIdN9oKMO0JhdOEh2PwfT-YQVWQ2qU5cOp8K7anTmU,18933
|
|
3
3
|
mas/cli/displayMixins.py,sha256=e3lAx1DIOwsriDcNI0M2JyP1jeLOZKvId6sPrvWLyqs,5984
|
|
4
|
-
mas/cli/gencfg.py,sha256=
|
|
5
|
-
mas/cli/validators.py,sha256=
|
|
4
|
+
mas/cli/gencfg.py,sha256=kgbYihOcqGADK8XnrfcEoBawaY1qSGKuVNW1unACOnU,4433
|
|
5
|
+
mas/cli/validators.py,sha256=2mLqBfoFU4D3A84ma9namjpnPKR3a0XySSGXa_b7pWg,5495
|
|
6
|
+
mas/cli/aiservice/install/__init__.py,sha256=Af-TjB2oIy3bM-Rt3YNeJ_2ndsZZU7azqFkT5um7XQY,515
|
|
7
|
+
mas/cli/aiservice/install/app.py,sha256=zK9K4wx4kADrCQMeIVaDWDZ46_8h3o1-_hbEDH6rZt0,41423
|
|
8
|
+
mas/cli/aiservice/install/argBuilder.py,sha256=gavbxaLPfYVXwjjTs6o-dpP-_0YrL1Kg8XIxAjWT5oU,15584
|
|
9
|
+
mas/cli/aiservice/install/argParser.py,sha256=ilwn58CoZxUs54guscEiFD-loTB2iUgL4w18kz3MqA4,21441
|
|
10
|
+
mas/cli/aiservice/install/params.py,sha256=923Q-T-3VJqr7QZCvFUVu8syKVnMfy604al7xk9UtNY,3491
|
|
11
|
+
mas/cli/aiservice/install/summarizer.py,sha256=E7bxTnOz6wSgce_KBq2AmQSLpWeMwSjWhED-2gEtTnY,11405
|
|
6
12
|
mas/cli/install/__init__.py,sha256=v0WJlcdrSycWGT5ofFjRDV3jTZ8AqVCz1AGxok4Khtc,508
|
|
7
|
-
mas/cli/install/app.py,sha256=
|
|
8
|
-
mas/cli/install/argBuilder.py,sha256=
|
|
9
|
-
mas/cli/install/argParser.py,sha256=
|
|
10
|
-
mas/cli/install/catalogs.py,sha256=
|
|
11
|
-
mas/cli/install/params.py,sha256=
|
|
12
|
-
mas/cli/install/summarizer.py,sha256=
|
|
13
|
+
mas/cli/install/app.py,sha256=Op2reTxi9okJF0xUM04InADWtEg-d20mhc3sNY7zHtI,69019
|
|
14
|
+
mas/cli/install/argBuilder.py,sha256=v_rnUYnmY4q4xw8HQJ2L07NtA84ZZcJLpL9jVvR-Kb4,28380
|
|
15
|
+
mas/cli/install/argParser.py,sha256=PjqadJxQKaIryld3YuwmN_VuSoHJBILwLRWbnCfOtlM,35161
|
|
16
|
+
mas/cli/install/catalogs.py,sha256=p9WFQSA6vcQNiOrlAGCmr5e5IwHJTL0D9QU-e1wco6E,804
|
|
17
|
+
mas/cli/install/params.py,sha256=vzaqivQ7odTxI45wZmrelA73cnaPu4fomBpDNwhYp40,5650
|
|
18
|
+
mas/cli/install/summarizer.py,sha256=7uBwOWWT9Zxhwbl3chZvC8a3n_qt8IVUU-6ZkGfIJAc,22045
|
|
13
19
|
mas/cli/install/settings/__init__.py,sha256=RdyBSh-rM0wkuvILVzJ1gxjOtLuQ1mF6QbEL0MyiKIY,1034
|
|
14
|
-
mas/cli/install/settings/additionalConfigs.py,sha256=
|
|
15
|
-
mas/cli/install/settings/db2Settings.py,sha256=
|
|
16
|
-
mas/cli/install/settings/kafkaSettings.py,sha256=
|
|
17
|
-
mas/cli/install/settings/manageSettings.py,sha256=
|
|
18
|
-
mas/cli/install/settings/mongodbSettings.py,sha256=
|
|
19
|
-
mas/cli/install/settings/turbonomicSettings.py,sha256=
|
|
20
|
-
mas/cli/templates/
|
|
20
|
+
mas/cli/install/settings/additionalConfigs.py,sha256=hFN7OIiPmmAoo8h_5JiMLtW9r30zK1mMKuPqPpFf1mc,10187
|
|
21
|
+
mas/cli/install/settings/db2Settings.py,sha256=zFw1wiZTGFLdUsQUKY0l5dWne4ZXQhKuksSO0Q_86AM,16825
|
|
22
|
+
mas/cli/install/settings/kafkaSettings.py,sha256=r1uK-IApqB9IQiSNt_8sP0wa4FPJcXU_qnadhElEOuI,7241
|
|
23
|
+
mas/cli/install/settings/manageSettings.py,sha256=TZIdAY_xUc751i-Vs6cXhVI3ul4MCnLdtpP9khLZpeI,16109
|
|
24
|
+
mas/cli/install/settings/mongodbSettings.py,sha256=aZdQHpeMwLVznrJWAkJsZu2Ok9t4Dkra2RGa_uKJHaY,2604
|
|
25
|
+
mas/cli/install/settings/turbonomicSettings.py,sha256=ul4eWf53b1NCzJTFsEPX6DWM23YUlWILYBygplqXYlU,1631
|
|
26
|
+
mas/cli/templates/facilities-configs.yml.j2,sha256=Er4UwxUl1Y3rtjIPMExVM8EXNcbesMusgLcRV050B1s,774
|
|
27
|
+
mas/cli/templates/ibm-mas-tekton.yaml,sha256=h4lQ8KzuAibP2mjQ3uClXqw7i4SBq-Hu4nV8viECDfk,1092620
|
|
21
28
|
mas/cli/templates/jdbccfg.yml.j2,sha256=cANbwkUkKEPQp-P3_BB_Llbt94457Ciagah2hOdySIM,1644
|
|
22
29
|
mas/cli/templates/suite_mongocfg.yml.j2,sha256=WrgJUfGyvfaRIHjY5VR_zLZ5irTpV5khKNq76ejIxKU,1606
|
|
23
30
|
mas/cli/templates/pod-templates/best-effort/ibm-data-dictionary-assetdatadictionary.yml,sha256=8VG_FDFcEjWNaAOZTcS58Pe0tWOXC10SJLloNqzEMC8,757
|
|
@@ -94,13 +101,14 @@ mas/cli/uninstall/__init__.py,sha256=v0WJlcdrSycWGT5ofFjRDV3jTZ8AqVCz1AGxok4Khtc
|
|
|
94
101
|
mas/cli/uninstall/app.py,sha256=uPJy3z-1Yt66MSFdZz1Qh8MjA97ZrQmjSgTx-Gqua9I,10047
|
|
95
102
|
mas/cli/uninstall/argParser.py,sha256=VVG4myUvFOtg98L6HAzpgGg7s5c-vub_UMZPGuNQko4,3452
|
|
96
103
|
mas/cli/update/__init__.py,sha256=v0WJlcdrSycWGT5ofFjRDV3jTZ8AqVCz1AGxok4Khtc,508
|
|
97
|
-
mas/cli/update/app.py,sha256=
|
|
104
|
+
mas/cli/update/app.py,sha256=tp8bGy-vJMch1HOFgGNlntqKkYD1Tyozjq2Kx_FH7Z8,39265
|
|
98
105
|
mas/cli/update/argParser.py,sha256=oOIXzB_rsI2p3og_5X5SFt_g7LURyEdLxZeiGCKq1nU,4711
|
|
99
106
|
mas/cli/upgrade/__init__.py,sha256=v0WJlcdrSycWGT5ofFjRDV3jTZ8AqVCz1AGxok4Khtc,508
|
|
100
|
-
mas/cli/upgrade/app.py,sha256=
|
|
101
|
-
mas/cli/upgrade/argParser.py,sha256=
|
|
102
|
-
|
|
103
|
-
mas_cli-12.
|
|
104
|
-
mas_cli-12.
|
|
105
|
-
mas_cli-12.
|
|
106
|
-
mas_cli-12.
|
|
107
|
+
mas/cli/upgrade/app.py,sha256=3Z7oVrQGJPrV5dZjXZuBGT78vODPDLXnHnfD27pxNDs,8926
|
|
108
|
+
mas/cli/upgrade/argParser.py,sha256=5JxAcbwKjFKCKnbucCxg7Xacdhjphb9nRORfsgB1h_0,2196
|
|
109
|
+
mas/cli/upgrade/settings/__init__.py,sha256=QI2CUsj-NXBU1qrPOsOk4MbeWnfNq0UOF3rYYc_1l2A,775
|
|
110
|
+
mas_cli-12.27.0.data/scripts/mas-cli,sha256=ijL4Ecg_2fRtdrQ8Mk28qsi6o3O6KRIAUM8BUry5cPs,3621
|
|
111
|
+
mas_cli-12.27.0.dist-info/METADATA,sha256=G_IO6Is5T8yJ9_vDZL81VaZ0_hAfEIpVWmpI3PXCRgw,2259
|
|
112
|
+
mas_cli-12.27.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
113
|
+
mas_cli-12.27.0.dist-info/top_level.txt,sha256=_Hlsp7pvMvyV14LFg-vk1hULq30j61EILnnxMFIhhc8,4
|
|
114
|
+
mas_cli-12.27.0.dist-info/RECORD,,
|
|
File without changes
|