فهرست منبع

Add support for GCP Instance Types for slider (#4075)

sdess09 2 سال پیش
والد
کامیت
cac3680604

+ 3 - 3
dashboard/src/components/GCPProvisionerSettings.tsx

@@ -374,9 +374,9 @@ const GCPProvisionerSettings: React.FC<Props> = (props) => {
             region: region,
             network: new GKENetwork({
               cidrRange: clusterNetworking.cidrRange || defaultClusterNetworking.cidrRange,
-              controlPlaneCidr: defaultClusterNetworking.controlPlaneCidr,
-              podCidr: defaultClusterNetworking.podCidr,
-              serviceCidr: defaultClusterNetworking.serviceCidr,
+              controlPlaneCidr: clusterNetworking.controlPlaneCidr || defaultClusterNetworking.controlPlaneCidr,
+              podCidr: clusterNetworking.podCidr || defaultClusterNetworking.podCidr,
+              serviceCidr: clusterNetworking.serviceCidr || defaultClusterNetworking.serviceCidr,
             }),
             nodePools
           }),

+ 19 - 5
dashboard/src/lib/hooks/useClusterResourceLimits.ts

@@ -106,13 +106,27 @@ const clusterNodesValidator = z
       return defaultResources;
     }
     const instanceType = data.labels["beta.kubernetes.io/instance-type"];
-    const res = z
-      .tuple([z.string(), z.string()])
-      .safeParse(instanceType?.split("."));
-    if (!res.success) {
+
+    let parsedType;
+    if (instanceType && instanceType.includes(".")) {
+      parsedType = z
+        .tuple([z.string(), z.string()])
+        .safeParse(instanceType.split("."));
+    } else if (instanceType && instanceType.includes("-")) {
+      const [instanceClass, ...instanceSizeParts] = instanceType.split("-");
+      const instanceSize = instanceSizeParts.join("-");
+      parsedType = z
+        .tuple([z.string(), z.string()])
+        .safeParse([instanceClass, instanceSize]);
+    } else {
+      return defaultResources; // Return defaults if instanceType format is not recognized
+    }
+
+    if (!parsedType.success) {
       return defaultResources;
     }
-    const [instanceClass, instanceSize] = res.data;
+
+    const [instanceClass, instanceSize] = parsedType.data;
     if (AWS_INSTANCE_LIMITS[instanceClass]?.[instanceSize]) {
       const { vCPU, RAM } = AWS_INSTANCE_LIMITS[instanceClass][instanceSize];
       return {

+ 26 - 7
dashboard/src/main/home/app-dashboard/validate-apply/services-settings/tabs/utils.ts

@@ -1,15 +1,11 @@
 export const MIB_TO_GIB = 1024;
 export const MILI_TO_CORE = 1000;
-interface InstanceDetails {
+type InstanceDetails = {
   vCPU: number;
   RAM: number;
-}
+};
 
-interface InstanceTypes {
-  [key: string]: {
-    [size: string]: InstanceDetails;
-  };
-}
+type InstanceTypes = Record<string, Record<string, InstanceDetails>>;
 
 // use values from AWS as base constant, convert to MB
 export const AWS_INSTANCE_LIMITS: InstanceTypes = Object.freeze({
@@ -100,4 +96,27 @@ export const AWS_INSTANCE_LIMITS: InstanceTypes = Object.freeze({
     "2xlarge": { vCPU: 8, RAM: 32 },
     "4xlarge": { vCPU: 16, RAM: 64 },
   },
+  // add GCP instance tyoes : TO DO add a dedicated section for GCP
+  e2: {
+    "standard-2": { vCPU: 2, RAM: 8 },
+    "standard-4": { vCPU: 4, RAM: 16 },
+    "standard-8": { vCPU: 8, RAM: 32 },
+    "standard-16": { vCPU: 16, RAM: 64 },
+    "standard-32": { vCPU: 32, RAM: 128 },
+    "standard-64": { vCPU: 64, RAM: 256 },
+  },
+  c3: {
+    "highcpu-4": { vCPU: 4, RAM: 8 },
+    "highcpu-8": { vCPU: 8, RAM: 16 },
+    "highcpu-22": { vCPU: 22, RAM: 44 },
+    "highcpu-44": { vCPU: 44, RAM: 88 },
+    "highmem-4": { vCPU: 4, RAM: 32 },
+    "highmem-8": { vCPU: 8, RAM: 64 },
+    "highmem-22": { vCPU: 22, RAM: 176 },
+    "highmem-44": { vCPU: 44, RAM: 352 },
+    "standard-4": { vCPU: 4, RAM: 16 },
+    "standard-8": { vCPU: 8, RAM: 32 },
+    "standard-22": { vCPU: 22, RAM: 88 },
+    "standard-44": { vCPU: 44, RAM: 176 },
+  },
 });