mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-27 06:01:07 +01:00 
			
		
		
		
	Solved merge
This commit is contained in:
		
						commit
						37e191a75d
					
				| @ -15,6 +15,7 @@ func init() { | ||||
| 	namespaceCmd.AddCommand(createNamespaceCmd) | ||||
| 	namespaceCmd.AddCommand(listNamespacesCmd) | ||||
| 	namespaceCmd.AddCommand(destroyNamespaceCmd) | ||||
| 	namespaceCmd.AddCommand(renameNamespaceCmd) | ||||
| } | ||||
| 
 | ||||
| var namespaceCmd = &cobra.Command{ | ||||
| @ -107,3 +108,31 @@ var listNamespacesCmd = &cobra.Command{ | ||||
| 		} | ||||
| 	}, | ||||
| } | ||||
| 
 | ||||
| var renameNamespaceCmd = &cobra.Command{ | ||||
| 	Use:   "rename OLD_NAME NEW_NAME", | ||||
| 	Short: "Renames a namespace", | ||||
| 	Args: func(cmd *cobra.Command, args []string) error { | ||||
| 		if len(args) < 2 { | ||||
| 			return fmt.Errorf("Missing parameters") | ||||
| 		} | ||||
| 		return nil | ||||
| 	}, | ||||
| 	Run: func(cmd *cobra.Command, args []string) { | ||||
| 		o, _ := cmd.Flags().GetString("output") | ||||
| 		h, err := getHeadscaleApp() | ||||
| 		if err != nil { | ||||
| 			log.Fatalf("Error initializing: %s", err) | ||||
| 		} | ||||
| 		err = h.RenameNamespace(args[0], args[1]) | ||||
| 		if strings.HasPrefix(o, "json") { | ||||
| 			JsonOutput(map[string]string{"Result": "Namespace renamed"}, err, o) | ||||
| 			return | ||||
| 		} | ||||
| 		if err != nil { | ||||
| 			fmt.Printf("Error renaming namespace: %s\n", err) | ||||
| 			return | ||||
| 		} | ||||
| 		fmt.Printf("Namespace renamed\n") | ||||
| 	}, | ||||
| } | ||||
|  | ||||
| @ -59,6 +59,35 @@ func (h *Headscale) DestroyNamespace(name string) error { | ||||
| 	} | ||||
| 
 | ||||
| 	if result := h.db.Unscoped().Delete(&n); result.Error != nil { | ||||
| 		return result.Error | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // RenameNamespace renames a Namespace. Returns error if the Namespace does | ||||
| // not exist or if another Namespace exists with the new name. | ||||
| func (h *Headscale) RenameNamespace(oldName, newName string) error { | ||||
| 	n, err := h.GetNamespace(oldName) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	_, err = h.GetNamespace(newName) | ||||
| 	if err == nil { | ||||
| 		return errorNamespaceExists | ||||
| 	} | ||||
| 	if !errors.Is(err, errorNamespaceNotFound) { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	n.Name = newName | ||||
| 
 | ||||
| 	if result := h.db.Save(&n); result.Error != nil { | ||||
| 		return result.Error | ||||
| 	} | ||||
| 
 | ||||
| 	err = h.RequestMapUpdates(n.ID) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
|  | ||||
| @ -48,6 +48,35 @@ func (s *Suite) TestDestroyNamespaceErrors(c *check.C) { | ||||
| 	c.Assert(err, check.Equals, errorNamespaceNotEmpty) | ||||
| } | ||||
| 
 | ||||
| func (s *Suite) TestRenameNamespace(c *check.C) { | ||||
| 	n, err := h.CreateNamespace("test") | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 	c.Assert(n.Name, check.Equals, "test") | ||||
| 
 | ||||
| 	ns, err := h.ListNamespaces() | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 	c.Assert(len(*ns), check.Equals, 1) | ||||
| 
 | ||||
| 	err = h.RenameNamespace("test", "test_renamed") | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	_, err = h.GetNamespace("test") | ||||
| 	c.Assert(err, check.Equals, errorNamespaceNotFound) | ||||
| 
 | ||||
| 	_, err = h.GetNamespace("test_renamed") | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 
 | ||||
| 	err = h.RenameNamespace("test_does_not_exit", "test") | ||||
| 	c.Assert(err, check.Equals, errorNamespaceNotFound) | ||||
| 
 | ||||
| 	n2, err := h.CreateNamespace("test2") | ||||
| 	c.Assert(err, check.IsNil) | ||||
| 	c.Assert(n2.Name, check.Equals, "test2") | ||||
| 
 | ||||
| 	err = h.RenameNamespace("test2", "test_renamed") | ||||
| 	c.Assert(err, check.Equals, errorNamespaceExists) | ||||
| } | ||||
| 
 | ||||
| func (s *Suite) TestGetMapResponseUserProfiles(c *check.C) { | ||||
| 	n1, err := h.CreateNamespace("shared1") | ||||
| 	c.Assert(err, check.IsNil) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user