mas-cli 5.1.4__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.

Files changed (114) hide show
  1. mas/cli/__init__.py +11 -0
  2. mas/cli/aiservice/install/__init__.py +11 -0
  3. mas/cli/aiservice/install/app.py +894 -0
  4. mas/cli/aiservice/install/argBuilder.py +180 -0
  5. mas/cli/aiservice/install/argParser.py +507 -0
  6. mas/cli/aiservice/install/params.py +100 -0
  7. mas/cli/aiservice/install/summarizer.py +134 -0
  8. mas/cli/cli.py +432 -0
  9. mas/cli/displayMixins.py +132 -0
  10. mas/cli/gencfg.py +113 -0
  11. mas/cli/install/__init__.py +11 -0
  12. mas/cli/install/app.py +1316 -0
  13. mas/cli/install/argBuilder.py +465 -0
  14. mas/cli/install/argParser.py +1176 -0
  15. mas/cli/install/catalogs.py +27 -0
  16. mas/cli/install/params.py +172 -0
  17. mas/cli/install/settings/__init__.py +23 -0
  18. mas/cli/install/settings/additionalConfigs.py +227 -0
  19. mas/cli/install/settings/db2Settings.py +252 -0
  20. mas/cli/install/settings/kafkaSettings.py +103 -0
  21. mas/cli/install/settings/manageSettings.py +273 -0
  22. mas/cli/install/settings/mongodbSettings.py +46 -0
  23. mas/cli/install/settings/turbonomicSettings.py +29 -0
  24. mas/cli/install/summarizer.py +398 -0
  25. mas/cli/templates/facilities-configs.yml.j2 +25 -0
  26. mas/cli/templates/ibm-mas-tekton.yaml +49772 -0
  27. mas/cli/templates/jdbccfg.yml.j2 +52 -0
  28. mas/cli/templates/pod-templates/best-effort/ibm-data-dictionary-assetdatadictionary.yml +26 -0
  29. mas/cli/templates/pod-templates/best-effort/ibm-mas-bascfg.yml +56 -0
  30. mas/cli/templates/pod-templates/best-effort/ibm-mas-coreidp.yml +21 -0
  31. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-actions.yml +28 -0
  32. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-auth.yml +32 -0
  33. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-datapower.yml +12 -0
  34. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-devops.yml +14 -0
  35. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dm.yml +22 -0
  36. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dsc.yml +40 -0
  37. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-edgeconfig.yml +10 -0
  38. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-fpl.yml +24 -0
  39. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-guardian.yml +20 -0
  40. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-iot.yml +10 -0
  41. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mbgx.yml +18 -0
  42. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mfgx.yml +14 -0
  43. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-monitor.yml +18 -0
  44. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-orgmgmt.yml +48 -0
  45. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-provision.yml +28 -0
  46. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-registry.yml +26 -0
  47. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-state.yml +40 -0
  48. mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-webui.yml +22 -0
  49. mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextaccelerator.yml +13 -0
  50. mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextworkspace.yml +10 -0
  51. mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-imagestitching.yml +10 -0
  52. mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageaccelerators.yml +10 -0
  53. mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageapp.yml +46 -0
  54. mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageworkspace.yml +48 -0
  55. mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-slackproxy.yml +10 -0
  56. mas/cli/templates/pod-templates/best-effort/ibm-mas-pushnotificationcfg.yml +13 -0
  57. mas/cli/templates/pod-templates/best-effort/ibm-mas-scimcfg.yml +14 -0
  58. mas/cli/templates/pod-templates/best-effort/ibm-mas-slscfg.yml +10 -0
  59. mas/cli/templates/pod-templates/best-effort/ibm-mas-smtpcfg.yml +10 -0
  60. mas/cli/templates/pod-templates/best-effort/ibm-mas-suite.yml +136 -0
  61. mas/cli/templates/pod-templates/best-effort/ibm-mas-visualinspection.yml +34 -0
  62. mas/cli/templates/pod-templates/best-effort/ibm-sls-licenseservice.yml +10 -0
  63. mas/cli/templates/pod-templates/guaranteed/ibm-data-dictionary-assetdatadictionary.yml +56 -0
  64. mas/cli/templates/pod-templates/guaranteed/ibm-mas-bascfg.yml +140 -0
  65. mas/cli/templates/pod-templates/guaranteed/ibm-mas-coreidp.yml +45 -0
  66. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-actions.yml +70 -0
  67. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-auth.yml +80 -0
  68. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-datapower.yml +24 -0
  69. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-devops.yml +26 -0
  70. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dm.yml +52 -0
  71. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dsc.yml +106 -0
  72. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-edgeconfig.yml +16 -0
  73. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-fpl.yml +62 -0
  74. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-guardian.yml +44 -0
  75. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-iot.yml +16 -0
  76. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mbgx.yml +42 -0
  77. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mfgx.yml +32 -0
  78. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-monitor.yml +42 -0
  79. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-orgmgmt.yml +126 -0
  80. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-provision.yml +70 -0
  81. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-registry.yml +62 -0
  82. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-state.yml +106 -0
  83. mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-webui.yml +52 -0
  84. mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextaccelerator.yml +28 -0
  85. mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextworkspace.yml +18 -0
  86. mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-imagestitching.yml +16 -0
  87. mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageaccelerators.yml +16 -0
  88. mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageapp.yml +106 -0
  89. mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageworkspace.yml +126 -0
  90. mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-slackproxy.yml +16 -0
  91. mas/cli/templates/pod-templates/guaranteed/ibm-mas-pushnotificationcfg.yml +25 -0
  92. mas/cli/templates/pod-templates/guaranteed/ibm-mas-scimcfg.yml +26 -0
  93. mas/cli/templates/pod-templates/guaranteed/ibm-mas-slscfg.yml +16 -0
  94. mas/cli/templates/pod-templates/guaranteed/ibm-mas-smtpcfg.yml +16 -0
  95. mas/cli/templates/pod-templates/guaranteed/ibm-mas-suite.yml +340 -0
  96. mas/cli/templates/pod-templates/guaranteed/ibm-mas-visualinspection.yml +76 -0
  97. mas/cli/templates/pod-templates/guaranteed/ibm-sls-licenseservice.yml +16 -0
  98. mas/cli/templates/suite_mongocfg.yml.j2 +55 -0
  99. mas/cli/uninstall/__init__.py +11 -0
  100. mas/cli/uninstall/app.py +197 -0
  101. mas/cli/uninstall/argParser.py +115 -0
  102. mas/cli/update/__init__.py +11 -0
  103. mas/cli/update/app.py +673 -0
  104. mas/cli/update/argParser.py +156 -0
  105. mas/cli/upgrade/__init__.py +11 -0
  106. mas/cli/upgrade/app.py +164 -0
  107. mas/cli/upgrade/argParser.py +68 -0
  108. mas/cli/upgrade/settings/__init__.py +19 -0
  109. mas/cli/validators.py +151 -0
  110. mas_cli-5.1.4.data/scripts/mas-cli +87 -0
  111. mas_cli-5.1.4.dist-info/METADATA +73 -0
  112. mas_cli-5.1.4.dist-info/RECORD +114 -0
  113. mas_cli-5.1.4.dist-info/WHEEL +5 -0
  114. mas_cli-5.1.4.dist-info/top_level.txt +1 -0
