Skip to content

Commit 0266ab8

Browse files
authored
Merge branch 'stable' into mascore-9033
2 parents 369849d + dd7bd49 commit 0266ab8

30 files changed

+1250
-29
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
* @durera @sanjayprab @terenceq @whitfiea @ianBoden @rawa-resul @leo-miran @terc1997
1+
* @ibm-mas/pr-review-team

.github/workflows/python-package.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ jobs:
3535
env:
3636
OCP_TOKEN: ${{ secrets.OCP_TOKEN }}
3737
OCP_SERVER: ${{ secrets.OCP_SERVER }}
38+
SLACK_TOKEN: ${{ secrets.SLACK_TOKEN }}
3839
run: |
3940
kubectl config set-cluster my-cluster --server=$OCP_SERVER
4041
kubectl config set-credentials my-user --token=$OCP_TOKEN

.github/workflows/python-release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ jobs:
3434
env:
3535
OCP_TOKEN: ${{ secrets.OCP_TOKEN }}
3636
OCP_SERVER: ${{ secrets.OCP_SERVER }}
37+
SLACK_TOKEN: ${{ secrets.SLACK_TOKEN }}
3738
run: |
3839
kubectl config set-cluster my-cluster --server=$OCP_SERVER
3940
kubectl config set-credentials my-user --token=$OCP_TOKEN

.pre-commit-config.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@ default_language_version:
22
python: python
33
repos:
44
- repo: https://github.com/hhatto/autopep8
5-
rev: v2.3.1
5+
rev: v2.3.2
66
hooks:
77
- id: autopep8
88
- repo: https://github.com/PyCQA/flake8
9-
rev: 7.1.1
9+
rev: 7.3.0
1010
hooks:
1111
- id: flake8
1212
- repo: https://github.com/ibm/detect-secrets
13-
rev: 0.13.1+ibm.62.dss
13+
rev: 0.13.1+ibm.64.dss
1414
hooks:
1515
- id: detect-secrets
16+
additional_dependencies: [boxsdk<4]
1617
args: [--baseline, .secrets.baseline, --use-all-plugins, --fail-on-unaudited]

