mas-cli 13.19.0__py3-none-any.whl → 13.21.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 +1 -1
- mas/cli/install/app.py +2 -2
- mas/cli/install/argBuilder.py +3 -3
- mas/cli/install/argParser.py +3 -0
- mas/cli/install/catalogs.py +2 -2
- mas/cli/install/params.py +3 -3
- mas/cli/install/settings/db2Settings.py +50 -29
- mas/cli/templates/ibm-mas-tekton.yaml +1728 -164
- mas/cli/update/app.py +7 -5
- mas/cli/upgrade/app.py +41 -8
- mas/cli/upgrade/argParser.py +7 -0
- mas/cli/upgrade/settings/__init__.py +19 -0
- {mas_cli-13.19.0.dist-info → mas_cli-13.21.0.dist-info}/METADATA +1 -1
- {mas_cli-13.19.0.dist-info → mas_cli-13.21.0.dist-info}/RECORD +18 -17
- {mas_cli-13.19.0.dist-info → mas_cli-13.21.0.dist-info}/WHEEL +1 -1
- {mas_cli-13.19.0.data → mas_cli-13.21.0.data}/scripts/mas-cli +0 -0
- {mas_cli-13.19.0.dist-info → mas_cli-13.21.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.21.0"
|
|
121
121
|
self.h1count = 0
|
|
122
122
|
self.h2count = 0
|
|
123
123
|
|
mas/cli/install/app.py
CHANGED
|
@@ -626,6 +626,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
626
626
|
self.installManage = True
|
|
627
627
|
self.isManageFoundation = True
|
|
628
628
|
self.setParam("is_full_manage", "false")
|
|
629
|
+
self.setParam("mas_app_settings_aio_flag", "false")
|
|
629
630
|
self.manageAppName = "Manage foundation"
|
|
630
631
|
self.printDescription([f"{self.manageAppName} installs the following capabilities: User, Security groups, Application configurator and Mobile configurator."])
|
|
631
632
|
else:
|
|
@@ -634,8 +635,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
634
635
|
if self.installManage:
|
|
635
636
|
self.configAppChannel("manage")
|
|
636
637
|
|
|
637
|
-
|
|
638
|
-
if self.installIoT and self.installManage and self.getParam("mas_channel") != "8.10.x":
|
|
638
|
+
if self.installIoT and self.installManage:
|
|
639
639
|
self.installPredict = self.yesOrNo("Install Predict")
|
|
640
640
|
else:
|
|
641
641
|
self.installPredict = False
|
mas/cli/install/argBuilder.py
CHANGED
|
@@ -336,9 +336,9 @@ class installArgBuilderMixin():
|
|
|
336
336
|
# Kafka - Event Streams
|
|
337
337
|
# -----------------------------------------------------------------------------
|
|
338
338
|
if self.getParam('eventstreams_instance_name') != "":
|
|
339
|
-
command += f" --eventstreams-resource-group \"{self.getParam('
|
|
340
|
-
command += f" --eventstreams-instance-name \"{self.getParam('
|
|
341
|
-
command += f" --eventstreams-instance-location \"{self.getParam('
|
|
339
|
+
command += f" --eventstreams-resource-group \"{self.getParam('eventstreams_resourcegroup')}\""
|
|
340
|
+
command += f" --eventstreams-instance-name \"{self.getParam('eventstreams_name')}\""
|
|
341
|
+
command += f" --eventstreams-instance-location \"{self.getParam('eventstreams_location')}\"{newline}"
|
|
342
342
|
|
|
343
343
|
# COS
|
|
344
344
|
# -----------------------------------------------------------------------------
|
mas/cli/install/argParser.py
CHANGED
|
@@ -960,16 +960,19 @@ mskArgGroup.add_argument(
|
|
|
960
960
|
eventstreamsArgGroup = installArgParser.add_argument_group("Kafka - Event Streams")
|
|
961
961
|
eventstreamsArgGroup.add_argument(
|
|
962
962
|
"--eventstreams-resource-group",
|
|
963
|
+
dest="eventstreams_resourcegroup",
|
|
963
964
|
required=False,
|
|
964
965
|
help="Set IBM Cloud resource group to target the Event Streams instance provisioning"
|
|
965
966
|
)
|
|
966
967
|
eventstreamsArgGroup.add_argument(
|
|
967
968
|
"--eventstreams-instance-name",
|
|
969
|
+
dest="eventstreams_name",
|
|
968
970
|
required=False,
|
|
969
971
|
help="Set IBM Event Streams instance name"
|
|
970
972
|
)
|
|
971
973
|
eventstreamsArgGroup.add_argument(
|
|
972
974
|
"--eventstreams-instance-location",
|
|
975
|
+
dest="eventstreams_location",
|
|
973
976
|
required=False,
|
|
974
977
|
help="Set IBM Event Streams instance location"
|
|
975
978
|
)
|
mas/cli/install/catalogs.py
CHANGED
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
# *****************************************************************************
|
|
10
10
|
supportedCatalogs = {
|
|
11
11
|
"amd64": [
|
|
12
|
+
"v9-250501-amd64",
|
|
12
13
|
"v9-250403-amd64",
|
|
13
14
|
"v9-250306-amd64",
|
|
14
15
|
"v9-250206-amd64",
|
|
15
|
-
"v9-250109-amd64",
|
|
16
16
|
],
|
|
17
17
|
"s390x": [
|
|
18
|
+
"v9-250501-s390x",
|
|
18
19
|
"v9-250403-s390x",
|
|
19
20
|
"v9-250306-s390x",
|
|
20
21
|
"v9-250206-s390x",
|
|
21
|
-
"v9-250109-s390x",
|
|
22
22
|
],
|
|
23
23
|
}
|
mas/cli/install/params.py
CHANGED
|
@@ -114,9 +114,9 @@ optionalParams = [
|
|
|
114
114
|
"aws_msk_cidr_az3",
|
|
115
115
|
"aws_msk_egress_cidr",
|
|
116
116
|
"aws_msk_ingress_cidr",
|
|
117
|
-
"
|
|
118
|
-
"
|
|
119
|
-
"
|
|
117
|
+
"eventstreams_resourcegroup",
|
|
118
|
+
"eventstreams_name",
|
|
119
|
+
"eventstreams_location",
|
|
120
120
|
# COS
|
|
121
121
|
"cos_type",
|
|
122
122
|
"cos_resourcegroup",
|
|
@@ -13,21 +13,26 @@ from prompt_toolkit import print_formatted_text
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class Db2SettingsMixin():
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
# In silentMode, no prompts will show up for "happy path" DB2 configuration scenarios. Prompts will still show up when an input is absolutely required
|
|
17
|
+
# Settings under showAdvancedOptions are always prompted
|
|
18
|
+
def configDb2(self, silentMode=False) -> None:
|
|
19
|
+
if not silentMode:
|
|
20
|
+
self.printH1("Configure Databases")
|
|
18
21
|
# The channel used for Db2 used has not changed since the January 2024 catalog update
|
|
19
22
|
self.params["db2_channel"] = "v110509.0"
|
|
20
23
|
|
|
21
24
|
# If neither Iot or Manage is being installed, we have nothing to do
|
|
22
25
|
if not self.installIoT and not self.installManage:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
if not silentMode:
|
|
27
|
+
print_formatted_text("No applications have been selected that require a Db2 installation")
|
|
28
|
+
self.setParam("db2_action_system", "none")
|
|
29
|
+
self.setParam("db2_action_manage", "none")
|
|
26
30
|
return
|
|
27
31
|
|
|
28
32
|
# For now we are limiting users to bring your own database for Manage on s390x
|
|
29
33
|
# Eventually we will be able to remove this clause and allow the standard logic to work for both s390x and amd64
|
|
30
34
|
if self.architecture == "s390x" and self.installManage:
|
|
35
|
+
# silentMode does not apply for s390x because it requires interaction when selecting local config directory
|
|
31
36
|
self.printDescription([
|
|
32
37
|
"Installation of a Db2 instance using the IBM Db2 Universal Operator is not currently supported on s390x, please provide configuration details for the database you wish to use.",
|
|
33
38
|
])
|
|
@@ -51,21 +56,26 @@ class Db2SettingsMixin():
|
|
|
51
56
|
|
|
52
57
|
# Proceed as normal
|
|
53
58
|
# We know we are installing either IoT or Manage, and on amd64 target architecture
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
59
|
+
if not silentMode:
|
|
60
|
+
self.printDescription([
|
|
61
|
+
f"The installer can setup one or more IBM Db2 instances in your OpenShift cluster for the use of applications that require a JDBC datasource (IoT, {self.manageAppName}, Monitor, & Predict) or you may choose to configure MAS to use an existing database"
|
|
62
|
+
])
|
|
57
63
|
|
|
58
64
|
self.setDB2DefaultSettings()
|
|
59
65
|
|
|
60
66
|
instanceId = self.getParam('mas_instance_id')
|
|
61
67
|
# Do we need to set up an IoT database?
|
|
62
68
|
if self.installIoT:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
if not silentMode:
|
|
70
|
+
self.printH2("Database Configuration for Maximo IoT")
|
|
71
|
+
self.printDescription([
|
|
72
|
+
"Maximo IoT requires a shared system-scope Db2 instance because others application in the suite require access to the same database source",
|
|
73
|
+
" - Only IBM Db2 is supported for this database"
|
|
74
|
+
])
|
|
75
|
+
createSystemDb2UsingUniversalOperator = True
|
|
76
|
+
if not silentMode:
|
|
77
|
+
createSystemDb2UsingUniversalOperator = self.yesOrNo("Create system Db2 instance using the IBM Db2 Universal Operator")
|
|
78
|
+
if createSystemDb2UsingUniversalOperator:
|
|
69
79
|
self.setParam("db2_action_system", "install")
|
|
70
80
|
else:
|
|
71
81
|
self.setParam("db2_action_system", "byo")
|
|
@@ -85,28 +95,39 @@ class Db2SettingsMixin():
|
|
|
85
95
|
self.setParam("db2_action_system", "none")
|
|
86
96
|
|
|
87
97
|
if self.installManage:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
98
|
+
if not silentMode:
|
|
99
|
+
self.printH2(f"Database Configuration for Maximo {self.manageAppName}")
|
|
100
|
+
self.printDescription([
|
|
101
|
+
f"Maximo {self.manageAppName} can be configured to share the system Db2 instance or use it's own dedicated database:",
|
|
102
|
+
" - Use of a shared instance has a significant footprint reduction but is only recommended for development/test/demo installs",
|
|
103
|
+
" - In most production systems you will want to use a dedicated database",
|
|
104
|
+
" - IBM Db2, Oracle Database, & Microsoft SQL Server are all supported database options"
|
|
105
|
+
])
|
|
95
106
|
# Determine whether to use the system or a dedicated database
|
|
96
|
-
|
|
107
|
+
reuseSystemDb2 = False
|
|
108
|
+
if self.installIoT:
|
|
109
|
+
if not silentMode:
|
|
110
|
+
reuseSystemDb2 = self.yesOrNo(f"Re-use System Db2 instance for {self.manageAppName} application")
|
|
111
|
+
if reuseSystemDb2:
|
|
97
112
|
# We are going to bind Manage to the system database, which has already been set up in the previous step
|
|
98
113
|
self.setParam("mas_appws_bindings_jdbc_manage", "system")
|
|
99
114
|
self.setParam("db2_action_manage", "none")
|
|
100
115
|
else:
|
|
101
116
|
self.setParam("mas_appws_bindings_jdbc_manage", "workspace-application")
|
|
102
|
-
|
|
117
|
+
createSystemDb2UsingUniversalOperator = True
|
|
118
|
+
if not silentMode:
|
|
119
|
+
createSystemDb2UsingUniversalOperator = self.yesOrNo(f"Create {self.manageAppName} dedicated Db2 instance using the IBM Db2 Universal Operator")
|
|
120
|
+
if createSystemDb2UsingUniversalOperator:
|
|
103
121
|
self.setParam("db2_action_manage", "install")
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
122
|
+
if not silentMode:
|
|
123
|
+
self.printDescription([
|
|
124
|
+
f"Available Db2 instance types for {self.manageAppName}:",
|
|
125
|
+
" 1. DB2 Warehouse (Default option)",
|
|
126
|
+
" 2. DB2 Online Transactional Processing (OLTP)"
|
|
127
|
+
])
|
|
128
|
+
self.promptForListSelect(message=f"Select the {self.manageAppName} dedicated DB2 instance type", options=["db2wh", "db2oltp"], param="db2_type", default="1")
|
|
129
|
+
else:
|
|
130
|
+
self.setParam("db2_type", "db2wh")
|
|
110
131
|
else:
|
|
111
132
|
workspaceId = self.getParam("mas_workspace_id")
|
|
112
133
|
self.setParam("db2_action_manage", "byo")
|