|
53 | 53 |
|
54 | 54 | def check_default_storageclass(k8s_client_storage): |
55 | 55 | api_response = k8s_client_storage.list_storage_class(_preload_content=False) |
56 | | - storageclasses = api_response.read().decode("utf-8") |
57 | | - storageclasses_dict = json.loads(storageclasses) |
58 | | - |
59 | | - ndefault_class = 0 |
60 | | - for item in storageclasses_dict["items"]: |
61 | | - storage_class_name = item["metadata"]["name"] |
62 | | - annotations = item["metadata"]["annotations"] |
63 | | - if annotations.get("storageclass.kubernetes.io/is-default-class") == "true": |
64 | | - ndefault_class += 1 |
65 | | - default_storage_class = storage_class_name |
66 | | - provisioner = item["provisioner"] |
67 | | - |
| 56 | + storageclasses = json.loads(api_response.read().decode("utf-8")) |
| 57 | + # pick out name and provisioner for each default storage class |
| 58 | + defaults = [ |
| 59 | + (item["metadata"]["name"], item["provisioner"]) |
| 60 | + for item in storageclasses['items'] |
| 61 | + if item["metadata"]["annotations"].get("storageclass.kubernetes.io/is-default-class") == "true" |
| 62 | + ] |
| 63 | + if len(defaults) != 1: |
| 64 | + names = ', '.join(item[0] for item in defaults) |
| 65 | + logger.error(f"Precisely one default storage class required, found {names or 'none'}") |
| 66 | + raise SCSTestException('...', return_code=32) |
| 67 | + name, provisioner = defaults[0] |
| 68 | + logger.info(f"Default storage class and provisioner: {name}, {provisioner}") |
68 | 69 | if provisioner == "kubernetes.io/no-provisioner": |
69 | | - raise SCSTestException( |
70 | | - f"Provisioner is set to: {provisioner}.", |
71 | | - "This means the default storage class has no provisioner.", |
72 | | - return_code=31, |
73 | | - ) |
74 | | - if ndefault_class != 1: |
75 | | - raise SCSTestException( |
76 | | - "More then one or none default StorageClass is defined! ", |
77 | | - f"Number of defined default StorageClasses = {ndefault_class} ", |
78 | | - return_code=32, |
79 | | - ) |
80 | | - |
81 | | - logger.info(f"One default Storage Class found:'{default_storage_class}'") |
82 | | - return default_storage_class |
| 70 | + logger.error("Default storage class missing provisioner") |
| 71 | + raise SCSTestException('...', return_code=31) |
| 72 | + return name |
83 | 73 |
|
84 | 74 |
|
85 | 75 | def create_pvc_pod( |
|
0 commit comments