mas-cli 13.11.0__py3-none-any.whl → 13.12.1__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 +20 -1
- mas/cli/install/argBuilder.py +1 -0
- mas/cli/install/argParser.py +5 -0
- mas/cli/install/params.py +1 -0
- mas/cli/install/settings/db2Settings.py +16 -16
- mas/cli/install/settings/manageSettings.py +137 -120
- mas/cli/install/summarizer.py +33 -33
- mas/cli/templates/ibm-mas-tekton.yaml +123 -102
- {mas_cli-13.11.0.dist-info → mas_cli-13.12.1.dist-info}/METADATA +2 -2
- {mas_cli-13.11.0.dist-info → mas_cli-13.12.1.dist-info}/RECORD +15 -15
- {mas_cli-13.11.0.dist-info → mas_cli-13.12.1.dist-info}/WHEEL +1 -1
- {mas_cli-13.11.0.data → mas_cli-13.12.1.data}/scripts/mas-cli +0 -0
- {mas_cli-13.11.0.dist-info → mas_cli-13.12.1.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.12.1"
|
|
121
121
|
self.h1count = 0
|
|
122
122
|
self.h2count = 0
|
|
123
123
|
|
mas/cli/install/app.py
CHANGED
|
@@ -615,7 +615,21 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
615
615
|
if self.installMonitor:
|
|
616
616
|
self.configAppChannel("monitor")
|
|
617
617
|
|
|
618
|
-
self.
|
|
618
|
+
self.manageAppName = "Manage"
|
|
619
|
+
self.isManageFoundation = False
|
|
620
|
+
self.installManage = self.yesOrNo(f"Install {self.manageAppName}")
|
|
621
|
+
|
|
622
|
+
# If the selection was to not install manage but we are in mas_channel 9.1 or later, we need to set self.isManageFoundation to True
|
|
623
|
+
# Also, we need to force self.installManage to be True because Manage must always be installed in MAS 9.1 or later
|
|
624
|
+
if not self.installManage:
|
|
625
|
+
if not self.getParam("mas_channel").startswith("8.") and not self.getParam("mas_channel").startswith("9.0"):
|
|
626
|
+
self.installManage = True
|
|
627
|
+
self.isManageFoundation = True
|
|
628
|
+
self.setParam("is_full_manage", "false")
|
|
629
|
+
self.manageAppName = "Manage foundation"
|
|
630
|
+
self.printDescription([f"{self.manageAppName} installs the following capabilities: User, Security groups, Application configurator and Mobile configurator."])
|
|
631
|
+
else:
|
|
632
|
+
self.setParam("is_full_manage", "true")
|
|
619
633
|
|
|
620
634
|
if self.installManage:
|
|
621
635
|
self.configAppChannel("manage")
|
|
@@ -1006,6 +1020,11 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1006
1020
|
print(f"Unknown option: {key} {value}")
|
|
1007
1021
|
self.fatalError(f"Unknown option: {key} {value}")
|
|
1008
1022
|
|
|
1023
|
+
if self.installManage:
|
|
1024
|
+
# If Manage is being installed and --is-full-manage was set to something different than "false", assume it is "true"
|
|
1025
|
+
if self.getParam("is_full_manage") != "false":
|
|
1026
|
+
self.setParam("is_full_manage", "true")
|
|
1027
|
+
|
|
1009
1028
|
# Load the catalog information
|
|
1010
1029
|
self.chosenCatalog = getCatalog(self.getParam("mas_catalog_version"))
|
|
1011
1030
|
|
mas/cli/install/argBuilder.py
CHANGED
|
@@ -160,6 +160,7 @@ class installArgBuilderMixin():
|
|
|
160
160
|
command += f" --monitor-channel \"{self.getParam('mas_app_channel_monitor')}\"{newline}"
|
|
161
161
|
if self.installManage:
|
|
162
162
|
command += f" --manage-channel \"{self.getParam('mas_app_channel_manage')}\"{newline}"
|
|
163
|
+
command += f" --is-full-manage \"{self.getParam('is_full_manage')}\"{newline}"
|
|
163
164
|
if self.installOptimizer:
|
|
164
165
|
command += f" --optimizer-channel \"{self.getParam('mas_app_channel_optimizer')}\""
|
|
165
166
|
command += f" --optimizer-plan \"{self.getParam('mas_app_plan_optimizer')}\"{newline}"
|
mas/cli/install/argParser.py
CHANGED
|
@@ -338,6 +338,11 @@ masAppsArgGroup.add_argument(
|
|
|
338
338
|
required=False,
|
|
339
339
|
help="Subscription channel for Maximo Manage"
|
|
340
340
|
)
|
|
341
|
+
masAppsArgGroup.add_argument(
|
|
342
|
+
"--is-full-manage",
|
|
343
|
+
required=False,
|
|
344
|
+
help="Full Manage instead of Manage Foundation"
|
|
345
|
+
)
|
|
341
346
|
masAppsArgGroup.add_argument(
|
|
342
347
|
"--predict-channel",
|
|
343
348
|
required=False,
|
mas/cli/install/params.py
CHANGED
|
@@ -40,19 +40,19 @@ class Db2SettingsMixin():
|
|
|
40
40
|
|
|
41
41
|
# Check if a configuration already exists before creating a new one
|
|
42
42
|
jdbcCfgFile = path.join(self.localConfigDir, f"jdbc-{instanceId}-manage.yaml")
|
|
43
|
-
print_formatted_text(f"Searching for
|
|
43
|
+
print_formatted_text(f"Searching for {self.manageAppName} database configuration file in {jdbcCfgFile} ...")
|
|
44
44
|
if path.exists(jdbcCfgFile):
|
|
45
|
-
if self.yesOrNo(f"
|
|
45
|
+
if self.yesOrNo(f"{self.manageAppName} database configuration file 'jdbc-{instanceId}-manage.yaml' already exists. Do you want to generate a new one"):
|
|
46
46
|
self.generateJDBCCfg(instanceId=instanceId, scope="workspace-application", workspaceId=workspaceId, appId="manage", destination=jdbcCfgFile)
|
|
47
47
|
else:
|
|
48
|
-
print_formatted_text(f"Expected file ({jdbcCfgFile}) was not found, generating a valid
|
|
48
|
+
print_formatted_text(f"Expected file ({jdbcCfgFile}) was not found, generating a valid {self.manageAppName} database configuration file now ...")
|
|
49
49
|
self.generateJDBCCfg(instanceId=instanceId, scope="workspace-application", workspaceId=workspaceId, appId="manage", destination=jdbcCfgFile)
|
|
50
50
|
return
|
|
51
51
|
|
|
52
52
|
# Proceed as normal
|
|
53
53
|
# We know we are installing either IoT or Manage, and on amd64 target architecture
|
|
54
54
|
self.printDescription([
|
|
55
|
-
"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,
|
|
55
|
+
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"
|
|
56
56
|
])
|
|
57
57
|
|
|
58
58
|
self.setParam("db2_cpu_requests", "4000m")
|
|
@@ -111,28 +111,28 @@ class Db2SettingsMixin():
|
|
|
111
111
|
self.setParam("db2_action_system", "none")
|
|
112
112
|
|
|
113
113
|
if self.installManage:
|
|
114
|
-
self.printH2("Database Configuration for Maximo
|
|
114
|
+
self.printH2(f"Database Configuration for Maximo {self.manageAppName}")
|
|
115
115
|
self.printDescription([
|
|
116
|
-
"Maximo
|
|
116
|
+
f"Maximo {self.manageAppName} can be configured to share the system Db2 instance or use it's own dedicated database:",
|
|
117
117
|
" - Use of a shared instance has a significant footprint reduction but is only recommended for development/test/demo installs",
|
|
118
118
|
" - In most production systems you will want to use a dedicated database",
|
|
119
119
|
" - IBM Db2, Oracle Database, & Microsoft SQL Server are all supported database options"
|
|
120
120
|
])
|
|
121
121
|
# Determine whether to use the system or a dedicated database
|
|
122
|
-
if self.installIoT and self.yesOrNo("Re-use System Db2 instance for
|
|
122
|
+
if self.installIoT and self.yesOrNo(f"Re-use System Db2 instance for {self.manageAppName} application"):
|
|
123
123
|
# We are going to bind Manage to the system database, which has already been set up in the previous step
|
|
124
124
|
self.setParam("mas_appws_bindings_jdbc_manage", "system")
|
|
125
125
|
self.setParam("db2_action_manage", "none")
|
|
126
126
|
else:
|
|
127
127
|
self.setParam("mas_appws_bindings_jdbc_manage", "workspace-application")
|
|
128
|
-
if self.yesOrNo("Create
|
|
128
|
+
if self.yesOrNo(f"Create {self.manageAppName} dedicated Db2 instance using the IBM Db2 Universal Operator"):
|
|
129
129
|
self.setParam("db2_action_manage", "install")
|
|
130
130
|
self.printDescription([
|
|
131
|
-
"Available Db2 instance types for
|
|
131
|
+
f"Available Db2 instance types for {self.manageAppName}:",
|
|
132
132
|
" 1. DB2 Warehouse (Default option)",
|
|
133
133
|
" 2. DB2 Online Transactional Processing (OLTP)"
|
|
134
134
|
])
|
|
135
|
-
self.promptForListSelect(message="Select the
|
|
135
|
+
self.promptForListSelect(message=f"Select the {self.manageAppName} dedicated DB2 instance type", options=["db2wh", "db2oltp"], param="db2_type", default="1")
|
|
136
136
|
else:
|
|
137
137
|
workspaceId = self.getParam("mas_workspace_id")
|
|
138
138
|
self.setParam("db2_action_manage", "byo")
|
|
@@ -141,12 +141,12 @@ class Db2SettingsMixin():
|
|
|
141
141
|
|
|
142
142
|
# Check if a configuration already exists before creating a new one
|
|
143
143
|
jdbcCfgFile = path.join(self.localConfigDir, f"jdbc-{instanceId}-manage.yaml")
|
|
144
|
-
print_formatted_text(f"Searching for
|
|
144
|
+
print_formatted_text(f"Searching for {self.manageAppName} database configuration file in {jdbcCfgFile} ...")
|
|
145
145
|
if path.exists(jdbcCfgFile):
|
|
146
|
-
if self.yesOrNo(f"
|
|
146
|
+
if self.yesOrNo(f"{self.manageAppName} database configuration file 'jdbc-{instanceId}-manage.yaml' already exists. Do you want to generate a new one"):
|
|
147
147
|
self.generateJDBCCfg(instanceId=instanceId, scope="workspace-application", workspaceId=workspaceId, appId="manage", destination=jdbcCfgFile)
|
|
148
148
|
else:
|
|
149
|
-
print_formatted_text(f"Expected file ({jdbcCfgFile}) was not found, generating a valid
|
|
149
|
+
print_formatted_text(f"Expected file ({jdbcCfgFile}) was not found, generating a valid {self.manageAppName} database configuration file now ...")
|
|
150
150
|
self.generateJDBCCfg(instanceId=instanceId, scope="workspace-application", workspaceId=workspaceId, appId="manage", destination=jdbcCfgFile)
|
|
151
151
|
else:
|
|
152
152
|
self.setParam("db2_action_manage", "none")
|
|
@@ -161,7 +161,7 @@ class Db2SettingsMixin():
|
|
|
161
161
|
# -------------------------------------------------------------------------
|
|
162
162
|
self.printH2("Node Affinity and Tolerations")
|
|
163
163
|
self.printDescription([
|
|
164
|
-
"Note that the same settings are applied to both the IoT and
|
|
164
|
+
f"Note that the same settings are applied to both the IoT and {self.manageAppName} Db2 instances",
|
|
165
165
|
"Use existing node labels and taints to control scheduling of the Db2 workload in your cluster",
|
|
166
166
|
"For more information refer to the Red Hat documentation:",
|
|
167
167
|
" - <Orange><u>https://docs.openshift.com/container-platform/4.16/nodes/scheduling/nodes-scheduler-node-affinity.html</u></Orange>",
|
|
@@ -179,7 +179,7 @@ class Db2SettingsMixin():
|
|
|
179
179
|
|
|
180
180
|
self.printH2("Database CPU & Memory")
|
|
181
181
|
self.printDescription([
|
|
182
|
-
"Note that the same settings are applied to both the IoT and
|
|
182
|
+
f"Note that the same settings are applied to both the IoT and {self.manageAppName} Db2 instances"
|
|
183
183
|
])
|
|
184
184
|
|
|
185
185
|
if self.yesOrNo("Customize CPU and memory request/limit"):
|
|
@@ -190,7 +190,7 @@ class Db2SettingsMixin():
|
|
|
190
190
|
|
|
191
191
|
self.printH2("Database Storage Capacity")
|
|
192
192
|
self.printDescription([
|
|
193
|
-
"Note that the same settings are applied to both the IoT and
|
|
193
|
+
f"Note that the same settings are applied to both the IoT and {self.manageAppName} Db2 instances"
|
|
194
194
|
])
|
|
195
195
|
|
|
196
196
|
if self.yesOrNo("Customize storage capacity"):
|
|
@@ -21,7 +21,7 @@ class ManageSettingsMixin():
|
|
|
21
21
|
"",
|
|
22
22
|
"Maximo Spatial requires a map server provider in order to enable geospatial capabilities",
|
|
23
23
|
"You may choose your preferred map provider later or you can enable IBM Maximo Location Services for Esri now",
|
|
24
|
-
"This includes ArcGIS Enterprise as part of the
|
|
24
|
+
f"This includes ArcGIS Enterprise as part of the {self.manageAppName} and Maximo Spatial bundle (Additional AppPoints required)."
|
|
25
25
|
])
|
|
26
26
|
|
|
27
27
|
if self.yesOrNo("Include IBM Maximo Location Services for Esri"):
|
|
@@ -41,8 +41,8 @@ class ManageSettingsMixin():
|
|
|
41
41
|
|
|
42
42
|
def manageSettings(self) -> None:
|
|
43
43
|
if self.installManage:
|
|
44
|
-
self.printH1("Configure Maximo
|
|
45
|
-
self.printDescription(["Customize your
|
|
44
|
+
self.printH1(f"Configure Maximo {self.manageAppName}")
|
|
45
|
+
self.printDescription([f"Customize your {self.manageAppName} installation, refer to the product documentation for more information"])
|
|
46
46
|
|
|
47
47
|
self.manageSettingsComponents()
|
|
48
48
|
self.arcgisSettings()
|
|
@@ -70,64 +70,69 @@ class ManageSettingsMixin():
|
|
|
70
70
|
self.setParam("mas_app_settings_jms_queue_pvc_accessmode", accessMode)
|
|
71
71
|
|
|
72
72
|
def manageSettingsComponents(self) -> None:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
self.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
self.
|
|
85
|
-
|
|
86
|
-
self.
|
|
87
|
-
|
|
88
|
-
self.
|
|
89
|
-
|
|
90
|
-
self.
|
|
91
|
-
|
|
92
|
-
self.
|
|
93
|
-
|
|
94
|
-
self.
|
|
95
|
-
|
|
96
|
-
self.
|
|
97
|
-
|
|
98
|
-
self.
|
|
99
|
-
|
|
100
|
-
self.
|
|
101
|
-
|
|
102
|
-
self.
|
|
103
|
-
|
|
104
|
-
self.
|
|
105
|
-
|
|
106
|
-
self.
|
|
107
|
-
|
|
108
|
-
self.
|
|
109
|
-
|
|
110
|
-
self.
|
|
111
|
-
|
|
112
|
-
self.
|
|
113
|
-
|
|
114
|
-
self.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
self.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
]
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
73
|
+
# Only ask to install Manage components if this is a full Manage installation
|
|
74
|
+
# If this is a Manage Foundation installation, leave mas_appws_components blank
|
|
75
|
+
if self.isManageFoundation:
|
|
76
|
+
self.params["mas_appws_components"] = ""
|
|
77
|
+
else:
|
|
78
|
+
self.printH2(f"Maximo {self.manageAppName} Components")
|
|
79
|
+
self.printDescription([f"The default configuration will install {self.manageAppName} with Health enabled, alternatively choose exactly what industry solutions and add-ons will be configured"])
|
|
80
|
+
|
|
81
|
+
self.params["mas_appws_components"] = "base=latest,health=latest"
|
|
82
|
+
if self.yesOrNo("Select components to enable"):
|
|
83
|
+
self.params["mas_appws_components"] = "base=latest"
|
|
84
|
+
if self.yesOrNo(" - Asset Configuration Manager"):
|
|
85
|
+
self.params["mas_appws_components"] += ",acm=latest"
|
|
86
|
+
if self.yesOrNo(" - Aviation"):
|
|
87
|
+
self.params["mas_appws_components"] += ",aviation=latest"
|
|
88
|
+
if self.yesOrNo(" - Civil Infrastructure"):
|
|
89
|
+
self.params["mas_appws_components"] += ",civil=latest"
|
|
90
|
+
if self.yesOrNo(" - Envizi"):
|
|
91
|
+
self.params["mas_appws_components"] += ",envizi=latest"
|
|
92
|
+
if self.yesOrNo(" - Health"):
|
|
93
|
+
self.params["mas_appws_components"] += ",health=latest"
|
|
94
|
+
if self.yesOrNo(" - Health, Safety and Environment"):
|
|
95
|
+
self.params["mas_appws_components"] += ",hse=latest"
|
|
96
|
+
if self.yesOrNo(" - Maximo IT"):
|
|
97
|
+
self.params["mas_appws_components"] += ",icd=latest"
|
|
98
|
+
if self.yesOrNo(" - Nuclear"):
|
|
99
|
+
self.params["mas_appws_components"] += ",nuclear=latest"
|
|
100
|
+
if self.yesOrNo(" - Oil & Gas"):
|
|
101
|
+
self.params["mas_appws_components"] += ",oilandgas=latest"
|
|
102
|
+
if self.yesOrNo(" - Connector for Oracle Applications"):
|
|
103
|
+
self.params["mas_appws_components"] += ",oracleadapter=latest"
|
|
104
|
+
if self.yesOrNo(" - Connector for SAP Application"):
|
|
105
|
+
self.params["mas_appws_components"] += ",sapadapter=latest"
|
|
106
|
+
if self.yesOrNo(" - Service Provider"):
|
|
107
|
+
self.params["mas_appws_components"] += ",serviceprovider=latest"
|
|
108
|
+
if self.yesOrNo(" - Spatial"):
|
|
109
|
+
self.params["mas_appws_components"] += ",spatial=latest"
|
|
110
|
+
if self.yesOrNo(" - Strategize"):
|
|
111
|
+
self.params["mas_appws_components"] += ",strategize=latest"
|
|
112
|
+
if self.yesOrNo(" - Transportation"):
|
|
113
|
+
self.params["mas_appws_components"] += ",transportation=latest"
|
|
114
|
+
if self.yesOrNo(" - Tririga"):
|
|
115
|
+
self.params["mas_appws_components"] += ",tririga=latest"
|
|
116
|
+
if self.yesOrNo(" - Utilities"):
|
|
117
|
+
self.params["mas_appws_components"] += ",utilities=latest"
|
|
118
|
+
if self.yesOrNo(" - Workday Applications"):
|
|
119
|
+
self.params["mas_appws_components"] += ",workday=latest"
|
|
120
|
+
logger.debug(f"Generated mas_appws_components = {self.params['mas_appws_components']}")
|
|
121
|
+
|
|
122
|
+
if ",icd=" in self.params["mas_appws_components"]:
|
|
123
|
+
self.printH2("Maximo IT License Terms")
|
|
124
|
+
self.printDescription([
|
|
125
|
+
"For information about your Maximo IT License, see <Orange><u>https://ibm.biz/MAXIT81-License</u></Orange>",
|
|
126
|
+
"To continue with the installation, you must accept these additional license terms"
|
|
127
|
+
])
|
|
128
|
+
|
|
129
|
+
if not self.yesOrNo("Do you accept the license terms"):
|
|
130
|
+
exit(1)
|
|
126
131
|
|
|
127
132
|
def manageSettingsDatabase(self) -> None:
|
|
128
133
|
if self.showAdvancedOptions:
|
|
129
|
-
self.printH2("Maximo
|
|
130
|
-
self.printDescription(["Customise the schema, tablespace, indexspace, and encryption settings used by
|
|
134
|
+
self.printH2(f"Maximo {self.manageAppName} Settings - Database")
|
|
135
|
+
self.printDescription([f"Customise the schema, tablespace, indexspace, and encryption settings used by {self.manageAppName}"])
|
|
131
136
|
|
|
132
137
|
if self.yesOrNo("Customize database settings"):
|
|
133
138
|
self.promptForString("Schema", "mas_app_settings_db2_schema", default="maximo")
|
|
@@ -142,80 +147,83 @@ class ManageSettingsMixin():
|
|
|
142
147
|
self.yesOrNo("Override database encryption secrets with provided keys", "mas_app_settings_override_encryption_secrets_flag")
|
|
143
148
|
|
|
144
149
|
def manageSettingsServerBundleConfig(self) -> None:
|
|
145
|
-
if self.
|
|
146
|
-
self.
|
|
147
|
-
|
|
148
|
-
"Define how you want to configure Manage servers:",
|
|
149
|
-
" - You can have one or multiple Manage servers distributing workload",
|
|
150
|
-
" - Additionally, you can choose to include JMS server for messaging queues",
|
|
151
|
-
"",
|
|
152
|
-
"Configurations:",
|
|
153
|
-
" 1. Deploy the 'all' server pod only (workload is concentrated in just one server pod but consumes less resource)",
|
|
154
|
-
" 2. Deploy the 'all' and 'jms' bundle pods (workload is concentrated in just one server pod and includes jms server)"
|
|
155
|
-
])
|
|
156
|
-
|
|
157
|
-
if not self.isSNO():
|
|
150
|
+
if not self.isManageFoundation:
|
|
151
|
+
if self.showAdvancedOptions:
|
|
152
|
+
self.printH2(f"Maximo {self.manageAppName} Settings - Server Bundles")
|
|
158
153
|
self.printDescription([
|
|
159
|
-
"
|
|
160
|
-
"
|
|
154
|
+
f"Define how you want to configure {self.manageAppName} servers:",
|
|
155
|
+
f" - You can have one or multiple {self.manageAppName} servers distributing workload",
|
|
156
|
+
" - Additionally, you can choose to include JMS server for messaging queues",
|
|
157
|
+
"",
|
|
158
|
+
"Configurations:",
|
|
159
|
+
" 1. Deploy the 'all' server pod only (workload is concentrated in just one server pod but consumes less resource)",
|
|
160
|
+
" 2. Deploy the 'all' and 'jms' bundle pods (workload is concentrated in just one server pod and includes jms server)"
|
|
161
161
|
])
|
|
162
162
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
self.
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
163
|
+
if not self.isSNO():
|
|
164
|
+
self.printDescription([
|
|
165
|
+
" 3. Deploy the 'mea', 'report', 'ui' and 'cron' bundle pods (workload is distributed across multiple server pods)",
|
|
166
|
+
" 4. Deploy the 'mea', 'report', 'ui', 'cron' and 'jms' bundle pods (workload is distributed across multiple server pods and includes jms server)"
|
|
167
|
+
])
|
|
168
|
+
|
|
169
|
+
manageServerBundleSelection = self.promptForString("Select a server bundle configuration")
|
|
170
|
+
|
|
171
|
+
if manageServerBundleSelection == "1":
|
|
172
|
+
self.setParam("mas_app_settings_server_bundles_size", "dev")
|
|
173
|
+
elif manageServerBundleSelection == "2":
|
|
174
|
+
self.setParam("mas_app_settings_server_bundles_size", "snojms")
|
|
175
|
+
self.setParam("mas_app_settings_persistent_volumes_flag", "true")
|
|
176
|
+
elif manageServerBundleSelection == "3":
|
|
177
|
+
self.setParam("mas_app_settings_server_bundles_size", "small")
|
|
178
|
+
elif manageServerBundleSelection == "4":
|
|
179
|
+
self.setParam("mas_app_settings_server_bundles_size", "jms")
|
|
180
|
+
self.setParam("mas_app_settings_persistent_volumes_flag", "true")
|
|
181
|
+
else:
|
|
182
|
+
self.fatalError("Invalid selection")
|
|
175
183
|
else:
|
|
176
|
-
self.
|
|
177
|
-
else:
|
|
178
|
-
self.setParam("mas_app_settings_server_bundles_size", "dev")
|
|
184
|
+
self.setParam("mas_app_settings_server_bundles_size", "dev")
|
|
179
185
|
|
|
180
186
|
def manageSettingsJMS(self) -> None:
|
|
181
187
|
if self.getParam("mas_app_settings_server_bundles_size") in ["jms", "snojms"]:
|
|
182
188
|
self.printDescription([
|
|
183
|
-
"Only
|
|
189
|
+
f"Only {self.manageAppName} JMS sequential queues (sqin and sqout) are enabled by default.",
|
|
184
190
|
"However, you can enable both sequential (sqin and sqout) and continuous queues (cqin and cqout)"
|
|
185
191
|
])
|
|
186
192
|
|
|
187
|
-
self.yesOrNo("Enable both
|
|
193
|
+
self.yesOrNo(f"Enable both {self.manageAppName} JMS sequential and continuous queues", "mas_app_settings_default_jms")
|
|
188
194
|
|
|
189
195
|
def manageSettingsCustomizationArchive(self) -> None:
|
|
190
|
-
|
|
191
|
-
self.
|
|
192
|
-
"
|
|
193
|
-
|
|
196
|
+
# Only ask about customization archive in full Manage installation
|
|
197
|
+
if not self.isManageFoundation:
|
|
198
|
+
self.printH2(f"Maximo {self.manageAppName} Settings - Customization")
|
|
199
|
+
self.printDescription([
|
|
200
|
+
f"Provide a customization archive to be used in the {self.manageAppName} build process"
|
|
201
|
+
])
|
|
194
202
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
203
|
+
if self.yesOrNo("Include customization archive"):
|
|
204
|
+
self.promptForString("Customization archive name", "mas_app_settings_customization_archive_name")
|
|
205
|
+
self.promptForString("Customization archive path/url", "mas_app_settings_customization_archive_url")
|
|
206
|
+
if self.yesOrNo("Provide authentication to access customization archive URL"):
|
|
207
|
+
self.promptForString("Username", "mas_app_settings_customization_archive_username")
|
|
208
|
+
self.promptForString("Password", "mas_app_settings_customization_archive_password", isPassword=True)
|
|
201
209
|
|
|
202
210
|
def manageSettingsDemodata(self) -> None:
|
|
203
211
|
self.yesOrNo("Create demo data", "mas_app_settings_demodata")
|
|
204
212
|
|
|
205
213
|
def manageSettingsTimezone(self) -> None:
|
|
206
|
-
self.promptForString("
|
|
214
|
+
self.promptForString(f"{self.manageAppName} server timezone", "mas_app_settings_server_timezone", default="GMT")
|
|
207
215
|
# Set Manage dedicated Db2 instance timezone to be same as Manage server timezone
|
|
208
216
|
self.setParam("db2_timezone", self.getParam("mas_app_settings_server_timezone"))
|
|
209
217
|
|
|
210
218
|
def manageSettingsLanguages(self) -> None:
|
|
211
|
-
self.printH2("Maximo
|
|
219
|
+
self.printH2(f"Maximo {self.manageAppName} Settings - Languages")
|
|
212
220
|
self.printDescription([
|
|
213
|
-
"Define the base language for Maximo
|
|
221
|
+
f"Define the base language for Maximo {self.manageAppName}"
|
|
214
222
|
])
|
|
215
223
|
self.promptForString("Base language", "mas_app_settings_base_lang", default="EN")
|
|
216
224
|
|
|
217
225
|
self.printDescription([
|
|
218
|
-
"Define the additional languages to be configured in Maximo
|
|
226
|
+
f"Define the additional languages to be configured in Maximo {self.manageAppName}. provide a comma-separated list of supported languages codes, for example: 'JA,DE,AR'",
|
|
219
227
|
"A complete list of available language codes is available online:",
|
|
220
228
|
" <Orange><u>https://www.ibm.com/docs/en/mas-cd/mhmpmh-and-p-u/continuous-delivery?topic=deploy-language-support</u></Orange>"
|
|
221
229
|
])
|
|
@@ -225,7 +233,7 @@ class ManageSettingsMixin():
|
|
|
225
233
|
def manageSettingsCP4D(self) -> None:
|
|
226
234
|
if self.getParam("mas_app_channel_manage") in ["8.7.x", "9.0.x"] and self.showAdvancedOptions:
|
|
227
235
|
self.printDescription([
|
|
228
|
-
"Integration with Cognos Analytics provides additional support for reporting features in Maximo
|
|
236
|
+
f"Integration with Cognos Analytics provides additional support for reporting features in Maximo {self.manageAppName}, for more information refer to the documentation online: ",
|
|
229
237
|
" - <Orange><u>https://ibm.biz/BdMuxs</u></Orange>"
|
|
230
238
|
])
|
|
231
239
|
self.yesOrNo("Enable integration with Cognos Analytics", "cpd_install_cognos")
|
|
@@ -235,21 +243,30 @@ class ManageSettingsMixin():
|
|
|
235
243
|
self.configCP4D()
|
|
236
244
|
|
|
237
245
|
def manageSettingsOther(self) -> None:
|
|
238
|
-
self.printH2("Maximo
|
|
239
|
-
self.
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
self.
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
246
|
+
self.printH2(f"Maximo {self.manageAppName} Settings - Other")
|
|
247
|
+
if self.isManageFoundation:
|
|
248
|
+
self.printDescription([
|
|
249
|
+
"Configure additional settings:",
|
|
250
|
+
" - Base and additional languages",
|
|
251
|
+
" - Server timezone"
|
|
252
|
+
])
|
|
253
|
+
if self.yesOrNo("Configure Additional Settings"):
|
|
254
|
+
self.manageSettingsTimezone()
|
|
255
|
+
self.manageSettingsLanguages()
|
|
256
|
+
else:
|
|
257
|
+
self.printDescription([
|
|
258
|
+
"Configure additional settings:",
|
|
259
|
+
" - Demo data",
|
|
260
|
+
" - Base and additional languages",
|
|
261
|
+
" - Server timezone",
|
|
262
|
+
" - Cognos integration (install Cloud Pak for Data)",
|
|
263
|
+
" - Watson Studio Local integration (install Cloud Pak for Data)"
|
|
264
|
+
])
|
|
265
|
+
if self.yesOrNo("Configure Additional Settings"):
|
|
266
|
+
self.manageSettingsDemodata()
|
|
267
|
+
self.manageSettingsTimezone()
|
|
268
|
+
self.manageSettingsLanguages()
|
|
269
|
+
self.manageSettingsCP4D()
|
|
253
270
|
|
|
254
271
|
def aibrokerSettings(self) -> None:
|
|
255
272
|
if self.installAiBroker:
|