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,180 @@
1
+ # *****************************************************************************
2
+ # Copyright (c) 2024, 2025 IBM Corporation and other Contributors.
3
+ #
4
+ # All rights reserved. This program and the accompanying materials
5
+ # are made available under the terms of the Eclipse Public License v1.0
6
+ # which accompanies this distribution, and is available at
7
+ # http://www.eclipse.org/legal/epl-v10.html
8
+ #
9
+ # *****************************************************************************
10
+
11
+ import logging
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+
16
+ class aiServiceInstallArgBuilderMixin():
17
+ def buildCommand(self) -> str:
18
+ # MAS Catalog Selection & Entitlement
19
+ # -----------------------------------------------------------------------------
20
+ newline = " \\\n"
21
+ command = "export IBM_ENTITLEMENT_KEY=x\n"
22
+ if self.getParam('ibmcloud_apikey') != "":
23
+ command += "export IBMCLOUD_APIKEY=x\n"
24
+ if self.getParam('aws_access_key_id') != "":
25
+ command += "export AWS_ACCESS_KEY_ID=x\n"
26
+ if self.getParam('secret_access_key') != "":
27
+ command += "export SECRET_ACCESS_KEY=x\n"
28
+ if self.getParam('artifactory_username') != "":
29
+ command += "export ARTIFACTORY_USERNAME=x\nexport ARTIFACTORY_TOKEN=x\n"
30
+
31
+ command += f"mas aiservice-install --mas-catalog-version {self.getParam('mas_catalog_version')}"
32
+
33
+ if self.getParam('mas_catalog_digest') != "":
34
+ command += f" --mas-catalog-digest {self.getParam('mas_catalog_digest')}"
35
+
36
+ command += f" --ibm-entitlement-key $IBM_ENTITLEMENT_KEY{newline}"
37
+
38
+ # Aibroker Instance Id
39
+ command += f" --aiservice-instance-id \"{self.getParam('aiservice_instance_id')}\"{newline}"
40
+
41
+ # MAS Advanced Configuration
42
+ # -----------------------------------------------------------------------------
43
+
44
+ if self.localConfigDir is not None:
45
+ command += f" --additional-configs \"{self.localConfigDir}\"{newline}"
46
+
47
+ # Storage
48
+ # -----------------------------------------------------------------------------
49
+ command += f" --storage-class-rwo \"{self.getParam('storage_class_rwo')}\""
50
+ command += f" --storage-class-rwx \"{self.getParam('storage_class_rwx')}\"{newline}"
51
+ command += f" --storage-pipeline \"{self.pipelineStorageClass}\""
52
+ command += f" --storage-accessmode \"{self.pipelineStorageAccessMode}\"{newline}"
53
+
54
+ # IBM Suite License Service
55
+ # -----------------------------------------------------------------------------
56
+ if self.getParam("sls_namespace") and self.getParam("sls_namespace") != "ibm-sls":
57
+ if self.getParam("aiservice_instance_id") and self.getParam("sls_namespace") == f"mas-{self.getParam('mas_instance_id')}-sls":
58
+ command += " --dedicated-sls"
59
+ else:
60
+ command += f" --sls-namespace \"{self.getParam('sls_namespace')}\""
61
+ if self.slsLicenseFileLocal:
62
+ command += f" --license-file \"{self.slsLicenseFileLocal}\""
63
+ if self.getParam("sls_namespace") and self.getParam("sls_namespace") != "ibm-sls" or self.slsLicenseFileLocal:
64
+ command += newline
65
+
66
+ # IBM Data Reporting Operator (DRO)
67
+ # -----------------------------------------------------------------------------
68
+ command += f" --uds-email \"{self.getParam('uds_contact_email')}\""
69
+ command += f" --uds-firstname \"{self.getParam('uds_contact_firstname')}\""
70
+ command += f" --uds-lastname \"{self.getParam('uds_contact_lastname')}\"{newline}"
71
+ if self.getParam('dro_namespace') != "":
72
+ command += f" --dro-namespace \"{self.getParam('dro_namespace')}\"{newline}"
73
+
74
+ # MongoDb Community Operator
75
+ # -----------------------------------------------------------------------------
76
+ if self.getParam('mongodb_namespace') != "":
77
+ command += f" --mongodb-namespace \"{self.getParam('mongodb_namespace')}\"{newline}"
78
+
79
+ # Aibroker Channel
80
+ # -----------------------------------------------------------------------------
81
+ command += f" --aiservice-channel \"{self.getParam('aiservice_channel')}\"{newline}"
82
+
83
+ # IBM Db2 Universal Operator
84
+ # -----------------------------------------------------------------------------
85
+ command += f" --db2-aiservice{newline}"
86
+
87
+ # Development Mode
88
+ # -----------------------------------------------------------------------------
89
+ if self.getParam('artifactory_username') != "":
90
+ command += f" --artifactory-username $ARTIFACTORY_USERNAME --artifactory-token $ARTIFACTORY_TOKEN{newline}"
91
+
92
+ # Approvals
93
+ # -----------------------------------------------------------------------------
94
+ if self.getParam('approval_aibroker') != "":
95
+ command += f" --approval-aibroker \"{self.getParam('approval_aibroker')}\"{newline}"
96
+
97
+ # More Options
98
+ # -----------------------------------------------------------------------------
99
+ if self.devMode:
100
+ command += f" --dev-mode{newline}"
101
+ if not self.waitForPVC:
102
+ command += f" --no-wait-for-pvc{newline}"
103
+ if self.getParam('skip_pre_check') is True:
104
+ command += f" --skip-pre-check{newline}"
105
+ if self.getParam('image_pull_policy') != "":
106
+ command += f" --image-pull-policy {self.getParam('image_pull_policy')}{newline}"
107
+ if self.getParam('service_account_name') != "":
108
+ command += f" --service-account {self.getParam('service_account_name')}{newline}"
109
+
110
+ # Aibroker Advanced Settings
111
+ # -----------------------------------------------------------------------------
112
+ if self.getParam('aiservice_storage_provider') != "":
113
+ command += f" --aiservice-storage-provider \"{self.getParam('aiservice_storage_provider')}\"{newline}"
114
+ if self.getParam('aiservice_storage_accesskey') != "":
115
+ command += f" --aiservice-storage-accesskey \"{self.getParam('aiservice_storage_accesskey')}\"{newline}"
116
+ if self.getParam('aiservice_storage_secretkey') != "":
117
+ command += f" --aiservice-storage-secretkey \"{self.getParam('aiservice_storage_secretkey')}\"{newline}"
118
+ if self.getParam('aiservice_storage_host') != "":
119
+ command += f" --aiservice-storage-host \"{self.getParam('aiservice_storage_host')}\"{newline}"
120
+ if self.getParam('aiservice_storage_port') != "":
121
+ command += f" --aiservice-storage-port \"{self.getParam('aiservice_storage_port')}\"{newline}"
122
+ if self.getParam('aiservice_storage_ssl') != "":
123
+ command += f" --aiservice-storage-ssl \"{self.getParam('aiservice_storage_ssl')}\"{newline}"
124
+ if self.getParam('aiservice_storage_region') != "":
125
+ command += f" --aiservice-storage-region \"{self.getParam('aiservice_storage_region')}\"{newline}"
126
+ if self.getParam('aiservice_storage_pipelines_bucket') != "":
127
+ command += f" --aiservice-storage-pipelines-bucket \"{self.getParam('aiservice_storage_pipelines_bucket')}\"{newline}"
128
+ if self.getParam('aiservice_storage_tenants_bucket') != "":
129
+ command += f" --aiservice-storage-tenants-bucket \"{self.getParam('aiservice_storage_tenants_bucket')}\"{newline}"
130
+ if self.getParam('aiservice_storage_templates_bucket') != "":
131
+ command += f" --aiservice-storage-templates-bucket \"{self.getParam('aiservice_storage_templates_bucket')}\"{newline}"
132
+
133
+ if self.getParam('aiservice_watsonxai_apikey') != "":
134
+ command += f" --aiservice-watsonxai-apikey \"{self.getParam('aiservice_watsonxai_apikey')}\"{newline}"
135
+ if self.getParam('aiservice_watsonxai_url') != "":
136
+ command += f" --aiservice-watsonxai-url \"{self.getParam('aiservice_watsonxai_url')}\"{newline}"
137
+ if self.getParam('aiservice_watsonxai_project_id') != "":
138
+ command += f" --aiservice-watsonxai-project-id \"{self.getParam('aiservice_watsonxai_project_id')}\"{newline}"
139
+ if self.getParam('aiservice_watsonx_action') != "":
140
+ command += f" --aiservice-watsonx-action \"{self.getParam('aiservice_watsonx_action')}\"{newline}"
141
+
142
+ if self.getParam('minio_root_user') != "":
143
+ command += f" --minio-root-user \"{self.getParam('minio_root_user')}\"{newline}"
144
+ if self.getParam('minio_root_password') != "":
145
+ command += f" --minio-root-password \"{self.getParam('minio_root_password')}\"{newline}"
146
+
147
+ if self.getParam('tenant_entitlement_type') != "":
148
+ command += f" --tenant-entitlement-type \"{self.getParam('tenant_entitlement_type')}\"{newline}"
149
+ if self.getParam('tenant_entitlement_start_date') != "":
150
+ command += f" --tenant-entitlement-start-date \"{self.getParam('tenant_entitlement_start_date')}\"{newline}"
151
+ if self.getParam('tenant_entitlement_end_date') != "":
152
+ command += f" --tenant-entitlement-end-date \"{self.getParam('tenant_entitlement_end_date')}\"{newline}"
153
+
154
+ if self.getParam('aiservice_s3_bucket_prefix') != "":
155
+ command += f" --aiservice-s3-bucket-prefix \"{self.getParam('aiservice_s3_bucket_prefix')}\"{newline}"
156
+ if self.getParam('aiservice_s3_endpoint_url') != "":
157
+ command += f" --aiservice-s3-endpoint-url \"{self.getParam('aiservice_s3_endpoint_url')}\"{newline}"
158
+ if self.getParam('aiservice_s3_region') != "":
159
+ command += f" --aiservice-s3-region \"{self.getParam('aiservice_s3_region')}\"{newline}"
160
+
161
+ if self.getParam('aiservice_tenant_s3_bucket_prefix') != "":
162
+ command += f" --aiservice-tenant-s3-bucket-prefix \"{self.getParam('aiservice_tenant_s3_bucket_prefix')}\"{newline}"
163
+ if self.getParam('aiservice_tenant_s3_region') != "":
164
+ command += f" --aiservice-tenant-s3-region \"{self.getParam('aiservice_tenant_s3_region')}\"{newline}"
165
+ if self.getParam('aiservice_tenant_s3_endpoint_url') != "":
166
+ command += f" --aiservice-tenant-s3-endpoint-url \"{self.getParam('aiservice_tenant_s3_endpoint_url')}\"{newline}"
167
+ if self.getParam('aiservice_tenant_s3_access_key') != "":
168
+ command += f" --aiservice-tenant-s3-access-key \"{self.getParam('aiservice_tenant_s3_access_key')}\"{newline}"
169
+ if self.getParam('aiservice_tenant_s3_secret_key') != "":
170
+ command += f" --aiservice-tenant-s3-secret-key \"{self.getParam('aiservice_tenant_s3_secret_key')}\"{newline}"
171
+
172
+ if self.getParam('rsl_url') != "":
173
+ command += f" --rsl-url \"{self.getParam('rsl_url')}\"{newline}"
174
+ if self.getParam('rsl_org_id') != "":
175
+ command += f" --rsl-org-id \"{self.getParam('rsl_org_id')}\"{newline}"
176
+ if self.getParam('rsl_token') != "":
177
+ command += f" --rsl-token \"{self.getParam('rsl_token')}\"{newline}"
178
+
179
+ command += " --accept-license --no-confirm"
180
+ return command
@@ -0,0 +1,507 @@
1
+ # *****************************************************************************
2
+ # Copyright (c) 2024, 2025 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 argparse
12
+ from os import path
13
+
14
+ from ... import __version__ as packageVersion
15
+ from ...cli import getHelpFormatter
16
+
17
+
18
+ def isValidFile(parser, arg) -> str:
19
+ if not path.exists(arg):
20
+ parser.error(f"Error: The file {arg} does not exist")
21
+ else:
22
+ return arg
23
+
24
+
25
+ aiServiceinstallArgParser = argparse.ArgumentParser(
26
+ prog="mas install-aiservice",
27
+ description="\n".join([
28
+ f"IBM Maximo Application Suite Admin CLI v{packageVersion}",
29
+ "Install Aiservice by configuring and launching the Tekton Pipeline.\n",
30
+ "Interactive Mode:",
31
+ "Omitting the --instance-id option will trigger an interactive prompt"
32
+ ]),
33
+ epilog="Refer to the online documentation for more information: https://ibm-mas.github.io/cli/",
34
+ formatter_class=getHelpFormatter(),
35
+ add_help=False
36
+ )
37
+
38
+ # MAS Catalog Selection & Entitlement
39
+ # -----------------------------------------------------------------------------
40
+ catArgGroup = aiServiceinstallArgParser.add_argument_group("MAS Catalog Selection & Entitlement")
41
+ catArgGroup.add_argument(
42
+ "-c", "--mas-catalog-version",
43
+ required=False,
44
+ help="IBM Maximo Operator Catalog to install"
45
+ )
46
+ catArgGroup.add_argument(
47
+ "--mas-catalog-digest",
48
+ required=False,
49
+ help="IBM Maximo Operator Catalog Digest, only required when installing development catalog sources"
50
+ )
51
+ catArgGroup.add_argument(
52
+ "--ibm-entitlement-key",
53
+ required=False,
54
+ help="IBM entitlement key"
55
+ )
56
+
57
+ # Aibroker Basic Configuration
58
+ # -----------------------------------------------------------------------------
59
+ masArgGroup = aiServiceinstallArgParser.add_argument_group("Aibroker Basic Configuration")
60
+ masArgGroup.add_argument(
61
+ "-i", "--aiservice-instance-id",
62
+ required=False,
63
+ help="Aibroker Instance ID"
64
+ )
65
+
66
+ # MAS Advanced Configuration
67
+ # -----------------------------------------------------------------------------
68
+ masAdvancedArgGroup = aiServiceinstallArgParser.add_argument_group("MAS Advanced Configuration")
69
+ masAdvancedArgGroup.add_argument(
70
+ "--additional-configs",
71
+ required=False,
72
+ help="Path to a directory containing additional configuration files to be applied"
73
+ )
74
+ masAdvancedArgGroup.add_argument(
75
+ "--non-prod",
76
+ required=False,
77
+ help="Install MAS in non-production mode",
78
+ action="store_true"
79
+ )
80
+
81
+ # Storage
82
+ # -----------------------------------------------------------------------------
83
+ storageArgGroup = aiServiceinstallArgParser.add_argument_group("Storage")
84
+ storageArgGroup.add_argument(
85
+ "--storage-class-rwo",
86
+ required=False,
87
+ help="ReadWriteOnce (RWO) storage class (e.g. ibmc-block-gold)"
88
+ )
89
+ storageArgGroup.add_argument(
90
+ "--storage-class-rwx",
91
+ required=False,
92
+ help="ReadWriteMany (RWX) storage class (e.g. ibmc-file-gold-gid)"
93
+ )
94
+ storageArgGroup.add_argument(
95
+ "--storage-pipeline",
96
+ required=False,
97
+ help="Install pipeline storage class (e.g. ibmc-file-gold-gid)"
98
+ )
99
+ storageArgGroup.add_argument(
100
+ "--storage-accessmode",
101
+ required=False,
102
+ help="Install pipeline storage class access mode (ReadWriteMany or ReadWriteOnce)",
103
+ choices=["ReadWriteMany", "ReadWriteOnce"]
104
+ )
105
+
106
+ # IBM Suite License Service
107
+ # -----------------------------------------------------------------------------
108
+ slsArgGroup = aiServiceinstallArgParser.add_argument_group("IBM Suite License Service")
109
+ slsArgGroup.add_argument(
110
+ "--license-file",
111
+ required=False,
112
+ help="Path to MAS license file",
113
+ type=lambda x: isValidFile(aiServiceinstallArgParser, x)
114
+ )
115
+ slsArgGroup.add_argument(
116
+ "--sls-namespace",
117
+ required=False,
118
+ help="Customize the SLS install namespace",
119
+ default="ibm-sls"
120
+ )
121
+ slsArgGroup.add_argument(
122
+ "--dedicated-sls",
123
+ action="store_true",
124
+ default=False,
125
+ help="Set the SLS namespace to mas-<instanceid>-sls"
126
+ )
127
+
128
+ # IBM Data Reporting Operator (DRO)
129
+ # -----------------------------------------------------------------------------
130
+ droArgGroup = aiServiceinstallArgParser.add_argument_group("IBM Data Reporting Operator (DRO)")
131
+ droArgGroup.add_argument(
132
+ "--uds-email",
133
+ dest="uds_contact_email",
134
+ required=False,
135
+ help="Contact e-mail address"
136
+ )
137
+ droArgGroup.add_argument(
138
+ "--uds-firstname",
139
+ dest="uds_contact_firstname",
140
+ required=False,
141
+ help="Contact first name"
142
+ )
143
+ droArgGroup.add_argument(
144
+ "--uds-lastname",
145
+ dest="uds_contact_lastname",
146
+ required=False,
147
+ help="Contact last name"
148
+ )
149
+ droArgGroup.add_argument(
150
+ "--dro-namespace",
151
+ required=False,
152
+ help=""
153
+ )
154
+
155
+ # MongoDb Community Operator
156
+ # -----------------------------------------------------------------------------
157
+ mongoArgGroup = aiServiceinstallArgParser.add_argument_group("MongoDb Community Operator")
158
+ mongoArgGroup.add_argument(
159
+ "--mongodb-namespace",
160
+ required=False,
161
+ help=""
162
+ )
163
+
164
+ # MAS Applications
165
+ # -----------------------------------------------------------------------------
166
+ masAppsArgGroup = aiServiceinstallArgParser.add_argument_group("MAS Applications")
167
+
168
+ masAppsArgGroup.add_argument(
169
+ "--aiservice-channel",
170
+ required=False,
171
+ help="Subscription channel for Maximo Ai Broker"
172
+ )
173
+
174
+ # AI Broker
175
+ # -----------------------------------------------------------------------------
176
+ aibrokerArgGroup = aiServiceinstallArgParser.add_argument_group("Maximo AI Broker")
177
+
178
+
179
+ # S3 - Minio
180
+ # -----------------------------------------------------------------------------
181
+ s3ArgGroup = aiServiceinstallArgParser.add_argument_group("S3 Storage")
182
+ s3ArgGroup.add_argument(
183
+ "--install-minio",
184
+ dest="install_minio_aiservice",
185
+ required=False,
186
+ help="Install Minio and configure it as the S3 provider for AI Service",
187
+ action="store_const",
188
+ const="true"
189
+ )
190
+
191
+ s3ArgGroup.add_argument(
192
+ "--minio-root-user",
193
+ dest="minio_root_user",
194
+ required=False,
195
+ help="Root user for minio"
196
+ )
197
+ s3ArgGroup.add_argument(
198
+ "--minio-root-password",
199
+ dest="minio_root_password",
200
+ required=False,
201
+ help="Password for minio root user"
202
+ )
203
+
204
+ # S3 - General
205
+ # -----------------------------------------------------------------------------
206
+ s3ArgGroup.add_argument(
207
+ "--s3-provider",
208
+ dest="aiservice_storage_provider",
209
+ required=False,
210
+ help="TODO: Write me"
211
+ )
212
+
213
+ # S3 - Bucket Naming
214
+ # -----------------------------------------------------------------------------
215
+ s3ArgGroup.add_argument(
216
+ "--s3-pipelines-bucket",
217
+ dest="aiservice_storage_pipelines_bucket",
218
+ required=False,
219
+ default="km-pipelines",
220
+ help="TODO: Write me"
221
+ )
222
+ s3ArgGroup.add_argument(
223
+ "--s3-tenants-bucket",
224
+ dest="aiservice_storage_tenants_bucket",
225
+ required=False,
226
+ default="km-tenants",
227
+ help="TODO: Write me"
228
+ )
229
+ s3ArgGroup.add_argument(
230
+ "--s3-templates-bucket",
231
+ dest="aiservice_storage_templates_bucket",
232
+ required=False,
233
+ default="km-templates",
234
+ help="TODO: Write me"
235
+ )
236
+
237
+ # S3 - Bucket Prefixes
238
+ # -----------------------------------------------------------------------------
239
+ s3ArgGroup.add_argument(
240
+ "--s3-bucket-prefix",
241
+ dest="aiservice_s3_bucket_prefix",
242
+ required=False,
243
+ default="s3",
244
+ help="s3 bucket prefix"
245
+ )
246
+ s3ArgGroup.add_argument(
247
+ "--s3-bucket-prefix-tenant",
248
+ dest="aiservice_tenant_s3_bucket_prefix",
249
+ required=False,
250
+ default="s3",
251
+ help="s3 bucket prefix ( tenant level )"
252
+ )
253
+
254
+ # S3 - External Connection
255
+ # -----------------------------------------------------------------------------
256
+ s3ArgGroup.add_argument(
257
+ "--s3-host",
258
+ dest="aiservice_storage_host",
259
+ required=False,
260
+ help="TODO: Write me"
261
+ )
262
+ s3ArgGroup.add_argument(
263
+ "--s3-port",
264
+ dest="aiservice_storage_port",
265
+ required=False,
266
+ help="TODO: Write me"
267
+ )
268
+ s3ArgGroup.add_argument(
269
+ "--s3-ssl",
270
+ dest="aiservice_storage_ssl",
271
+ required=False,
272
+ help="TODO: Write me"
273
+ )
274
+ s3ArgGroup.add_argument(
275
+ "--s3-accesskey",
276
+ dest="aiservice_storage_accesskey",
277
+ required=False,
278
+ help="TODO: Write me"
279
+ )
280
+ s3ArgGroup.add_argument(
281
+ "--s3-secretkey",
282
+ dest="aiservice_storage_secretkey",
283
+ required=False,
284
+ help="TODO: Write me"
285
+ )
286
+ s3ArgGroup.add_argument(
287
+ "--s3-region",
288
+ dest="aiservice_storage_region",
289
+ required=False,
290
+ help="TODO: Write me"
291
+ )
292
+ s3ArgGroup.add_argument(
293
+ "--s3-endpoint-url",
294
+ dest="aiservice_s3_endpoint_url",
295
+ required=False,
296
+ help="endpoint url for s3"
297
+ )
298
+
299
+ # S3 - External Access Credentials (Tenant)
300
+ # -----------------------------------------------------------------------------
301
+ s3ArgGroup.add_argument(
302
+ "--s3-tenant-access-key",
303
+ dest="aiservice_tenant_s3_access_key",
304
+ required=False,
305
+ help="access key for s3 ( tenant level )"
306
+ )
307
+ s3ArgGroup.add_argument(
308
+ "--s3-tenant-secret-key",
309
+ dest="aiservice_tenant_s3_secret_key",
310
+ required=False,
311
+ help="secret key for s3 ( tenant level )"
312
+ )
313
+ s3ArgGroup.add_argument(
314
+ "--s3-tenant-region",
315
+ dest="aiservice_tenant_s3_region",
316
+ required=False,
317
+ help="s3 region ( tenant level )"
318
+ )
319
+ s3ArgGroup.add_argument(
320
+ "--s3-tenant-endpoint-url",
321
+ dest="aiservice_tenant_s3_endpoint_url",
322
+ required=False,
323
+ help="endpoint url for s3 ( tenant level )"
324
+ )
325
+
326
+ # Watsonx
327
+ # -----------------------------------------------------------------------------
328
+ watsonxArgGroup = aiServiceinstallArgParser.add_argument_group("Watsonx")
329
+
330
+ watsonxArgGroup.add_argument(
331
+ "--watsonxai-apikey",
332
+ dest="aiservice_watsonxai_apikey",
333
+ required=False,
334
+ help="TODO: Write me"
335
+ )
336
+ watsonxArgGroup.add_argument(
337
+ "--watsonxai-url",
338
+ dest="aiservice_watsonxai_url",
339
+ required=False,
340
+ help="TODO: Write me"
341
+ )
342
+ watsonxArgGroup.add_argument(
343
+ "--watsonxai-project-id",
344
+ dest="aiservice_watsonxai_project_id",
345
+ required=False,
346
+ help="TODO: Write me"
347
+ )
348
+ watsonxArgGroup.add_argument(
349
+ "--watsonx-action",
350
+ dest="aiservice_watsonx_action",
351
+ required=False,
352
+ help="TODO: Write me"
353
+ )
354
+
355
+
356
+ # AI Service
357
+ # -----------------------------------------------------------------------------
358
+ aibrokerArgGroup.add_argument(
359
+ "--tenant-entitlement-type",
360
+ dest="tenant_entitlement_type",
361
+ required=False,
362
+ help="Type of aibroker tenant"
363
+ )
364
+ aibrokerArgGroup.add_argument(
365
+ "--tenant-entitlement-start-date",
366
+ dest="tenant_entitlement_start_date",
367
+ required=False,
368
+ help="Start date for Aibroker tenant"
369
+ )
370
+ aibrokerArgGroup.add_argument(
371
+ "--tenant-entitlement-end-date",
372
+ dest="tenant_entitlement_end_date",
373
+ required=False,
374
+ help="End date for Aibroker tenant"
375
+ )
376
+ aibrokerArgGroup.add_argument(
377
+ "--rsl-url",
378
+ dest="rsl_url",
379
+ required=False,
380
+ help="rsl url"
381
+ )
382
+ aibrokerArgGroup.add_argument(
383
+ "--rsl-org-id",
384
+ dest="rsl_org_id",
385
+ required=False,
386
+ help="org id for rsl"
387
+ )
388
+ aibrokerArgGroup.add_argument(
389
+ "--rsl-token",
390
+ dest="rsl_token",
391
+ required=False,
392
+ help="token for rsl"
393
+ )
394
+ aibrokerArgGroup.add_argument(
395
+ "--environment-type",
396
+ dest="environment_type",
397
+ required=False,
398
+ default="non-production",
399
+ help="Environment type (default: non-production)"
400
+ )
401
+
402
+
403
+ # IBM Db2 Universal Operator
404
+ # -----------------------------------------------------------------------------
405
+ db2ArgGroup = aiServiceinstallArgParser.add_argument_group("IBM Db2 Universal Operator")
406
+
407
+ db2ArgGroup.add_argument(
408
+ "--db2-namespace",
409
+ required=False,
410
+ help="Change namespace where Db2u instances will be created"
411
+ )
412
+ db2ArgGroup.add_argument(
413
+ "--db2-channel",
414
+ required=False,
415
+ help="Subscription channel for Db2u"
416
+ )
417
+
418
+
419
+ # Development Mode
420
+ # -----------------------------------------------------------------------------
421
+ devArgGroup = aiServiceinstallArgParser.add_argument_group("Development Mode")
422
+ devArgGroup.add_argument(
423
+ "--artifactory-username",
424
+ required=False,
425
+ help="Username for access to development builds on Artifactory"
426
+ )
427
+ devArgGroup.add_argument(
428
+ "--artifactory-token",
429
+ required=False,
430
+ help="API Token for access to development builds on Artifactory"
431
+ )
432
+
433
+ # Approvals
434
+ # -----------------------------------------------------------------------------
435
+ approvalsGroup = aiServiceinstallArgParser.add_argument_group("Integrated Approval Workflow (MAX_RETRIES:RETRY_DELAY:IGNORE_FAILURE)")
436
+ approvalsGroup.add_argument(
437
+ "--approval-aiservice",
438
+ default="",
439
+ help="Require approval after the AI Service has been configured"
440
+ )
441
+
442
+ # More Options
443
+ # -----------------------------------------------------------------------------
444
+ otherArgGroup = aiServiceinstallArgParser.add_argument_group("More")
445
+ otherArgGroup.add_argument(
446
+ "--advanced",
447
+ action="store_true",
448
+ default=False,
449
+ help="Show advanced install options (in interactve mode)"
450
+ )
451
+ otherArgGroup.add_argument(
452
+ "--simplified",
453
+ action="store_true",
454
+ default=False,
455
+ help="Don't show advanced install options (in interactve mode)"
456
+ )
457
+ otherArgGroup.add_argument(
458
+ "--accept-license",
459
+ action="store_true",
460
+ default=False,
461
+ help="Accept all license terms without prompting"
462
+ )
463
+ otherArgGroup.add_argument(
464
+ "--dev-mode",
465
+ required=False,
466
+ action="store_true",
467
+ default=False,
468
+ help="Configure installation for development mode",
469
+ )
470
+ otherArgGroup.add_argument(
471
+ "--no-wait-for-pvc",
472
+ required=False,
473
+ action="store_true",
474
+ help="Disable the wait for pipeline PVC to bind before starting the pipeline"
475
+ )
476
+ otherArgGroup.add_argument(
477
+ "--skip-pre-check",
478
+ required=False,
479
+ action="store_true",
480
+ help="Disable the 'pre-install-check' at the start of the install pipeline"
481
+ )
482
+ otherArgGroup.add_argument(
483
+ "--no-confirm",
484
+ required=False,
485
+ action="store_true",
486
+ default=False,
487
+ help="Launch the upgrade without prompting for confirmation",
488
+ )
489
+ otherArgGroup.add_argument(
490
+ "--image-pull-policy",
491
+ dest="image_pull_policy",
492
+ required=False,
493
+ help="Manually set the image pull policy used in the Tekton Pipeline",
494
+ )
495
+ otherArgGroup.add_argument(
496
+ "--service-account",
497
+ dest="service_account_name",
498
+ required=False,
499
+ help="Run the install pipeline under a custom service account (also disables creation of the default 'pipeline' service account)",
500
+ )
501
+
502
+ otherArgGroup.add_argument(
503
+ "-h", "--help",
504
+ action="help",
505
+ default=False,
506
+ help="Show this help message and exit",
507
+ )