Răsfoiți Sursa

Implemented validation for repeated namespace name

jnfrati 5 ani în urmă
părinte
comite
afaaed289f

+ 1 - 1
dashboard/src/components/Selector.tsx

@@ -84,7 +84,7 @@ export default class Selector extends Component<PropsType, StateType> {
       return (
       return (
         <NewOption
         <NewOption
           onClick={() => {
           onClick={() => {
-            this.context.setCurrentModal("NamespaceModal");
+            this.context.setCurrentModal("NamespaceModal", this.props.options);
           }}
           }}
         >
         >
           <Plus>+</Plus>
           <Plus>+</Plus>

+ 10 - 1
dashboard/src/main/home/cluster-dashboard/dashboard/NamespaceList.tsx

@@ -128,7 +128,16 @@ export const NamespaceList: React.FunctionComponent = () => {
   return (
   return (
     <NamespaceListWrapper>
     <NamespaceListWrapper>
       <ControlRow>
       <ControlRow>
-        <Button onClick={() => setCurrentModal("NamespaceModal")}>
+        <Button
+          onClick={() =>
+            setCurrentModal(
+              "NamespaceModal",
+              namespaces.map((namespace) => ({
+                value: namespace.metadata.name,
+              }))
+            )
+          }
+        >
           <i className="material-icons">add</i> Add namespace
           <i className="material-icons">add</i> Add namespace
         </Button>
         </Button>
       </ControlRow>
       </ControlRow>

+ 13 - 0
dashboard/src/main/home/modals/NamespaceModal.tsx

@@ -32,6 +32,19 @@ export default class NamespaceModal extends Component<PropsType, StateType> {
       return;
       return;
     }
     }
 
 
+    const namespaceExists = this.context.currentModalData?.find(
+      (namespace: any) => {
+        return namespace?.value === this.state.namespaceName;
+      }
+    );
+
+    if (namespaceExists) {
+      this.setState({
+        status: "Namespace already exist, choose another name",
+      });
+      return;
+    }
+
     api
     api
       .createNamespace(
       .createNamespace(
         "<token>",
         "<token>",