mas-cli 19.5.1__tar.gz → 19.7.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 (136) hide show
  1. {mas_cli-19.5.1 → mas_cli-19.7.0}/PKG-INFO +1 -1
  2. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/__init__.py +1 -1
  3. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/app.py +13 -3
  4. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/argBuilder.py +4 -0
  5. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/argParser.py +17 -1
  6. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/params.py +3 -0
  7. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/summarizer.py +2 -0
  8. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/cli.py +3 -1
  9. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/app.py +18 -0
  10. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/argBuilder.py +5 -0
  11. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/argParser.py +12 -0
  12. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/__init__.py +2 -1
  13. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/manageSettings.py +4 -0
  14. mas_cli-19.7.0/src/mas/cli/install/settings/redisSettings.py +70 -0
  15. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/summarizer.py +8 -0
  16. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/ibm-mas-tekton.yaml +621 -222
  17. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/update/app.py +42 -0
  18. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas_cli.egg-info/PKG-INFO +1 -1
  19. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas_cli.egg-info/SOURCES.txt +1 -0
  20. {mas_cli-19.5.1 → mas_cli-19.7.0}/MANIFEST.in +0 -0
  21. {mas_cli-19.5.1 → mas_cli-19.7.0}/README.rst +0 -0
  22. {mas_cli-19.5.1 → mas_cli-19.7.0}/pyproject.toml +0 -0
  23. {mas_cli-19.5.1 → mas_cli-19.7.0}/setup.cfg +0 -0
  24. {mas_cli-19.5.1 → mas_cli-19.7.0}/setup.py +0 -0
  25. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/install/__init__.py +0 -0
  26. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/upgrade/__init__.py +0 -0
  27. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/upgrade/app.py +0 -0
  28. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/aiservice/upgrade/argParser.py +0 -0
  29. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/backup/__init__.py +0 -0
  30. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/backup/app.py +0 -0
  31. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/backup/argParser.py +0 -0
  32. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/displayMixins.py +0 -0
  33. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/gencfg.py +0 -0
  34. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/__init__.py +0 -0
  35. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/catalogs.py +0 -0
  36. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/params.py +0 -0
  37. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/additionalConfigs.py +0 -0
  38. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/db2Settings.py +0 -0
  39. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/kafkaSettings.py +0 -0
  40. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/install/settings/mongodbSettings.py +0 -0
  41. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/mirror/__init__.py +0 -0
  42. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/mirror/app.py +0 -0
  43. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/mirror/argParser.py +0 -0
  44. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/mirror/config.py +0 -0
  45. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/restore/__init__.py +0 -0
  46. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/restore/app.py +0 -0
  47. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/restore/argParser.py +0 -0
  48. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/facilities-configs.yml.j2 +0 -0
  49. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/jdbccfg.yml.j2 +0 -0
  50. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-data-dictionary-assetdatadictionary.yml +0 -0
  51. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-bascfg.yml +0 -0
  52. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-coreidp.yml +0 -0
  53. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-actions.yml +0 -0
  54. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-auth.yml +0 -0
  55. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-datapower.yml +0 -0
  56. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-devops.yml +0 -0
  57. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dm.yml +0 -0
  58. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-dsc.yml +0 -0
  59. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-edgeconfig.yml +0 -0
  60. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-fpl.yml +0 -0
  61. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-guardian.yml +0 -0
  62. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-iot.yml +0 -0
  63. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mbgx.yml +0 -0
  64. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-mfgx.yml +0 -0
  65. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-monitor.yml +0 -0
  66. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-orgmgmt.yml +0 -0
  67. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-provision.yml +0 -0
  68. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-registry.yml +0 -0
  69. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-state.yml +0 -0
  70. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-iot-webui.yml +0 -0
  71. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextaccelerator.yml +0 -0
  72. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-healthextworkspace.yml +0 -0
  73. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-imagestitching.yml +0 -0
  74. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageaccelerators.yml +0 -0
  75. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageapp.yml +0 -0
  76. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-manageworkspace.yml +0 -0
  77. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-manage-slackproxy.yml +0 -0
  78. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-pushnotificationcfg.yml +0 -0
  79. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-scimcfg.yml +0 -0
  80. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-slscfg.yml +0 -0
  81. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-smtpcfg.yml +0 -0
  82. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-suite.yml +0 -0
  83. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-mas-visualinspection.yml +0 -0
  84. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/best-effort/ibm-sls-licenseservice.yml +0 -0
  85. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-data-dictionary-assetdatadictionary.yml +0 -0
  86. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-bascfg.yml +0 -0
  87. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-coreidp.yml +0 -0
  88. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-actions.yml +0 -0
  89. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-auth.yml +0 -0
  90. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-datapower.yml +0 -0
  91. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-devops.yml +0 -0
  92. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dm.yml +0 -0
  93. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-dsc.yml +0 -0
  94. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-edgeconfig.yml +0 -0
  95. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-fpl.yml +0 -0
  96. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-guardian.yml +0 -0
  97. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-iot.yml +0 -0
  98. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mbgx.yml +0 -0
  99. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-mfgx.yml +0 -0
  100. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-monitor.yml +0 -0
  101. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-orgmgmt.yml +0 -0
  102. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-provision.yml +0 -0
  103. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-registry.yml +0 -0
  104. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-state.yml +0 -0
  105. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-iot-webui.yml +0 -0
  106. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextaccelerator.yml +0 -0
  107. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-healthextworkspace.yml +0 -0
  108. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-imagestitching.yml +0 -0
  109. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageaccelerators.yml +0 -0
  110. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageapp.yml +0 -0
  111. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-manageworkspace.yml +0 -0
  112. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-manage-slackproxy.yml +0 -0
  113. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-pushnotificationcfg.yml +0 -0
  114. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-scimcfg.yml +0 -0
  115. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-slscfg.yml +0 -0
  116. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-smtpcfg.yml +0 -0
  117. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-suite.yml +0 -0
  118. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-mas-visualinspection.yml +0 -0
  119. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/pod-templates/guaranteed/ibm-sls-licenseservice.yml +0 -0
  120. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/templates/suite_mongocfg.yml.j2 +0 -0
  121. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/uninstall/__init__.py +0 -0
  122. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/uninstall/app.py +0 -0
  123. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/uninstall/argParser.py +0 -0
  124. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/update/__init__.py +0 -0
  125. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/update/argParser.py +0 -0
  126. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/upgrade/__init__.py +0 -0
  127. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/upgrade/app.py +0 -0
  128. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/upgrade/argParser.py +0 -0
  129. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/upgrade/settings/__init__.py +0 -0
  130. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas/cli/validators.py +0 -0
  131. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas-cli +0 -0
  132. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas_cli.egg-info/dependency_links.txt +0 -0
  133. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas_cli.egg-info/requires.txt +0 -0
  134. {mas_cli-19.5.1 → mas_cli-19.7.0}/src/mas_cli.egg-info/top_level.txt +0 -0
  135. {mas_cli-19.5.1 → mas_cli-19.7.0}/test/test_baseapp.py +0 -0
  136. {mas_cli-19.5.1 → mas_cli-19.7.0}/test/test_help.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mas-cli
