mas-cli 21.0.0__tar.gz → 21.2.0__tar.gz

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.
Files changed (144) hide show
  1. {mas_cli-21.0.0/src/mas_cli.egg-info → mas_cli-21.2.0}/PKG-INFO +1 -1
  2. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/__init__.py +1 -1
  3. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/cli.py +1 -1
  4. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/app.py +30 -0
  5. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/settings/kafkaSettings.py +40 -3
  6. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/ibm-mas-tekton.yaml +409 -211
  7. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/upgrade/app.py +70 -3
  8. {mas_cli-21.0.0 → mas_cli-21.2.0/src/mas_cli.egg-info}/PKG-INFO +1 -1
  9. {mas_cli-21.0.0 → mas_cli-21.2.0}/MANIFEST.in +0 -0
  10. {mas_cli-21.0.0 → mas_cli-21.2.0}/README.md +0 -0
  11. {mas_cli-21.0.0 → mas_cli-21.2.0}/pyproject.toml +0 -0
  12. {mas_cli-21.0.0 → mas_cli-21.2.0}/setup.cfg +0 -0
  13. {mas_cli-21.0.0 → mas_cli-21.2.0}/setup.py +0 -0
  14. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/aiservice/install/__init__.py +0 -0
  15. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/aiservice/install/app.py +0 -0
  16. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/aiservice/install/argBuilder.py +0 -0
  17. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/aiservice/install/argParser.py +0 -0
  18. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/aiservice/install/params.py +0 -0
  19. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/aiservice/install/summarizer.py +0 -0
  20. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/aiservice/upgrade/__init__.py +0 -0
  21. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/aiservice/upgrade/app.py +0 -0
  22. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/aiservice/upgrade/argParser.py +0 -0
  23. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/backup/__init__.py +0 -0
  24. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/backup/app.py +0 -0
  25. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/backup/argParser.py +0 -0
  26. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/displayMixins.py +0 -0
  27. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/gencfg.py +0 -0
  28. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/__init__.py +0 -0
  29. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/argBuilder.py +0 -0
  30. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/argParser.py +0 -0
  31. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/catalogs.py +0 -0
  32. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/params.py +0 -0
  33. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/settings/__init__.py +0 -0
  34. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/settings/additionalConfigs.py +0 -0
  35. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/settings/aiSettings.py +0 -0
  36. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/settings/db2Settings.py +0 -0
  37. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/settings/manageSettings.py +0 -0
  38. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/settings/mongodbSettings.py +0 -0
  39. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/install/summarizer.py +0 -0
  40. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/mirror/__init__.py +0 -0
  41. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/mirror/app.py +0 -0
  42. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/mirror/argParser.py +0 -0
  43. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/mirror/config.py +0 -0
  44. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/pre_install/__init__.py +0 -0
  45. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/pre_install/app.py +0 -0
  46. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/pre_install/argParser.py +0 -0
  47. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/restore/__init__.py +0 -0
  48. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/restore/app.py +0 -0
  49. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/restore/argParser.py +0 -0
  50. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/setup_rbac/__init__.py +0 -0
  51. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/setup_rbac/app.py +0 -0
  52. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/setup_rbac/argParser.py +0 -0
  53. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/aicfg.yml.j2 +0 -0
  54. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/facilities-configs.yml.j2 +0 -0
  55. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/jdbccfg.yml.j2 +0 -0
  56. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-data-dictionary-assetdatadictionary.yml +0 -0
  57. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-bascfg.yml +0 -0
  58. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-coreidp.yml +0 -0
  59. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-actions.yml +0 -0
  60. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-auth.yml +0 -0
  61. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-datapower.yml +0 -0
  62. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-devops.yml +0 -0
  63. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dm.yml +0 -0
  64. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dsc.yml +0 -0
  65. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-edgeconfig.yml +0 -0
  66. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-fpl.yml +0 -0
  67. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-guardian.yml +0 -0
  68. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-iot.yml +0 -0
  69. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mbgx.yml +0 -0
  70. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mfgx.yml +0 -0
  71. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-monitor.yml +0 -0
  72. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-orgmgmt.yml +0 -0
  73. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-provision.yml +0 -0
  74. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-registry.yml +0 -0
  75. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-state.yml +0 -0
  76. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-webui.yml +0 -0
  77. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextaccelerator.yml +0 -0
  78. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextworkspace.yml +0 -0
  79. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-imagestitching.yml +0 -0
  80. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageaccelerators.yml +0 -0
  81. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageapp.yml +0 -0
  82. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageworkspace.yml +0 -0
  83. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-slackproxy.yml +0 -0
  84. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-pushnotificationcfg.yml +0 -0
  85. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-scimcfg.yml +0 -0
  86. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-slscfg.yml +0 -0
  87. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-smtpcfg.yml +0 -0
  88. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-suite.yml +0 -0
  89. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-visualinspection.yml +0 -0
  90. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-sls-licenseservice.yml +0 -0
  91. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-data-dictionary-assetdatadictionary.yml +0 -0
  92. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-bascfg.yml +0 -0
  93. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-coreidp.yml +0 -0
  94. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-actions.yml +0 -0
  95. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-auth.yml +0 -0
  96. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-datapower.yml +0 -0
  97. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-devops.yml +0 -0
  98. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dm.yml +0 -0
  99. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dsc.yml +0 -0
  100. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-edgeconfig.yml +0 -0
  101. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-fpl.yml +0 -0
  102. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-guardian.yml +0 -0
  103. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-iot.yml +0 -0
  104. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mbgx.yml +0 -0
  105. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mfgx.yml +0 -0
  106. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-monitor.yml +0 -0
  107. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-orgmgmt.yml +0 -0
  108. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-provision.yml +0 -0
  109. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-registry.yml +0 -0
  110. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-state.yml +0 -0
  111. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-webui.yml +0 -0
  112. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextaccelerator.yml +0 -0
  113. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextworkspace.yml +0 -0
  114. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-imagestitching.yml +0 -0
  115. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageaccelerators.yml +0 -0
  116. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageapp.yml +0 -0
  117. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageworkspace.yml +0 -0
  118. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-slackproxy.yml +0 -0
  119. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-pushnotificationcfg.yml +0 -0
  120. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-scimcfg.yml +0 -0
  121. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-slscfg.yml +0 -0
  122. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-smtpcfg.yml +0 -0
  123. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-suite.yml +0 -0
  124. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-visualinspection.yml +0 -0
  125. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-sls-licenseservice.yml +0 -0
  126. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/templates/suite_mongocfg.yml.j2 +0 -0
  127. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/uninstall/__init__.py +0 -0
  128. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/uninstall/app.py +0 -0
  129. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/uninstall/argParser.py +0 -0
  130. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/update/__init__.py +0 -0
  131. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/update/app.py +0 -0
  132. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/update/argParser.py +0 -0
  133. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/upgrade/__init__.py +0 -0
  134. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/upgrade/argParser.py +0 -0
  135. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/upgrade/settings/__init__.py +0 -0
  136. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas/cli/validators.py +0 -0
  137. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas-cli +0 -0
  138. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas_cli.egg-info/SOURCES.txt +0 -0
  139. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas_cli.egg-info/dependency_links.txt +0 -0
  140. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas_cli.egg-info/requires.txt +0 -0
  141. {mas_cli-21.0.0 → mas_cli-21.2.0}/src/mas_cli.egg-info/top_level.txt +0 -0
  142. {mas_cli-21.0.0 → mas_cli-21.2.0}/test/test_baseapp.py +0 -0
  143. {mas_cli-21.0.0 → mas_cli-21.2.0}/test/test_help.py +0 -0
  144. {mas_cli-21.0.0 → mas_cli-21.2.0}/test/test_slack_params.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mas-cli
