mas-cli 10.7.3__py3-none-any.whl → 10.9.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 +89 -3
- mas/cli/install/app.py +84 -44
- mas/cli/install/argBuilder.py +367 -0
- mas/cli/install/argParser.py +34 -6
- mas/cli/install/settings/additionalConfigs.py +3 -4
- mas/cli/install/settings/manageSettings.py +17 -9
- mas/cli/install/settings/turbonomicSettings.py +5 -1
- mas/cli/install/summarizer.py +16 -0
- mas/cli/templates/ibm-mas-tekton.yaml +248 -833
- mas/cli/uninstall/app.py +2 -0
- mas/cli/update/app.py +13 -10
- mas/cli/upgrade/app.py +2 -0
- {mas_cli-10.7.3.dist-info → mas_cli-10.9.0.dist-info}/METADATA +1 -1
- {mas_cli-10.7.3.dist-info → mas_cli-10.9.0.dist-info}/RECORD +18 -17
- {mas_cli-10.7.3.dist-info → mas_cli-10.9.0.dist-info}/WHEEL +1 -1
- {mas_cli-10.7.3.data → mas_cli-10.9.0.data}/scripts/mas-cli +0 -0
- {mas_cli-10.7.3.dist-info → mas_cli-10.9.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
# *****************************************************************************
|
|
2
|
+
# Copyright (c) 2024 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
|
+
import logging
|
|
12
|
+
|
|
13
|
+
logger = logging.getLogger(__name__)
|
|
14
|
+
|
|
15
|
+
class installArgBuilderMixin():
|
|
16
|
+
def buildCommand(self) -> str:
|
|
17
|
+
# MAS Catalog Selection & Entitlement
|
|
18
|
+
# -----------------------------------------------------------------------------
|
|
19
|
+
newline = " \\\n"
|
|
20
|
+
command = "export IBM_ENTITLEMENT_KEY=x\n"
|
|
21
|
+
if self.getParam('ibmcloud_apikey') != "":
|
|
22
|
+
command += "export IBMCLOUD_APIKEY=x\n"
|
|
23
|
+
if self.getParam('aws_access_key_id') != "":
|
|
24
|
+
command += "export AWS_ACCESS_KEY_ID=x\n"
|
|
25
|
+
if self.getParam('secret_access_key') != "":
|
|
26
|
+
command += "export SECRET_ACCESS_KEY=x\n"
|
|
27
|
+
if self.getParam('artifactory_username') != "":
|
|
28
|
+
command += "export ARTIFACTORY_USERNAME=x\nexport ARTIFACTORY_TOKEN=x\n"
|
|
29
|
+
|
|
30
|
+
if self.getParam('mas_superuser_password') != "":
|
|
31
|
+
command += "export SUPERUSER_PASSWORD=x\n"
|
|
32
|
+
|
|
33
|
+
if self.getParam('eck_remote_es_password') != "":
|
|
34
|
+
command += "export ES_PASSWORD=x\n"
|
|
35
|
+
if self.getParam('kafka_password') != "":
|
|
36
|
+
command += "export KAFKA_PASSWORD=x\n"
|
|
37
|
+
|
|
38
|
+
if self.getParam('mas_app_settings_customization_archive_password') != "":
|
|
39
|
+
command += "export CUSTOMIZATION_PASSWORD=x\n"
|
|
40
|
+
if self.getParam('mas_app_settings_crypto_key') != "":
|
|
41
|
+
command += "export CRYPTO_KEY=x\n"
|
|
42
|
+
if self.getParam('mas_app_settings_cryptox_key') != "":
|
|
43
|
+
command += "export CRYPTOX_KEY=x\n"
|
|
44
|
+
if self.getParam('mas_app_settings_old_crypto_key') != "":
|
|
45
|
+
command += "export OLD_CRYPTO_KEY=x\n"
|
|
46
|
+
if self.getParam('mas_app_settings_old_cryptox_key') != "":
|
|
47
|
+
command += "export OLD_CRYTPOX_KEY=x\n"
|
|
48
|
+
|
|
49
|
+
command += f"mas install --mas-catalog-version {self.getParam('mas_catalog_version')}"
|
|
50
|
+
|
|
51
|
+
if self.getParam('mas_catalog_digest') != "":
|
|
52
|
+
command += f" --mas-catalog-digest {self.getParam('mas_catalog_digest')}"
|
|
53
|
+
|
|
54
|
+
command += f" --ibm-entitlement-key $IBM_ENTITLEMENT_KEY{newline}"
|
|
55
|
+
|
|
56
|
+
# MAS Basic Configuration
|
|
57
|
+
# -----------------------------------------------------------------------------
|
|
58
|
+
command += f" --mas-channel {self.getParam('mas_channel')}"
|
|
59
|
+
command += f" --mas-instance-id {self.getParam('mas_instance_id')}"
|
|
60
|
+
command += f" --mas-workspace-id {self.getParam('mas_workspace_id')}"
|
|
61
|
+
command += f" --mas-workspace-name \"{self.getParam('mas_workspace_name')}\"{newline}"
|
|
62
|
+
|
|
63
|
+
# ECK Integration
|
|
64
|
+
# -----------------------------------------------------------------------------
|
|
65
|
+
if self.getParam('eck_action') == "install":
|
|
66
|
+
command += "--eck"
|
|
67
|
+
if self.getParam('eck_enable_logstash') == "true":
|
|
68
|
+
command += f"--eck-enable-logstash{newline}"
|
|
69
|
+
if self.getParam('eck_remote_es_hosts') != "":
|
|
70
|
+
command += f"--eck-remote-es-hosts \"{self.getParam('eck_remote_es_hosts')}\"{newline}"
|
|
71
|
+
if self.getParam('eck_remote_es_username') != "":
|
|
72
|
+
command += f"--eck-remote-es-username \"{self.getParam('eck_remote_es_username')}\""
|
|
73
|
+
if self.getParam('eck_remote_es_password') != "":
|
|
74
|
+
command += f"--eck-remote-es-password $ES_PASSWORD{newline}"
|
|
75
|
+
|
|
76
|
+
# MAS Advanced Configuration
|
|
77
|
+
# -----------------------------------------------------------------------------
|
|
78
|
+
if self.getParam('mas_superuser_username') != "":
|
|
79
|
+
command += f" --mas-superuser-username \"{self.getParam('mas_superuser_username')}\""
|
|
80
|
+
if self.getParam('mas_superuser_password') != "":
|
|
81
|
+
command += f" --mas-superuser-password $SUPERUSER_PASSWORD{newline}"
|
|
82
|
+
|
|
83
|
+
if self.localConfigDir is not None:
|
|
84
|
+
command += f" --additional-configs \"{self.localConfigDir}\"{newline}"
|
|
85
|
+
if self.getParam('pod_templates') != "":
|
|
86
|
+
command += f" --pod-templates \"{self.getParam('pod_templates')}\"{newline}"
|
|
87
|
+
|
|
88
|
+
if self.operationalMode == 2:
|
|
89
|
+
command += f" --non-prod{newline}"
|
|
90
|
+
|
|
91
|
+
if self.getParam('mas_trust_default_cas') == "false":
|
|
92
|
+
command += f" --disable-ca-trust{newline}"
|
|
93
|
+
|
|
94
|
+
if self.getParam('mas_manual_cert_mgmt') == True:
|
|
95
|
+
command += f" --manual-certificates \"{self.getParam('mas_manual_cert_dir')}\"{newline}"
|
|
96
|
+
|
|
97
|
+
if self.getParam('mas_enable_walkme') == "false":
|
|
98
|
+
command += f" --disable-walkme{newline}"
|
|
99
|
+
|
|
100
|
+
# Storage
|
|
101
|
+
# -----------------------------------------------------------------------------
|
|
102
|
+
command += f" --storage-class-rwo \"{self.getParam('storage_class_rwo')}\""
|
|
103
|
+
command += f" --storage-class-rwx \"{self.getParam('storage_class_rwx')}\"{newline}"
|
|
104
|
+
command += f" --storage-pipeline \"{self.pipelineStorageClass}\""
|
|
105
|
+
command += f" --storage-accessmode \"{self.pipelineStorageAccessMode}\"{newline}"
|
|
106
|
+
|
|
107
|
+
# IBM Suite License Service
|
|
108
|
+
# -----------------------------------------------------------------------------
|
|
109
|
+
command += f" --license-file \"{self.slsLicenseFileLocal}\"{newline}"
|
|
110
|
+
|
|
111
|
+
# IBM Data Reporting Operator (DRO)
|
|
112
|
+
# -----------------------------------------------------------------------------
|
|
113
|
+
command += f" --uds-email \"{self.getParam('uds_contact_email')}\""
|
|
114
|
+
command += f" --uds-firstname \"{self.getParam('uds_contact_firstname')}\""
|
|
115
|
+
command += f" --uds-lastname \"{self.getParam('uds_contact_lastname')}\"{newline}"
|
|
116
|
+
if self.getParam('dro_namespace') != "":
|
|
117
|
+
command += f" --dro-namespace \"{self.getParam('dro_namespace')}\"{newline}"
|
|
118
|
+
|
|
119
|
+
# MongoDb Community Operator
|
|
120
|
+
# -----------------------------------------------------------------------------
|
|
121
|
+
if self.getParam('mongodb_namespace') != "":
|
|
122
|
+
command += f" --mongodb-namespace \"{self.getParam('mongodb_namespace')}\"{newline}"
|
|
123
|
+
|
|
124
|
+
# OCP Configuration
|
|
125
|
+
# -----------------------------------------------------------------------------
|
|
126
|
+
if self.getParam('ocp_ingress_tls_secret_name') != "":
|
|
127
|
+
command += f" --ocp-ingress-tls-secret-name \"{self.getParam('ocp_ingress_tls_secret_name')}\"{newline}"
|
|
128
|
+
|
|
129
|
+
# MAS Applications
|
|
130
|
+
# -----------------------------------------------------------------------------
|
|
131
|
+
if self.installAssist:
|
|
132
|
+
command += f" --assist-channel \"{self.getParam('mas_app_channel_assist')}\"{newline}"
|
|
133
|
+
if self.installIoT:
|
|
134
|
+
command += f" --iot-channel \"{self.getParam('mas_app_channel_iot')}\"{newline}"
|
|
135
|
+
if self.installMonitor:
|
|
136
|
+
command += f" --monitor-channel \"{self.getParam('mas_app_channel_monitor')}\"{newline}"
|
|
137
|
+
if self.installManage:
|
|
138
|
+
command += f" --manage-channel \"{self.getParam('mas_app_channel_manage')}\"{newline}"
|
|
139
|
+
if self.installOptimizer:
|
|
140
|
+
command += f" --optimizer-channel \"{self.getParam('mas_app_channel_optimizer')}\""
|
|
141
|
+
command += f" --optimizer-plan \"{self.getParam('mas_app_plan_optimizer')}\"{newline}"
|
|
142
|
+
if self.installPredict:
|
|
143
|
+
command += f" --predict-channel \"{self.getParam('mas_app_channel_predict')}\"{newline}"
|
|
144
|
+
if self.installInspection:
|
|
145
|
+
command += f" --visualinspection-channel \"{self.getParam('mas_app_channel_visualinspection')}\"{newline}"
|
|
146
|
+
|
|
147
|
+
# Arcgis
|
|
148
|
+
# -----------------------------------------------------------------------------
|
|
149
|
+
# TODO: Add ArcGis after we have properly fixed how it's installed
|
|
150
|
+
|
|
151
|
+
# Manage Advanced Settings
|
|
152
|
+
# -----------------------------------------------------------------------------
|
|
153
|
+
if self.installManage:
|
|
154
|
+
command += f" --manage-jdbc \"{self.getParam('mas_appws_bindings_jdbc_manage')}\"{newline}"
|
|
155
|
+
command += f" --manage-components \"{self.getParam('mas_appws_components')}\"{newline}"
|
|
156
|
+
|
|
157
|
+
if self.getParam('mas_app_settings_server_bundles_size') != "":
|
|
158
|
+
command += f" --manage-server-bundle-size \"{self.getParam('mas_app_settings_server_bundles_size')}\"{newline}"
|
|
159
|
+
if self.getParam('mas_app_settings_default_jms') != "":
|
|
160
|
+
command += f" --manage-jms \"{self.getParam('mas_app_settings_default_jms')}\"{newline}"
|
|
161
|
+
if self.getParam('mas_app_settings_persistent_volumes_flag') == "true":
|
|
162
|
+
command += f" --manage-persistent-volumes{newline}"
|
|
163
|
+
if self.getParam('mas_app_settings_demodata') == "true":
|
|
164
|
+
command += f" --manage-demodata{newline}"
|
|
165
|
+
|
|
166
|
+
if self.getParam('mas_app_settings_customization_archive_name') != "":
|
|
167
|
+
command += f" --manage-customization-archive-name \"{self.getParam('mas_app_settings_customization_archive_name')}\"{newline}"
|
|
168
|
+
if self.getParam('mas_app_settings_customization_archive_url') != "":
|
|
169
|
+
command += f" --manage-customization-archive-url \"{self.getParam('mas_app_settings_customization_archive_url')}\"{newline}"
|
|
170
|
+
if self.getParam('mas_app_settings_customization_archive_username') != "":
|
|
171
|
+
command += f" --manage-customization-archive-username \"{self.getParam('mas_app_settings_customization_archive_username')}\"{newline}"
|
|
172
|
+
if self.getParam('mas_app_settings_customization_archive_password') != "":
|
|
173
|
+
command += f" --manage-customization-archive-password $CUSTOMIZATION_PASSWORD{newline}"
|
|
174
|
+
|
|
175
|
+
if self.getParam('mas_app_settings_tablespace') != "":
|
|
176
|
+
command += f" --manage-db-tablespace \"{self.getParam('mas_app_settings_tablespace')}\"{newline}"
|
|
177
|
+
if self.getParam('mas_app_settings_indexspace') != "":
|
|
178
|
+
command += f" --manage-db-indexspace \"{self.getParam('mas_app_settings_indexspace')}\"{newline}"
|
|
179
|
+
if self.getParam('mas_app_settings_db2_schema') != "":
|
|
180
|
+
command += f" --manage-db-schema \"{self.getParam('mas_app_settings_db2_schema')}\"{newline}"
|
|
181
|
+
|
|
182
|
+
if self.getParam('mas_app_settings_crypto_key') != "":
|
|
183
|
+
command += f" --manage-crypto-key $CRYPTO_KEY{newline}"
|
|
184
|
+
if self.getParam('mas_app_settings_cryptox_key') != "":
|
|
185
|
+
command += f" --manage-cryptox-key $CRYPTOX_KEY{newline}"
|
|
186
|
+
if self.getParam('mas_app_settings_old_crypto_key') != "":
|
|
187
|
+
command += f" --manage-old-crypto-key $OLD_CRYPTO_KEY{newline}"
|
|
188
|
+
if self.getParam('mas_app_settings_old_cryptox_key') != "":
|
|
189
|
+
command += f" --manage-old-cryptox-key $OLD_CRYPTOX_KEY{newline}"
|
|
190
|
+
if self.getParam('mas_app_settings_override_encryption_secrets_flag') == "true":
|
|
191
|
+
command += f" --manage-override-encryption-secrets \"{newline}"
|
|
192
|
+
|
|
193
|
+
if self.getParam('mas_app_settings_base_lang') != "":
|
|
194
|
+
command += f" --manage-base-language \"{self.getParam('mas_app_settings_base_lang')}\"{newline}"
|
|
195
|
+
if self.getParam('mas_app_settings_secondary_langs') != "":
|
|
196
|
+
command += f" --manage-secondary-languages \"{self.getParam('mas_app_settings_secondary_langs')}\"{newline}"
|
|
197
|
+
|
|
198
|
+
if self.getParam('mas_app_settings_server_timezone') != "":
|
|
199
|
+
command += f" --manage-server-timezone \"{self.getParam('mas_app_settings_server_timezone')}\"{newline}"
|
|
200
|
+
|
|
201
|
+
# IBM Cloud Pak for Data
|
|
202
|
+
# -----------------------------------------------------------------------------
|
|
203
|
+
if self.getParam('cpd_product_version') != "":
|
|
204
|
+
command += f" --cp4d-version \"{self.getParam('cpd_product_version')}\""
|
|
205
|
+
if self.getParam('cpd_install_spss') == "install":
|
|
206
|
+
command += f" --cp4d-install-spss"
|
|
207
|
+
if self.getParam('cpd_install_openscale') == "install":
|
|
208
|
+
command += f" --cp4d-install-openscal"
|
|
209
|
+
if self.getParam('cpd_install_cognos') == "install":
|
|
210
|
+
command += f" --cp4d-install-cognos"
|
|
211
|
+
command += newline
|
|
212
|
+
|
|
213
|
+
# IBM Db2 Universal Operator
|
|
214
|
+
# -----------------------------------------------------------------------------
|
|
215
|
+
if self.getParam('db2_system') == "install" or self.getParam('db2_manage') == "install":
|
|
216
|
+
if self.getParam('db2_system') == "install":
|
|
217
|
+
command += f" --db2-system{newline}"
|
|
218
|
+
if self.getParam('db2_manage') == "install":
|
|
219
|
+
command += f" --db2-manage{newline}"
|
|
220
|
+
|
|
221
|
+
if self.getParam('db2_channel') != "":
|
|
222
|
+
command += f" --db2-channel \"{self.getParam('db2_channel')}\"{newline}"
|
|
223
|
+
if self.getParam('db2_namespace') != "":
|
|
224
|
+
command += f" --db2-namespace \"{self.getParam('db2_namespace')}\"{newline}"
|
|
225
|
+
|
|
226
|
+
if self.getParam('db2_type') != "":
|
|
227
|
+
command += f" --db2-type \"{self.getParam('db2_type')}\"{newline}"
|
|
228
|
+
if self.getParam('db2_timezone') != "":
|
|
229
|
+
command += f" --db2-timezone \"{self.getParam('db2_timezone')}\"{newline}"
|
|
230
|
+
|
|
231
|
+
if self.getParam('db2_affinity_key') != "":
|
|
232
|
+
command += f" --db2-affinity-key \"{self.getParam('db2_affinity_key')}\"{newline}"
|
|
233
|
+
if self.getParam('db2_affinity_value') != "":
|
|
234
|
+
command += f" --db2-affinity_value \"{self.getParam('db2_affinity_value')}\"{newline}"
|
|
235
|
+
|
|
236
|
+
if self.getParam('db2_tolerate_key') != "":
|
|
237
|
+
command += f" --db2-tolerate-key \"{self.getParam('db2_tolerate_key')}\"{newline}"
|
|
238
|
+
if self.getParam('db2_tolerate_value') != "":
|
|
239
|
+
command += f" --db2-tolerate-value \"{self.getParam('db2_tolerate_value')}\"{newline}"
|
|
240
|
+
if self.getParam('db2_tolerate_effect') != "":
|
|
241
|
+
command += f" --db2-tolerate-effect \"{self.getParam('db2_tolerate_effect')}\"{newline}"
|
|
242
|
+
|
|
243
|
+
if self.getParam('db2_cpu_requests') != "":
|
|
244
|
+
command += f" --db2-cpu-requests \"{self.getParam('db2_cpu_requests')}\"{newline}"
|
|
245
|
+
if self.getParam('db2_cpu_limits') != "":
|
|
246
|
+
command += f" --db2-cpu-limits \"{self.getParam('db2_cpu_limits')}\"{newline}"
|
|
247
|
+
|
|
248
|
+
if self.getParam('db2_memory_requests') != "":
|
|
249
|
+
command += f" --db2-memory-requests \"{self.getParam('db2_memory_requests')}\"{newline}"
|
|
250
|
+
if self.getParam('db2_memory_limits') != "":
|
|
251
|
+
command += f" --db2-memory-limits \"{self.getParam('db2_memory_limits')}\"{newline}"
|
|
252
|
+
|
|
253
|
+
if self.getParam('db2_backup_storage_size') != "":
|
|
254
|
+
command += f" --db2-backup-storage \"{self.getParam('db2_backup_storage_size')}\"{newline}"
|
|
255
|
+
if self.getParam('db2_data_storage_size') != "":
|
|
256
|
+
command += f" --db2-data-storage \"{self.getParam('db2_data_storage_size')}\"{newline}"
|
|
257
|
+
if self.getParam('db2_logs_storage_size') != "":
|
|
258
|
+
command += f" --db2-logs-storage \"{self.getParam('db2_logs_storage_size')}\"{newline}"
|
|
259
|
+
if self.getParam('db2_meta_storage_size') != "":
|
|
260
|
+
command += f" --db2-meta-storage \"{self.getParam('db2_meta_storage_size')}\"{newline}"
|
|
261
|
+
if self.getParam('db2_temp_storage_size') != "":
|
|
262
|
+
command += f" --db2-temp-storage \"{self.getParam('db2_temp_storage_size')}\"{newline}"
|
|
263
|
+
|
|
264
|
+
# Kafka - Common
|
|
265
|
+
# -----------------------------------------------------------------------------
|
|
266
|
+
if self.getParam('kafka_provider') != "":
|
|
267
|
+
command += f" --kafka-provider \"{self.getParam('kafka_provider')}\"{newline}"
|
|
268
|
+
|
|
269
|
+
if self.getParam('kafka_username') != "":
|
|
270
|
+
command += f" --kafka-username \"{self.getParam('kafka_username')}\"{newline}"
|
|
271
|
+
if self.getParam('kafka_password') != "":
|
|
272
|
+
command += f" --kafka-password $KAFKA_PASSWORD{newline}"
|
|
273
|
+
|
|
274
|
+
# Kafka - Strimzi & AMQ Streams
|
|
275
|
+
# -----------------------------------------------------------------------------
|
|
276
|
+
if self.getParam('kafka_namespace') != "":
|
|
277
|
+
command += f" --kafka-namespace \"{self.getParam('kafka_namespace')}\"{newline}"
|
|
278
|
+
if self.getParam('kafka_version') != "":
|
|
279
|
+
command += f" --kafka-version \"{self.getParam('kafka_version')}\"{newline}"
|
|
280
|
+
|
|
281
|
+
# Kafka - MSK
|
|
282
|
+
# -----------------------------------------------------------------------------
|
|
283
|
+
if self.getParam('aws_msk_instance_type') != "":
|
|
284
|
+
command += f" --msk-instance-type \"{self.getParam('aws_msk_instance_type')}\""
|
|
285
|
+
command += f" --msk-instance-nodes \"{self.getParam('aws_msk_instance_nodes')}\""
|
|
286
|
+
command += f" --msk-instance-volume-size \"{self.getParam('aws_msk_instance_volume_size')}\"{newline}"
|
|
287
|
+
|
|
288
|
+
command += f" --msk-cidr-az1 \"{self.getParam('aws_msk_cidr_az1')}\""
|
|
289
|
+
command += f" --msk-cidr-az2 \"{self.getParam('aws_msk_cidr_az1')}\""
|
|
290
|
+
command += f" --msk-cidr-az3 \"{self.getParam('aws_msk_cidr_az1')}\"{newline}"
|
|
291
|
+
|
|
292
|
+
command += f" --msk-cidr-egress \"{self.getParam('aws_msk_egress_cidr')}\""
|
|
293
|
+
command += f" --msk-cidr-ingress \"{self.getParam('aws_msk_ingress_cidr')}\"{newline}"
|
|
294
|
+
|
|
295
|
+
# Kafka - Event Streams
|
|
296
|
+
# -----------------------------------------------------------------------------
|
|
297
|
+
if self.getParam('eventstreams_instance_name') != "":
|
|
298
|
+
command += f" --eventstreams-resource-group \"{self.getParam('eventstreams_resource_group')}\""
|
|
299
|
+
command += f" --eventstreams-instance-name \"{self.getParam('eventstreams_instance_name')}\""
|
|
300
|
+
command += f" --eventstreams-instance-location \"{self.getParam('eventstreams_instance_location')}\"{newline}"
|
|
301
|
+
|
|
302
|
+
# COS
|
|
303
|
+
# -----------------------------------------------------------------------------
|
|
304
|
+
if self.getParam('cos_type') != "":
|
|
305
|
+
command += f" --cos \"{self.getParam('cos_type')}\""
|
|
306
|
+
if self.getParam('cos_resourcegroup') != "":
|
|
307
|
+
command += f" --cos-resourcegroup \"{self.getParam('cos_resourcegroup')}\""
|
|
308
|
+
command += newline
|
|
309
|
+
|
|
310
|
+
# Turbonomic Integration
|
|
311
|
+
# -----------------------------------------------------------------------------
|
|
312
|
+
if self.getParam('turbonomic_target_name') != "":
|
|
313
|
+
command += f" --turbonomic-name \"{self.getParam('turbonomic_target_name')}\""
|
|
314
|
+
command += f" --turbonomic-url \"{self.getParam('turbonomic_server_url')}\""
|
|
315
|
+
command += f" --turbonomic-version \"{self.getParam('turbonomic_server_version')}\""
|
|
316
|
+
command += f" --turbonomic-username \"{self.getParam('turbonomic_username')}\""
|
|
317
|
+
command += f" --turbonomic-password \"{self.getParam('turbonomic_password')}\"{newline}"
|
|
318
|
+
|
|
319
|
+
# Cloud Providers
|
|
320
|
+
# -----------------------------------------------------------------------------
|
|
321
|
+
if self.getParam('ibmcloud_apikey') != "":
|
|
322
|
+
command += f" --ibmcloud-apikey $IBMCLOUD_APIKEY{newline}"
|
|
323
|
+
|
|
324
|
+
if self.getParam('aws_access_key_id') != "":
|
|
325
|
+
command += f" --aws-access-key-id $AWS_ACCESS_KEY_ID{newline}"
|
|
326
|
+
if self.getParam('secret_access_key') != "":
|
|
327
|
+
command += f" --secret-access-key $SECRET_ACCESS_KEY{newline}"
|
|
328
|
+
command += f" --aws-region \"{self.getParam('aws_region')}\""
|
|
329
|
+
command += f" --aws-vpc-id \"{self.getParam('aws_vpc_id')}\""
|
|
330
|
+
|
|
331
|
+
# Development Mode
|
|
332
|
+
# -----------------------------------------------------------------------------
|
|
333
|
+
if self.getParam('artifactory_username') != "":
|
|
334
|
+
command += f" --artifactory-username $ARTIFACTORY_USERNAME --artifactory-token $ARTIFACTORY_TOKEN{newline}"
|
|
335
|
+
|
|
336
|
+
# Approvals
|
|
337
|
+
# -----------------------------------------------------------------------------
|
|
338
|
+
if self.getParam('approval_core') != "":
|
|
339
|
+
command += f" --approval-core \"{self.getParam('approval_core')}\"{newline}"
|
|
340
|
+
if self.getParam('approval_assist') != "":
|
|
341
|
+
command += f" --approval-assist \"{self.getParam('approval_assist')}\"{newline}"
|
|
342
|
+
if self.getParam('approval_iot') != "":
|
|
343
|
+
command += f" --approval-iot \"{self.getParam('approval_iot')}\"{newline}"
|
|
344
|
+
if self.getParam('approval_manage') != "":
|
|
345
|
+
command += f" --approval-manage \"{self.getParam('approval_manage')}\"{newline}"
|
|
346
|
+
if self.getParam('approval_monitor') != "":
|
|
347
|
+
command += f" --approval-monitor \"{self.getParam('approval_monitor')}\"{newline}"
|
|
348
|
+
if self.getParam('approval_optimizer') != "":
|
|
349
|
+
command += f" --approval-optimizer \"{self.getParam('approval_optimizer')}\"{newline}"
|
|
350
|
+
if self.getParam('approval_predict') != "":
|
|
351
|
+
command += f" --approval-predict \"{self.getParam('approval_predict')}\"{newline}"
|
|
352
|
+
if self.getParam('approval_visualinspection') != "":
|
|
353
|
+
command += f" --approval-visualinspection \"{self.getParam('approval_visualinspection')}\"{newline}"
|
|
354
|
+
|
|
355
|
+
# More Options
|
|
356
|
+
# -----------------------------------------------------------------------------
|
|
357
|
+
if self.devMode:
|
|
358
|
+
command += f" --dev-mode{newline}"
|
|
359
|
+
if not self.waitForPVC:
|
|
360
|
+
command += f" --no-wait-for-pvc{newline}"
|
|
361
|
+
if self.getParam('skip_pre_check') == True:
|
|
362
|
+
command += f" --skip-pre-check{newline}"
|
|
363
|
+
if self.getParam('skip_grafana_install') == True:
|
|
364
|
+
command += f" --skip-grafana-install{newline}"
|
|
365
|
+
|
|
366
|
+
command += " --accept-license --no-confirm"
|
|
367
|
+
return command
|
mas/cli/install/argParser.py
CHANGED
|
@@ -41,6 +41,11 @@ catArgGroup.add_argument(
|
|
|
41
41
|
required=False,
|
|
42
42
|
help="IBM Maximo Operator Catalog to install"
|
|
43
43
|
)
|
|
44
|
+
catArgGroup.add_argument(
|
|
45
|
+
"--mas-catalog-digest",
|
|
46
|
+
required=False,
|
|
47
|
+
help="IBM Maximo Operator Catalog Digest, only required when installing development catalog sources"
|
|
48
|
+
)
|
|
44
49
|
catArgGroup.add_argument(
|
|
45
50
|
"--ibm-entitlement-key",
|
|
46
51
|
required=False,
|
|
@@ -148,6 +153,14 @@ masAdvancedArgGroup.add_argument(
|
|
|
148
153
|
required=False,
|
|
149
154
|
help="Path to directory containing the certificates to be applied"
|
|
150
155
|
)
|
|
156
|
+
masAdvancedArgGroup.add_argument(
|
|
157
|
+
"--disable-walkme",
|
|
158
|
+
dest="mas_enable_walkme",
|
|
159
|
+
required=False,
|
|
160
|
+
help="Disable MAS guided tour",
|
|
161
|
+
action="store_const",
|
|
162
|
+
const="false"
|
|
163
|
+
)
|
|
151
164
|
|
|
152
165
|
# Storage
|
|
153
166
|
# -----------------------------------------------------------------------------
|
|
@@ -456,7 +469,7 @@ cpdAppsArgGroup.add_argument(
|
|
|
456
469
|
const="install"
|
|
457
470
|
)
|
|
458
471
|
cpdAppsArgGroup.add_argument(
|
|
459
|
-
"--cp4d-
|
|
472
|
+
"--cp4d-install-openscale",
|
|
460
473
|
dest="cpd_install_openscale",
|
|
461
474
|
required=False,
|
|
462
475
|
help="Add Watson Openscale as part of Cloud Pak for Data",
|
|
@@ -587,7 +600,6 @@ db2ArgGroup.add_argument(
|
|
|
587
600
|
help="Customize Db2 storage capacity"
|
|
588
601
|
)
|
|
589
602
|
|
|
590
|
-
|
|
591
603
|
# Kafka - Common
|
|
592
604
|
# -----------------------------------------------------------------------------
|
|
593
605
|
kafkaCommonArgGroup = installArgParser.add_argument_group("Kafka - Common")
|
|
@@ -676,23 +688,39 @@ mskArgGroup.add_argument(
|
|
|
676
688
|
|
|
677
689
|
# Kafka - Event Streams
|
|
678
690
|
# -----------------------------------------------------------------------------
|
|
679
|
-
|
|
680
|
-
|
|
691
|
+
eventstreamsArgGroup = installArgParser.add_argument_group("Kafka - Event Streams")
|
|
692
|
+
eventstreamsArgGroup.add_argument(
|
|
681
693
|
"--eventstreams-resource-group",
|
|
682
694
|
required=False,
|
|
683
695
|
help="Set IBM Cloud resource group to target the Event Streams instance provisioning"
|
|
684
696
|
)
|
|
685
|
-
|
|
697
|
+
eventstreamsArgGroup.add_argument(
|
|
686
698
|
"--eventstreams-instance-name",
|
|
687
699
|
required=False,
|
|
688
700
|
help="Set IBM Event Streams instance name"
|
|
689
701
|
)
|
|
690
|
-
|
|
702
|
+
eventstreamsArgGroup.add_argument(
|
|
691
703
|
"--eventstreams-instance-location",
|
|
692
704
|
required=False,
|
|
693
705
|
help="Set IBM Event Streams instance location"
|
|
694
706
|
)
|
|
695
707
|
|
|
708
|
+
# COS
|
|
709
|
+
# -----------------------------------------------------------------------------
|
|
710
|
+
cosArgGroup = installArgParser.add_argument_group("Cloud Object Storage")
|
|
711
|
+
cosArgGroup.add_argument(
|
|
712
|
+
"--cos",
|
|
713
|
+
dest="cos_type",
|
|
714
|
+
required=False,
|
|
715
|
+
help="Set cloud object storage provider. Supported options are `ibm` and `ocs`",
|
|
716
|
+
choices=["ibm", "ocs"]
|
|
717
|
+
)
|
|
718
|
+
cosArgGroup.add_argument(
|
|
719
|
+
"--cos-resourcegroup",
|
|
720
|
+
required=False,
|
|
721
|
+
help="When using IBM COS, set the resource group where the instance will run"
|
|
722
|
+
)
|
|
723
|
+
|
|
696
724
|
# Turbonomic Integration
|
|
697
725
|
# -----------------------------------------------------------------------------
|
|
698
726
|
turboArgGroup = installArgParser.add_argument_group("Turbonomic Integration")
|
|
@@ -161,16 +161,16 @@ class AdditionalConfigsMixin():
|
|
|
161
161
|
},
|
|
162
162
|
"mas_app_channel_optimizer": {
|
|
163
163
|
"dir": self.getParam("mas_manual_cert_dir") + "/optimizer/",
|
|
164
|
-
"keyPrefix": "optimizer."
|
|
164
|
+
"keyPrefix": "optimizer."
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
|
|
167
|
+
|
|
168
168
|
for file in ["ca.crt", "tls.crt", "tls.key"]:
|
|
169
169
|
if file not in map(path.basename, glob(f'{self.getParam("mas_manual_cert_dir")}/core/*')):
|
|
170
170
|
self.fatalError(f'{file} is not present in {self.getParam("mas_manual_cert_dir")}/core/')
|
|
171
171
|
for ext in extensions:
|
|
172
172
|
certsSecret = self.addFilesToSecret(certsSecret, self.getParam("mas_manual_cert_dir")+'/core/', ext, "core.")
|
|
173
|
-
|
|
173
|
+
|
|
174
174
|
for app in apps:
|
|
175
175
|
if self.getParam(app) != "":
|
|
176
176
|
for file in ["ca.crt", "tls.crt", "tls.key"]:
|
|
@@ -181,7 +181,6 @@ class AdditionalConfigsMixin():
|
|
|
181
181
|
|
|
182
182
|
self.certsSecret = certsSecret
|
|
183
183
|
|
|
184
|
-
|
|
185
184
|
def addFilesToSecret(self, secretDict: dict, configPath: str, extension: str, keyPrefix: str='') -> dict:
|
|
186
185
|
"""
|
|
187
186
|
Add file (or files) to pipeline-additional-configs
|
|
@@ -52,13 +52,21 @@ class ManageSettingsMixin():
|
|
|
52
52
|
self.manageSettingsCustomizationArchive()
|
|
53
53
|
self.manageSettingsOther()
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
self.
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
# Default to RWX storage classes, but fall back to RWO in SNO or when user
|
|
56
|
+
# has chosen not to provide a RWX storage class
|
|
57
|
+
storageClass = self.getParam("storage_class_rwx")
|
|
58
|
+
accessMode = "ReadWriteMany"
|
|
59
|
+
if self.isSNO() or self.getParam("storage_class_rwx") == "none":
|
|
60
|
+
storageClass = self.getParam("storage_class_rwo")
|
|
61
|
+
accessMode = "ReadWriteOnce"
|
|
62
|
+
|
|
63
|
+
self.setParam("mas_app_settings_doclinks_pvc_storage_class", storageClass)
|
|
64
|
+
self.setParam("mas_app_settings_bim_pvc_storage_class", storageClass)
|
|
65
|
+
self.setParam("mas_app_settings_jms_queue_pvc_storage_class", storageClass)
|
|
66
|
+
|
|
67
|
+
self.setParam("mas_app_settings_doclinks_pvc_accessmode", accessMode)
|
|
68
|
+
self.setParam("mas_app_settings_bim_pvc_accessmode", accessMode)
|
|
69
|
+
self.setParam("mas_app_settings_jms_queue_pvc_accessmode", accessMode)
|
|
62
70
|
|
|
63
71
|
def manageSettingsComponents(self) -> None:
|
|
64
72
|
self.printH2("Maximo Manage Components")
|
|
@@ -103,8 +111,8 @@ class ManageSettingsMixin():
|
|
|
103
111
|
|
|
104
112
|
if self.yesOrNo("Customize database settings"):
|
|
105
113
|
self.promptForString("Schema", "mas_app_settings_db2_schema", default="maximo")
|
|
106
|
-
self.promptForString("Tablespace", "
|
|
107
|
-
self.promptForString("Indexspace", "
|
|
114
|
+
self.promptForString("Tablespace", "mas_app_settings_tablespace", default="MAXDATA")
|
|
115
|
+
self.promptForString("Indexspace", "mas_app_settings_indexspace", default="MAXINDEX")
|
|
108
116
|
|
|
109
117
|
if self.yesOrNo("Customize database encryption settings"):
|
|
110
118
|
self.promptForString("MXE_SECURITY_CRYPTO_KEY", "mas_app_settings_crypto_key")
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
#
|
|
9
9
|
# *****************************************************************************
|
|
10
10
|
|
|
11
|
+
from mas.devops.mas import isAirgapInstall
|
|
12
|
+
|
|
11
13
|
class TurbonomicSettingsMixin():
|
|
12
14
|
|
|
13
15
|
def configTurbonomic(self) -> None:
|
|
@@ -17,7 +19,9 @@ class TurbonomicSettingsMixin():
|
|
|
17
19
|
" - Learn more: <u>https://www.ibm.com/products/turbonomic</u>"
|
|
18
20
|
])
|
|
19
21
|
|
|
20
|
-
if self.
|
|
22
|
+
if isAirgapInstall(self.dynamicClient):
|
|
23
|
+
self.printHighlight("The Turbonomic Kubernetes Operator does not support disconnected installation at this time")
|
|
24
|
+
elif self.yesOrNo("Configure IBM Turbonomic integration"):
|
|
21
25
|
self.promptForString("Turbonomic Target Name", "turbonomic_target_name")
|
|
22
26
|
self.promptForString("Turbonomic Server URL", "turbonomic_server_url")
|
|
23
27
|
self.promptForString("Turbonomic Server Version", "turbonomic_server_version")
|
mas/cli/install/summarizer.py
CHANGED
|
@@ -81,8 +81,14 @@ class InstallSummarizerMixin():
|
|
|
81
81
|
print()
|
|
82
82
|
self.printSummary("Manual Certificates", "Not Configured")
|
|
83
83
|
|
|
84
|
+
print()
|
|
85
|
+
self.printParamSummary("Enable Guided Tour", "mas_enable_walkme")
|
|
86
|
+
|
|
84
87
|
print()
|
|
85
88
|
self.printParamSummary("Catalog Version", "mas_catalog_version")
|
|
89
|
+
# We only list the digest if it's specified (primary use case is when running development builds in airgap environments)
|
|
90
|
+
if self.getParam("mas_catalog_digest" != ""):
|
|
91
|
+
self.printParamSummary("Catalog Digest", "mas_catalog_digest")
|
|
86
92
|
self.printParamSummary("Subscription Channel", "mas_channel")
|
|
87
93
|
|
|
88
94
|
print()
|
|
@@ -243,6 +249,15 @@ class InstallSummarizerMixin():
|
|
|
243
249
|
self.printSummary("License File", self.slsLicenseFileLocal)
|
|
244
250
|
self.printParamSummary("IBM Open Registry", "sls_icr_cpopen")
|
|
245
251
|
|
|
252
|
+
def cosSummary(self) -> None:
|
|
253
|
+
self.printH2("Cloud Object Storage")
|
|
254
|
+
if self.getParam("cos_type") != "":
|
|
255
|
+
self.printParamSummary("Type", "cos_type")
|
|
256
|
+
if self.getParam("cos_resourcegroup") != "":
|
|
257
|
+
self.printParamSummary("Resource Group", "cos_resourcegroup")
|
|
258
|
+
else:
|
|
259
|
+
self.printSummary("Type", "None")
|
|
260
|
+
|
|
246
261
|
def eckSummary(self) -> None:
|
|
247
262
|
self.printH2("Elastic Cloud on Kubernetes")
|
|
248
263
|
if self.getParam("eck_action") == "install":
|
|
@@ -330,6 +345,7 @@ class InstallSummarizerMixin():
|
|
|
330
345
|
# Application Dependencies
|
|
331
346
|
self.mongoSummary()
|
|
332
347
|
self.db2Summary()
|
|
348
|
+
self.cosSummary()
|
|
333
349
|
self.kafkaSummary()
|
|
334
350
|
self.cp4dSummary()
|
|
335
351
|
self.grafanaSummary()
|