17573: Adds Volumes config support.
authorLucas Di Pentima <lucas.dipentima@curii.com>
Thu, 8 Jul 2021 22:18:06 +0000 (19:18 -0300)
committerLucas Di Pentima <lucas.dipentima@curii.com>
Tue, 13 Jul 2021 16:50:02 +0000 (13:50 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas.dipentima@curii.com>

src/common/config.ts

index f3d06840497968eba7388a523d05621038d07ff8..8a85ae007529738fd0f763193a337278101b1ffa 100644 (file)
@@ -91,6 +91,13 @@ export interface ClusterConfigJSON {
             }
         }
     };
+    Volumes: {
+        [key: string]: {
+            StorageClasses: {
+                [key: string]: boolean;
+            }
+        }
+    };
 }
 
 export class Config {
@@ -130,6 +137,19 @@ export const buildConfig = (clusterConfig: ClusterConfigJSON): Config => {
     return config;
 };
 
+export const getStorageClasses = (config: Config): string[] => {
+    const classes: Set<string> = new Set();
+    const volumes = config.clusterConfig.Volumes;
+    Object.keys(volumes).forEach(v => {
+        Object.keys(volumes[v].StorageClasses).forEach(sc => {
+            if (volumes[v].StorageClasses[sc]) {
+                classes.add(sc);
+            }
+        });
+    });
+    return Array.from(classes);
+};
+
 const getApiRevision = async (apiUrl: string) => {
     try {
         const dd = (await Axios.get<any>(`${apiUrl}/${DISCOVERY_DOC_PATH}`)).data;
@@ -252,6 +272,7 @@ export const mockClusterConfigJSON = (config: Partial<ClusterConfigJSON>): Clust
     Collections: {
         ForwardSlashNameSubstitution: "",
     },
+    Volumes: {},
     ...config
 });