3
- Version: 21.0.0
3
+ Version: 21.2.0
4
4
  Summary: Python Admin CLI for Maximo Application Suite
5
5
  Home-page: https://github.com/ibm-mas/cli
6
6
  Author: David Parker
@@ -10,4 +10,4 @@
10
10
 
11
11
  from .cli import BaseApp # noqa: F401
12
12
 
13
- __version__ = "21.0.0" # Python module compatible semver
13
+ __version__ = "21.2.0" # Python module compatible semver
@@ -120,7 +120,7 @@ class BaseApp(PrintMixin, PromptMixin):
120
120
  logging.getLogger('asyncio').setLevel(logging.INFO)
121
121
 
122
122
  # Supports extended semver, unlike mas.cli.__version__
123
- self.version: str = "21.0.0"
123
+ self.version: str = "21.2.0"
124
124
  self.h1count: int = 0
125
125
  self.h2count: int = 0
126
126
 
@@ -2150,6 +2150,36 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
2150
2150
  if not hasKafkaConfig:
2151
2151
  self.fatalError("--iot-channel requires Kafka configuration. Provide Kafka install arguments such as --kafka-provider, or supply a BYO Kafka config file named kafka-<mas-instance-id>-system.yaml using --additional-configs")
2152
2152
 
2153
+ # Validate Kafka requirements for CIVIL installation in non-interactive mode
2154
+ isCivilEnabled = self.installManage and "civil=" in self.getParam("mas_appws_components")
2155
+ if isCivilEnabled:
2156
+ manageChannel = self.getParam("mas_app_channel_manage")
2157
+ if manageChannel and isVersionEqualOrAfter('9.2.0', manageChannel):
2158
+ kafkaAction = self.getParam("kafka_action_system")
2159
+ hasKafkaConfig = kafkaAction in ["install", "byo"]
2160
+ if not hasKafkaConfig:
2161
+ # Warn user but give option to proceed (Civil will work, but Defect Detection won't)
2162
+ print_formatted_text(HTML("<Yellow>⚠ Warning: Kafka Configuration Required</Yellow>"))
2163
+ print_formatted_text(HTML(
2164
+ f"<LightSlateGrey>Installing Manage {manageChannel} with Civil Infrastructure component "
2165
+ "requires Kafka configuration. Civil versions >= 9.2.0 require a shared system-scope Kafka instance.</LightSlateGrey>"
2166
+ ))
2167
+ print_formatted_text(HTML(
2168
+ "<LightSlateGrey>Without Kafka, the Defect Detection functionality will not work.</LightSlateGrey>"
2169
+ ))
2170
+ print()
2171
+
2172
+ if self.noConfirm:
2173
+ # In non-interactive mode, log warning and proceed
2174
+ logger.warning(
2175
+ f"Installing Manage {manageChannel} with Civil component without Kafka configuration. "
2176
+ "Defect Detection functionality will not work."
2177
+ )
2178
+ else:
2179
+ # In interactive mode, ask user if they want to proceed
2180
+ if not self.yesOrNo("Do you want to proceed with the installation without Kafka? (Defect Detection functionality will not work)"):
2181
+ self.fatalError("Installation cancelled. Please configure Kafka before installing.")
2182
+
2153
2183
  @logMethodCall
