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

Update Dedicated Namespace (#3258)

* Update Dedicated Namespace

* Update ExpandedEnvGroup.tsx
sdess09 пре 2 година
родитељ
комит
d0cf382b35

+ 1 - 1
api/server/handlers/namespace/create_stacks_env_group.go

@@ -48,13 +48,13 @@ func NewCreateStacksEnvGroupHandler(
 func (c *CreateStacksEnvGroupHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	request := &types.CreateStacksEnvGroupRequest{}
 	ctx := r.Context()
+	cluster, _ := ctx.Value(types.ClusterScope).(*models.Cluster)
 	ctx, span := telemetry.NewSpan(ctx, "serve-create-env-group-stacks")
 	defer span.End()
 	if ok := c.DecodeAndValidate(w, r, request); !ok {
 		return
 	}
 	namespace := ctx.Value(types.NamespaceScope).(string)
-	cluster, _ := ctx.Value(types.ClusterScope).(*models.Cluster)
 
 	agent, err := c.GetAgent(r, cluster, namespace)
 	if err != nil {

+ 4 - 4
api/server/handlers/porter_app/create.go

@@ -511,11 +511,11 @@ func createReleaseJobChart(
 
 func cloneEnvGroup(c *CreatePorterAppHandler, w http.ResponseWriter, r *http.Request, agent *kubernetes.Agent, envGroups []string, namespace string) {
 	for _, envGroupName := range envGroups {
-		cm, _, err := agent.GetLatestVersionedConfigMap(envGroupName, "default")
+		cm, _, err := agent.GetLatestVersionedConfigMap(envGroupName, "porter-env-group")
 		if err != nil {
 			if errors.Is(err, kubernetes.IsNotFoundError) {
 				c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(
-					fmt.Errorf("error cloning env group: envgroup %s in namespace %s not found", envGroupName, "default"), http.StatusNotFound,
+					fmt.Errorf("error cloning env group: envgroup %s in namespace %s not found", envGroupName, "porter-env-group"), http.StatusNotFound,
 					"no config map found for envgroup",
 				))
 				return
@@ -524,11 +524,11 @@ func cloneEnvGroup(c *CreatePorterAppHandler, w http.ResponseWriter, r *http.Req
 			c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
 			return
 		}
-		secret, _, err := agent.GetLatestVersionedSecret(envGroupName, "default")
+		secret, _, err := agent.GetLatestVersionedSecret(envGroupName, "porter-env-group")
 		if err != nil {
 			if errors.Is(err, kubernetes.IsNotFoundError) {
 				c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(
-					fmt.Errorf("error cloning env group: envgroup %s in namespace %s not found", envGroupName, "default"), http.StatusNotFound,
+					fmt.Errorf("error cloning env group: envgroup %s in namespace %s not found", envGroupName, "porter-env-group"), http.StatusNotFound,
 					"no k8s secret found for envgroup",
 				))
 				return

+ 15 - 30
dashboard/package-lock.json

@@ -16426,8 +16426,7 @@
     "@icons/material": {
       "version": "0.2.4",
       "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz",
-      "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==",
-      "requires": {}
+      "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw=="
     },
     "@ironplans/api": {
       "version": "0.4.1",
@@ -16607,8 +16606,7 @@
     "@material-ui/types": {
       "version": "5.1.0",
       "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz",
-      "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==",
-      "requires": {}
+      "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A=="
     },
     "@material-ui/utils": {
       "version": "4.11.3",
@@ -16923,8 +16921,7 @@
       "version": "7.2.1",
       "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-7.2.1.tgz",
       "integrity": "sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "@types/body-parser": {
       "version": "1.19.2",
@@ -18141,15 +18138,13 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
       "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "ajv-keywords": {
       "version": "3.5.2",
       "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
       "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "anser": {
       "version": "2.1.1",
@@ -21086,8 +21081,7 @@
     "goober": {
       "version": "2.1.12",
       "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.12.tgz",
-      "integrity": "sha512-yXHAvO08FU1JgTXX6Zn6sYCUFfB/OJSX8HHjDSgerZHZmFKAb08cykp5LBw5QnmyMcZyPRMqkdyHUSSzge788Q==",
-      "requires": {}
+      "integrity": "sha512-yXHAvO08FU1JgTXX6Zn6sYCUFfB/OJSX8HHjDSgerZHZmFKAb08cykp5LBw5QnmyMcZyPRMqkdyHUSSzge788Q=="
     },
     "good-listener": {
       "version": "1.2.2",
@@ -21473,8 +21467,7 @@
       "version": "5.1.0",
       "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
       "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "ieee754": {
       "version": "1.2.1",
@@ -22351,8 +22344,7 @@
     "markdown-to-jsx": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.2.0.tgz",
-      "integrity": "sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg==",
-      "requires": {}
+      "integrity": "sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg=="
     },
     "material-colors": {
       "version": "1.2.6",
@@ -23270,8 +23262,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
       "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "postcss-modules-local-by-default": {
       "version": "4.0.0",
@@ -23568,8 +23559,7 @@
     "react-animate-height": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/react-animate-height/-/react-animate-height-3.1.1.tgz",
-      "integrity": "sha512-UkC6+V3ZlCneBRaSM7aUctDJ+PRP6ztcGtxvU7MTeoMMWPhz8BQNaX7QWaZrkzp1ih1G8uZZ+DI9nfLvtD6OdQ==",
-      "requires": {}
+      "integrity": "sha512-UkC6+V3ZlCneBRaSM7aUctDJ+PRP6ztcGtxvU7MTeoMMWPhz8BQNaX7QWaZrkzp1ih1G8uZZ+DI9nfLvtD6OdQ=="
     },
     "react-beautiful-dnd": {
       "version": "13.1.1",
@@ -23688,8 +23678,7 @@
     "react-onclickoutside": {
       "version": "6.12.2",
       "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.12.2.tgz",
-      "integrity": "sha512-NMXGa223OnsrGVp5dJHkuKxQ4czdLmXSp5jSV9OqiCky9LOpPATn3vLldc+q5fK3gKbEHvr7J1u0yhBh/xYkpA==",
-      "requires": {}
+      "integrity": "sha512-NMXGa223OnsrGVp5dJHkuKxQ4czdLmXSp5jSV9OqiCky9LOpPATn3vLldc+q5fK3gKbEHvr7J1u0yhBh/xYkpA=="
     },
     "react-popper": {
       "version": "2.3.0",
@@ -23761,8 +23750,7 @@
     "react-table": {
       "version": "7.8.0",
       "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.8.0.tgz",
-      "integrity": "sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==",
-      "requires": {}
+      "integrity": "sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA=="
     },
     "react-transition-group": {
       "version": "4.4.5",
@@ -25544,14 +25532,12 @@
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz",
       "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "use-sync-external-store": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
-      "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
-      "requires": {}
+      "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA=="
     },
     "util": {
       "version": "0.11.1",
@@ -26845,8 +26831,7 @@
       "version": "7.5.9",
       "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
       "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
-      "dev": true,
-      "requires": {}
+      "dev": true
     },
     "xtend": {
       "version": "4.0.2",

+ 4 - 4
dashboard/src/main/home/app-dashboard/expanded-app/ExpandedApp.tsx

@@ -204,7 +204,7 @@ const ExpandedApp: React.FC<Props> = ({ ...props }) => {
           {},
           {
             id: currentProject.id,
-            namespace: "default",
+            namespace: "porter-env-group",
             cluster_id: currentCluster.id,
           }
         )
@@ -321,7 +321,7 @@ const ExpandedApp: React.FC<Props> = ({ ...props }) => {
           {
             project_id: currentProject.id,
             cluster_id: currentCluster.id,
-            namespace: "default",
+            namespace: "porter-env-group",
           }
         );
       });
@@ -390,7 +390,7 @@ const ExpandedApp: React.FC<Props> = ({ ...props }) => {
           {
             project_id: currentProject.id,
             cluster_id: currentCluster.id,
-            namespace: "default",
+            namespace: "porter-env-group",
           }
         );
       });
@@ -414,7 +414,7 @@ const ExpandedApp: React.FC<Props> = ({ ...props }) => {
           {
             project_id: currentProject.id,
             cluster_id: currentCluster.id,
-            namespace: "default",
+            namespace: "porter-env-group",
           }
         );
       }

+ 2 - 2
dashboard/src/main/home/app-dashboard/expanded-app/env-vars/EnvGroupModal.tsx

@@ -69,7 +69,7 @@ const EnvGroupModal: React.FC<Props> = ({
           {},
           {
             id: currentProject.id,
-            namespace: "default",
+            namespace: "porter-env-group",
             cluster_id: currentCluster.id,
           }
         )
@@ -136,7 +136,7 @@ const EnvGroupModal: React.FC<Props> = ({
         {
           id: currentProject.id,
           cluster_id: currentCluster.id,
-          namespace: "default",
+          namespace: "porter-env-group",
         }
       );
       setCloneSuccess(true);

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

@@ -58,7 +58,7 @@ export const EnvVariablesTab: React.FC<EnvVariablesTabProps> = ({
           {},
           {
             id: currentProject.id,
-            namespace: "default",
+            namespace: "porter-env-group",
             cluster_id: currentCluster.id,
           }
         )

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

@@ -390,7 +390,7 @@ const NewAppFlow: React.FC<Props> = ({ ...props }) => {
             {
               project_id: currentProject.id,
               cluster_id: currentCluster.id,
-              namespace: "default",
+              namespace: "porter-env-group",
             }
           );
         });
@@ -417,7 +417,7 @@ const NewAppFlow: React.FC<Props> = ({ ...props }) => {
             {
               project_id: currentProject.id,
               cluster_id: currentCluster.id,
-              namespace: "default",
+              namespace: "porter-env-group",
             }
           );
         }

+ 2 - 2
dashboard/src/main/home/cluster-dashboard/DashboardRouter.tsx

@@ -107,9 +107,9 @@ const DashboardRouter: React.FC<Props> = ({
   }, [currentCluster]);
 
   useEffect(() => {
-    let { currentNamespace } = (currentProject?.simplified_view_enabled && currentProject?.capi_provisioner_enabled) ? "default" : props.match?.params as any;
+    let { currentNamespace } = (currentProject?.simplified_view_enabled && currentProject?.capi_provisioner_enabled) ? "porter-env-group" : props.match?.params as any;
     if (!currentNamespace) {
-      currentNamespace = (currentProject?.simplified_view_enabled && currentProject?.capi_provisioner_enabled) ? "default" : getQueryParam(props, "namespace");
+      currentNamespace = (currentProject?.simplified_view_enabled && currentProject?.capi_provisioner_enabled) ? "porter-env-group" : getQueryParam(props, "namespace");
     }
     setSortType("Newest");
     setCurrentChart(null);

+ 21 - 1
dashboard/src/main/home/cluster-dashboard/env-groups/CreateEnvGroup.tsx

@@ -55,6 +55,26 @@ export default class CreateEnvGroup extends Component<PropsType, StateType> {
 
     let envVariables = this.state.envVariables;
 
+    if (this.context.currentProject.simplified_view_enabled) {
+      api
+        .createNamespace(
+          "<token>",
+          {
+            name: "porter-env-group",
+          },
+          {
+            id: this.context.currentProject.id,
+            cluster_id: this.props.currentCluster.id,
+          }
+        )
+        .catch((error) => {
+          if (error.response && error.response.status === 412) {
+            console.log("Ignoring known 412 error");
+          } else {
+            console.error(error);
+          }
+        });
+    }
     envVariables
       .filter((envVar: KeyValueType, index: number, self: KeyValueType[]) => {
         // remove any collisions that are marked as deleted and are duplicates
@@ -95,7 +115,7 @@ export default class CreateEnvGroup extends Component<PropsType, StateType> {
         {
           id: this.context.currentProject.id,
           cluster_id: this.props.currentCluster.id,
-          namespace: this.state.selectedNamespace,
+          namespace: this.context.currentProject.simplified_view_enabled ? "porter-env-group" : this.state.selectedNamespace,
         }
       )
       .then((res) => {

+ 4 - 4
dashboard/src/main/home/cluster-dashboard/env-groups/EnvGroupDashboard.tsx

@@ -50,7 +50,7 @@ const EnvGroupDashboard = (props: PropsType) => {
   const setNamespace = (namespace: string) => {
     setState((state) => ({ ...state, namespace }));
     pushQueryParams(props, {
-      namespace: currentProject.simplified_view_enabled ? ("default") : (namespace ?? "ALL"),
+      namespace: currentProject.simplified_view_enabled ? ("porter-env-group") : (namespace ?? "ALL"),
     });
   };
 
@@ -109,7 +109,7 @@ const EnvGroupDashboard = (props: PropsType) => {
               <Spacer inline width="10px" />
               {!currentProject.simplified_view_enabled && <NamespaceSelector
                 setNamespace={setNamespace}
-                namespace={currentProject.simplified_view_enabled ? "default" : state.namespace}
+                namespace={currentProject.simplified_view_enabled ? "porter-env-group" : state.namespace}
               />}
             </SortFilterWrapper>
             <Flex>
@@ -123,7 +123,7 @@ const EnvGroupDashboard = (props: PropsType) => {
 
           <EnvGroupList
             currentCluster={props.currentCluster}
-            namespace={currentProject?.simplified_view_enabled ? "default" : state.namespace}
+            namespace={currentProject?.simplified_view_enabled ? "porter-env-group" : state.namespace}
             sortType={state.sortType}
             setExpandedEnvGroup={setExpandedEnvGroup}
           />
@@ -137,7 +137,7 @@ const EnvGroupDashboard = (props: PropsType) => {
       return (
         <ExpandedEnvGroup
           isAuthorized={props.isAuthorized}
-          namespace={currentProject?.simplified_view_enabled ? "default" : (state.expandedEnvGroup?.namespace || state.namespace)}
+          namespace={currentProject?.simplified_view_enabled ? "porter-env-group" : (state.expandedEnvGroup?.namespace || state.namespace)}
           currentCluster={props.currentCluster}
           envGroup={state.expandedEnvGroup}
           closeExpanded={() => closeExpanded()}

+ 1 - 2
dashboard/src/main/home/cluster-dashboard/env-groups/ExpandedEnvGroup.tsx

@@ -118,7 +118,6 @@ export const ExpandedEnvGroupFC = ({
       { value: "settings", label: "Settings" },
     ];
   }, [currentEnvGroup]);
-
   const populateEnvGroup = async () => {
     try {
       const populatedEnvGroup = await api
@@ -274,7 +273,7 @@ export const ExpandedEnvGroupFC = ({
                   {
                     id: currentProject.id,
                     cluster_id: currentCluster.id,
-                    namespace: "default",
+                    namespace: "porter-env-group",
                   }
                 );
               }

+ 3 - 3
dashboard/src/main/home/cluster-dashboard/env-groups/ExpandedEnvGroupDashboard.tsx

@@ -21,7 +21,7 @@ type PropsType = RouteComponentProps &
   };
 
 const EnvGroupDashboard = (props: PropsType) => {
-  const namespace = (currentProject?.simplified_view_enabled && currentProject?.capi_provisioner_enabled) ? "default" : getQueryParam(props, "namespace");
+  const namespace = (currentProject?.simplified_view_enabled && currentProject?.capi_provisioner_enabled) ? "porter-env-group" : getQueryParam(props, "namespace");
   const params = useParams<{ name: string }>();
   const { currentProject } = useContext(Context);
   const [expandedEnvGroup, setExpandedEnvGroup] = useState<any>();
@@ -49,7 +49,7 @@ const EnvGroupDashboard = (props: PropsType) => {
           {},
           {
             id: currentProject.id,
-            namespace: currentProject?.simplified_view_enabled ? "default" : namespace,
+            namespace: currentProject?.simplified_view_enabled ? "porter-env-group" : namespace,
             cluster_id: props.currentCluster.id,
           }
         );
@@ -97,7 +97,7 @@ const EnvGroupDashboard = (props: PropsType) => {
     return (
       <ExpandedEnvGroup
         isAuthorized={props.isAuthorized}
-        namespace={(currentProject?.simplified_view_enabled && currentProject?.capi_provisioner_enabled) ? "default" : expandedEnvGroup?.namespace ?? namespace}
+        namespace={(currentProject?.simplified_view_enabled && currentProject?.capi_provisioner_enabled) ? "porter-env-group" : expandedEnvGroup?.namespace ?? namespace}
         currentCluster={props.currentCluster}
         envGroup={expandedEnvGroup}
         closeExpanded={() => props.history.push("/env-groups")}

+ 0 - 5
dashboard/src/main/home/cluster-dashboard/stacks/Dashboard.tsx

@@ -19,17 +19,12 @@ const Dashboard = () => {
   const { getQueryParam, pushQueryParams } = useRouting();
 
   const handleNamespaceChange = (namespace: string) => {
-    console.log("HERE")
-    console.log(namespace)
     setCurrentNamespace(namespace);
     pushQueryParams({ namespace });
   };
 
   useEffect(() => {
     const newNamespace = getQueryParam("namespace");
-    console.log("HERE")
-    console.log(newNamespace)
-
     if (newNamespace !== currentNamespace) {
       setCurrentNamespace(newNamespace);
     }