3
- Version: 19.5.1
3
+ Version: 19.7.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
@@ -8,4 +8,4 @@
8
8
  #
9
9
  # *****************************************************************************
10
10
 
11
- __version__ = "19.5.1" # Python module compatible semver
11
+ __version__ = "19.7.0" # Python module compatible semver
@@ -130,6 +130,7 @@ class AiServiceInstallApp(BaseApp, aiServiceInstallArgBuilderMixin, aiServiceIns
130
130
  self.printDescription([
131
131
  "There are two flavours of the interactive install to choose from: <u>Simplified</u> and <u>Advanced</u>. The simplified option will present fewer dialogs, but you lose the ability to configure the following aspects of the installation:",
132
132
  " - Configure certificate issuer",
133
+ " - Enable IPv6 SingleStack networking for services",
133
134
  ])
134
135
  self.showAdvancedOptions = self.yesOrNo("Show advanced installation options")
135
136
 
@@ -332,14 +333,14 @@ class AiServiceInstallApp(BaseApp, aiServiceInstallArgBuilderMixin, aiServiceIns
332
333
 
333
334
  elif key == "manual_certificates":
334
335
  if value is not None:
335
- self.setParam("mas_manual_cert_mgmt", True)
336
+ self.setParam("mas_manual_cert_mgmt", "true")
336
337
  self.manualCertsDir = value
337
338
  else:
338
- self.setParam("mas_manual_cert_mgmt", False)
339
+ self.setParam("mas_manual_cert_mgmt", "false")
339
340
  self.manualCertsDir = None
340
341
 
341
342
  elif key == "enable_ipv6":
342
- self.setParam("enable_ipv6", True)
343
+ self.setParam("enable_ipv6", "true")
343
344
 
344
345
  # Fail if there's any arguments we don't know how to handle
345
346
  else:
@@ -565,6 +566,9 @@ class AiServiceInstallApp(BaseApp, aiServiceInstallArgBuilderMixin, aiServiceIns
565
566
  # Configure Certificate Issuer
566
567
  self.configCertIssuer()
567
568
 
569
+ # Configure Network configuration for services
570
+ self.configNetworking()
571
+
568
572
  @logMethodCall
569
573
  def configCertIssuer(self):
570
574
  if self.showAdvancedOptions:
@@ -573,6 +577,12 @@ class AiServiceInstallApp(BaseApp, aiServiceInstallArgBuilderMixin, aiServiceIns
573
577
  if configureCertIssuer:
574
578
  self.promptForString("Certificate issuer name", "aiservice_certificate_issuer")
575
579
 
580
+ @logMethodCall
581
+ def configNetworking(self):
582
+ if self.showAdvancedOptions:
583
+ self.printH1("Network configuration for services")
584
+ self.yesOrNo('Enable IPv6 SingleStack networking', 'enable_ipv6')
585
+
576
586
  @logMethodCall
577
587
  def aiServiceTenantSettings(self) -> None:
578
588
  self.printH1("AI Service Tenant Settings")
@@ -108,6 +108,10 @@ class aiServiceInstallArgBuilderMixin():
108
108
  if self.getParam('aiservice_certificate_issuer') != "":
109
109
  command += f" --aiservice-certificate-issuer \"{self.getParam('aiservice_certificate_issuer')}\"{newline}"
110
110
 
111
+ # Enable IPv6 networking
112
+ if self.getParam('enable_ipv6').lower() == "true":
113
+ command += f" --enable-ipv6{newline}"
114
+
111
115
  if self.getParam('aiservice_s3_accesskey') != "":
112
116
  command += f" --s3-accesskey \"{self.getParam('aiservice_s3_accesskey')}\"{newline}"
113
117
  if self.getParam('aiservice_s3_secretkey') != "":
@@ -422,12 +422,28 @@ aiServiceArgGroup.add_argument(
422
422
  default="non-production",
423
423
  help="Environment type (default: non-production)"
424
424
  )
425
- aiServiceArgGroup.add_argument(
425
+
426
+ # AI Service advanced configuration
427
+ # -----------------------------------------------------------------------------
428
+ aiserviceAdvancedArgGroup = aiServiceinstallArgParser.add_argument_group(
429
+ "Advanced configuration for AI Service",
430
+ "Advanced configuration options for AI Service including certificates issuer and IPv6 support"
431
+ )
432
+ aiserviceAdvancedArgGroup.add_argument(
426
433
  "--aiservice-certificate-issuer",
427
434
  dest="aiservice_certificate_issuer",
428
435
  required=False,
429
436
  help="Provide the name of the Issuer to configure AI Service to issue certificates",
430
437
  )
438
+ aiserviceAdvancedArgGroup.add_argument(
439
+ "--enable-ipv6",
440
+ dest="enable_ipv6",
441
+ required=False,
442
+ default="false",
443
+ help="Configure AI Service to run in IPv6. Before setting this option, be sure your cluster is configured in IPv6",
444
+ action="store_const",
445
+ const="true"
446
+ )
431
447
 
432
448
 
433
449
  # IBM Db2 Universal Operator
@@ -103,4 +103,7 @@ optionalParams = [
103
103
 
104
104
  # Certificate Issuer
105
105
  "aiservice_certificate_issuer",
106
+
107
+ # Enable IPv6 networking
108
+ "enable_ipv6",
106
109
  ]
@@ -50,6 +50,8 @@ class aiServiceInstallSummarizerMixin():
50
50
  if "aiservice_certificate_issuer" in self.params:
51
51
  self.printParamSummary("Certificate Issuer", "aiservice_certificate_issuer")
52
52
 
53
+ self.printParamSummary("Configure AI Service to run in IPv6 mode", "enable_ipv6")
54
+
53
55
  self.printH2("AI Service Tenant Entitlement")
54
56
  self.printParamSummary("Entitlement Type", "tenant_entitlement_type")
55
57
  self.printParamSummary("Start Date", "tenant_entitlement_start_date")
@@ -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 = "19.5.1"
123
+ self.version: str = "19.7.0"
124
124
  self.h1count: int = 0
125
125
  self.h2count: int = 0
126
126
 
@@ -153,6 +153,8 @@ class BaseApp(PrintMixin, PromptMixin):
153
153
  "manage": ["9.2.x-feature", "9.1.x"],
154
154
  "optimizer": ["9.2.x-feature", "9.1.x"],
155
155
  "visualinspection": ["9.2.x-feature", "9.1.x"],
156
+ "iot": ["9.2.x-feature", "9.1.x"],
157
+ "monitor": ["9.2.x-feature", "9.1.x"],
156
158
  },
157
159
  "9.1.x": {
158
160
  "facilities": ["9.1.x"],
@@ -846,7 +846,11 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
846
846
  if self.isSNO():
847
847
  self.setParam("mongodb_replicas", "1")
848
848
  self.setParam("mongodb_cpu_requests", "500m")
849
+ self.setParam("redis_replicas", "1")
849
850
  self.setParam("mas_app_settings_aio_flag", "false")
851
+ else:
852
+ # Multi-node cluster: use 3 replicas for Redis HA
853
+ self.setParam("redis_replicas", "3")
850
854
 
851
855
  @logMethodCall
852
856
  def configDNSAndCerts(self):
@@ -1718,6 +1722,12 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
1718
1722
  if value is not None and value != "":
1719
1723
  self.setParam(key, value)
1720
1724
  self.setParam("sls_mongodb_cfg_file", f"/workspace/configs/mongo-{value}.yml")
1725
+ # Redis
1726
+ elif key == "redis_namespace":
1727
+ if value is not None and value != "":
1728
+ self.setParam(key, value)
1729
+ self.setParam("redis_action", "install")
1730
+ self.setParam("redis_cfg_file", f"/workspace/configs/redis-{value}.yml")
1721
1731
 
1722
1732
  # SLS
1723
1733
  elif key == "license_file":
@@ -1870,6 +1880,14 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
1870
1880
  if ((self.getParam("mas_app_channel_predict") is not None and self.getParam("mas_app_channel_predict") != "") and 'health' not in self.getParam("mas_appws_components")):
1871
1881
  self.fatalError("--manage-components must include 'health' component when installing Predict")
1872
1882
 
1883
+ # Configure Redis if Collaborate addon is enabled
1884
+ if self.installManage and "collaborate=" in self.getParam("mas_appws_components"):
1885
+ logger.debug("Collaborate addon detected in mas_appws_components, configuring Redis")
1886
+ self.setParam("redis_action", "install")
1887
+ if self.getParam("redis_namespace") == "":
1888
+ self.setParam("redis_namespace", "redis")
1889
+ self.setParam("redis_cfg_file", f"/workspace/configs/redis-{self.getParam('redis_namespace')}.yml")
1890
+
1873
1891
  # Validate ArcGIS installation requirements in non-interactive mode
1874
1892
  if self.installArcgis:
1875
1893
  hasSpatial = self.installManage and "spatial=" in self.getParam("mas_appws_components")
@@ -180,6 +180,11 @@ class installArgBuilderMixin():
180
180
  if self.getParam('mongodb_namespace') != "":
181
181
  command += f" --mongodb-namespace \"{self.getParam('mongodb_namespace')}\"{newline}"
182
182
 
183
+ # Redis Configuration
184
+ # -----------------------------------------------------------------------------
185
+ if self.getParam('redis_namespace') != "":
186
+ command += f" --redis-namespace \"{self.getParam('redis_namespace')}\"{newline}"
187
+
183
188
  # OCP Configuration
184
189
  # -----------------------------------------------------------------------------
185
190
  if self.getParam('ocp_ingress_tls_secret_name') != "":
@@ -423,6 +423,18 @@ mongoArgGroup.add_argument(
423
423
  help="Namespace for MongoDB Community Operator"
424
424
  )
425
425
 
426
+ # Redis Configuration
427
+ # -----------------------------------------------------------------------------
428
+ redisArgGroup = installArgParser.add_argument_group(
429
+ "Redis",
430
+ "Configure the namespace for Redis deployment (required for Collaborate addon)."
431
+ )
432
+ redisArgGroup.add_argument(
433
+ "--redis-namespace",
434
+ required=False,
435
+ help="Namespace for Redis deployment (default: redis)"
436
+ )
437
+
426
438
  # OCP Configuration
427
439
  # -----------------------------------------------------------------------------
428
440
  ocpArgGroup = installArgParser.add_argument_group(
@@ -10,12 +10,13 @@
10
10
 
11
11
  from .db2Settings import Db2SettingsMixin
12
12
  from .mongodbSettings import MongoDbSettingsMixin
13
+ from .redisSettings import RedisSettingsMixin
13
14
  from .kafkaSettings import KafkaSettingsMixin
14
15
  from .manageSettings import ManageSettingsMixin
15
16
  from .additionalConfigs import AdditionalConfigsMixin
16
17
 
17
18
 
18
- class InstallSettingsMixin(Db2SettingsMixin, MongoDbSettingsMixin, KafkaSettingsMixin, ManageSettingsMixin, AdditionalConfigsMixin):
19
+ class InstallSettingsMixin(Db2SettingsMixin, MongoDbSettingsMixin, RedisSettingsMixin, KafkaSettingsMixin, ManageSettingsMixin, AdditionalConfigsMixin):
19
20
  """
20
21
  This class collects all the Mixins providing interactive prompts for mas-install
21
22
  """
@@ -176,6 +176,10 @@ class ManageSettingsMixin():
176
176
  self.params["mas_appws_components"] += ",aip=latest"
177
177
  if self.yesOrNo(" - Vegetation Management"):
178
178
  self.params["mas_appws_components"] += ",vegm=latest"
179
+ if self.yesOrNo(" - Collaborate"):
180
+ self.params["mas_appws_components"] += ",collaborate=latest"
181
+ # Configure Redis for Collaborate addon
182
+ self.configRedis()
179
183
  logger.debug(f"Generated mas_appws_components = {self.params['mas_appws_components']}")
180
184
 
181
185
  if ",icd=" in self.params["mas_appws_components"]:
@@ -0,0 +1,70 @@
1
+ # *****************************************************************************
2
+ # Copyright (c) 2024, 2026 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 typing import TYPE_CHECKING, Dict, List
12
+
13
+
14
+ if TYPE_CHECKING:
15
+ from prompt_toolkit.completion import WordCompleter
16
+ from prompt_toolkit.validation import Validator
17
+
18
+
19
+ class RedisSettingsMixin():
20
+ if TYPE_CHECKING:
21
+ # Attributes from BaseApp and other mixins
22
+ params: Dict[str, str]
23
+ showAdvancedOptions: bool
24
+
25
+ # Methods from BaseApp
26
+ def setParam(self, param: str, value: str) -> None:
27
+ ...
28
+
29
+ def getParam(self, param: str) -> str:
30
+ ...
31
+
32
+ # Methods from PrintMixin
33
+ def printH1(self, message: str) -> None:
34
+ ...
35
+
36
+ def printDescription(self, content: List[str]) -> None:
37
+ ...
38
+
39
+ # Methods from PromptMixin
40
+ def promptForString(
41
+ self,
42
+ message: str,
43
+ param: str | None = None,
44
+ default: str = "",
45
+ isPassword: bool = False,
46
+ validator: Validator | None = None,
47
+ completer: WordCompleter | None = None
48
+ ) -> str:
49
+ ...
50
+
51
+ def configRedis(self) -> None:
52
+ """
53
+ Configure Redis for Collaborate addon.
54
+ Redis will be deployed automatically when Collaborate is enabled.
55
+ """
56
+ self.printH1("Configure Redis for Collaborate")
57
+ self.printDescription([
58
+ "Redis is required for the Collaborate addon to support caching.",
59
+ "The installer will automatically deploy Redis with high availability (Sentinel + HAProxy)."
60
+ ])
61
+
62
+ if self.showAdvancedOptions:
63
+ self.promptForString("Redis namespace", "redis_namespace", default="redis")
64
+ else:
65
+ # Use default namespace
66
+ self.setParam("redis_namespace", "redis")
67
+
68
+ # Always install Redis when Collaborate is enabled
69
+ self.setParam("redis_action", "install")
70
+ self.setParam("redis_cfg_file", f"/workspace/configs/redis-{self.getParam('redis_namespace')}.yml")
@@ -198,6 +198,7 @@ class InstallSummarizerMixin():
198
198
  self.printSummary(" + Workday Applications", "Enabled" if "workday=" in self.getParam("mas_appws_components") else "Disabled")
199
199
  self.printSummary(" + AIP", "Enabled" if "aip=" in self.getParam("mas_appws_components") else "Disabled")
200
200
  self.printSummary(" + Vegetation Management", "Enabled" if "vegm=" in self.getParam("mas_appws_components") else "Disabled")
201
+ self.printSummary(" + Collaborate", "Enabled" if "collaborate=" in self.getParam("mas_appws_components") else "Disabled")
201
202
 
202
203
  self.printParamSummary("+ Upgrade Type", "mas_appws_upgrade_type")
203
204
 
@@ -375,6 +376,12 @@ class InstallSummarizerMixin():
375
376
  else:
376
377
  self.fatalError(f"Unexpected value for mongodb_action parameter: {self.getParam('mongodb_action')}")
377
378
 
379
+ def redisSummary(self) -> None:
380
+ if self.getParam("redis_action") == "install":
381
+ self.printH2("Redis")
382
+ self.printSummary("Type", "Redis with Sentinel HA")
383
+ self.printParamSummary("Install Namespace", "redis_namespace")
384
+
378
385
  def kafkaSummary(self) -> None:
379
386
  if self.getParam("kafka_action_system") != "":
380
387
  self.printH2("Kafka")
@@ -445,6 +452,7 @@ class InstallSummarizerMixin():
445
452
 
446
453
  # Application Dependencies
447
454
  self.mongoSummary()
455
+ self.redisSummary()
448
456
  self.db2Summary()
449
457
  self.cosSummary()
450
458
  self.kafkaSummary()