mas-cli 13.10.1__py3-none-any.whl → 13.12.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 CHANGED
@@ -8,4 +8,4 @@
8
8
  #
9
9
  # *****************************************************************************
10
10
 
11
- __version__ = "13.10.1" # Python module compatible semver
11
+ __version__ = "13.12.0" # Python module compatible semver
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.10.1"
120
+ self.version = "13.12.0"
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.installManage = self.yesOrNo("Install Manage")
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
 
@@ -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}"
@@ -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
@@ -38,6 +38,7 @@ optionalParams = [
38
38
  "mas_superuser_password",
39
39
  "mas_trust_default_cas",
40
40
  "mas_app_settings_server_bundles_size",
41
+ "is_full_manage",
41
42
  "mas_app_settings_default_jms",
42
43
  "mas_app_settings_persistent_volumes_flag",
43
44
  "mas_app_settings_demodata",
@@ -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 Manage database configuration file in {jdbcCfgFile} ...")
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"Manage database configuration file 'jdbc-{instanceId}-manage.yaml' already exists. Do you want to generate a new one"):
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 Manage database configuration file now ...")
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, Manage, Monitor, & Predict) or you may choose to configure MAS to use an existing database"
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 Manage")
114
+ self.printH2(f"Database Configuration for Maximo {self.manageAppName}")
115
115
  self.printDescription([
116
- "Maximo Manage can be configured to share the system Db2 instance or use it's own dedicated database:",
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 Manage application"):
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 manage dedicated Db2 instance using the IBM Db2 Universal Operator"):
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 Manage:",
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 Manage dedicated DB2 instance type", options=["db2wh", "db2oltp"], param="db2_type", default="1")
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 Manage database configuration file in {jdbcCfgFile} ...")
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"Manage database configuration file 'jdbc-{instanceId}-manage.yaml' already exists. Do you want to generate a new one"):
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 Manage database configuration file now ...")
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 Manage Db2 instances",
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 Manage Db2 instances"
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 Manage Db2 instances"
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 Manage and Maximo Spatial bundle (Additional AppPoints required)."
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 Manage")
45
- self.printDescription(["Customize your Manage installation, refer to the product documentation for more information"])
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
- self.printH2("Maximo Manage Components")
74
- self.printDescription(["The default configuration will install Manage with Health enabled, alternatively choose exactly what industry solutions and add-ons will be configured"])
75
-
76
- self.params["mas_appws_components"] = "base=latest,health=latest"
77
- if self.yesOrNo("Select components to enable"):
78
- self.params["mas_appws_components"] = "base=latest"
79
- if self.yesOrNo(" - Asset Configuration Manager"):
80
- self.params["mas_appws_components"] += ",acm=latest"
81
- if self.yesOrNo(" - Aviation"):
82
- self.params["mas_appws_components"] += ",aviation=latest"
83
- if self.yesOrNo(" - Civil Infrastructure"):
84
- self.params["mas_appws_components"] += ",civil=latest"
85
- if self.yesOrNo(" - Envizi"):
86
- self.params["mas_appws_components"] += ",envizi=latest"
87
- if self.yesOrNo(" - Health"):
88
- self.params["mas_appws_components"] += ",health=latest"
89
- if self.yesOrNo(" - Health, Safety and Environment"):
90
- self.params["mas_appws_components"] += ",hse=latest"
91
- if self.yesOrNo(" - Maximo IT"):
92
- self.params["mas_appws_components"] += ",icd=latest"
93
- if self.yesOrNo(" - Nuclear"):
94
- self.params["mas_appws_components"] += ",nuclear=latest"
95
- if self.yesOrNo(" - Oil & Gas"):
96
- self.params["mas_appws_components"] += ",oilandgas=latest"
97
- if self.yesOrNo(" - Connector for Oracle Applications"):
98
- self.params["mas_appws_components"] += ",oracleadapter=latest"
99
- if self.yesOrNo(" - Connector for SAP Application"):
100
- self.params["mas_appws_components"] += ",sapadapter=latest"
101
- if self.yesOrNo(" - Service Provider"):
102
- self.params["mas_appws_components"] += ",serviceprovider=latest"
103
- if self.yesOrNo(" - Spatial"):
104
- self.params["mas_appws_components"] += ",spatial=latest"
105
- if self.yesOrNo(" - Strategize"):
106
- self.params["mas_appws_components"] += ",strategize=latest"
107
- if self.yesOrNo(" - Transportation"):
108
- self.params["mas_appws_components"] += ",transportation=latest"
109
- if self.yesOrNo(" - Tririga"):
110
- self.params["mas_appws_components"] += ",tririga=latest"
111
- if self.yesOrNo(" - Utilities"):
112
- self.params["mas_appws_components"] += ",utilities=latest"
113
- if self.yesOrNo(" - Workday Applications"):
114
- self.params["mas_appws_components"] += ",workday=latest"
115
- logger.debug(f"Generated mas_appws_components = {self.params['mas_appws_components']}")
116
-
117
- if ",icd=" in self.params["mas_appws_components"]:
118
- self.printH2("Maximo IT License Terms")
119
- self.printDescription([
120
- "For information about your Maximo IT License, see <Orange><u>https://ibm.biz/MAXIT81-License</u></Orange>",
121
- "To continue with the installation, you must accept these additional license terms"
122
- ])
123
-
124
- if not self.yesOrNo("Do you accept the license terms"):
125
- exit(1)
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 Manage Settings - Database")
130
- self.printDescription(["Customise the schema, tablespace, indexspace, and encryption settings used by Manage"])
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.showAdvancedOptions:
146
- self.printH2("Maximo Manage Settings - Server Bundles")
147
- self.printDescription([
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
- " 3. Deploy the 'mea', 'report', 'ui' and 'cron' bundle pods (workload is distributed across multiple server pods)",
160
- " 4. Deploy the 'mea', 'report', 'ui', 'cron' and 'jms' bundle pods (workload is distributed across multiple server pods and includes jms server)"
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
- manageServerBundleSelection = self.promptForString("Select a server bundle configuration")
164
-
165
- if manageServerBundleSelection == "1":
166
- self.setParam("mas_app_settings_server_bundles_size", "dev")
167
- elif manageServerBundleSelection == "2":
168
- self.setParam("mas_app_settings_server_bundles_size", "snojms")
169
- self.setParam("mas_app_settings_persistent_volumes_flag", "true")
170
- elif manageServerBundleSelection == "3":
171
- self.setParam("mas_app_settings_server_bundles_size", "small")
172
- elif manageServerBundleSelection == "4":
173
- self.setParam("mas_app_settings_server_bundles_size", "jms")
174
- self.setParam("mas_app_settings_persistent_volumes_flag", "true")
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.fatalError("Invalid selection")
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 Manage JMS sequential queues (sqin and sqout) are enabled by default.",
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 Manage JMS sequential and continuous queues", "mas_app_settings_default_jms")
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
- self.printH2("Maximo Manage Settings - Customization")
191
- self.printDescription([
192
- "Provide a customization archive to be used in the Manage build process"
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
- if self.yesOrNo("Include customization archive"):
196
- self.promptForString("Customization archive name", "mas_app_settings_customization_archive_name")
197
- self.promptForString("Customization archive path/url", "mas_app_settings_customization_archive_url")
198
- if self.yesOrNo("Provide authentication to access customization archive URL"):
199
- self.promptForString("Username", "mas_app_settings_customization_archive_username")
200
- self.promptForString("Password", "mas_app_settings_customization_archive_password", isPassword=True)
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("Manage server timezone", "mas_app_settings_server_timezone", default="GMT")
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 Manage Settings - Languages")
219
+ self.printH2(f"Maximo {self.manageAppName} Settings - Languages")
212
220
  self.printDescription([
213
- "Define the base language for Maximo Manage"
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 Manage. provide a comma-separated list of supported languages codes, for example: 'JA,DE,AR'",
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 Manage, for more information refer to the documentation online: ",
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 Manage Settings - Other")
239
- self.printDescription([
240
- "Configure additional settings:",
241
- " - Demo data",
242
- " - Base and additional languages",
243
- " - Server timezone",
244
- " - Cognos integration (install Cloud Pak for Data)",
245
- " - Watson Studio Local integration (install Cloud Pak for Data)"
246
- ])
247
-
248
- if self.yesOrNo("Configure Additional Settings"):
249
- self.manageSettingsDemodata()
250
- self.manageSettingsTimezone()
251
- self.manageSettingsLanguages()
252
- self.manageSettingsCP4D()
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: