mas-cli 13.26.0__py3-none-any.whl → 13.27.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mas-cli might be problematic. Click here for more details.
- mas/cli/__init__.py +1 -1
- mas/cli/aiservice/install/__init__.py +11 -0
- mas/cli/aiservice/install/app.py +810 -0
- mas/cli/aiservice/install/argBuilder.py +232 -0
- mas/cli/aiservice/install/argParser.py +742 -0
- mas/cli/aiservice/install/params.py +120 -0
- mas/cli/aiservice/install/summarizer.py +193 -0
- mas/cli/cli.py +2 -1
- mas/cli/install/app.py +8 -17
- mas/cli/install/argBuilder.py +5 -5
- mas/cli/install/argParser.py +0 -142
- mas/cli/install/settings/manageSettings.py +0 -26
- mas/cli/install/summarizer.py +7 -27
- mas/cli/templates/ibm-mas-tekton.yaml +4230 -557
- mas/cli/update/app.py +2 -1
- {mas_cli-13.26.0.data → mas_cli-13.27.1.data}/scripts/mas-cli +4 -0
- {mas_cli-13.26.0.dist-info → mas_cli-13.27.1.dist-info}/METADATA +1 -1
- {mas_cli-13.26.0.dist-info → mas_cli-13.27.1.dist-info}/RECORD +20 -14
- {mas_cli-13.26.0.dist-info → mas_cli-13.27.1.dist-info}/WHEEL +0 -0
- {mas_cli-13.26.0.dist-info → mas_cli-13.27.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,120 @@
|
|
|
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
|
+
requiredParams = [
|
|
12
|
+
# MAS
|
|
13
|
+
"mas_catalog_version",
|
|
14
|
+
# Storage classes
|
|
15
|
+
"storage_class_rwo",
|
|
16
|
+
"storage_class_rwx",
|
|
17
|
+
# Entitlement
|
|
18
|
+
"ibm_entitlement_key",
|
|
19
|
+
# DRO
|
|
20
|
+
"uds_contact_email",
|
|
21
|
+
"uds_contact_firstname",
|
|
22
|
+
"uds_contact_lastname"
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
optionalParams = [
|
|
26
|
+
# Pipeline
|
|
27
|
+
"image_pull_policy",
|
|
28
|
+
"service_account_name",
|
|
29
|
+
# Catalogue
|
|
30
|
+
"mas_catalog_digest",
|
|
31
|
+
# SLS
|
|
32
|
+
"sls_namespace",
|
|
33
|
+
# DRO
|
|
34
|
+
"dro_namespace",
|
|
35
|
+
# Db2
|
|
36
|
+
"db2_action_system",
|
|
37
|
+
"db2_action_manage",
|
|
38
|
+
"db2_action_facilities",
|
|
39
|
+
"db2_type",
|
|
40
|
+
"db2_timezone",
|
|
41
|
+
"db2_namespace",
|
|
42
|
+
"db2_channel",
|
|
43
|
+
"db2_affinity_key",
|
|
44
|
+
"db2_affinity_value",
|
|
45
|
+
"db2_tolerate_key",
|
|
46
|
+
"db2_tolerate_value",
|
|
47
|
+
"db2_tolerate_effect",
|
|
48
|
+
"db2_cpu_requests",
|
|
49
|
+
"db2_cpu_limits",
|
|
50
|
+
"db2_memory_requests",
|
|
51
|
+
"db2_memory_limits",
|
|
52
|
+
"db2_backup_storage_size",
|
|
53
|
+
"db2_data_storage_size",
|
|
54
|
+
"db2_logs_storage_size",
|
|
55
|
+
"db2_meta_storage_size",
|
|
56
|
+
"db2_temp_storage_size",
|
|
57
|
+
# Dev Mode
|
|
58
|
+
"artifactory_username",
|
|
59
|
+
"artifactory_token",
|
|
60
|
+
# Aibroker
|
|
61
|
+
"mas_aibroker_storage_provider",
|
|
62
|
+
"mas_aibroker_storage_accesskey",
|
|
63
|
+
"mas_aibroker_storage_secretkey",
|
|
64
|
+
"mas_aibroker_storage_host",
|
|
65
|
+
"mas_aibroker_storage_port",
|
|
66
|
+
"mas_aibroker_storage_ssl",
|
|
67
|
+
"mas_aibroker_storage_region",
|
|
68
|
+
"mas_aibroker_storage_pipelines_bucket",
|
|
69
|
+
"mas_aibroker_storage_tenants_bucket",
|
|
70
|
+
"mas_aibroker_storage_templates_bucket",
|
|
71
|
+
"mas_aibroker_tenant_name",
|
|
72
|
+
"mas_aibroker_watsonxai_apikey",
|
|
73
|
+
"mas_aibroker_watsonxai_url",
|
|
74
|
+
"mas_aibroker_watsonxai_project_id",
|
|
75
|
+
"mas_aibroker_watsonx_action",
|
|
76
|
+
"mas_aibroker_db_host",
|
|
77
|
+
"mas_aibroker_db_port",
|
|
78
|
+
"mas_aibroker_db_user",
|
|
79
|
+
"mas_aibroker_db_database",
|
|
80
|
+
"mas_aibroker_db_secret_name",
|
|
81
|
+
"mas_aibroker_db_secret_key",
|
|
82
|
+
"mas_aibroker_db_secret_value",
|
|
83
|
+
"aibroker_instance_id",
|
|
84
|
+
"mariadb_user",
|
|
85
|
+
"mariadb_password",
|
|
86
|
+
"minio_root_user",
|
|
87
|
+
"minio_root_password",
|
|
88
|
+
"tenant_entitlement_type",
|
|
89
|
+
"tenant_entitlement_start_date",
|
|
90
|
+
"tenant_entitlement_end_date",
|
|
91
|
+
"mas_aibroker_s3_bucket_prefix",
|
|
92
|
+
"mas_aibroker_s3_region",
|
|
93
|
+
"mas_aibroker_s3_endpoint_url",
|
|
94
|
+
"mas_aibroker_tenant_s3_bucket_prefix",
|
|
95
|
+
"mas_aibroker_tenant_s3_region",
|
|
96
|
+
"mas_aibroker_tenant_s3_endpoint_url",
|
|
97
|
+
"mas_aibroker_tenant_s3_access_key",
|
|
98
|
+
"mas_aibroker_tenant_s3_secret_key",
|
|
99
|
+
"rsl_url",
|
|
100
|
+
"rsl_org_id",
|
|
101
|
+
"rsl_token",
|
|
102
|
+
"install_minio_aiservice",
|
|
103
|
+
"install_sls_aiservice",
|
|
104
|
+
"install_dro_aiservice",
|
|
105
|
+
"install_db2_aiservice",
|
|
106
|
+
"mas_aibroker_dro_secret_name",
|
|
107
|
+
"mas_aibroker_dro_api_key",
|
|
108
|
+
"mas_aibroker_dro_url",
|
|
109
|
+
"mas_aibroker_dro_ca_cert",
|
|
110
|
+
"mas_aibroker_db2_username",
|
|
111
|
+
"mas_aibroker_db2_password",
|
|
112
|
+
"mas_aibroker_db2_jdbc_url",
|
|
113
|
+
"mas_aibroker_db2_ssl_enabled",
|
|
114
|
+
"mas_aibroker_db2_ca_cert",
|
|
115
|
+
"mas_aibroker_sls_secret_name",
|
|
116
|
+
"mas_aibroker_sls_registration_key",
|
|
117
|
+
"mas_aibroker_sls_url",
|
|
118
|
+
"mas_aibroker_sls_ca_cert",
|
|
119
|
+
"environment_type",
|
|
120
|
+
]
|
|
@@ -0,0 +1,193 @@
|
|
|
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
|
+
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 aiServiceInstallSummarizerMixin():
|
|
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
|
+
def masSummary(self) -> None:
|
|
36
|
+
|
|
37
|
+
self.printH2("IBM Maximo Application Suite")
|
|
38
|
+
|
|
39
|
+
print()
|
|
40
|
+
self.printParamSummary("Catalog Version", "mas_catalog_version")
|
|
41
|
+
# We only list the digest if it's specified (primary use case is when running development builds in airgap environments)
|
|
42
|
+
if self.getParam("mas_catalog_digest" != ""):
|
|
43
|
+
self.printParamSummary("Catalog Digest", "mas_catalog_digest")
|
|
44
|
+
self.printParamSummary("Subscription Channel", "mas_channel")
|
|
45
|
+
|
|
46
|
+
print()
|
|
47
|
+
self.printParamSummary("IBM Entitled Registry", "mas_icr_cp")
|
|
48
|
+
self.printParamSummary("IBM Open Registry", "mas_icr_cpopen")
|
|
49
|
+
|
|
50
|
+
print()
|
|
51
|
+
if self.localConfigDir is not None:
|
|
52
|
+
self.printSummary("Additional Config", self.localConfigDir)
|
|
53
|
+
else:
|
|
54
|
+
self.printSummary("Additional Config", "Not Configured")
|
|
55
|
+
|
|
56
|
+
def aibrokerSummary(self) -> None:
|
|
57
|
+
if self.installAiBroker:
|
|
58
|
+
self.printSummary("AI Broker", self.params["mas_app_channel_aibroker"])
|
|
59
|
+
print_formatted_text(HTML(" <SkyBlue>+ Maximo AI Broker Settings</SkyBlue>"))
|
|
60
|
+
self.printParamSummary(" + Aibroker Instance Id", "aibroker_instance_id")
|
|
61
|
+
self.printParamSummary(" + Storage provider", "mas_aibroker_storage_provider")
|
|
62
|
+
if self.getParam("mas_aibroker_storage_provider") == "minio":
|
|
63
|
+
self.printParamSummary(" + minio root username", "minio_root_user")
|
|
64
|
+
if self.getParam("mas_app_channel_aibroker") != "9.0.x":
|
|
65
|
+
self.printParamSummary(" + Mariadb username", "mariadb_user")
|
|
66
|
+
self.printParamSummary(" + Mariadb password", "mariadb_password")
|
|
67
|
+
self.printParamSummary(" + Storage access key", "mas_aibroker_storage_accesskey")
|
|
68
|
+
self.printParamSummary(" + Storage host", "mas_aibroker_storage_host")
|
|
69
|
+
self.printParamSummary(" + Storage port", "mas_aibroker_storage_port")
|
|
70
|
+
self.printParamSummary(" + Storage ssl", "mas_aibroker_storage_ssl")
|
|
71
|
+
self.printParamSummary(" + Storage region", "mas_aibroker_storage_region")
|
|
72
|
+
self.printParamSummary(" + Storage pipelines bucket", "mas_aibroker_storage_pipelines_bucket")
|
|
73
|
+
self.printParamSummary(" + Storage tenants bucket", "mas_aibroker_storage_tenants_bucket")
|
|
74
|
+
self.printParamSummary(" + Storage templates bucket", "mas_aibroker_storage_templates_bucket")
|
|
75
|
+
self.printParamSummary(" + Watsonxai machine learning url", "mas_aibroker_watsonxai_url")
|
|
76
|
+
self.printParamSummary(" + Watsonxai project id", "mas_aibroker_watsonxai_project_id")
|
|
77
|
+
self.printParamSummary(" + Database host", "mas_aibroker_db_host")
|
|
78
|
+
self.printParamSummary(" + Database port", "mas_aibroker_db_port")
|
|
79
|
+
self.printParamSummary(" + Database user", "mas_aibroker_db_user")
|
|
80
|
+
self.printParamSummary(" + Database name", "mas_aibroker_db_database")
|
|
81
|
+
if self.getParam("mas_app_channel_aibroker") != "9.0.x":
|
|
82
|
+
self.printParamSummary(" + Tenant entitlement type", "tenant_entitlement_type")
|
|
83
|
+
self.printParamSummary(" + Tenant start date", "tenant_entitlement_start_date")
|
|
84
|
+
self.printParamSummary(" + Tenant end date", "tenant_entitlement_end_date")
|
|
85
|
+
self.printParamSummary(" + Tenant end date", "tenant_entitlement_end_date")
|
|
86
|
+
self.printParamSummary(" + S3 bucket prefix", "mas_aibroker_s3_bucket_prefix")
|
|
87
|
+
self.printParamSummary(" + S3 endpoint url", "mas_aibroker_s3_endpoint_url")
|
|
88
|
+
self.printParamSummary(" + S3 bucket prefix (tenant level)", "mas_aibroker_tenant_s3_bucket_prefix")
|
|
89
|
+
self.printParamSummary(" + S3 region (tenant level)", "mas_aibroker_tenant_s3_region")
|
|
90
|
+
self.printParamSummary(" + S3 endpoint url (tenant level)", "mas_aibroker_tenant_s3_endpoint_url")
|
|
91
|
+
self.printParamSummary(" + RSL url", "rsl_url")
|
|
92
|
+
self.printParamSummary(" + ORG Id of RSL", "rsl_org_id")
|
|
93
|
+
self.printParamSummary(" + Token for RSL", "rsl_token")
|
|
94
|
+
self.printParamSummary(" + Install minio", "install_minio_aiservice")
|
|
95
|
+
self.printParamSummary(" + Install SLS", "install_sls_aiservice")
|
|
96
|
+
if self.getParam("install_sls_aiservice") != "true":
|
|
97
|
+
self.printParamSummary(" + SLS secret name", "mas_aibroker_sls_secret_name")
|
|
98
|
+
self.printParamSummary(" + SLS registration key", "mas_aibroker_sls_registration_key")
|
|
99
|
+
self.printParamSummary(" + SLS URL", "mas_aibroker_sls_url")
|
|
100
|
+
self.printParamSummary(" + Install DRO", "install_dro_aiservice")
|
|
101
|
+
if self.getParam("install_dro_aiservice") != "true":
|
|
102
|
+
self.printParamSummary(" + DRO secret name", "mas_aibroker_dro_secret_name")
|
|
103
|
+
self.printParamSummary(" + DRO API key", "mas_aibroker_dro_api_key")
|
|
104
|
+
self.printParamSummary(" + DRO URL", "mas_aibroker_dro_url")
|
|
105
|
+
self.printParamSummary(" + Install DB2", "install_db2_aiservice")
|
|
106
|
+
if self.getParam("install_db2_aiservice") != "true":
|
|
107
|
+
self.printParamSummary(" + DB2 username", "mas_aibroker_db2_username")
|
|
108
|
+
self.printParamSummary(" + DB2 JDBC URL", "mas_aibroker_db2_jdbc_url")
|
|
109
|
+
self.printParamSummary(" + DB2 SSL enabled", "mas_aibroker_db2_ssl_enabled")
|
|
110
|
+
self.printParamSummary(" + Environment type", "environment_type")
|
|
111
|
+
|
|
112
|
+
else:
|
|
113
|
+
self.printSummary("AI Broker", "Do Not Install")
|
|
114
|
+
|
|
115
|
+
def db2Summary(self) -> None:
|
|
116
|
+
if self.getParam("db2_action_system") == "install" or self.getParam("db2_action_manage") == "install":
|
|
117
|
+
self.printH2("IBM Db2 Univeral Operator Configuration")
|
|
118
|
+
self.printSummary("System Instance", "Install" if self.getParam("db2_action_system") == "install" else "Do Not Install")
|
|
119
|
+
self.printSummary("Dedicated Manage Instance", "Install" if self.getParam("db2_action_manage") == "install" else "Do Not Install")
|
|
120
|
+
self.printParamSummary(" - Type", "db2_type")
|
|
121
|
+
self.printParamSummary(" - Timezone", "db2_timezone")
|
|
122
|
+
print()
|
|
123
|
+
self.printParamSummary("Install Namespace", "db2_namespace")
|
|
124
|
+
self.printParamSummary("Subscription Channel", "db2_channel")
|
|
125
|
+
print()
|
|
126
|
+
self.printParamSummary("CPU Request", "db2_cpu_requests")
|
|
127
|
+
self.printParamSummary("CPU Limit", "db2_cpu_limits")
|
|
128
|
+
self.printParamSummary("Memory Request", "db2_memory_requests")
|
|
129
|
+
self.printParamSummary("Memory Limit ", "db2_memory_limits")
|
|
130
|
+
print()
|
|
131
|
+
self.printParamSummary("Meta Storage", "db2_meta_storage_size")
|
|
132
|
+
self.printParamSummary("Data Storage", "db2_data_storage_size")
|
|
133
|
+
self.printParamSummary("Backup Storage", "db2_backup_storage_size")
|
|
134
|
+
self.printParamSummary("Temp Storage", "db2_temp_storage_size")
|
|
135
|
+
self.printParamSummary("Transaction Logs Storage", "db2_logs_storage_size")
|
|
136
|
+
print()
|
|
137
|
+
if self.getParam('db2_affinity_key') != "":
|
|
138
|
+
self.printSummary("Node Affinity", f"{self.getParam('db2_affinity_key')}={self.getParam('db2_affinity_value')}")
|
|
139
|
+
else:
|
|
140
|
+
self.printSummary("Node Affinity", "None")
|
|
141
|
+
|
|
142
|
+
if self.getParam('db2_tolerate_key') != "":
|
|
143
|
+
self.printSummary("Node Tolerations", f"{self.getParam('db2_tolerate_key')}={self.getParam('db2_tolerate_value')} @ {self.getParam('db2_tolerate_effect')}")
|
|
144
|
+
else:
|
|
145
|
+
self.printSummary("Node Tolerations", "None")
|
|
146
|
+
|
|
147
|
+
def droSummary(self) -> None:
|
|
148
|
+
self.printH2("IBM Data Reporter Operator (DRO) Configuration")
|
|
149
|
+
self.printParamSummary("Contact e-mail", "uds_contact_email")
|
|
150
|
+
self.printParamSummary("First name", "uds_contact_firstname")
|
|
151
|
+
self.printParamSummary("Last name", "uds_contact_lastname")
|
|
152
|
+
self.printParamSummary("Install Namespace", "dro_namespace")
|
|
153
|
+
|
|
154
|
+
def slsSummary(self) -> None:
|
|
155
|
+
self.printH2("IBM Suite License Service")
|
|
156
|
+
self.printParamSummary("Namespace", "sls_namespace")
|
|
157
|
+
if self.getParam("sls_action") == "install":
|
|
158
|
+
self.printSummary("Subscription Channel", "3.x")
|
|
159
|
+
self.printParamSummary("IBM Open Registry", "sls_icr_cpopen")
|
|
160
|
+
if self.slsLicenseFileLocal:
|
|
161
|
+
self.printSummary("License File", self.slsLicenseFileLocal)
|
|
162
|
+
|
|
163
|
+
def mongoSummary(self) -> None:
|
|
164
|
+
self.printH2("MongoDb")
|
|
165
|
+
if self.getParam("mongodb_action") == "install":
|
|
166
|
+
self.printSummary("Type", "MongoCE Operator")
|
|
167
|
+
self.printParamSummary("Install Namespace", "mongodb_namespace")
|
|
168
|
+
elif self.getParam("mongodb_action") == "byo":
|
|
169
|
+
self.printSummary("Type", "BYO (mongodb-system.yaml)")
|
|
170
|
+
else:
|
|
171
|
+
self.fatalError(f"Unexpected value for mongodb_action parameter: {self.getParam('mongodb_action')}")
|
|
172
|
+
|
|
173
|
+
def displayInstallSummary(self) -> None:
|
|
174
|
+
self.printH1("Review Settings")
|
|
175
|
+
self.printDescription([
|
|
176
|
+
"Connected to:",
|
|
177
|
+
f" - <u>{getConsoleURL(self.dynamicClient)}</u>"
|
|
178
|
+
])
|
|
179
|
+
|
|
180
|
+
logger.debug("PipelineRun parameters:")
|
|
181
|
+
logger.debug(yaml.dump(self.params, default_flow_style=False))
|
|
182
|
+
|
|
183
|
+
# Cluster Config & Dependencies
|
|
184
|
+
self.ocpSummary()
|
|
185
|
+
self.droSummary()
|
|
186
|
+
self.slsSummary()
|
|
187
|
+
self.masSummary()
|
|
188
|
+
self.printH2("IBM Maximo Application Suite Application - Aiservice")
|
|
189
|
+
self.aibrokerSummary()
|
|
190
|
+
|
|
191
|
+
# Application Dependencies
|
|
192
|
+
self.mongoSummary()
|
|
193
|
+
self.db2Summary()
|
mas/cli/cli.py
CHANGED
|
@@ -117,7 +117,7 @@ class BaseApp(PrintMixin, PromptMixin):
|
|
|
117
117
|
logging.getLogger('asyncio').setLevel(logging.INFO)
|
|
118
118
|
|
|
119
119
|
# Supports extended semver, unlike mas.cli.__version__
|
|
120
|
-
self.version = "13.
|
|
120
|
+
self.version = "13.27.1"
|
|
121
121
|
self.h1count = 0
|
|
122
122
|
self.h2count = 0
|
|
123
123
|
|
|
@@ -205,6 +205,7 @@ class BaseApp(PrintMixin, PromptMixin):
|
|
|
205
205
|
"9.0.x": " - <u>https://ibm.biz/MAS90-License</u>\n - <u>https://ibm.biz/MaximoIT90-License</u>\n - <u>https://ibm.biz/MAXArcGIS90-License</u>",
|
|
206
206
|
"9.1.x-feature": " - <u>https://ibm.biz/MAS90-License</u>\n - <u>https://ibm.biz/MaximoIT90-License</u>\n - <u>https://ibm.biz/MAXArcGIS90-License</u>\n\nBe aware, this channel subscription is supported for non-production use only. \nIt allows early access to new features for evaluation in non-production environments. \nThis subscription is offered alongside and in parallel with our normal maintained streams. \nWhen using this subscription, IBM Support will only accept cases for the latest available bundle deployed in a non-production environment. \nSeverity must be either 3 or 4 and cases cannot be escalated. \nPlease refer to IBM documentation for more details.\n",
|
|
207
207
|
"9.1.x": " - <u>https://ibm.biz/MAS91-License</u>\n - <u>https://ibm.biz/MAXIT91-License</u>\n - <u>https://ibm.biz/MAXESRI91-License</u>",
|
|
208
|
+
"aibroker-9.1.x": " - <u>https://ibm.biz/MAS91-License</u>",
|
|
208
209
|
}
|
|
209
210
|
|
|
210
211
|
self.upgrade_path = {
|
mas/cli/install/app.py
CHANGED
|
@@ -666,10 +666,6 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
666
666
|
if self.installInspection:
|
|
667
667
|
self.configAppChannel("visualinspection")
|
|
668
668
|
|
|
669
|
-
self.installAiBroker = self.yesOrNo("Install AI Broker")
|
|
670
|
-
if self.installAiBroker:
|
|
671
|
-
self.configAppChannel("aibroker")
|
|
672
|
-
|
|
673
669
|
if isVersionEqualOrAfter('9.1.0', self.getParam("mas_channel")) and self.getParam("mas_channel") != '9.1.x-feature':
|
|
674
670
|
self.installFacilities = self.yesOrNo("Install Real Estate and Facilities")
|
|
675
671
|
if self.installFacilities:
|
|
@@ -908,7 +904,6 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
908
904
|
self.optimizerSettings()
|
|
909
905
|
self.predictSettings()
|
|
910
906
|
self.assistSettings()
|
|
911
|
-
self.aibrokerSettings()
|
|
912
907
|
self.facilitiesSettings()
|
|
913
908
|
|
|
914
909
|
# Dependencies
|
|
@@ -939,7 +934,6 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
939
934
|
self.installPredict = False
|
|
940
935
|
self.installInspection = False
|
|
941
936
|
self.installOptimizer = False
|
|
942
|
-
self.installAiBroker = False
|
|
943
937
|
self.installFacilities = False
|
|
944
938
|
self.deployCP4D = False
|
|
945
939
|
self.db2SetAffinity = False
|
|
@@ -1038,10 +1032,6 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1038
1032
|
if value is not None and value != "":
|
|
1039
1033
|
self.setParam("mas_app_channel_visualinspection", value)
|
|
1040
1034
|
self.installInspection = True
|
|
1041
|
-
elif key == "aibroker_channel":
|
|
1042
|
-
if value is not None and value != "":
|
|
1043
|
-
self.setParam("mas_app_channel_aibroker", value)
|
|
1044
|
-
self.installAiBroker = True
|
|
1045
1035
|
elif key == "optimizer_channel":
|
|
1046
1036
|
if value is not None and value != "":
|
|
1047
1037
|
self.setParam("mas_app_channel_optimizer", value)
|
|
@@ -1228,6 +1218,13 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1228
1218
|
self.slsLicenseFile()
|
|
1229
1219
|
self.manualCertificates()
|
|
1230
1220
|
|
|
1221
|
+
if not self.noConfirm and not self.waitForPVC:
|
|
1222
|
+
self.printDescription(["If you are using storage classes that utilize 'WaitForFirstConsumer' binding mode choose 'No' at the prompt below"])
|
|
1223
|
+
self.waitForPVC = self.yesOrNo("Wait for PVCs to bind")
|
|
1224
|
+
|
|
1225
|
+
if not self.waitForPVC:
|
|
1226
|
+
self.setParam("no_wait_for_pvc", True)
|
|
1227
|
+
|
|
1231
1228
|
# Show a summary of the installation configuration
|
|
1232
1229
|
self.printH1("Non-Interactive Install Command")
|
|
1233
1230
|
self.printDescription([
|
|
@@ -1255,12 +1252,6 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1255
1252
|
self.printH1("Launch Install")
|
|
1256
1253
|
pipelinesNamespace = f"mas-{self.getParam('mas_instance_id')}-pipelines"
|
|
1257
1254
|
|
|
1258
|
-
if not self.noConfirm:
|
|
1259
|
-
self.printDescription(["If you are using storage classes that utilize 'WaitForFirstConsumer' binding mode choose 'No' at the prompt below"])
|
|
1260
|
-
wait = self.yesOrNo("Wait for PVCs to bind")
|
|
1261
|
-
else:
|
|
1262
|
-
wait = False
|
|
1263
|
-
|
|
1264
1255
|
with Halo(text='Validating OpenShift Pipelines installation', spinner=self.spinner) as h:
|
|
1265
1256
|
installOpenShiftPipelines(self.dynamicClient)
|
|
1266
1257
|
h.stop_and_persist(symbol=self.successIcon, text="OpenShift Pipelines Operator is installed and ready to use")
|
|
@@ -1272,7 +1263,7 @@ class InstallApp(BaseApp, InstallSettingsMixin, InstallSummarizerMixin, ConfigGe
|
|
|
1272
1263
|
instanceId=self.getParam("mas_instance_id"),
|
|
1273
1264
|
storageClass=self.pipelineStorageClass,
|
|
1274
1265
|
accessMode=self.pipelineStorageAccessMode,
|
|
1275
|
-
waitForBind=
|
|
1266
|
+
waitForBind=self.waitForPVC,
|
|
1276
1267
|
configureRBAC=(self.getParam("service_account_name") == "")
|
|
1277
1268
|
)
|
|
1278
1269
|
prepareInstallSecrets(
|
mas/cli/install/argBuilder.py
CHANGED
|
@@ -280,15 +280,15 @@ class installArgBuilderMixin():
|
|
|
280
280
|
# -----------------------------------------------------------------------------
|
|
281
281
|
if self.getParam('cpd_product_version') != "":
|
|
282
282
|
command += f" --cp4d-version \"{self.getParam('cpd_product_version')}\""
|
|
283
|
-
if self.getParam('cpd_install_spss') == "
|
|
283
|
+
if self.getParam('cpd_install_spss') == "true":
|
|
284
284
|
command += " --cp4d-install-spss"
|
|
285
|
-
if self.getParam('cpd_install_cognos') == "
|
|
285
|
+
if self.getParam('cpd_install_cognos') == "true":
|
|
286
286
|
command += " --cp4d-install-cognos"
|
|
287
|
-
if self.getParam('cpd_install_ws') == "
|
|
287
|
+
if self.getParam('cpd_install_ws') == "true":
|
|
288
288
|
command += " --cp4d-install-ws"
|
|
289
|
-
if self.getParam('cpd_install_wml') == "
|
|
289
|
+
if self.getParam('cpd_install_wml') == "true":
|
|
290
290
|
command += " --cp4d-install-wml"
|
|
291
|
-
if self.getParam('cpd_install_ae') == "
|
|
291
|
+
if self.getParam('cpd_install_ae') == "true":
|
|
292
292
|
command += " --cp4d-install-ae"
|
|
293
293
|
command += newline
|
|
294
294
|
|
mas/cli/install/argParser.py
CHANGED
|
@@ -170,7 +170,6 @@ masAdvancedArgGroup.add_argument(
|
|
|
170
170
|
required=False,
|
|
171
171
|
help="Configure MAS with a custom domain"
|
|
172
172
|
)
|
|
173
|
-
|
|
174
173
|
masAdvancedArgGroup.add_argument(
|
|
175
174
|
"--disable-walkme",
|
|
176
175
|
dest="mas_enable_walkme",
|
|
@@ -373,153 +372,12 @@ masAppsArgGroup.add_argument(
|
|
|
373
372
|
choices=["full", "limited"],
|
|
374
373
|
help="Install plan for Maximo Optimizer"
|
|
375
374
|
)
|
|
376
|
-
masAppsArgGroup.add_argument(
|
|
377
|
-
"--aibroker-channel",
|
|
378
|
-
required=False,
|
|
379
|
-
help="Subscription channel for Maximo Ai Broker"
|
|
380
|
-
)
|
|
381
375
|
masAppsArgGroup.add_argument(
|
|
382
376
|
"--facilities-channel",
|
|
383
377
|
required=False,
|
|
384
378
|
help="Subscription channel for Maximo Real Estate and Facilities"
|
|
385
379
|
)
|
|
386
380
|
|
|
387
|
-
# AI Broker
|
|
388
|
-
# -----------------------------------------------------------------------------
|
|
389
|
-
aibrokerArgGroup = installArgParser.add_argument_group("Maximo AI Broker")
|
|
390
|
-
aibrokerArgGroup.add_argument(
|
|
391
|
-
"--mas-aibroker-storage-provider",
|
|
392
|
-
dest="mas_aibroker_storage_provider",
|
|
393
|
-
required=False,
|
|
394
|
-
help="Customize Manage database encryption keys"
|
|
395
|
-
)
|
|
396
|
-
aibrokerArgGroup.add_argument(
|
|
397
|
-
"--mas-aibroker-storage-accesskey",
|
|
398
|
-
dest="mas_aibroker_storage_accesskey",
|
|
399
|
-
required=False,
|
|
400
|
-
help="Customize Manage database encryption keys"
|
|
401
|
-
)
|
|
402
|
-
aibrokerArgGroup.add_argument(
|
|
403
|
-
"--mas-aibroker-storage-secretkey",
|
|
404
|
-
dest="mas_aibroker_storage_secretkey",
|
|
405
|
-
required=False,
|
|
406
|
-
help="Customize Manage database encryption keys"
|
|
407
|
-
)
|
|
408
|
-
aibrokerArgGroup.add_argument(
|
|
409
|
-
"--mas-aibroker-storage-host",
|
|
410
|
-
dest="mas_aibroker_storage_host",
|
|
411
|
-
required=False,
|
|
412
|
-
help="Customize Manage database encryption keys"
|
|
413
|
-
)
|
|
414
|
-
aibrokerArgGroup.add_argument(
|
|
415
|
-
"--mas-aibroker-storage-port",
|
|
416
|
-
dest="mas_aibroker_storage_port",
|
|
417
|
-
required=False,
|
|
418
|
-
help="Customize Manage database encryption keys"
|
|
419
|
-
)
|
|
420
|
-
aibrokerArgGroup.add_argument(
|
|
421
|
-
"--mas-aibroker-storage-ssl",
|
|
422
|
-
dest="mas_aibroker_storage_ssl",
|
|
423
|
-
required=False,
|
|
424
|
-
help="Customize Manage database encryption keys"
|
|
425
|
-
)
|
|
426
|
-
aibrokerArgGroup.add_argument(
|
|
427
|
-
"--mas-aibroker-storage-region",
|
|
428
|
-
dest="mas_aibroker_storage_region",
|
|
429
|
-
required=False,
|
|
430
|
-
help="Customize Manage database encryption keys"
|
|
431
|
-
)
|
|
432
|
-
aibrokerArgGroup.add_argument(
|
|
433
|
-
"--mas-aibroker-storage-pipelines-bucket",
|
|
434
|
-
dest="mas_aibroker_storage_pipelines_bucket",
|
|
435
|
-
required=False,
|
|
436
|
-
help="Customize Manage database encryption keys"
|
|
437
|
-
)
|
|
438
|
-
aibrokerArgGroup.add_argument(
|
|
439
|
-
"--mas-aibroker-storage-tenants-bucket",
|
|
440
|
-
dest="mas_aibroker_storage_tenants_bucket",
|
|
441
|
-
required=False,
|
|
442
|
-
help="Customize Manage database encryption keys"
|
|
443
|
-
)
|
|
444
|
-
aibrokerArgGroup.add_argument(
|
|
445
|
-
"--mas-aibroker-storage-templates-bucket",
|
|
446
|
-
dest="mas_aibroker_storage_templates_bucket",
|
|
447
|
-
required=False,
|
|
448
|
-
help="Customize Manage database encryption keys"
|
|
449
|
-
)
|
|
450
|
-
aibrokerArgGroup.add_argument(
|
|
451
|
-
"--mas-aibroker-tenant-name",
|
|
452
|
-
dest="mas_aibroker_tenant_name",
|
|
453
|
-
required=False,
|
|
454
|
-
help="Customize Manage database encryption keys"
|
|
455
|
-
)
|
|
456
|
-
aibrokerArgGroup.add_argument(
|
|
457
|
-
"--mas-aibroker-watsonxai-apikey",
|
|
458
|
-
dest="mas_aibroker_watsonxai_apikey",
|
|
459
|
-
required=False,
|
|
460
|
-
help="Customize Manage database encryption keys"
|
|
461
|
-
)
|
|
462
|
-
aibrokerArgGroup.add_argument(
|
|
463
|
-
"--mas-aibroker-watsonxai-url",
|
|
464
|
-
dest="mas_aibroker_watsonxai_url",
|
|
465
|
-
required=False,
|
|
466
|
-
help="Customize Manage database encryption keys"
|
|
467
|
-
)
|
|
468
|
-
aibrokerArgGroup.add_argument(
|
|
469
|
-
"--mas-aibroker-watsonxai-project-id",
|
|
470
|
-
dest="mas_aibroker_watsonxai_project_id",
|
|
471
|
-
required=False,
|
|
472
|
-
help="Customize Manage database encryption keys"
|
|
473
|
-
)
|
|
474
|
-
aibrokerArgGroup.add_argument(
|
|
475
|
-
"--mas-aibroker-watsonx-action",
|
|
476
|
-
dest="mas_aibroker_watsonx_action",
|
|
477
|
-
required=False,
|
|
478
|
-
help="Customize Manage database encryption keys"
|
|
479
|
-
)
|
|
480
|
-
aibrokerArgGroup.add_argument(
|
|
481
|
-
"--mas-aibroker-db-host",
|
|
482
|
-
dest="mas_aibroker_db_host",
|
|
483
|
-
required=False,
|
|
484
|
-
help="Customize Manage database encryption keys"
|
|
485
|
-
)
|
|
486
|
-
aibrokerArgGroup.add_argument(
|
|
487
|
-
"--mas-aibroker-db-port",
|
|
488
|
-
dest="mas_aibroker_db_port",
|
|
489
|
-
required=False,
|
|
490
|
-
help="Customize Manage database encryption keys"
|
|
491
|
-
)
|
|
492
|
-
aibrokerArgGroup.add_argument(
|
|
493
|
-
"--mas-aibroker-db-user",
|
|
494
|
-
dest="mas_aibroker_db_user",
|
|
495
|
-
required=False,
|
|
496
|
-
help="Customize Manage database encryption keys"
|
|
497
|
-
)
|
|
498
|
-
aibrokerArgGroup.add_argument(
|
|
499
|
-
"--mas-aibroker-db-database",
|
|
500
|
-
dest="mas_aibroker_db_database",
|
|
501
|
-
required=False,
|
|
502
|
-
help="Customize Manage database encryption keys"
|
|
503
|
-
)
|
|
504
|
-
aibrokerArgGroup.add_argument(
|
|
505
|
-
"--mas-aibroker-db-secret-name",
|
|
506
|
-
dest="mas_aibroker_db_secret_name",
|
|
507
|
-
required=False,
|
|
508
|
-
help="Customize Manage database encryption keys"
|
|
509
|
-
)
|
|
510
|
-
aibrokerArgGroup.add_argument(
|
|
511
|
-
"--mas-aibroker-db-secret-key",
|
|
512
|
-
dest="mas_aibroker_db_secret_key",
|
|
513
|
-
required=False,
|
|
514
|
-
help="Customize Manage database encryption keys"
|
|
515
|
-
)
|
|
516
|
-
aibrokerArgGroup.add_argument(
|
|
517
|
-
"--mas-aibroker-db-secret-value",
|
|
518
|
-
dest="mas_aibroker_db_secret_value",
|
|
519
|
-
required=False,
|
|
520
|
-
help="Customize Manage database encryption keys"
|
|
521
|
-
)
|
|
522
|
-
|
|
523
381
|
# Arcgis
|
|
524
382
|
# -----------------------------------------------------------------------------
|
|
525
383
|
arcgisArgGroup = installArgParser.add_argument_group("Maximo Location Services for Esri (arcgis)")
|
|
@@ -271,29 +271,3 @@ class ManageSettingsMixin():
|
|
|
271
271
|
self.manageSettingsTimezone()
|
|
272
272
|
self.manageSettingsLanguages()
|
|
273
273
|
self.manageSettingsCP4D()
|
|
274
|
-
|
|
275
|
-
def aibrokerSettings(self) -> None:
|
|
276
|
-
if self.installAiBroker:
|
|
277
|
-
self.printH2("Maximo AI Broker Settings - Storage, WatsonX, MariaDB details")
|
|
278
|
-
self.printDescription(["Customise AI Broker details"])
|
|
279
|
-
self.promptForString("Storage provider", "mas_aibroker_storage_provider")
|
|
280
|
-
self.promptForString("Storage access key", "mas_aibroker_storage_accesskey")
|
|
281
|
-
self.promptForString("Storage secret key", "mas_aibroker_storage_secretkey")
|
|
282
|
-
self.promptForString("Storage host", "mas_aibroker_storage_host")
|
|
283
|
-
self.promptForString("Storage port", "mas_aibroker_storage_port")
|
|
284
|
-
self.promptForString("Storage ssl", "mas_aibroker_storage_ssl")
|
|
285
|
-
self.promptForString("Storage region", "mas_aibroker_storage_region")
|
|
286
|
-
self.promptForString("Storage pipelines bucket", "mas_aibroker_storage_pipelines_bucket")
|
|
287
|
-
self.promptForString("Storage tenants bucket", "mas_aibroker_storage_tenants_bucket")
|
|
288
|
-
self.promptForString("Storage templates bucket", "mas_aibroker_storage_templates_bucket")
|
|
289
|
-
|
|
290
|
-
self.promptForString("Watsonxai api key", "mas_aibroker_watsonxai_apikey")
|
|
291
|
-
self.promptForString("Watsonxai machine learning url", "mas_aibroker_watsonxai_url")
|
|
292
|
-
self.promptForString("Watsonxai project id", "mas_aibroker_watsonxai_project_id")
|
|
293
|
-
|
|
294
|
-
self.promptForString("Database host", "mas_aibroker_db_host")
|
|
295
|
-
self.promptForString("Database port", "mas_aibroker_db_port")
|
|
296
|
-
self.promptForString("Database user", "mas_aibroker_db_user")
|
|
297
|
-
self.promptForString("Database name", "mas_aibroker_db_database")
|
|
298
|
-
self.promptForString("Database Secretname", "mas_aibroker_db_secret_name")
|
|
299
|
-
self.promptForString("Database password", "mas_aibroker_db_secret_value")
|