Parcourir la source

set compliance obj on contract during reprovision (#4283)

ianedwards il y a 2 ans
Parent
commit
63bc228266

+ 19 - 1
dashboard/src/components/ProvisionerSettings.tsx

@@ -2,6 +2,7 @@ import React, { useContext, useEffect, useState } from "react";
 import {
   AWSClusterNetwork,
   Cluster,
+  ComplianceProfile,
   Contract,
   EKS,
   EKSLogging,
@@ -171,6 +172,10 @@ const initialClusterState: ClusterState = {
   gpuInstanceType: "g4dn.xlarge",
   gpuMinInstances: 0,
   gpuMaxInstances: 5,
+  complianceProfiles: {
+    soc2: false,
+    hipaa: false,
+  },
 };
 
 type Props = RouteComponentProps & {
@@ -394,6 +399,11 @@ const ProvisionerSettings: React.FC<Props> = (props) => {
       );
     }
 
+    const complianceProfiles = new ComplianceProfile({
+      soc2: clusterState.complianceProfiles.soc2,
+      hipaa: clusterState.complianceProfiles.hipaa,
+    });
+
     const data = new Contract({
       cluster: new Cluster({
         projectId: currentProject.id,
@@ -422,6 +432,7 @@ const ProvisionerSettings: React.FC<Props> = (props) => {
           }),
         },
       }),
+      complianceProfiles,
     });
     return data;
   };
@@ -513,7 +524,7 @@ const ProvisionerSettings: React.FC<Props> = (props) => {
 
   useEffect(() => {
     // eslint-disable-next-line @typescript-eslint/no-explicit-any
-    const contract = props.selectedClusterVersion as any;
+    const contract = props.selectedClusterVersion;
     // Unmarshall Contract here
     if (contract?.cluster) {
       const eksValues: EKS = contract.cluster?.eksKind as EKS;
@@ -603,6 +614,13 @@ const ProvisionerSettings: React.FC<Props> = (props) => {
         "certificateARN",
         eksValues.loadBalancer?.additionalCertificateArns?.join(",")
       );
+
+      if (contract.complianceProfiles) {
+        handleClusterStateChange(
+          "complianceProfiles",
+          contract.complianceProfiles
+        );
+      }
     }
   }, [isExpanded, props.selectedClusterVersion]);
 

+ 6 - 6
dashboard/src/main/home/dashboard/Dashboard.tsx

@@ -1,14 +1,14 @@
 import React, { useState, useContext, useEffect } from "react";
 import styled from "styled-components";
-import { RouteComponentProps, withRouter } from "react-router";
+import { type RouteComponentProps, withRouter } from "react-router";
 
 import gradient from "assets/gradient.png";
 
 import { Context } from "shared/Context";
-import { InfraType } from "shared/types";
+import { type InfraType } from "shared/types";
 import api from "shared/api";
 import { pushFiltered, pushQueryParams } from "shared/routing";
-import { withAuth, WithAuthProps } from "shared/auth/AuthorizationHoc";
+import { withAuth, type WithAuthProps } from "shared/auth/AuthorizationHoc";
 
 import ProvisionerSettings from "../provisioner/ProvisionerSettings";
 import ClusterPlaceholderContainer from "./ClusterPlaceholderContainer";
@@ -83,7 +83,7 @@ const Dashboard: React.FC<Props> = ({
             project_id: currentProject.id,
           }
         )
-        .then((res) => setInfras(res.data))
+        .then((res) => { setInfras(res.data); })
         .catch(console.log);
     }
   }, [currentProject]);
@@ -98,7 +98,7 @@ const Dashboard: React.FC<Props> = ({
     tabOptions.push({ label: "Provisioner status", value: "provisioner" });
 
     if (!capabilities?.provisioner) {
-      let newTabs = [{ label: "Project overview", value: "overview" }];
+      const newTabs = [{ label: "Project overview", value: "overview" }];
       setTabOptions(newTabs);
     } else {
       setTabOptions(tabOptions);
@@ -138,7 +138,7 @@ const Dashboard: React.FC<Props> = ({
         <DashboardWrapper>
           {showFormDebugger ? (
             <FormDebugger
-              goBack={() => setShowFormDebugger(false)}
+              goBack={() => { setShowFormDebugger(false); }}
             />
           ) : (
             <>

+ 7 - 4
dashboard/src/shared/types.tsx

@@ -1,4 +1,4 @@
-import { z } from "zod"
+import { z } from "zod";
 
 export const clusterValidator = z.object({
   id: z.number(),
@@ -15,9 +15,8 @@ export const clusterValidator = z.object({
   cloud_provider_credential_identifier: z.string().optional(),
   status: z.string().optional(),
   cloud_provider: z.string(),
-  gpuCluster: z.boolean().optional()
-})
-
+  gpuCluster: z.boolean().optional(),
+});
 
 export type ClusterType = {
   id: number;
@@ -749,6 +748,10 @@ export type ClusterState = {
   gpuInstanceType?: string;
   gpuMinInstances: number;
   gpuMaxInstances: number;
+  complianceProfiles: {
+    soc2: boolean;
+    hipaa: boolean;
+  };
 };
 
 export type Soc2Check = {