1010
1111import logging
1212import re
13-
13+ from types import SimpleNamespace
1414from openshift .dynamic import DynamicClient
1515from openshift .dynamic .exceptions import NotFoundError , UnauthorizedError
1616
17+ from .ocp import getStorageClasses
18+
1719logger = 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+
2983def getCurrentCatalog (dynClient : DynamicClient ) -> dict :
3084 catalogsAPI = dynClient .resources .get (api_version = "operators.coreos.com/v1alpha1" , kind = "CatalogSource" )
3185 try :
0 commit comments