2154
2184
  def install(self, argv):
2155
2185
  """
@@ -11,6 +11,7 @@
11
11
  from typing import TYPE_CHECKING, Dict, List, NoReturn
12
12
  from os import path
13
13
  from prompt_toolkit import print_formatted_text
14
+ from mas.devops.utils import isVersionEqualOrAfter
14
15
 
15
16
 
16
17
  if TYPE_CHECKING:
@@ -23,6 +24,7 @@ class KafkaSettingsMixin():
23
24
  # Attributes from BaseApp and other mixins
24
25
  params: Dict[str, str]
25
26
  installIoT: bool
27
+ installManage: bool
26
28
  showAdvancedOptions: bool
27
29
  localConfigDir: str | None
28
30
 
@@ -71,14 +73,49 @@ class KafkaSettingsMixin():
71
73
  def selectLocalConfigDir(self) -> None:
72
74
  ...
73
75
 
76
+ def _requiresKafkaIoT(self) -> bool:
77
+ return self.installIoT
78
+
79
+ def _requiresKafkaCivil(self) -> bool:
80
+ isCivilEnabled = self.installManage and "civil=" in self.getParam("mas_appws_components")
81
+ if isCivilEnabled:
82
+ manageChannel = self.getParam("mas_app_channel_manage")
83
+ if manageChannel and isVersionEqualOrAfter('9.2.0', manageChannel):
84
+ return True
85
+ return False
86
+
87
+ def _getKafkaRequirements(self) -> List[str]:
88
+ requirements = []
89
+ if self._requiresKafkaIoT():
90
+ requirements.append("Maximo IoT")
91
+ if self._requiresKafkaCivil():
92
+ requirements.append("Manage Civil Infrastructure (9.2+) Defect Detection")
93
+ return requirements
94
+
74
95
  def configKafka(self) -> None:
75
- if self.installIoT:
96
+ requirements = self._getKafkaRequirements()
97
+
98
+ if requirements:
76
99
  self.printH1("Configure Kafka")
77
- self.printDescription([
78
- "Maximo IoT requires a shared system-scope Kafka instance",
100
+
101
+ # Build description based on what requires Kafka
102
+ hasIoT = self._requiresKafkaIoT()
103
+ hasCivil = self._requiresKafkaCivil()
104
+
105
+ description = []
106
+ if hasIoT and hasCivil:
107
+ description.append("Maximo IoT and Manage Civil Infrastructure (9.2+) Defect Detection require a shared system-scope Kafka instance")
108
+ elif hasIoT:
109
+ description.append("Maximo IoT requires a shared system-scope Kafka instance")
110
+ elif hasCivil:
111
+ description.append("Manage Civil Infrastructure (9.2+) Defect Detection functionality requires a shared system-scope Kafka instance")
112
+
113
+ description.extend([
79
114
  "Supported Kafka providers: Strimzi, Red Hat AMQ Streams, IBM Cloud Event Streams and AWS MSK",
80
115
  "You may also choose to configure MAS to use an existing Kafka instance by providing a pre-existing configuration file"
81
116
  ])
117
+
118
+ self.printDescription(description)
82
119
  if self.yesOrNo("Create system Kafka instance using one of the supported providers"):
83
120
  self.setParam("kafka_action_system", "install")
84
121