Skip to content
Merged
Changes from all commits
Commits
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
56 changes: 55 additions & 1 deletion src/mas/devops/mas.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@

import logging
import re

from types import SimpleNamespace
from openshift.dynamic import DynamicClient
from openshift.dynamic.exceptions import NotFoundError, UnauthorizedError

from .ocp import getStorageClasses

logger = logging.getLogger(__name__)


Expand All @@ -26,6 +28,58 @@ def isAirgapInstall(dynClient: DynamicClient) -> bool:
return False


def getDefaultStorageClasses(dynClient: DynamicClient) -> dict:
result = SimpleNamespace(
provider=None,
providerName=None,
rwo=None,
rwx=None
)

# Iterate through storage classes until we find one that we recognize
# We make an assumption that if one of the paired classes if available, both will be
storageClasses = getStorageClasses(dynClient)
for storageClass in storageClasses:
if storageClass.metadata.name in ["ibmc-block-gold", "ibmc-file-gold-gid"]:
result.provider = "ibmc"
result.providerName = "IBMCloud ROKS"
result.rwo = "ibmc-block-gold"
result.rwx = "ibmc-file-gold-gid"
break
elif storageClass.metadata.name in ["ocs-storagecluster-ceph-rbd", "ocs-storagecluster-cephfs"]:
result.provider = "ocs"
result.providerName = "OpenShift Container Storage"
result.rwo = "ocs-storagecluster-ceph-rbd"
result.rwx = "ocs-storagecluster-cephfs"
break
elif storageClass.metadata.name in ["ocs-external-storagecluster-ceph-rbd", "ocs-external-storagecluster-cephfs"]:
result.provider = "ocs-external"
result.providerName = "OpenShift Container Storage (External)"
result.rwo = "ocs-external-storagecluster-ceph-rbd"
result.rwx = "ocs-external-storagecluster-cephfs"
break
elif storageClass.metadata.name == "nfs-client":
result.provider = "nfs"
result.providerName = "NFS Client"
result.rwo = "nfs-client"
result.rwx = "nfs-client"
break
elif storageClass.metadata.name in ["managed-premium", "azurefiles-premium"]:
result.provider = "azure"
result.providerName = "Azure Managed"
result.rwo = "managed-premium"
result.rwx = "azurefiles-premium"
break
elif storageClass.metadata.name in ["gp3-csi", "efs"]:
result.provider = "aws"
result.providerName = "AWS GP3"
result.rwo = "gp3-csi"
result.rwx = "efs"
break
logger.debug(f"Default storage class: {result}")
return result


def getCurrentCatalog(dynClient: DynamicClient) -> dict:
catalogsAPI = dynClient.resources.get(api_version="operators.coreos.com/v1alpha1", kind="CatalogSource")
try:
Expand Down
Loading