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.

@@ -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
@@ -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-installopenscale",
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
- mskArgGroup = installArgParser.add_argument_group("Kafka - Event Streams")
680
- mskArgGroup.add_argument(
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
- mskArgGroup.add_argument(
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
- mskArgGroup.add_argument(
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
- self.setParam("mas_app_settings_doclinks_pvc_storage_class", self.getParam("storage_class_rwx"))
56
- self.setParam("mas_app_settings_bim_pvc_storage_class", self.getParam("storage_class_rwx"))
57
- self.setParam("mas_app_settings_jms_queue_pvc_storage_class", self.getParam("storage_class_rwx"))
58
-
59
- self.setParam("mas_app_settings_doclinks_pvc_accessmode", "ReadWriteMany")
60
- self.setParam("mas_app_settings_bim_pvc_accessmode", "ReadWriteMany")
61
- self.setParam("mas_app_settings_jms_queue_pvc_accessmode", "ReadWriteMany")
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", "mas_app_settings_db2_tablespace", default="MAXDATA")
107
- self.promptForString("Indexspace", "mas_app_settings_db2_indexspace", default="MAXINDEX")
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.yesOrNo("Configure IBM Turbonomic integration"):
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")
@@ -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()