Преглед изворни кода

add support for hosted cloud provider (#4370)

Feroze Mohideen пре 2 година
родитељ
комит
0573f1dfbc

+ 28 - 0
dashboard/src/lib/clusters/constants.ts

@@ -1639,9 +1639,37 @@ export const CloudProviderLocal: ClientCloudProvider = {
     kind: "Local",
   },
 };
+export const CloudProviderHosted: ClientCloudProvider = {
+  name: "Hosted",
+  displayName: "Hosted",
+  icon: infra,
+  regions: [],
+  machineTypes: [],
+  baseCost: 0,
+  newClusterDefaultContract: new Contract({}),
+  preflightChecks: [],
+  config: {
+    kind: "Hosted",
+  },
+};
+export const CloudProviderUnknown: ClientCloudProvider = {
+  name: "UNKNOWN",
+  displayName: "Unknown",
+  icon: infra,
+  regions: [],
+  machineTypes: [],
+  baseCost: 0,
+  newClusterDefaultContract: new Contract({}),
+  preflightChecks: [],
+  config: {
+    kind: "UNKNOWN",
+  },
+};
 export const SUPPORTED_CLOUD_PROVIDERS = [
   CloudProviderAWS,
   CloudProviderGCP,
   CloudProviderAzure,
   CloudProviderLocal,
+  CloudProviderHosted,
+  CloudProviderUnknown,
 ];

+ 15 - 2
dashboard/src/lib/clusters/types.ts

@@ -6,7 +6,14 @@ import { checkGroupValidator } from "main/home/compliance-dashboard/types";
 import { CloudProviderAWS } from "./constants";
 
 // Cloud
-export const cloudProviderValidator = z.enum(["AWS", "GCP", "Azure", "Local"]);
+export const cloudProviderValidator = z.enum([
+  "AWS",
+  "GCP",
+  "Azure",
+  "Local",
+  "Hosted",
+  "UNKNOWN",
+]);
 export type CloudProvider = z.infer<typeof cloudProviderValidator>;
 export type ClientCloudProvider = {
   name: CloudProvider;
@@ -31,6 +38,12 @@ export type ClientCloudProvider = {
       }
     | {
         kind: "Local";
+      }
+    | {
+        kind: "Hosted";
+      }
+    | {
+        kind: "UNKNOWN";
       };
 };
 const awsRegionValidator = z.enum([
@@ -271,7 +284,7 @@ export const clusterValidator = z.object({
   id: z.number(),
   name: z.string(),
   vanity_name: z.string(),
-  cloud_provider: cloudProviderValidator,
+  cloud_provider: z.string().pipe(cloudProviderValidator.catch("UNKNOWN")),
   cloud_provider_credential_identifier: z.string(),
   status: z.string(),
   ingress_ip: z.string().optional().default(""),

+ 1 - 1
dashboard/src/lib/databases/types.ts

@@ -42,7 +42,7 @@ export const datastoreValidator = z.object({
     "DELETING_RECORD",
     "DELETED",
   ]),
-  cloud_provider: cloudProviderValidator,
+  cloud_provider: z.string().pipe(cloudProviderValidator.catch("UNKNOWN")),
   cloud_provider_credential_identifier: z.string(),
 });