mas-cli 13.16.0__py3-none-any.whl → 13.17.2__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/aiservice/install/__init__.py +11 -0
- mas/cli/aiservice/install/app.py +810 -0
- mas/cli/aiservice/install/argBuilder.py +232 -0
- mas/cli/aiservice/install/argParser.py +742 -0
- mas/cli/aiservice/install/params.py +120 -0
- mas/cli/aiservice/install/summarizer.py +193 -0
- mas/cli/cli.py +19 -3
- mas/cli/gencfg.py +23 -0
- mas/cli/install/app.py +129 -30
- mas/cli/install/argBuilder.py +57 -9
- mas/cli/install/argParser.py +116 -140
- mas/cli/install/catalogs.py +7 -4
- mas/cli/install/params.py +20 -3
- mas/cli/install/settings/additionalConfigs.py +4 -0
- mas/cli/install/settings/db2Settings.py +82 -36
- mas/cli/install/settings/manageSettings.py +9 -33
- mas/cli/install/settings/mongodbSettings.py +1 -1
- mas/cli/install/summarizer.py +36 -27
- mas/cli/templates/facilities-configs.yml.j2 +25 -0
- mas/cli/templates/ibm-mas-tekton.yaml +11693 -4677
- mas/cli/update/app.py +11 -6
- mas/cli/upgrade/app.py +42 -8
- mas/cli/upgrade/argParser.py +7 -0
- mas/cli/upgrade/settings/__init__.py +19 -0
- mas/cli/validators.py +13 -0
- {mas_cli-13.16.0.data → mas_cli-13.17.2.data}/scripts/mas-cli +4 -0
- {mas_cli-13.16.0.dist-info → mas_cli-13.17.2.dist-info}/METADATA +1 -1
- {mas_cli-13.16.0.dist-info → mas_cli-13.17.2.dist-info}/RECORD +31 -23
- {mas_cli-13.16.0.dist-info → mas_cli-13.17.2.dist-info}/WHEEL +1 -1
- {mas_cli-13.16.0.dist-info → mas_cli-13.17.2.dist-info}/top_level.txt +0 -0
mas/cli/install/argParser.py
CHANGED
|
@@ -170,7 +170,6 @@ masAdvancedArgGroup.add_argument(
|
|
|
170
170
|
required=False,
|
|
171
171
|
help="Configure MAS with a custom domain"
|
|
172
172
|
)
|
|
173
|
-
|
|
174
173
|
masAdvancedArgGroup.add_argument(
|
|
175
174
|
"--disable-walkme",
|
|
176
175
|
dest="mas_enable_walkme",
|
|
@@ -195,6 +194,15 @@ masAdvancedArgGroup.add_argument(
|
|
|
195
194
|
help="Provide the name of the ClusterIssuer to configure MAS to issue certificates",
|
|
196
195
|
)
|
|
197
196
|
|
|
197
|
+
masAdvancedArgGroup.add_argument(
|
|
198
|
+
"--enable-ipv6",
|
|
199
|
+
dest="enable_ipv6",
|
|
200
|
+
required=False,
|
|
201
|
+
help="Configure MAS to run in IP version 6. Before setting this option, be sure your cluster is configured in IP version 6",
|
|
202
|
+
action="store_const",
|
|
203
|
+
const="true"
|
|
204
|
+
)
|
|
205
|
+
|
|
198
206
|
# DNS Configuration - IBM CIS
|
|
199
207
|
# -----------------------------------------------------------------------------
|
|
200
208
|
cisArgGroup = installArgParser.add_argument_group("DNS Configuration - CIS")
|
|
@@ -365,145 +373,9 @@ masAppsArgGroup.add_argument(
|
|
|
365
373
|
help="Install plan for Maximo Optimizer"
|
|
366
374
|
)
|
|
367
375
|
masAppsArgGroup.add_argument(
|
|
368
|
-
"--
|
|
369
|
-
required=False,
|
|
370
|
-
help="Subscription channel for Maximo Ai Broker"
|
|
371
|
-
)
|
|
372
|
-
|
|
373
|
-
# AI Broker
|
|
374
|
-
# -----------------------------------------------------------------------------
|
|
375
|
-
aibrokerArgGroup = installArgParser.add_argument_group("Maximo AI Broker")
|
|
376
|
-
aibrokerArgGroup.add_argument(
|
|
377
|
-
"--mas-aibroker-storage-provider",
|
|
378
|
-
dest="mas_aibroker_storage_provider",
|
|
379
|
-
required=False,
|
|
380
|
-
help="Customize Manage database encryption keys"
|
|
381
|
-
)
|
|
382
|
-
aibrokerArgGroup.add_argument(
|
|
383
|
-
"--mas-aibroker-storage-accesskey",
|
|
384
|
-
dest="mas_aibroker_storage_accesskey",
|
|
385
|
-
required=False,
|
|
386
|
-
help="Customize Manage database encryption keys"
|
|
387
|
-
)
|
|
388
|
-
aibrokerArgGroup.add_argument(
|
|
389
|
-
"--mas-aibroker-storage-secretkey",
|
|
390
|
-
dest="mas_aibroker_storage_secretkey",
|
|
391
|
-
required=False,
|
|
392
|
-
help="Customize Manage database encryption keys"
|
|
393
|
-
)
|
|
394
|
-
aibrokerArgGroup.add_argument(
|
|
395
|
-
"--mas-aibroker-storage-host",
|
|
396
|
-
dest="mas_aibroker_storage_host",
|
|
397
|
-
required=False,
|
|
398
|
-
help="Customize Manage database encryption keys"
|
|
399
|
-
)
|
|
400
|
-
aibrokerArgGroup.add_argument(
|
|
401
|
-
"--mas-aibroker-storage-port",
|
|
402
|
-
dest="mas_aibroker_storage_port",
|
|
403
|
-
required=False,
|
|
404
|
-
help="Customize Manage database encryption keys"
|
|
405
|
-
)
|
|
406
|
-
aibrokerArgGroup.add_argument(
|
|
407
|
-
"--mas-aibroker-storage-ssl",
|
|
408
|
-
dest="mas_aibroker_storage_ssl",
|
|
409
|
-
required=False,
|
|
410
|
-
help="Customize Manage database encryption keys"
|
|
411
|
-
)
|
|
412
|
-
aibrokerArgGroup.add_argument(
|
|
413
|
-
"--mas-aibroker-storage-region",
|
|
414
|
-
dest="mas_aibroker_storage_region",
|
|
415
|
-
required=False,
|
|
416
|
-
help="Customize Manage database encryption keys"
|
|
417
|
-
)
|
|
418
|
-
aibrokerArgGroup.add_argument(
|
|
419
|
-
"--mas-aibroker-storage-pipelines-bucket",
|
|
420
|
-
dest="mas_aibroker_storage_pipelines_bucket",
|
|
421
|
-
required=False,
|
|
422
|
-
help="Customize Manage database encryption keys"
|
|
423
|
-
)
|
|
424
|
-
aibrokerArgGroup.add_argument(
|
|
425
|
-
"--mas-aibroker-storage-tenants-bucket",
|
|
426
|
-
dest="mas_aibroker_storage_tenants_bucket",
|
|
427
|
-
required=False,
|
|
428
|
-
help="Customize Manage database encryption keys"
|
|
429
|
-
)
|
|
430
|
-
aibrokerArgGroup.add_argument(
|
|
431
|
-
"--mas-aibroker-storage-templates-bucket",
|
|
432
|
-
dest="mas_aibroker_storage_templates_bucket",
|
|
433
|
-
required=False,
|
|
434
|
-
help="Customize Manage database encryption keys"
|
|
435
|
-
)
|
|
436
|
-
aibrokerArgGroup.add_argument(
|
|
437
|
-
"--mas-aibroker-tenant-name",
|
|
438
|
-
dest="mas_aibroker_tenant_name",
|
|
439
|
-
required=False,
|
|
440
|
-
help="Customize Manage database encryption keys"
|
|
441
|
-
)
|
|
442
|
-
aibrokerArgGroup.add_argument(
|
|
443
|
-
"--mas-aibroker-watsonxai-apikey",
|
|
444
|
-
dest="mas_aibroker_watsonxai_apikey",
|
|
445
|
-
required=False,
|
|
446
|
-
help="Customize Manage database encryption keys"
|
|
447
|
-
)
|
|
448
|
-
aibrokerArgGroup.add_argument(
|
|
449
|
-
"--mas-aibroker-watsonxai-url",
|
|
450
|
-
dest="mas_aibroker_watsonxai_url",
|
|
451
|
-
required=False,
|
|
452
|
-
help="Customize Manage database encryption keys"
|
|
453
|
-
)
|
|
454
|
-
aibrokerArgGroup.add_argument(
|
|
455
|
-
"--mas-aibroker-watsonxai-project-id",
|
|
456
|
-
dest="mas_aibroker_watsonxai_project_id",
|
|
457
|
-
required=False,
|
|
458
|
-
help="Customize Manage database encryption keys"
|
|
459
|
-
)
|
|
460
|
-
aibrokerArgGroup.add_argument(
|
|
461
|
-
"--mas-aibroker-watsonx-action",
|
|
462
|
-
dest="mas_aibroker_watsonx_action",
|
|
463
|
-
required=False,
|
|
464
|
-
help="Customize Manage database encryption keys"
|
|
465
|
-
)
|
|
466
|
-
aibrokerArgGroup.add_argument(
|
|
467
|
-
"--mas-aibroker-db-host",
|
|
468
|
-
dest="mas_aibroker_db_host",
|
|
469
|
-
required=False,
|
|
470
|
-
help="Customize Manage database encryption keys"
|
|
471
|
-
)
|
|
472
|
-
aibrokerArgGroup.add_argument(
|
|
473
|
-
"--mas-aibroker-db-port",
|
|
474
|
-
dest="mas_aibroker_db_port",
|
|
475
|
-
required=False,
|
|
476
|
-
help="Customize Manage database encryption keys"
|
|
477
|
-
)
|
|
478
|
-
aibrokerArgGroup.add_argument(
|
|
479
|
-
"--mas-aibroker-db-user",
|
|
480
|
-
dest="mas_aibroker_db_user",
|
|
481
|
-
required=False,
|
|
482
|
-
help="Customize Manage database encryption keys"
|
|
483
|
-
)
|
|
484
|
-
aibrokerArgGroup.add_argument(
|
|
485
|
-
"--mas-aibroker-db-database",
|
|
486
|
-
dest="mas_aibroker_db_database",
|
|
487
|
-
required=False,
|
|
488
|
-
help="Customize Manage database encryption keys"
|
|
489
|
-
)
|
|
490
|
-
aibrokerArgGroup.add_argument(
|
|
491
|
-
"--mas-aibroker-db-secret-name",
|
|
492
|
-
dest="mas_aibroker_db_secret_name",
|
|
493
|
-
required=False,
|
|
494
|
-
help="Customize Manage database encryption keys"
|
|
495
|
-
)
|
|
496
|
-
aibrokerArgGroup.add_argument(
|
|
497
|
-
"--mas-aibroker-db-secret-key",
|
|
498
|
-
dest="mas_aibroker_db_secret_key",
|
|
376
|
+
"--facilities-channel",
|
|
499
377
|
required=False,
|
|
500
|
-
help="
|
|
501
|
-
)
|
|
502
|
-
aibrokerArgGroup.add_argument(
|
|
503
|
-
"--mas-aibroker-db-secret-value",
|
|
504
|
-
dest="mas_aibroker_db_secret_value",
|
|
505
|
-
required=False,
|
|
506
|
-
help="Customize Manage database encryption keys"
|
|
378
|
+
help="Subscription channel for Maximo Real Estate and Facilities"
|
|
507
379
|
)
|
|
508
380
|
|
|
509
381
|
# Arcgis
|
|
@@ -684,7 +556,8 @@ manageArgGroup.add_argument(
|
|
|
684
556
|
"--manage-attachments-provider",
|
|
685
557
|
dest="mas_manage_attachments_provider",
|
|
686
558
|
required=False,
|
|
687
|
-
help="Defines the storage provider type to be used to store attachments in Maximo Manage"
|
|
559
|
+
help="Defines the storage provider type to be used to store attachments in Maximo Manage. Supported options are `filestorage`, `ibm` and `aws`.",
|
|
560
|
+
choices=["filestorage", "ibm", "aws"]
|
|
688
561
|
)
|
|
689
562
|
manageArgGroup.add_argument(
|
|
690
563
|
"--manage-attachments-mode",
|
|
@@ -694,6 +567,93 @@ manageArgGroup.add_argument(
|
|
|
694
567
|
choices=["cr", "db"]
|
|
695
568
|
)
|
|
696
569
|
|
|
570
|
+
# Facilities Advanced Settings
|
|
571
|
+
# TODO: Fix type for storage sizes and max conn pool size
|
|
572
|
+
facilitiesArgGroup = installArgParser.add_argument_group("Facilities Advanced Configuration")
|
|
573
|
+
facilitiesArgGroup.add_argument(
|
|
574
|
+
"--facilities-size",
|
|
575
|
+
dest="mas_ws_facilities_size",
|
|
576
|
+
required=False,
|
|
577
|
+
help="Defines the size of Facilities deployment",
|
|
578
|
+
choices=['small', 'medium', 'large'],
|
|
579
|
+
)
|
|
580
|
+
facilitiesArgGroup.add_argument(
|
|
581
|
+
"--facilities-pull-policy",
|
|
582
|
+
dest="mas_ws_facilities_pull_policy",
|
|
583
|
+
required=False,
|
|
584
|
+
help="Defines the pull policy for the images",
|
|
585
|
+
choices=["IfNotPresent", "Always"],
|
|
586
|
+
)
|
|
587
|
+
facilitiesArgGroup.add_argument(
|
|
588
|
+
"--facilities-routes-timeout",
|
|
589
|
+
dest="mas_ws_facilities_routes_timeout",
|
|
590
|
+
required=False,
|
|
591
|
+
help="Defines the timeout for the routes",
|
|
592
|
+
default="600s",
|
|
593
|
+
)
|
|
594
|
+
facilitiesArgGroup.add_argument(
|
|
595
|
+
"--facilities-xml-extension",
|
|
596
|
+
dest="mas_ws_facilities_liberty_extension_XML",
|
|
597
|
+
required=False,
|
|
598
|
+
help="Defines the name of the secret that holds the extensions for Liberty server",
|
|
599
|
+
)
|
|
600
|
+
facilitiesArgGroup.add_argument(
|
|
601
|
+
"--facilities-vault-secret",
|
|
602
|
+
dest="mas_ws_facilities_vault_secret",
|
|
603
|
+
required=False,
|
|
604
|
+
help="Defines the name of the secret that holds the AES Encryption password",
|
|
605
|
+
)
|
|
606
|
+
facilitiesArgGroup.add_argument(
|
|
607
|
+
"--facilities-dwfagent",
|
|
608
|
+
dest="mas_ws_facilities_dwfagents",
|
|
609
|
+
required=False,
|
|
610
|
+
help="Defines the list of dedicates workflow agents",
|
|
611
|
+
type=str
|
|
612
|
+
)
|
|
613
|
+
facilitiesArgGroup.add_argument(
|
|
614
|
+
"--facilities-maxconnpoolsize",
|
|
615
|
+
dest="mas_ws_facilities_db_maxconnpoolsize",
|
|
616
|
+
required=False,
|
|
617
|
+
help="Defines the maximum connection pool size",
|
|
618
|
+
default=200,
|
|
619
|
+
)
|
|
620
|
+
facilitiesArgGroup.add_argument(
|
|
621
|
+
"--facilities-log-storage-class",
|
|
622
|
+
dest="mas_ws_facilities_storage_log_class",
|
|
623
|
+
required=False,
|
|
624
|
+
help="Defines the log storage class",
|
|
625
|
+
)
|
|
626
|
+
facilitiesArgGroup.add_argument(
|
|
627
|
+
"--facilities-log-storage-mode",
|
|
628
|
+
dest="mas_ws_facilities_storage_log_mode",
|
|
629
|
+
required=False,
|
|
630
|
+
help="Defines the log storage mode",
|
|
631
|
+
)
|
|
632
|
+
facilitiesArgGroup.add_argument(
|
|
633
|
+
"--facilities-log-storage-size",
|
|
634
|
+
dest="mas_ws_facilities_storage_log_size",
|
|
635
|
+
required=False,
|
|
636
|
+
help="Defines the logs storage size",
|
|
637
|
+
)
|
|
638
|
+
facilitiesArgGroup.add_argument(
|
|
639
|
+
"--facilities-userfiles-storage-class",
|
|
640
|
+
dest="mas_ws_facilities_storage_userfiles_class",
|
|
641
|
+
required=False,
|
|
642
|
+
help="Defines the user files storage class",
|
|
643
|
+
)
|
|
644
|
+
facilitiesArgGroup.add_argument(
|
|
645
|
+
"--facilities-userfiles-storage-mode",
|
|
646
|
+
dest="mas_ws_facilities_storage_userfiles_mode",
|
|
647
|
+
required=False,
|
|
648
|
+
help="Defines the user files storage mode",
|
|
649
|
+
)
|
|
650
|
+
facilitiesArgGroup.add_argument(
|
|
651
|
+
"--facilities-userfiles-storage-size",
|
|
652
|
+
dest="mas_ws_facilities_storage_userfiles_size",
|
|
653
|
+
required=False,
|
|
654
|
+
help="Defines the user files storage size",
|
|
655
|
+
)
|
|
656
|
+
|
|
697
657
|
# IBM Cloud Pak for Data
|
|
698
658
|
# -----------------------------------------------------------------------------
|
|
699
659
|
cpdAppsArgGroup = installArgParser.add_argument_group("IBM Cloud Pak for Data")
|
|
@@ -773,6 +733,14 @@ db2ArgGroup.add_argument(
|
|
|
773
733
|
action="store_const",
|
|
774
734
|
const="install"
|
|
775
735
|
)
|
|
736
|
+
db2ArgGroup.add_argument(
|
|
737
|
+
"--db2-facilities",
|
|
738
|
+
dest="db2_action_facilities",
|
|
739
|
+
required=False,
|
|
740
|
+
help="Install a dedicated Db2u instance for Maximo Real Estate and Facilities (supported by Facilities)",
|
|
741
|
+
action="store_const",
|
|
742
|
+
const="install"
|
|
743
|
+
)
|
|
776
744
|
db2ArgGroup.add_argument(
|
|
777
745
|
"--db2-type",
|
|
778
746
|
required=False,
|
|
@@ -950,16 +918,19 @@ mskArgGroup.add_argument(
|
|
|
950
918
|
eventstreamsArgGroup = installArgParser.add_argument_group("Kafka - Event Streams")
|
|
951
919
|
eventstreamsArgGroup.add_argument(
|
|
952
920
|
"--eventstreams-resource-group",
|
|
921
|
+
dest="eventstreams_resourcegroup",
|
|
953
922
|
required=False,
|
|
954
923
|
help="Set IBM Cloud resource group to target the Event Streams instance provisioning"
|
|
955
924
|
)
|
|
956
925
|
eventstreamsArgGroup.add_argument(
|
|
957
926
|
"--eventstreams-instance-name",
|
|
927
|
+
dest="eventstreams_name",
|
|
958
928
|
required=False,
|
|
959
929
|
help="Set IBM Event Streams instance name"
|
|
960
930
|
)
|
|
961
931
|
eventstreamsArgGroup.add_argument(
|
|
962
932
|
"--eventstreams-instance-location",
|
|
933
|
+
dest="eventstreams_location",
|
|
963
934
|
required=False,
|
|
964
935
|
help="Set IBM Event Streams instance location"
|
|
965
936
|
)
|
|
@@ -1119,6 +1090,11 @@ approvalsGroup.add_argument(
|
|
|
1119
1090
|
default="",
|
|
1120
1091
|
help="Require approval after the Maximo Visual Inspection workspace has been configured"
|
|
1121
1092
|
)
|
|
1093
|
+
approvalsGroup.add_argument(
|
|
1094
|
+
"--approval-facilities",
|
|
1095
|
+
default="",
|
|
1096
|
+
help="Require approval after the Maximo Real Estate and Facilities workspace has been configured"
|
|
1097
|
+
)
|
|
1122
1098
|
|
|
1123
1099
|
|
|
1124
1100
|
# More Options
|
mas/cli/install/catalogs.py
CHANGED
|
@@ -9,15 +9,18 @@
|
|
|
9
9
|
# *****************************************************************************
|
|
10
10
|
supportedCatalogs = {
|
|
11
11
|
"amd64": [
|
|
12
|
+
"v9-250624-amd64",
|
|
13
|
+
"v9-250501-amd64",
|
|
12
14
|
"v9-250403-amd64",
|
|
13
15
|
"v9-250306-amd64",
|
|
14
|
-
"v9-250206-amd64",
|
|
15
|
-
"v9-250109-amd64",
|
|
16
16
|
],
|
|
17
17
|
"s390x": [
|
|
18
|
+
"v9-250624-s390x",
|
|
19
|
+
"v9-250501-s390x",
|
|
18
20
|
"v9-250403-s390x",
|
|
19
21
|
"v9-250306-s390x",
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
],
|
|
23
|
+
"ppc64le": [
|
|
24
|
+
"v9-250624-ppc64le",
|
|
22
25
|
],
|
|
23
26
|
}
|
mas/cli/install/params.py
CHANGED
|
@@ -61,6 +61,8 @@ optionalParams = [
|
|
|
61
61
|
"mas_appws_components",
|
|
62
62
|
"mas_appws_bindings_health_wsl_flag",
|
|
63
63
|
"mas_domain",
|
|
64
|
+
# IPV6
|
|
65
|
+
"enable_ipv6",
|
|
64
66
|
# SLS
|
|
65
67
|
"sls_namespace",
|
|
66
68
|
# DNS Providers
|
|
@@ -76,6 +78,7 @@ optionalParams = [
|
|
|
76
78
|
# Db2
|
|
77
79
|
"db2_action_system",
|
|
78
80
|
"db2_action_manage",
|
|
81
|
+
"db2_action_facilities",
|
|
79
82
|
"db2_type",
|
|
80
83
|
"db2_timezone",
|
|
81
84
|
"db2_namespace",
|
|
@@ -112,9 +115,9 @@ optionalParams = [
|
|
|
112
115
|
"aws_msk_cidr_az3",
|
|
113
116
|
"aws_msk_egress_cidr",
|
|
114
117
|
"aws_msk_ingress_cidr",
|
|
115
|
-
"
|
|
116
|
-
"
|
|
117
|
-
"
|
|
118
|
+
"eventstreams_resourcegroup",
|
|
119
|
+
"eventstreams_name",
|
|
120
|
+
"eventstreams_location",
|
|
118
121
|
# COS
|
|
119
122
|
"cos_type",
|
|
120
123
|
"cos_resourcegroup",
|
|
@@ -173,6 +176,20 @@ optionalParams = [
|
|
|
173
176
|
"mas_aibroker_db_secret_name",
|
|
174
177
|
"mas_aibroker_db_secret_key",
|
|
175
178
|
"mas_aibroker_db_secret_value",
|
|
179
|
+
# Facilities
|
|
180
|
+
"mas_ws_facilities_size",
|
|
181
|
+
"mas_ws_facilities_routes_timeout",
|
|
182
|
+
"mas_ws_facilities_liberty_extension_XML",
|
|
183
|
+
"mas_ws_facilities_vault_secret",
|
|
184
|
+
"mas_ws_facilities_pull_policy",
|
|
185
|
+
"mas_ws_facilities_storage_log_class",
|
|
186
|
+
"mas_ws_facilities_storage_log_mode",
|
|
187
|
+
"mas_ws_facilities_storage_log_size",
|
|
188
|
+
"mas_ws_facilities_storage_userfiles_class",
|
|
189
|
+
"mas_ws_facilities_storage_userfiles_mode",
|
|
190
|
+
"mas_ws_facilities_storage_userfiles_size",
|
|
191
|
+
"mas_ws_facilities_dwfagents",
|
|
192
|
+
"mas_ws_facilities_db_maxconnpoolsize",
|
|
176
193
|
# Special chars
|
|
177
194
|
"mas_special_characters"
|
|
178
195
|
]
|
|
@@ -163,6 +163,10 @@ class AdditionalConfigsMixin():
|
|
|
163
163
|
"mas_app_channel_optimizer": {
|
|
164
164
|
"dir": self.manualCertsDir + "/optimizer/",
|
|
165
165
|
"keyPrefix": "optimizer."
|
|
166
|
+
},
|
|
167
|
+
"mas_app_channel_facilities": {
|
|
168
|
+
"dir": self.manualCertsDir + "/facilities/",
|
|
169
|
+
"keyPrefix": "facilities."
|
|
166
170
|
}
|
|
167
171
|
}
|
|
168
172
|
|
|
@@ -13,23 +13,28 @@ from prompt_toolkit import print_formatted_text
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class Db2SettingsMixin():
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
# In silentMode, no prompts will show up for "happy path" DB2 configuration scenarios. Prompts will still show up when an input is absolutely required
|
|
17
|
+
# Settings under showAdvancedOptions are always prompted
|
|
18
|
+
def configDb2(self, silentMode=False) -> None:
|
|
19
|
+
if not silentMode:
|
|
20
|
+
self.printH1("Configure Databases")
|
|
18
21
|
# The channel used for Db2 used has not changed since the January 2024 catalog update
|
|
19
22
|
self.params["db2_channel"] = "v110509.0"
|
|
20
23
|
|
|
21
|
-
# If neither Iot or
|
|
22
|
-
if not self.installIoT and not self.installManage:
|
|
24
|
+
# If neither Iot, Manage or Facilities is being installed, we have nothing to do
|
|
25
|
+
if not self.installIoT and not self.installManage and not self.installFacilities:
|
|
23
26
|
print_formatted_text("No applications have been selected that require a Db2 installation")
|
|
24
27
|
self.setParam("db2_action_system", "none")
|
|
25
28
|
self.setParam("db2_action_manage", "none")
|
|
29
|
+
self.setParam("db2_action_facilities", "none")
|
|
26
30
|
return
|
|
27
31
|
|
|
28
|
-
# For now we are limiting users to bring your own database for Manage on s390x
|
|
29
|
-
# Eventually we will be able to remove this clause and allow the standard logic to work for
|
|
30
|
-
if self.architecture == "s390x" and self.installManage:
|
|
32
|
+
# For now we are limiting users to bring your own database for Manage on s390x & ppc64le
|
|
33
|
+
# Eventually we will be able to remove this clause and allow the standard logic to work for s390x, ppc64le and amd64
|
|
34
|
+
if (self.architecture == "s390x" or self.architecture == "ppc64le") and self.installManage:
|
|
35
|
+
# silentMode does not apply for s390x/ppc64le because it requires interaction when selecting local config directory
|
|
31
36
|
self.printDescription([
|
|
32
|
-
"Installation of a Db2 instance using the IBM Db2 Universal Operator is not currently supported on s390x, please provide configuration details for the database you wish to use.",
|
|
37
|
+
"Installation of a Db2 instance using the IBM Db2 Universal Operator is not currently supported on s390x /ppc64le, please provide configuration details for the database you wish to use.",
|
|
33
38
|
])
|
|
34
39
|
instanceId = self.getParam('mas_instance_id')
|
|
35
40
|
workspaceId = self.getParam("mas_workspace_id")
|
|
@@ -50,22 +55,27 @@ class Db2SettingsMixin():
|
|
|
50
55
|
return
|
|
51
56
|
|
|
52
57
|
# Proceed as normal
|
|
53
|
-
# We know we are installing either IoT or
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
# We know we are installing either IoT, Manage or Facilities, and on amd64 target architecture
|
|
59
|
+
if not silentMode:
|
|
60
|
+
self.printDescription([
|
|
61
|
+
f"The installer can setup one or more IBM Db2 instances in your OpenShift cluster for the use of applications that require a JDBC datasource (IoT, {self.manageAppName}, Monitor, & Predict, Real Estate and Facilities) or you may choose to configure MAS to use an existing database"
|
|
62
|
+
])
|
|
57
63
|
|
|
58
64
|
self.setDB2DefaultSettings()
|
|
59
65
|
|
|
60
66
|
instanceId = self.getParam('mas_instance_id')
|
|
61
67
|
# Do we need to set up an IoT database?
|
|
62
68
|
if self.installIoT:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
if not silentMode:
|
|
70
|
+
self.printH2("Database Configuration for Maximo IoT")
|
|
71
|
+
self.printDescription([
|
|
72
|
+
"Maximo IoT requires a shared system-scope Db2 instance because others application in the suite require access to the same database source",
|
|
73
|
+
" - Only IBM Db2 is supported for this database"
|
|
74
|
+
])
|
|
75
|
+
createSystemDb2UsingUniversalOperator = True
|
|
76
|
+
if not silentMode:
|
|
77
|
+
createSystemDb2UsingUniversalOperator = self.yesOrNo("Create system Db2 instance using the IBM Db2 Universal Operator")
|
|
78
|
+
if createSystemDb2UsingUniversalOperator:
|
|
69
79
|
self.setParam("db2_action_system", "install")
|
|
70
80
|
else:
|
|
71
81
|
self.setParam("db2_action_system", "byo")
|
|
@@ -85,28 +95,39 @@ class Db2SettingsMixin():
|
|
|
85
95
|
self.setParam("db2_action_system", "none")
|
|
86
96
|
|
|
87
97
|
if self.installManage:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
98
|
+
if not silentMode:
|
|
99
|
+
self.printH2(f"Database Configuration for Maximo {self.manageAppName}")
|
|
100
|
+
self.printDescription([
|
|
101
|
+
f"Maximo {self.manageAppName} can be configured to share the system Db2 instance or use it's own dedicated database:",
|
|
102
|
+
" - Use of a shared instance has a significant footprint reduction but is only recommended for development/test/demo installs",
|
|
103
|
+
" - In most production systems you will want to use a dedicated database",
|
|
104
|
+
" - IBM Db2, Oracle Database, & Microsoft SQL Server are all supported database options"
|
|
105
|
+
])
|
|
95
106
|
# Determine whether to use the system or a dedicated database
|
|
96
|
-
|
|
107
|
+
reuseSystemDb2 = False
|
|
108
|
+
if self.installIoT:
|
|
109
|
+
if not silentMode:
|
|
110
|
+
reuseSystemDb2 = self.yesOrNo(f"Re-use System Db2 instance for {self.manageAppName} application")
|
|
111
|
+
if reuseSystemDb2:
|
|
97
112
|
# We are going to bind Manage to the system database, which has already been set up in the previous step
|
|
98
113
|
self.setParam("mas_appws_bindings_jdbc_manage", "system")
|
|
99
114
|
self.setParam("db2_action_manage", "none")
|
|
100
115
|
else:
|
|
101
116
|
self.setParam("mas_appws_bindings_jdbc_manage", "workspace-application")
|
|
102
|
-
|
|
117
|
+
createSystemDb2UsingUniversalOperator = True
|
|
118
|
+
if not silentMode:
|
|
119
|
+
createSystemDb2UsingUniversalOperator = self.yesOrNo(f"Create {self.manageAppName} dedicated Db2 instance using the IBM Db2 Universal Operator")
|
|
120
|
+
if createSystemDb2UsingUniversalOperator:
|
|
103
121
|
self.setParam("db2_action_manage", "install")
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
122
|
+
if not silentMode:
|
|
123
|
+
self.printDescription([
|
|
124
|
+
f"Available Db2 instance types for {self.manageAppName}:",
|
|
125
|
+
" 1. DB2 Warehouse (Default option)",
|
|
126
|
+
" 2. DB2 Online Transactional Processing (OLTP)"
|
|
127
|
+
])
|
|
128
|
+
self.promptForListSelect(message=f"Select the {self.manageAppName} dedicated DB2 instance type", options=["db2wh", "db2oltp"], param="db2_type", default="1")
|
|
129
|
+
else:
|
|
130
|
+
self.setParam("db2_type", "db2wh")
|
|
110
131
|
else:
|
|
111
132
|
workspaceId = self.getParam("mas_workspace_id")
|
|
112
133
|
self.setParam("db2_action_manage", "byo")
|
|
@@ -125,8 +146,31 @@ class Db2SettingsMixin():
|
|
|
125
146
|
else:
|
|
126
147
|
self.setParam("db2_action_manage", "none")
|
|
127
148
|
|
|
149
|
+
# Do we need to create and configure a Db2 for Facilities ?
|
|
150
|
+
if self.installFacilities:
|
|
151
|
+
self.printH2("Database Configuration for Maximo Real Estate and Facilities")
|
|
152
|
+
if self.yesOrNo("Create Real Estate and Facilities dedicated Db2 instance using the IBM Db2 Universal Operator"):
|
|
153
|
+
self.setParam("db2_action_facilities", "install")
|
|
154
|
+
else:
|
|
155
|
+
self.setParam("db2_action_facilities", "none")
|
|
156
|
+
instanceId = self.getParam('mas_instance_id')
|
|
157
|
+
workspaceId = self.getParam("mas_workspace_id")
|
|
158
|
+
self.selectLocalConfigDir()
|
|
159
|
+
|
|
160
|
+
# Check if a configuration already exists before creating a new one
|
|
161
|
+
jdbcCfgFile = path.join(self.localConfigDir, f"jdbc-{instanceId}-facilities.yaml")
|
|
162
|
+
print_formatted_text(f"Searching for Real Estate and Facilities database configuration file in {jdbcCfgFile} ...")
|
|
163
|
+
if path.exists(jdbcCfgFile):
|
|
164
|
+
if self.yesOrNo(f"Real Estate and Facilities database configuration file 'jdbc-{instanceId}-facilities.yaml' already exists. Do you want to generate a new one"):
|
|
165
|
+
self.generateJDBCCfg(instanceId=instanceId, scope="workspace-application", workspaceId=workspaceId, appId="facilities", destination=jdbcCfgFile)
|
|
166
|
+
else:
|
|
167
|
+
print_formatted_text(f"Expected file ({jdbcCfgFile}) was not found, generating a valid Real Estate and Facilities database configuration file now ...")
|
|
168
|
+
self.generateJDBCCfg(instanceId=instanceId, scope="workspace-application", workspaceId=workspaceId, appId="facilities", destination=jdbcCfgFile)
|
|
169
|
+
else:
|
|
170
|
+
self.setParam("db2_action_facilities", "none")
|
|
171
|
+
|
|
128
172
|
# Do we need to configure Db2u?
|
|
129
|
-
if self.getParam("db2_action_system") == "install" or self.getParam("db2_action_manage") == "install":
|
|
173
|
+
if self.getParam("db2_action_system") == "install" or self.getParam("db2_action_manage") == "install" or self.getParam("db2_action_facilities") == "install":
|
|
130
174
|
if self.showAdvancedOptions:
|
|
131
175
|
self.printH2("Installation Namespace")
|
|
132
176
|
self.promptForString("Install namespace", "db2_namespace", default="db2u")
|
|
@@ -138,8 +182,10 @@ class Db2SettingsMixin():
|
|
|
138
182
|
f"Note that the same settings are applied to both the IoT and {self.manageAppName} Db2 instances",
|
|
139
183
|
"Use existing node labels and taints to control scheduling of the Db2 workload in your cluster",
|
|
140
184
|
"For more information refer to the Red Hat documentation:",
|
|
141
|
-
" - <Orange><u>https://docs.openshift.com/container-platform/4.
|
|
142
|
-
" - <Orange><u>https://docs.openshift.com/container-platform/4.
|
|
185
|
+
" - <Orange><u>https://docs.openshift.com/container-platform/4.18/nodes/scheduling/nodes-scheduler-node-affinity.html</u></Orange>",
|
|
186
|
+
" - <Orange><u>https://docs.openshift.com/container-platform/4.18/nodes/scheduling/nodes-scheduler-taints-tolerations.html</u></Orange>",
|
|
187
|
+
" - <Orange><u>https://docs.openshift.com/container-platform/4.17/nodes/scheduling/nodes-scheduler-node-affinity.html</u></Orange>",
|
|
188
|
+
" - <Orange><u>https://docs.openshift.com/container-platform/4.17/nodes/scheduling/nodes-scheduler-taints-tolerations.html</u></Orange>"
|
|
143
189
|
])
|
|
144
190
|
|
|
145
191
|
if self.yesOrNo("Configure node affinity"):
|
|
@@ -63,13 +63,13 @@ class ManageSettingsMixin():
|
|
|
63
63
|
storageClass = self.getParam("storage_class_rwo")
|
|
64
64
|
accessMode = "ReadWriteOnce"
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
self.setParam("mas_app_settings_doclinks_pvc_storage_class", storageClass)
|
|
67
|
+
self.setParam("mas_app_settings_bim_pvc_storage_class", storageClass)
|
|
68
|
+
self.setParam("mas_app_settings_jms_queue_pvc_storage_class", storageClass)
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
self.setParam("mas_app_settings_doclinks_pvc_accessmode", accessMode)
|
|
71
|
+
self.setParam("mas_app_settings_bim_pvc_accessmode", accessMode)
|
|
72
|
+
self.setParam("mas_app_settings_jms_queue_pvc_accessmode", accessMode)
|
|
73
73
|
|
|
74
74
|
def manageSettingsComponents(self) -> None:
|
|
75
75
|
# Only ask to install Manage components if this is a full Manage installation
|
|
@@ -119,6 +119,8 @@ class ManageSettingsMixin():
|
|
|
119
119
|
self.params["mas_appws_components"] += ",utilities=latest"
|
|
120
120
|
if self.yesOrNo(" - Workday Applications"):
|
|
121
121
|
self.params["mas_appws_components"] += ",workday=latest"
|
|
122
|
+
if self.yesOrNo(" - AIP"):
|
|
123
|
+
self.params["mas_appws_components"] += ",aip=latest"
|
|
122
124
|
logger.debug(f"Generated mas_appws_components = {self.params['mas_appws_components']}")
|
|
123
125
|
|
|
124
126
|
if ",icd=" in self.params["mas_appws_components"]:
|
|
@@ -207,7 +209,7 @@ class ManageSettingsMixin():
|
|
|
207
209
|
self.promptForString("Customization archive path/url", "mas_app_settings_customization_archive_url")
|
|
208
210
|
if self.yesOrNo("Provide authentication to access customization archive URL"):
|
|
209
211
|
self.promptForString("Username", "mas_app_settings_customization_archive_username")
|
|
210
|
-
self.promptForString("Password", "mas_app_settings_customization_archive_password", isPassword=True)
|
|
212
|
+
self.promptForString("Password", "mas_app_settings_customization_archive_password", isPassword=True) # pragma: allowlist secret
|
|
211
213
|
|
|
212
214
|
def manageSettingsDemodata(self) -> None:
|
|
213
215
|
self.yesOrNo("Create demo data", "mas_app_settings_demodata")
|
|
@@ -269,29 +271,3 @@ class ManageSettingsMixin():
|
|
|
269
271
|
self.manageSettingsTimezone()
|
|
270
272
|
self.manageSettingsLanguages()
|
|
271
273
|
self.manageSettingsCP4D()
|
|
272
|
-
|
|
273
|
-
def aibrokerSettings(self) -> None:
|
|
274
|
-
if self.installAiBroker:
|
|
275
|
-
self.printH2("Maximo AI Broker Settings - Storage, WatsonX, MariaDB details")
|
|
276
|
-
self.printDescription(["Customise AI Broker details"])
|
|
277
|
-
self.promptForString("Storage provider", "mas_aibroker_storage_provider")
|
|
278
|
-
self.promptForString("Storage access key", "mas_aibroker_storage_accesskey")
|
|
279
|
-
self.promptForString("Storage secret key", "mas_aibroker_storage_secretkey")
|
|
280
|
-
self.promptForString("Storage host", "mas_aibroker_storage_host")
|
|
281
|
-
self.promptForString("Storage port", "mas_aibroker_storage_port")
|
|
282
|
-
self.promptForString("Storage ssl", "mas_aibroker_storage_ssl")
|
|
283
|
-
self.promptForString("Storage region", "mas_aibroker_storage_region")
|
|
284
|
-
self.promptForString("Storage pipelines bucket", "mas_aibroker_storage_pipelines_bucket")
|
|
285
|
-
self.promptForString("Storage tenants bucket", "mas_aibroker_storage_tenants_bucket")
|
|
286
|
-
self.promptForString("Storage templates bucket", "mas_aibroker_storage_templates_bucket")
|
|
287
|
-
|
|
288
|
-
self.promptForString("Watsonxai api key", "mas_aibroker_watsonxai_apikey")
|
|
289
|
-
self.promptForString("Watsonxai machine learning url", "mas_aibroker_watsonxai_url")
|
|
290
|
-
self.promptForString("Watsonxai project id", "mas_aibroker_watsonxai_project_id")
|
|
291
|
-
|
|
292
|
-
self.promptForString("Database host", "mas_aibroker_db_host")
|
|
293
|
-
self.promptForString("Database port", "mas_aibroker_db_port")
|
|
294
|
-
self.promptForString("Database user", "mas_aibroker_db_user")
|
|
295
|
-
self.promptForString("Database name", "mas_aibroker_db_database")
|
|
296
|
-
self.promptForString("Database Secretname", "mas_aibroker_db_secret_name")
|
|
297
|
-
self.promptForString("Database password", "mas_aibroker_db_secret_value")
|
|
@@ -19,7 +19,7 @@ class MongoDbSettingsMixin():
|
|
|
19
19
|
"The installer can setup mongoce in your OpenShift cluster (available only for amd64) or you may choose to configure MAS to use an existing mongodb"
|
|
20
20
|
])
|
|
21
21
|
|
|
22
|
-
if self.architecture != "s390x" and self.yesOrNo("Create MongoDb cluster using MongoDb Community Edition Operator"):
|
|
22
|
+
if (self.architecture != "s390x" and self.architecture != "ppc64le") and self.yesOrNo("Create MongoDb cluster using MongoDb Community Edition Operator"):
|
|
23
23
|
if self.showAdvancedOptions:
|
|
24
24
|
self.promptForString("MongoDb namespace", "mongodb_namespace", default="mongoce")
|
|
25
25
|
else:
|