Skip to content
Draft
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
2bde403
[minor] Support March Catalog Update
prveenkumr Mar 9, 2026
af73ca3
Merge branch 'stable' into monthlyupdate
prveenkumr Mar 13, 2026
e6fd69b
Merge branch 'stable' into monthlyupdate
prveenkumr Mar 15, 2026
d32a525
[patch] add v9 files
prveenkumr Mar 19, 2026
edab4cf
Update catalog versions for March release (#214)
prveenkumr Mar 19, 2026
4834395
[patch] Update catalog digest for March release (#218)
prveenkumr Mar 19, 2026
01ed836
[patch] Update catalog versions for March release (#221)
prveenkumr Mar 19, 2026
b0ab51d
Merge branch 'stable' into monthlyupdate
prveenkumr Mar 19, 2026
301f664
[patch] update assert catalogTag == "v9-260326-amd64"
prveenkumr Mar 20, 2026
5eb108a
[patch] Update catalog digest for March release (#222)
prveenkumr Mar 20, 2026
5479056
Merge branch 'stable' into monthlyupdate
prveenkumr Mar 20, 2026
9d88ce5
[patch] Update catalog versions & digest for March release (#226)
prveenkumr Mar 20, 2026
b95b244
[patch] Update catalog digest for March release (#228)
prveenkumr Mar 20, 2026
0aee6e0
[patch] update v9 files
prveenkumr Mar 20, 2026
430ea35
[patch] python rebuild
prveenkumr Mar 21, 2026
cf743b5
[patch] add sls and tsm
prveenkumr Mar 22, 2026
fed665e
Add chnage in catalog v9-260326-amd64
jainyjoseph Mar 23, 2026
ee75945
Add chnage in catalog v9-260326-amd64
jainyjoseph Mar 23, 2026
4ab02e8
Merge branch 'monthlyupdate' into mong825
jainyjoseph Apr 7, 2026
31555be
Updated latest catlog
jainyjoseph Apr 7, 2026
d6b42ec
Updated for pipeline-enable
jainyjoseph Apr 7, 2026
28c9ffb
Merge branch 'monthlyupdate' into pipelin-enab
jainyjoseph Apr 8, 2026
5198fda
Updated for pipeline-enablement
jainyjoseph Apr 8, 2026
aff9d63
Updated lint issues
jainyjoseph Apr 8, 2026
1028450
Updated lint issues
jainyjoseph Apr 8, 2026
866768d
Fixed flake8 linting error
jainyjoseph Apr 8, 2026
c4eac49
Catalogs merged with monthly
jainyjoseph Apr 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 88 additions & 1 deletion src/mas/devops/tekton.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

from jinja2 import Environment, FileSystemLoader

from .ocp import getConsoleURL, waitForCRD, waitForDeployment, crdExists, waitForPVC, getStorageClasses, getStorageClassVolumeBindingMode
from .ocp import getConsoleURL, waitForCRD, waitForDeployment, crdExists, waitForPVC, getStorageClasses, getStorageClassVolumeBindingMode, getClusterVersion

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -159,6 +159,93 @@ def installOpenShiftPipelines(dynClient: DynamicClient, customStorageClassName:
return False


def enablePipelinesConsolePlugin(dynClient: DynamicClient) -> bool:
"""
Enable the OpenShift Pipelines console plugin for OCP 4.21+.

In OpenShift 4.21 and later, the Pipelines console plugin must be manually
enabled by patching the Console operator configuration. This function:
1. Detects the OCP version
2. Checks if version >= 4.21
3. Enables the plugin if not already enabled

Parameters:
dynClient (DynamicClient): OpenShift Dynamic Client

Returns:
bool: True if plugin is enabled or already enabled, False on error
"""
try:
# Get cluster version
clusterVersion = getClusterVersion(dynClient)
if not clusterVersion:
logger.warning("Unable to determine cluster version, skipping plugin enablement")
return True # Non-fatal, return True to continue

logger.debug(f"Detected OpenShift version: {clusterVersion}")

# Parse version (e.g., "4.21.0" -> major=4, minor=21)
versionParts = clusterVersion.split('.')
if len(versionParts) < 2:
logger.warning(f"Unable to parse cluster version '{clusterVersion}', skipping plugin enablement")
return True

try:
majorVersion = int(versionParts[0])
minorVersion = int(versionParts[1])
except ValueError:
logger.warning(f"Unable to parse version numbers from '{clusterVersion}', skipping plugin enablement")
return True

# Check if version requires plugin enablement (4.21+)
requiresPlugin = (majorVersion == 4 and minorVersion >= 21) or (majorVersion > 4)

if not requiresPlugin:
logger.info(f"OpenShift version {clusterVersion} does not require manual plugin enablement")
return True

logger.info(f"OpenShift version {clusterVersion} requires Pipelines console plugin to be enabled")

# Get Console Operator
consoleAPI = dynClient.resources.get(api_version="operator.openshift.io/v1", kind="Console")
console = consoleAPI.get(name="cluster")

# Check if plugin is already enabled
currentPlugins = console.spec.plugins if hasattr(console.spec, 'plugins') and console.spec.plugins else []
pluginName = "pipelines-console-plugin"

if pluginName in currentPlugins:
logger.info("Pipelines console plugin is already enabled")
return True

# Enable the plugin by patching the Console operator
logger.info("Enabling Pipelines console plugin...")

# Create patch to add plugin to the list
updatedPlugins = list(currentPlugins) + [pluginName]
patch = {
"spec": {
"plugins": updatedPlugins
}
}

consoleAPI.patch(
name="cluster",
body=patch,
content_type="application/merge-patch+json"
)

logger.info("Successfully enabled Pipelines console plugin")
return True

except NotFoundError as e:
logger.warning(f"Console operator not found: {e}")
return True # Non-fatal, plugin can be enabled manually
except Exception as e:
logger.error(f"Error enabling Pipelines console plugin: {e}")
return False


def addMissingStorageClassToTektonPVC(dynClient: DynamicClient, namespace: str, pvcName: str, storageClassName: str = None) -> bool:
"""
OpenShift Pipelines has a problem when there is no default storage class defined in a cluster, this function
Expand Down
Loading