.secrets.baseline

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"files": "^.secrets.baseline$",
44
"lines": null
55
},
6-
"generated_at": "2025-02-28T10:11:51Z",
6+
"generated_at": "2025-10-27T10:20:07Z",
77
"plugins_used": [
88
{
99
"name": "AWSKeyDetector"
@@ -77,6 +77,24 @@
7777
}
7878
],
7979
"results": {
80+
"bin/mas-devops-notify-slack": [
81+
{
82+
"hashed_secret": "053f5ed451647be0bbb6f67b80d6726808cad97e",
83+
"is_secret": false,
84+
"is_verified": false,
85+
"line_number": 35,
86+
"type": "Secret Keyword",
87+
"verified_result": null
88+
},
89+
{
90+
"hashed_secret": "4f75456d6c1887d41ed176f7ad3e2cfff3fdfd91",
91+
"is_secret": false,
92+
"is_verified": false,
93+
"line_number": 44,
94+
"type": "Secret Keyword",
95+
"verified_result": null
96+
}
97+
],
8098
"src/mas/devops/templates/ibm-entitlement-dockerconfig.json.j2": [
8199
{
82100
"hashed_secret": "d2e2ab0f407e4ee3cf2ab87d61c31b25a74085e5",
@@ -92,7 +110,7 @@
92110
"hashed_secret": "a4b48a81cdab1e1a5dd37907d6c85ca1c61ddc7c",
93111
"is_secret": false,
94112
"is_verified": false,
95-
"line_number": 263,
113+
"line_number": 290,
96114
"type": "Secret Keyword",
97115
"verified_result": null
98116
}
@@ -156,7 +174,7 @@
156174
}
157175
]
158176
},
159-
"version": "0.13.1+ibm.62.dss",
177+
"version": "0.13.1+ibm.64.dss",
160178
"word_list": {
161179
"file": null,
162180
"hash": null

Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ build: venv
1313
rm -f README.rst
1414
. venv/bin/activate && python -m build
1515

16+
# Note: "make install" needs to be ran once before this target will work, but we
17+
# don't want to set it as a dependency otherwise it unnecessarily slows down
18+
# fast implement/test cycles. "make install" created an editable install of the
19+
# package which is linked to the files you are editing so there is no need to
20+
# re-install after each change.
21+
unit-test:
22+
. venv/bin/activate && pytest test/src/mock
23+
1624
lint: venv
1725
rm -f README.rst
1826
. venv/bin/activate && flake8 src --count --select=E9,F63,F7,F82 --show-source --statistics && flake8 src --count --exit-zero --max-complexity=10 --max-line-length=200 --statistics

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,4 @@ Example of initial_users secret:
8989
```json
9090
{"john.smith1@example.com":"primary,john1,smith1","john.smith2@example.com":"primary,john2,smith2","john.smith3@example.com":"secondary,john3,smith3"}
9191
```
92+

bin/mas-devops-notify-slack

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#!/usr/bin/env python3
2+
3+
# *****************************************************************************
4+
# Copyright (c) 2025 IBM Corporation and other Contributors.
5+
#
6+
# All rights reserved. This program and the accompanying materials
7+
# are made available under the terms of the Eclipse Public License v1.0
8+
# which accompanies this distribution, and is available at
9+
# http://www.eclipse.org/legal/epl-v10.html
10+
#
11+
# *****************************************************************************
12+
13+
import argparse
14+
import os
15+
import sys
16+
from mas.devops.slack import SlackUtil
17+
18+
19+
def notifyProvisionFyre(channel: str, rc: int) -> bool:
20+
name = os.getenv("CLUSTER_NAME", None)
21+
if name is None:
22+
print("CLUSTER_NAME env var must be set")
23+
sys.exit(1)
24+
25+
# Support optional metadata from standard IBM CD Toolchains environment variables
26+
toolchainLink = ""
27+
toolchainUrl = os.getenv("TOOLCHAIN_PIPELINERUN_URL", None)
28+
toolchainTriggerName = os.getenv("TOOLCHAIN_TRIGGER_NAME", None)
29+
if toolchainUrl is not None and toolchainTriggerName is not None:
30+
toolchainLink = f" | <{toolchainUrl}|Pipeline Run>"
31+
32+
if rc == 0:
33+
url = os.getenv("OCP_CONSOLE_URL", None)
34+
username = os.getenv("OCP_USERNAME", None)
35+
password = os.getenv("OCP_PASSWORD", None)
36+
37+
if url is None or username is None or password is None:
38+
print("OCP_CONSOLE_URL, OCP_USERNAME, and OCP_PASSWORD env vars must all be set")
39+
sys.exit(1)
40+
41+
message = [
42+
SlackUtil.buildHeader(f":glyph-ok: Your IBM DevIT Fyre OCP cluster ({name}) is ready"),
43+
SlackUtil.buildSection(f"{url}"),
44+
SlackUtil.buildSection(f"- Username: `{username}`\n- Password: `{password}`"),
45+
SlackUtil.buildSection(f"<https://beta.fyre.ibm.com/development/vms|Fyre Dashboard>{toolchainLink}")
46+
]
47+
else:
48+
message = [
49+
SlackUtil.buildHeader(f":glyph-fail: Your IBM DevIT Fyre OCP cluster ({name}) failed to deploy"),
50+
SlackUtil.buildSection(f"<https://beta.fyre.ibm.com/development/vms|Fyre Dashboard>{toolchainLink}")
51+
]
52+
53+
response = SlackUtil.postMessageBlocks(channel, message)
54+
return response.data.get("ok", False)
55+
56+
57+
if __name__ == "__main__":
58+
# If SLACK_TOKEN or SLACK_CHANNEL env vars are not set then silently exit taking no action
59+
SLACK_TOKEN = os.getenv("SLACK_TOKEN", "")
60+
SLACK_CHANNEL = os.getenv("SLACK_CHANNEL", "")
61+
if SLACK_TOKEN == "" or SLACK_CHANNEL == "":
62+
sys.exit(0)
63+
64+
# Initialize the properties we need
65+
parser = argparse.ArgumentParser()
66+
67+
# Primary Options
68+
parser.add_argument("--action", required=True)
69+
parser.add_argument("--rc", required=True, type=int)
70+
args, unknown = parser.parse_known_args()
71+
72+
if args.action == "ocp-provision-fyre":
73+
notifyProvisionFyre(SLACK_CHANNEL, args.rc)

setup.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# *****************************************************************************
2-
# Copyright (c) 2024 IBM Corporation and other Contributors.
2+
# Copyright (c) 2024, 2025 IBM Corporation and other Contributors.
33
#
44
# All rights reserved. This program and the accompanying materials
55
# are made available under the terms of the Eclipse Public License v1.0
@@ -62,15 +62,17 @@ def get_version(rel_path):
6262
'jinja2', # BSD License
6363
'jinja2-base64-filters', # MIT License
6464
'semver', # BSD License
65-
'boto3' # Apache Software License
65+
'boto3', # Apache Software License
66+
'slack_sdk', # MIT License
6667
],
6768
extras_require={
6869
'dev': [
6970
'build', # MIT License
7071
'flake8', # MIT License
7172
'pytest', # MIT License
7273
'pytest-mock', # MIT License
73-
'requests-mock' # Apache Software License
74+
'requests-mock', # Apache Software License
75+
'setuptools', # MIT License
7476
]
7577
},
7678
classifiers=[
@@ -89,6 +91,7 @@ def get_version(rel_path):
8991
scripts=[
9092
'bin/mas-devops-db2-validate-config',
9193
'bin/mas-devops-create-initial-users-for-saas',
92-
'bin/mas-devops-saas-job-cleaner'
94+
'bin/mas-devops-saas-job-cleaner',
95+
'bin/mas-devops-notify-slack',
9396
]
9497
)
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
---
2+
# Case bundle configuration for IBM Maximo Operator Catalog 250925 (AMD64)
3+
# -----------------------------------------------------------------------------
4+
# In the future this won't be necessary as we'll be able to mirror from the
5+
# catalog itself, but not everything in the catalog supports this yet (including MAS)
6+
# so we need to use the CASE bundle mirror process still.
7+
8+
catalog_digest: sha256:db5ac0b24bc6c0cb2af8eebcf529fee8ce944196d49aaf7448a00b6e9ffa8d96
9+
10+
ocp_compatibility:
11+
- 4.15
12+
- 4.16
13+
- 4.17
14+
- 4.18
15+
16+
# Dependencies
17+
# -----------------------------------------------------------------------------
18+
ibm_licensing_version: 4.2.17 # Operator version 4.2.14 (https://github.com/IBM/cloud-pak/tree/master/repo/case/ibm-licensing)
19+
common_svcs_version: 4.12.0 # Operator version 4.12.0 (https://github.com/IBM/cloud-pak/tree/master/repo/case/ibm-cp-common-services)
20+
common_svcs_version_1: 4.11.0 # Additional version 4.11.0
21+
22+
cp4d_platform_version: 5.1.1 # Operator version 5.1.1 (https://github.com/IBM/cloud-pak/tree/master/repo/case/ibm-cp-datacore/)
23+
ibm_zen_version: 6.1.1+20250218.180746.89 # For CPD5 ibm-zen has to be explicitily mirrored
24+
25+
db2u_version: 7.3.1+20250821.161005.16793 # Operator version 110509.0.6 to find the version 7.3.1+20250821.161005.16793, search db2u-operator digest on repo (https://github.com/IBM/cloud-pak/tree/master/repo/case/ibm-db2uoperator)
26+
events_version: 5.0.1 # Operator version 5.0.1 (https://github.com/IBM/cloud-pak/tree/master/repo/case/ibm-events-operator)
27+
uds_version: 2.0.12 # Operator version 2.0.12 # sticking to 2.0.12 version # Please do Not Change
28+
sls_version: 3.12.2 # Operator version 3.10.0 (https://github.ibm.com/maximoappsuite/ibm-sls/releases)
29+
tsm_version: 1.7.1 # Operator version 1.5.4 (https://github.ibm.com/maximoappsuite/ibm-truststore-mgr/releases)
30+
dd_version: 1.1.19 # Operator version 1.1.14 (https://github.ibm.com/maximoappsuite/ibm-data-dictionary/releases)
31+
appconnect_version: 6.2.0 # Operator version 6.2.0 # sticking to 6.2.0 version # Please do Not Change
32+
wsl_version: 10.2.0 # used for wsl and wsl_runtimes unless wsl_runtimes_version also specified
33+
wsl_runtimes_version: 10.3.0 # cpd 5.1.3 uses version 10.3.0 of wsl runtimes but only 10.2.0 for wsl itself
34+
wml_version: 10.2.0 # Operator version 5.0.0
35+
36+
# Why are these commented out?
37+
# ccs_build: +20240528.144404.460 # ibm-ccs from version 9.0.0 requires the build version
38+
# datarefinery_build: +20240517.202103.146
39+
40+
spark_version: 10.2.0 # Operator version 7.3.0
41+
cognos_version: 27.2.0 # Operator version 25.0.0
42+
couchdb_version: 1.0.13 # Operator version 2.2.1 (1.0.13) sticking with 1.0.13 # (This is required for Assist 9.0, https://github.com/IBM/cloud-pak/blob/master/repo/case/ibm-couchdb/index.yaml)
43+
elasticsearch_version: 1.1.2667 # Operator version 1.1.2667
44+
45+
46+
# Maximo Application Suite
47+
# -----------------------------------------------------------------------------
48+
mas_core_version:
49+
9.2.x-feature: 9.2.0-pre.stable_11883 # Updated
50+
9.1.x-feature: 9.1.0 # No Update
51+
9.1.x: 9.1.4 # Updated
52+
9.0.x: 9.0.15 # Updated
53+
8.10.x: 8.10.29 # Updated
54+
8.11.x: 8.11.26 # Updated
55+
mas_assist_version:
56+
9.1.x: 9.1.3 # Updated
57+
9.0.x: 9.0.9 # Updated
58+
8.10.x: 8.7.8 # No Update
59+
8.11.x: 8.8.7 # No Update
60+
mas_hputilities_version:
61+
9.1.x: "" # Not Supported
62+
9.0.x: "" # Not Supported
63+
8.10.x: 8.6.7 # No Update
64+
8.11.x: "" # Not Supported
65+
mas_iot_version:
66+
9.1.x: 9.1.3 # Updated
67+
9.0.x: 9.0.12 # Updated
68+
8.10.x: 8.7.26 # Updated
69+
8.11.x: 8.8.22 # Updated
70+
mas_manage_version:
71+
9.2.x-feature: 9.2.0-pre.stable_13752 # Updated
72+
9.1.x-feature: 9.1.0 # No Update
73+
9.1.x: 9.1.3 # Updated
74+
9.0.x: 9.0.17 # Updated
75+
8.10.x: 8.6.30 # Updated
76+
8.11.x: 8.7.24 # Updated
77+
mas_monitor_version:
78+
9.1.x: 9.1.3 # Updated
79+
9.0.x: 9.0.13 # Updated
80+
8.10.x: 8.10.23 # Updated
81+
8.11.x: 8.11.21 # Updated
82+
mas_optimizer_version:
83+
9.2.x-feature: 9.2.0-pre.stable_525 # Updated
84+
9.1.x-feature: 9.1.0 # No Update
85+
9.1.x: 9.1.4 # No Update
86+
9.0.x: 9.0.15 # No Update
87+
8.10.x: 8.4.22 # No Update
88+
8.11.x: 8.5.21 # No Update
89+
mas_predict_version:
90+
9.1.x: 9.1.2 # Updated
91+
9.0.x: 9.0.9 # Updated
92+
8.10.x: 8.8.10 # Updated
93+
8.11.x: 8.9.12 # Updated
94+
mas_visualinspection_version:
95+
9.1.x-feature: 9.1.0 # No Update
96+
9.1.x: 9.1.2 # Updated
97+
9.0.x: 9.0.12 # Updated
98+
8.10.x: 8.8.4 # No Update
99+
8.11.x: 8.9.15 # Updated
100+
mas_facilities_version:
101+
9.1.x: 9.1.3 # Updated
102+
9.0.x: "" # Not Supported
103+
8.10.x: "" # Not Supported
104+
8.11.x: "" # Not Supported
105+
106+
107+
# Maximo AI Service
108+
# ------------------------------------------------------------------------------
109+
aiservice_version:
110+
9.1.x: 9.1.7 # Updated
111+
112+
# Extra Images for UDS
113+
# ------------------------------------------------------------------------------
114+
uds_extras_version: 1.5.0
115+
116+
# Extra Images for Mongo
117+
# ------------------------------------------------------------------------------
118+
mongo_extras_version_default: 7.0.23
119+
120+
# Variables used to mirror additional mongo image versions
121+
mongo_extras_version_4: 4.4.21
122+
mongo_extras_version_5: 5.0.23
123+
mongo_extras_version_6: 6.0.12
124+
mongo_extras_version_7: 7.0.23
125+
126+
# Extra Images for Db2u
127+
# ------------------------------------------------------------------------------
128+
db2u_extras_version: 1.0.6 # No Update
129+
db2u_filter: db2
130+
131+
# Extra Images for IBM Watson Discovery
132+
# ------------------------------------------------------------------------------
133+
#wd_extras_version: 1.0.4
134+
135+
# Extra Images for Amlen
136+
# ------------------------------------------------------------------------------
137+
amlen_extras_version: 1.1.3
138+
139+
# Default Cloud Pak for Data version
140+
# ------------------------------------------------------------------------------
141+
cpd_product_version_default: 5.1.3
142+
143+
# Extra Images for kmodels
144+
# ------------------------------------------------------------------------------
145+
kmodels_extras_version_default: 1.0.14
146+
147+
manage_extras_913: 9.1.3

0 commit comments

Comments
 (0)