@@ -0,0 +1,46 @@
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
+ from os import path
12
+ from prompt_toolkit import print_formatted_text
13
+
14
+
15
+ class MongoDbSettingsMixin():
16
+ def configMongoDb(self) -> None:
17
+ self.printH1("Configure MongoDb")
18
+ self.printDescription([
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
+ ])
21
+
22
+ if (self.architecture != "s390x" and self.architecture != "ppc64le") and self.yesOrNo("Create MongoDb cluster using MongoDb Community Edition Operator"):
23
+ if self.showAdvancedOptions:
24
+ self.promptForString("MongoDb namespace", "mongodb_namespace", default="mongoce")
25
+ else:
26
+ # Even though "" works as the default, we use this value to contruct other values so we need to explicitly set it
27
+ self.setParam("mongodb_namespace", "mongoce")
28
+
29
+ self.setParam("mongodb_action", "install")
30
+ self.setParam("sls_mongodb_cfg_file", f"/workspace/configs/mongo-{self.getParam('mongodb_namespace')}.yml")
31
+ else:
32
+ self.setParam("mongodb_action", "byo")
33
+ self.setParam("sls_mongodb_cfg_file", "/workspace/additional-configs/mongodb-system.yaml")
34
+ self.selectLocalConfigDir()
35
+
36
+ instanceId = self.getParam('mas_instance_id')
37
+ # Check if a configuration already exists before creating a new one
38
+ mongoCfgFile = path.join(self.localConfigDir, "mongodb-system.yaml")
39
+
40
+ print_formatted_text(f"Searching for system mongodb configuration file in {mongoCfgFile} ...")
41
+ if path.exists(mongoCfgFile):
42
+ if self.yesOrNo("System mongodb configuration file 'mongodb-system.yaml' already exists. Do you want to generate a new one"):
43
+ self.generateMongoCfg(instanceId=instanceId, destination=mongoCfgFile)
44
+ else:
45
+ print_formatted_text(f"Expected file ({mongoCfgFile}) was not found, generating a valid system mongodb configuration file now ...")
46
+ self.generateMongoCfg(instanceId=instanceId, destination=mongoCfgFile)
@@ -0,0 +1,29 @@
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
+
12
+ class TurbonomicSettingsMixin():
13
+
14
+ def configTurbonomic(self) -> None:
15
+ if self.showAdvancedOptions:
16
+ self.printH1("Configure Turbonomic")
17
+ self.printDescription([
18
+ "The IBM Turbonomic hybrid cloud cost optimization platform allows you to eliminate this guesswork with solutions that save time and optimize costs",
19
+ " - Learn more: <Orange><u>https://www.ibm.com/products/turbonomic</u></Orange>"
20
+ ])
21
+
22
+ if self.isAirgap():
23
+ self.printHighlight("The Turbonomic Kubernetes Operator does not support disconnected installation at this time")
24
+ elif self.yesOrNo("Configure IBM Turbonomic integration"):
25
+ self.promptForString("Turbonomic Target Name", "turbonomic_target_name")
26
+ self.promptForString("Turbonomic Server URL", "turbonomic_server_url")
27
+ self.promptForString("Turbonomic Server Version", "turbonomic_server_version")
28
+ self.promptForString("Turbonomic Username", "turbonomic_username")
29
+ self.promptForString("Turbonomic Password", "turbonomic_password", isPassword=True)
@@ -0,0 +1,398 @@
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
+ import yaml
13
+ from prompt_toolkit import print_formatted_text, HTML
14
+ from mas.devops.ocp import getConsoleURL
15
+
16
+ logger = logging.getLogger(__name__)
17
+
18
+
19
+ class InstallSummarizerMixin():
20
+ def ocpSummary(self) -> None:
21
+ self.printH2("Pipeline Configuration")
22
+ self.printParamSummary("Service Account", "service_account_name")
23
+ self.printParamSummary("Image Pull Policy", "image_pull_policy")
24
+ self.printSummary("Skip Pre-Install Healthcheck", "Yes" if self.getParam('skip_pre_check') == "true" else "No")
25
+
26
+ self.printH2("OpenShift Container Platform")
27
+ self.printSummary("Worker Node Architecture", self.architecture)
28
+ self.printSummary("Storage Class Provider", self.storageClassProvider)
29
+ self.printParamSummary("ReadWriteOnce Storage Class", "storage_class_rwo")
30
+ self.printParamSummary("ReadWriteMany Storage Class", "storage_class_rwx")
31
+
32
+ self.printParamSummary("Certificate Manager", "cert_manager_provider")
33
+ self.printParamSummary("Cluster Ingress Certificate Secret", "ocp_ingress_tls_secret_name")
34
+
35
+ if self.isSNO():
36
+ self.printSummary("Single Node OpenShift", "Yes")
37
+ else:
38
+ self.printSummary("Single Node OpenShift", "No")
39
+
40
+ def masSummary(self) -> None:
41
+ operationalModeNames = ["", "Production", "Non-Production"]
42
+
43
+ self.printH2("IBM Maximo Application Suite")
44
+ self.printParamSummary("Instance ID", "mas_instance_id")
45
+ self.printParamSummary("Workspace ID", "mas_workspace_id")
46
+ self.printParamSummary("Workspace Name", "mas_workspace_name")
47
+
48
+ print()
49
+ self.printSummary("Operational Mode", operationalModeNames[self.operationalMode])
50
+ if self.isAirgap():
51
+ self.printSummary("Install Mode", "Disconnected Install")
52
+ else:
53
+ self.printSummary("Install Mode", "Connected Install")
54
+
55
+ if "mas_domain" in self.params:
56
+ print()
57
+ self.printParamSummary("Domain Name", "mas_domain")
58
+ self.printParamSummary("DNS Provider", "dns_provider")
59
+ self.printParamSummary("Certificate Issuer", "mas_cluster_issuer")
60
+
61
+ if self.getParam('dns_provider') == "cloudflare":
62
+ self.printParamSummary("CloudFlare e-mail", "cloudflare_email")
63
+ self.printParamSummary("CloudFlare API token", "cloudflare_apitoken")
64
+ self.printParamSummary("CloudFlare zone", "cloudflare_zone")
65
+ self.printParamSummary("CloudFlare subdomain", "cloudflare_subdomain")
66
+ elif self.getParam('dns_provider') == "cis":
67
+ pass
68
+ elif self.getParam('dns_provider') == "route53":
69
+ pass
70
+ elif self.getParam('dns_provider') == "":
71
+ pass
72
+
73
+ print()
74
+ self.printParamSummary("Configure Suite to run in IPV6", "enable_ipv6")
75
+
76
+ if self.getParam("mas_manual_cert_mgmt") != "":
77
+ print()
78
+ self.printSummary("Manual Certificates", self.manualCertsDir)
79
+ else:
80
+ print()
81
+ self.printSummary("Manual Certificates", "Not Configured")
82
+
83
+ print()
84
+ self.printParamSummary("Enable Guided Tour", "mas_enable_walkme")
85
+
86
+ print()
87
+ self.printParamSummary("Catalog Version", "mas_catalog_version")
88
+ # We only list the digest if it's specified (primary use case is when running development builds in airgap environments)
89
+ if self.getParam("mas_catalog_digest" != ""):
90
+ self.printParamSummary("Catalog Digest", "mas_catalog_digest")
91
+ self.printParamSummary("Subscription Channel", "mas_channel")
92
+
93
+ print()
94
+ self.printParamSummary("IBM Entitled Registry", "mas_icr_cp")
95
+ self.printParamSummary("IBM Open Registry", "mas_icr_cpopen")
96
+
97
+ print()
98
+ self.printParamSummary("Trust Default Cert Authorities", "mas_trust_default_cas")
99
+
100
+ print()
101
+ if self.localConfigDir is not None:
102
+ self.printSummary("Additional Config", self.localConfigDir)
103
+ else:
104
+ self.printSummary("Additional Config", "Not Configured")
105
+ if "mas_pod_templates_dir" in self.params:
106
+ self.printParamSummary("Pod Templates", "mas_pod_templates_dir")
107
+ else:
108
+ self.printSummary("Pod Templates", "Not Configured")
109
+
110
+ def iotSummary(self) -> None:
111
+ if self.installIoT:
112
+ self.printSummary("IoT", self.params["mas_app_channel_iot"])
113
+ self.printSummary("+ MQTT Broker Storage Class", self.params["mas_app_settings_iot_mqttbroker_pvc_storage_class"])
114
+ self.printSummary("+ FPL Storage Class", self.params["mas_app_settings_iot_fpl_pvc_storage_class"])
115
+ else:
116
+ self.printSummary("IoT", "Do Not Install")
117
+
118
+ def monitorSummary(self) -> None:
119
+ if self.installMonitor:
120
+ self.printSummary("Monitor", self.params["mas_app_channel_monitor"])
121
+ else:
122
+ self.printSummary("Monitor", "Do Not Install")
123
+
124
+ def arcgisSummary(self) -> None:
125
+ if self.getParam("install_arcgis") != "":
126
+ self.printSummary("Loc Srv Esri (arcgis)", self.params["mas_arcgis_channel"])
127
+ else:
128
+ self.printSummary("Loc Srv Esri (arcgis)", "Do Not Install")
129
+
130
+ def predictSummary(self) -> None:
131
+ if self.installPredict:
132
+ self.printSummary("Predict", self.params["mas_app_channel_predict"])
133
+ else:
134
+ self.printSummary("Predict", "Do Not Install")
135
+
136
+ def optimizerSummary(self) -> None:
137
+ if self.installOptimizer:
138
+ self.printSummary("Optimizer", self.params["mas_app_channel_optimizer"])
139
+ self.printSummary(" + Plan", self.params["mas_app_plan_optimizer"])
140
+ else:
141
+ self.printSummary("Optimizer", "Do Not Install")
142
+
143
+ def assistSummary(self) -> None:
144
+ if self.installAssist:
145
+ self.printSummary("Assist", self.params["mas_app_channel_assist"])
146
+ else:
147
+ self.printSummary("Assist", "Do Not Install")
148
+
149
+ def inspectionSummary(self) -> None:
150
+ if self.installInspection:
151
+ self.printSummary("Visual Inspection", self.params["mas_app_channel_visualinspection"])
152
+ self.printSummary(" + Storage Class", self.params["storage_class_rwx"])
153
+ else:
154
+ self.printSummary("Visual Inspection", "Do Not Install")
155
+
156
+ def manageSummary(self) -> None:
157
+ if self.installManage:
158
+ self.printSummary(f"{'Manage foundation' if self.getParam('mas_appws_components') == '' else 'Manage'}", self.params["mas_app_channel_manage"])
159
+ if self.getParam("mas_appws_components") == "":
160
+ print_formatted_text(HTML(" <SkyBlue>+ Components</SkyBlue>"))
161
+ self.printSummary(" + ACM", "Enabled" if "acm=" in self.getParam("mas_appws_components") else "Disabled")
162
+ self.printSummary(" + Aviation", "Enabled" if "aviation=" in self.getParam("mas_appws_components") else "Disabled")
163
+ self.printSummary(" + Civil Infrastructure", "Enabled" if "civil=" in self.getParam("mas_appws_components") else "Disabled")
164
+ self.printSummary(" + Envizi", "Enabled" if "envizi=" in self.getParam("mas_appws_components") else "Disabled")
165
+ self.printSummary(" + Health", "Enabled" if "health=" in self.getParam("mas_appws_components") else "Disabled")
166
+ self.printSummary(" + HSE", "Enabled" if "hse=" in self.getParam("mas_appws_components") else "Disabled")
167
+ self.printSummary(" + Maximo IT", "Enabled" if "icd=" in self.getParam("mas_appws_components") else "Disabled")
168
+ self.printSummary(" + Nuclear", "Enabled" if "nuclear=" in self.getParam("mas_appws_components") else "Disabled")
169
+ self.printSummary(" + Oil & Gas", "Enabled" if "oilandgas=" in self.getParam("mas_appws_components") else "Disabled")
170
+ self.printSummary(" + Connector for Oracle", "Enabled" if "oracleadapter=" in self.getParam("mas_appws_components") else "Disabled")
171
+ self.printSummary(" + Connector for SAP", "Enabled" if "sapadapter=" in self.getParam("mas_appws_components") else "Disabled")
172
+ self.printSummary(" + Service Provider", "Enabled" if "serviceprovider=" in self.getParam("mas_appws_components") else "Disabled")
173
+ self.printSummary(" + Spatial", "Enabled" if "spatial=" in self.getParam("mas_appws_components") else "Disabled")
174
+ self.printSummary(" + Strategize", "Enabled" if "strategize=" in self.getParam("mas_appws_components") else "Disabled")
175
+ self.printSummary(" + Transportation", "Enabled" if "transportation=" in self.getParam("mas_appws_components") else "Disabled")
176
+ self.printSummary(" + Tririga", "Enabled" if "tririga=" in self.getParam("mas_appws_components") else "Disabled")
177
+ self.printSummary(" + Utilities", "Enabled" if "utilities=" in self.getParam("mas_appws_components") else "Disabled")
178
+ self.printSummary(" + Workday Applications", "Enabled" if "workday=" in self.getParam("mas_appws_components") else "Disabled")
179
+ self.printSummary(" + AIP", "Enabled" if "aip=" in self.getParam("mas_appws_components") else "Disabled")
180
+
181
+ self.printParamSummary("+ Upgrade Type", "mas_appws_upgrade_type")
182
+
183
+ self.printParamSummary("+ Server bundle size", "mas_app_settings_server_bundles_size")
184
+ self.printParamSummary("+ Enable JMS queues", "mas_app_settings_default_jms")
185
+ self.printParamSummary("+ Server Timezone", "mas_app_settings_server_timezone")
186
+ self.printParamSummary("+ Base Language", "mas_app_settings_base_lang")
187
+ self.printParamSummary("+ Additional Languages", "mas_app_settings_secondary_langs")
188
+
189
+ print_formatted_text(HTML(" <SkyBlue>+ Database Settings</SkyBlue>"))
190
+ self.printParamSummary(" + Schema", "mas_app_settings_indexspace")
191
+ self.printParamSummary(" + Username", "mas_app_settings_db2_schema")
192
+ self.printParamSummary(" + Tablespace", "mas_app_settings_tablespace")
193
+ self.printParamSummary(" + Indexspace", "mas_app_settings_indexspace")
194
+ else:
195
+ self.printSummary("Manage", "Do Not Install")
196
+
197
+ def facilitiesSummary(self) -> None:
198
+ # TODO: Fix type for storage sizes and max conn pool size
199
+ if self.installFacilities:
200
+ self.printSummary("Facilities", self.params["mas_app_channel_facilities"])
201
+ print_formatted_text(HTML(" <SkyBlue>+ Maximo Real Estate and Facilities Settings</SkyBlue>"))
202
+ self.printParamSummary(" + Size", "mas_ws_facilities_size")
203
+ self.printParamSummary(" + Routes Timeout", "mas_ws_facilities_routes_timeout")
204
+ self.printParamSummary(" + XML Extension", "mas_ws_facilities_liberty_extension_XML")
205
+ self.printParamSummary(" + AES vault secret name", "mas_ws_facilities_vault_secret")
206
+ # self.printParamSummary(" + Dedicated Workflow Agents", "mas_ws_facilities_dwfagents")
207
+ # self.printParamSummary(" + Maximum pool size connection ", "mas_ws_facilities_db_maxconnpoolsize")
208
+ self.printParamSummary(" + Log Storage Class ", "mas_ws_facilities_storage_log_class")
209
+ self.printParamSummary(" + Log Storage Mode", "mas_ws_facilities_storage_log_mode")
210
+ # self.printParamSummary(" + Log Storage Size", "mas_ws_facilities_storage_log_size")
211
+ self.printParamSummary(" + Userfiles Storage Class ", "mas_ws_facilities_storage_userfiles_class")
212
+ self.printParamSummary(" + User files Storage Mode", "mas_ws_facilities_storage_userfiles_mode")
213
+ # self.printParamSummary(" + User files Storage Size", "mas_ws_facilities_storage_userfiles_size")
214
+ if self.getParam("db2_action_facilities") == 'none':
215
+ self.printParamSummary(" + Dedicated DB2 Database", "No")
216
+ else:
217
+ self.printParamSummary(" + Dedicated DB2 Database", "db2_action_facilities")
218
+ else:
219
+ self.printSummary("Facilities", "Do Not Install")
220
+
221
+ def db2Summary(self) -> None:
222
+ if self.getParam("db2_action_system") == "install" or self.getParam("db2_action_manage") == "install":
223
+ self.printH2("IBM Db2 Univeral Operator Configuration")
224
+ self.printSummary("System Instance", "Install" if self.getParam("db2_action_system") == "install" else "Do Not Install")
225
+ self.printSummary("Dedicated Manage Instance", "Install" if self.getParam("db2_action_manage") == "install" else "Do Not Install")
226
+ self.printParamSummary(" - Type", "db2_type")
227
+ self.printParamSummary(" - Timezone", "db2_timezone")
228
+ print()
229
+ self.printParamSummary("Install Namespace", "db2_namespace")
230
+ self.printParamSummary("Subscription Channel", "db2_channel")
231
+ print()
232
+ self.printParamSummary("CPU Request", "db2_cpu_requests")
233
+ self.printParamSummary("CPU Limit", "db2_cpu_limits")
234
+ self.printParamSummary("Memory Request", "db2_memory_requests")
235
+ self.printParamSummary("Memory Limit ", "db2_memory_limits")
236
+ print()
237
+ self.printParamSummary("Meta Storage", "db2_meta_storage_size")
238
+ self.printParamSummary("Data Storage", "db2_data_storage_size")
239
+ self.printParamSummary("Backup Storage", "db2_backup_storage_size")
240
+ self.printParamSummary("Temp Storage", "db2_temp_storage_size")
241
+ self.printParamSummary("Transaction Logs Storage", "db2_logs_storage_size")
242
+ print()
243
+ if self.getParam('db2_affinity_key') != "":
244
+ self.printSummary("Node Affinity", f"{self.getParam('db2_affinity_key')}={self.getParam('db2_affinity_value')}")
245
+ else:
246
+ self.printSummary("Node Affinity", "None")
247
+
248
+ if self.getParam('db2_tolerate_key') != "":
249
+ self.printSummary("Node Tolerations", f"{self.getParam('db2_tolerate_key')}={self.getParam('db2_tolerate_value')} @ {self.getParam('db2_tolerate_effect')}")
250
+ else:
251
+ self.printSummary("Node Tolerations", "None")
252
+
253
+ def cp4dSummary(self) -> None:
254
+ if self.deployCP4D:
255
+ self.printH2("IBM Cloud Pak for Data Configuration")
256
+ self.printParamSummary("Version", "cpd_product_version")
257
+ if self.installPredict:
258
+ self.printSummary("Watson Studio Local", "Install (Required by Maximo Predict)")
259
+ self.printSummary("Watson Machine Learning", "Install (Required by Maximo Predict)")
260
+ self.printSummary("Analytics Engine", "Install (Required by Maximo Predict)")
261
+ else:
262
+ self.printSummary("Watson Studio Local", "Install" if self.getParam("cpd_install_ws") == "true" else "Do Not Install")
263
+ self.printSummary("Watson Machine Learning", "Install" if self.getParam("cpd_install_wml") == "true" else "Do Not Install")
264
+ self.printSummary("Analytics Engine", "Install" if self.getParam("cpd_install_ae") == "true" else "Do Not Install")
265
+
266
+ self.printSummary("SPSS Modeler", "Install" if self.getParam("cpd_install_spss") == "true" else "Do Not Install")
267
+ self.printSummary("Cognos Analytics", "Install" if self.getParam("cpd_install_cognos") == "true" else "Do Not Install")
268
+
269
+ def droSummary(self) -> None:
270
+ self.printH2("IBM Data Reporter Operator (DRO) Configuration")
271
+ self.printParamSummary("Contact e-mail", "uds_contact_email")
272
+ self.printParamSummary("First name", "uds_contact_firstname")
273
+ self.printParamSummary("Last name", "uds_contact_lastname")
274
+ self.printParamSummary("Install Namespace", "dro_namespace")
275
+
276
+ def slsSummary(self) -> None:
277
+ self.printH2("IBM Suite License Service")
278
+ self.printParamSummary("Namespace", "sls_namespace")
279
+ if self.getParam("sls_action") == "install":
280
+ self.printSummary("Subscription Channel", "3.x")
281
+ self.printParamSummary("IBM Open Registry", "sls_icr_cpopen")
282
+ if self.slsLicenseFileLocal:
283
+ self.printSummary("License File", self.slsLicenseFileLocal)
284
+
285
+ def cosSummary(self) -> None:
286
+ self.printH2("Cloud Object Storage")
287
+ if self.getParam("cos_type") != "":
288
+ self.printParamSummary("Type", "cos_type")
289
+ if self.getParam("cos_resourcegroup") != "":
290
+ self.printParamSummary("Resource Group", "cos_resourcegroup")
291
+ else:
292
+ self.printSummary("Type", "None")
293
+
294
+ def eckSummary(self) -> None:
295
+ self.printH2("Elastic Cloud on Kubernetes")
296
+ if self.getParam("eck_action") == "install":
297
+ self.printSummary("ECK Integration", "Enabled")
298
+ self.printParamSummary("Logstash", "eck_enable_logstash")
299
+ self.printParamSummary("Remote Elasticsearch hosts", "eck_remote_es_hosts")
300
+ self.printParamSummary("Remote Elasticsearch username", "eck_remote_es_username")
301
+ else:
302
+ self.printSummary("ECK Integration", "Disabled")
303
+
304
+ def turbonomicSummary(self) -> None:
305
+ self.printH2("Turbonomic")
306
+ if self.getParam("turbonomic_server_url") != "":
307
+ self.printSummary("Turbonomic Integration", "Enabled")
308
+ self.printParamSummary("Server URL", "turbonomic_server_url")
309
+ self.printParamSummary("Server version", "turbonomic_server_version")
310
+ self.printParamSummary("Target name", "turbonomic_target_name")
311
+ self.printParamSummary("Username", "turbonomic_username")
312
+ self.printSummary("Password", f"{self.getParam('turbonomic_password')[0:8]}&lt;snip&gt;")
313
+ else:
314
+ self.printSummary("Turbonomic Integration", "Disabled")
315
+
316
+ def mongoSummary(self) -> None:
317
+ self.printH2("MongoDb")
318
+ if self.getParam("mongodb_action") == "install":
319
+ self.printSummary("Type", "MongoCE Operator")
320
+ self.printParamSummary("Install Namespace", "mongodb_namespace")
321
+ elif self.getParam("mongodb_action") == "byo":
322
+ self.printSummary("Type", "BYO (mongodb-system.yaml)")
323
+ else:
324
+ self.fatalError(f"Unexpected value for mongodb_action parameter: {self.getParam('mongodb_action')}")
325
+
326
+ def kafkaSummary(self) -> None:
327
+ if self.getParam("kafka_action_system") != "":
328
+ self.printH2("Kafka")
329
+
330
+ if self.getParam("kafka_provider") in ["strimzi", "redhat"]:
331
+ self.printParamSummary("Provider", "kafka_provider")
332
+ self.printParamSummary("Version", "kafka_version")
333
+ self.printParamSummary("Install Namespace", "kafka_namespace")
334
+
335
+ elif self.getParam("kafka_provider") == "ibm":
336
+ self.printParamSummary("Resource group", "eventstreams_resourcegroup")
337
+ self.printParamSummary("Instance name", "eventstreams_name")
338
+ self.printParamSummary("Instance location", "eventstreams_location")
339
+
340
+ elif self.getParam("kafka_provider") == "aws":
341
+ self.printParamSummary("VPC ID", "vpc_id")
342
+ self.printParamSummary("Instance region", "aws_region")
343
+ self.printParamSummary("Instance username", "aws_kafka_user_name")
344
+ self.printParamSummary("Instance type", "aws_msk_instance_type")
345
+ self.printParamSummary("Number of broker nodes", "aws_msk_instance_number")
346
+ self.printParamSummary("Storage size (GB)", "aws_msk_volume_size")
347
+ self.printParamSummary("Availability Zone 1 CIDR", "aws_msk_cidr_az1")
348
+ self.printParamSummary("Availability Zone 2 CIDR", "aws_msk_cidr_az2")
349
+ self.printParamSummary("Availability Zone 3 CIDR", "aws_msk_cidr_az3")
350
+ self.printParamSummary("Ingress CIDR", "aws_msk_ingress_cidr")
351
+ self.printParamSummary("Egress CIDR", "aws_msk_egress_cidr")
352
+
353
+ def grafanaSummary(self) -> None:
354
+ self.printH2("Grafana")
355
+ self.printSummary("Install Grafana", "Install" if self.getParam("grafana_action") == "install" else "Do Not Install")
356
+
357
+ def installSummary(self) -> None:
358
+ self.printH2("Install Process")
359
+ self.printSummary("Wait for PVCs to bind", "No" if self.getParam("no_wait_for_pvc") else "Yes")
360
+
361
+ def displayInstallSummary(self) -> None:
362
+ self.printH1("Review Settings")
363
+ self.printDescription([
364
+ "Connected to:",
365
+ f" - <u>{getConsoleURL(self.dynamicClient)}</u>"
366
+ ])
367
+
368
+ logger.debug("PipelineRun parameters:")
369
+ logger.debug(yaml.dump(self.params, default_flow_style=False))
370
+
371
+ # Cluster Config & Dependencies
372
+ self.ocpSummary()
373
+ self.droSummary()
374
+ self.slsSummary()
375
+ self.masSummary()
376
+
377
+ self.printH2("IBM Maximo Application Suite Applications")
378
+ self.iotSummary()
379
+ self.monitorSummary()
380
+ self.manageSummary()
381
+ self.arcgisSummary()
382
+ self.predictSummary()
383
+ self.optimizerSummary()
384
+ self.assistSummary()
385
+ self.inspectionSummary()
386
+ self.facilitiesSummary()
387
+
388
+ # Application Dependencies
389
+ self.mongoSummary()
390
+ self.db2Summary()
391
+ self.cosSummary()
392
+ self.kafkaSummary()
393
+ self.cp4dSummary()
394
+ self.grafanaSummary()
395
+ self.turbonomicSummary()
396
+
397
+ # Install options
398
+ self.installSummary()
@@ -0,0 +1,25 @@
1
+ apiVersion: v1
2
+ kind: ConfigMap
3
+ metadata:
4
+ name: facilities-config
5
+ namespace: mas-{{ mas_instance_id }}-pipelines
6
+ data:
7
+ mas_ws_facilities_storage_log_size: |
8
+ {{ mas_ws_facilities_storage_log_size }}
9
+ mas_ws_facilities_storage_userfiles_size: |
10
+ {{ mas_ws_facilities_storage_userfiles_size }}
11
+ mas_ws_facilities_db_maxconnpoolsize: |
12
+ {{ mas_ws_facilities_db_maxconnpoolsize }}
13
+ mas_ws_facilities_dwfagents: |
14
+ {%- if mas_ws_facilities_dwfagents is defined and mas_ws_facilities_dwfagents != '' %}
15
+ {%- for agent in mas_ws_facilities_dwfagents %}
16
+ - name: "{{ agent.name }}"
17
+ members:
18
+ {%- for member in agent.members %}
19
+ - name: "{{ member.name }}"
20
+ class: "{{ member.class }}"
21
+ {%- endfor %}
22
+ {%- endfor %}
23
+ {%- else %}
24
+ []
25
+ {% endif %}