sdess09 пре 2 година
родитељ
комит
135e3372c6

+ 1 - 0
api/server/handlers/project/create.go

@@ -44,6 +44,7 @@ func (p *ProjectCreateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
 		CapiProvisionerEnabled: true,
 		SimplifiedViewEnabled:  true,
 		HelmValuesEnabled:      false,
+		EnvGroupEnabled:        false,
 	}
 
 	var err error

+ 1 - 0
api/server/handlers/project/create_test.go

@@ -45,6 +45,7 @@ func TestCreateProjectSuccessful(t *testing.T) {
 		CapiProvisionerEnabled: true,
 		SimplifiedViewEnabled:  true,
 		HelmValuesEnabled:      false,
+		EnvGroupEnabled:        false,
 	}
 
 	gotProject := &types.CreateProjectResponse{}

+ 2 - 0
api/types/project.go

@@ -13,6 +13,7 @@ type Project struct {
 	SimplifiedViewEnabled  bool    `json:"simplified_view_enabled"`
 	AzureEnabled           bool    `json:"azure_enabled"`
 	HelmValuesEnabled      bool    `json:"helm_values_enabled"`
+	EnvGroupEnabled        bool    `json:"env_group_enabled"`
 }
 
 type FeatureFlags struct {
@@ -24,6 +25,7 @@ type FeatureFlags struct {
 	SimplifiedViewEnabled      string `json:"simplified_view_enabled,omitempty"`
 	AzureEnabled               bool   `json:"azure_enabled,omitempty"`
 	HelmValuesEnabled          bool   `json:"helm_values_enabled,omitempty"`
+	EnvGroupEnabled            bool   `json:"env_group_enabled"`
 }
 
 type CreateProjectRequest struct {

+ 36 - 32
dashboard/src/main/home/app-dashboard/expanded-app/env-vars/EnvVariablesTab.tsx

@@ -123,39 +123,43 @@ export const EnvVariablesTab: React.FC<EnvVariablesTabProps> = ({
         fileUpload={true}
         syncedEnvGroups={syncedEnvGroups}
       />
-      <LoadButton
-        onClick={() => setShowEnvModal(true)}
-      >
-        <img src={sliders} /> Load from Env Group
-      </LoadButton>
-      {showEnvModal && <EnvGroupModal
-        setValues={(x: any) => {
-          if (status !== "") {
-            clearStatus();
-          }
-          setEnvVars(x);
-        }}
-        values={envVars}
-        closeModal={() => setShowEnvModal(false)}
-        syncedEnvGroups={syncedEnvGroups}
-        setSyncedEnvGroups={setSyncedEnvGroups}
-        namespace={appData.chart.namespace}
-      />}
-      {!!syncedEnvGroups?.length && (
+      {currentProject.env_group_enabled && (
         <>
-          <Spacer y={0.5} />
-          <Text size={16}>Synced environment groups</Text >
-          {syncedEnvGroups?.map((envGroup: any) => {
-            return (
-              <ExpandableEnvGroup
-                key={envGroup?.name}
-                envGroup={envGroup}
-                onDelete={() => {
-                  deleteEnvGroup(envGroup);
-                }}
-              />
-            );
-          })}
+          <LoadButton
+            onClick={() => setShowEnvModal(true)}
+          >
+            <img src={sliders} /> Load from Env Group
+          </LoadButton>
+          {showEnvModal && <EnvGroupModal
+            setValues={(x: any) => {
+              if (status !== "") {
+                clearStatus();
+              }
+              setEnvVars(x);
+            }}
+            values={envVars}
+            closeModal={() => setShowEnvModal(false)}
+            syncedEnvGroups={syncedEnvGroups}
+            setSyncedEnvGroups={setSyncedEnvGroups}
+            namespace={appData.chart.namespace}
+          />}
+          {!!syncedEnvGroups?.length && (
+            <>
+              <Spacer y={0.5} />
+              <Text size={16}>Synced environment groups</Text >
+              {syncedEnvGroups?.map((envGroup: any) => {
+                return (
+                  <ExpandableEnvGroup
+                    key={envGroup?.name}
+                    envGroup={envGroup}
+                    onDelete={() => {
+                      deleteEnvGroup(envGroup);
+                    }}
+                  />
+                );
+              })}
+            </>
+          )}
         </>
       )}
 

+ 34 - 30
dashboard/src/main/home/app-dashboard/new-app-flow/NewAppFlow.tsx

@@ -581,37 +581,41 @@ const NewAppFlow: React.FC<Props> = ({ ...props }) => {
                   fileUpload={true}
                   syncedEnvGroups={syncedEnvGroups}
                 />
-                <LoadButton
-                  onClick={() => setShowEnvModal(true)}
-                >
-                  <img src={sliders} /> Load from Env Group
-                </LoadButton>
-                {showEnvModal && <EnvGroupModal
-                  setValues={(x: any) => {
-                    setFormState({ ...formState, envVariables: x });
-                  }}
-                  values={formState.envVariables}
-                  closeModal={() => setShowEnvModal(false)}
-                  syncedEnvGroups={syncedEnvGroups}
-                  setSyncedEnvGroups={setSyncedEnvGroups}
-                  namespace={"porter-stack-" + porterApp.name}
-                  newApp={true}
-                />}
-                {!!syncedEnvGroups?.length && (
+                {currentProject.env_group_enabled && (
                   <>
-                    <Spacer y={0.5} />
-                    <Text size={16}>Synced environment groups</Text >
-                    {syncedEnvGroups?.map((envGroup: any) => {
-                      return (
-                        <ExpandableEnvGroup
-                          key={envGroup?.name}
-                          envGroup={envGroup}
-                          onDelete={() => {
-                            deleteEnvGroup(envGroup);
-                          }}
-                        />
-                      );
-                    })}
+                    <LoadButton
+                      onClick={() => setShowEnvModal(true)}
+                    >
+                      <img src={sliders} /> Load from Env Group
+                    </LoadButton>
+                    {showEnvModal && <EnvGroupModal
+                      setValues={(x: any) => {
+                        setFormState({ ...formState, envVariables: x });
+                      }}
+                      values={formState.envVariables}
+                      closeModal={() => setShowEnvModal(false)}
+                      syncedEnvGroups={syncedEnvGroups}
+                      setSyncedEnvGroups={setSyncedEnvGroups}
+                      namespace={"porter-stack-" + porterApp.name}
+                      newApp={true}
+                    />}
+                    {!!syncedEnvGroups?.length && (
+                      <>
+                        <Spacer y={0.5} />
+                        <Text size={16}>Synced environment groups</Text >
+                        {syncedEnvGroups?.map((envGroup: any) => {
+                          return (
+                            <ExpandableEnvGroup
+                              key={envGroup?.name}
+                              envGroup={envGroup}
+                              onDelete={() => {
+                                deleteEnvGroup(envGroup);
+                              }}
+                            />
+                          );
+                        })}
+                      </>
+                    )}
                   </>
                 )}
               </>,

+ 2 - 2
dashboard/src/main/home/sidebar/Sidebar.tsx

@@ -189,7 +189,7 @@ class Sidebar extends Component<PropsType, StateType> {
             <Img src={addOns} />
             Add-ons
           </NavButton>
-          <NavButton
+          {currentProject.env_group_enabled && <NavButton
             path="/env-groups"
 
             active={
@@ -199,7 +199,7 @@ class Sidebar extends Component<PropsType, StateType> {
           >
             <Img src={sliders} />
             Env groups
-          </NavButton>
+          </NavButton>}
           {this.props.isAuthorized("integrations", "", [
             "get",
             "create",

+ 1 - 0
dashboard/src/shared/types.tsx

@@ -271,6 +271,7 @@ export interface ProjectType {
   simplified_view_enabled: boolean;
   azure_enabled: boolean;
   helm_values_enabled: boolean;
+  env_group_enabled: boolean;
   roles: {
     id: number;
     kind: string;

+ 2 - 0
internal/models/project.go

@@ -67,6 +67,7 @@ type Project struct {
 	SimplifiedViewEnabled  bool
 	AzureEnabled           bool
 	HelmValuesEnabled      bool
+	EnvGroupEnabled        bool `gorm:"default:false"`
 }
 
 // ToProjectType generates an external types.Project to be shared over REST
@@ -90,5 +91,6 @@ func (p *Project) ToProjectType() *types.Project {
 		SimplifiedViewEnabled:  p.SimplifiedViewEnabled,
 		AzureEnabled:           p.AzureEnabled,
 		HelmValuesEnabled:      p.HelmValuesEnabled,
+		EnvGroupEnabled:        p.EnvGroupEnabled,
 	}
 }