Skip to content

Commit 0196ddb

Browse files
authored
[minor] Centralize default storage class handling (#35)
1 parent 6a9510a commit 0196ddb

1 file changed

Lines changed: 55 additions & 1 deletion

File tree

src/mas/devops/mas.py

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010

1111
import logging
1212
import re
13-
13+
from types import SimpleNamespace
1414
from openshift.dynamic import DynamicClient
1515
from openshift.dynamic.exceptions import NotFoundError, UnauthorizedError
1616

17+
from .ocp import getStorageClasses
18+
1719
logger = logging.getLogger(__name__)
1820

1921

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

2830

31+
def getDefaultStorageClasses(dynClient: DynamicClient) -> dict:
32+
result = SimpleNamespace(
33+
provider=None,
34+
providerName=None,
35+
rwo=None,
36+
rwx=None
37+
)
38+
39+
# Iterate through storage classes until we find one that we recognize
40+
# We make an assumption that if one of the paired classes if available, both will be
41+
storageClasses = getStorageClasses(dynClient)
42+
for storageClass in storageClasses:
43+
if storageClass.metadata.name in ["ibmc-block-gold", "ibmc-file-gold-gid"]:
44+
result.provider = "ibmc"
45+
result.providerName = "IBMCloud ROKS"
46+
result.rwo = "ibmc-block-gold"
47+
result.rwx = "ibmc-file-gold-gid"
48+
break
49+
elif storageClass.metadata.name in ["ocs-storagecluster-ceph-rbd", "ocs-storagecluster-cephfs"]:
50+
result.provider = "ocs"
51+
result.providerName = "OpenShift Container Storage"
52+
result.rwo = "ocs-storagecluster-ceph-rbd"
53+
result.rwx = "ocs-storagecluster-cephfs"
54+
break
55+
elif storageClass.metadata.name in ["ocs-external-storagecluster-ceph-rbd", "ocs-external-storagecluster-cephfs"]:
56+
result.provider = "ocs-external"
57+
result.providerName = "OpenShift Container Storage (External)"
58+
result.rwo = "ocs-external-storagecluster-ceph-rbd"
59+
result.rwx = "ocs-external-storagecluster-cephfs"
60+
break
61+
elif storageClass.metadata.name == "nfs-client":
62+
result.provider = "nfs"
63+
result.providerName = "NFS Client"
64+
result.rwo = "nfs-client"
65+
result.rwx = "nfs-client"
66+
break
67+
elif storageClass.metadata.name in ["managed-premium", "azurefiles-premium"]:
68+
result.provider = "azure"
69+
result.providerName = "Azure Managed"
70+
result.rwo = "managed-premium"
71+
result.rwx = "azurefiles-premium"
72+
break
73+
elif storageClass.metadata.name in ["gp3-csi", "efs"]:
74+
result.provider = "aws"
75+
result.providerName = "AWS GP3"
76+
result.rwo = "gp3-csi"
77+
result.rwx = "efs"
78+
break
79+
logger.debug(f"Default storage class: {result}")
80+
return result
81+
82+
2983
def getCurrentCatalog(dynClient: DynamicClient) -> dict:
3084
catalogsAPI = dynClient.resources.get(api_version="operators.coreos.com/v1alpha1", kind="CatalogSource")
3185
try:

0 commit comments

Comments
 (0)