mirror of https://github.com/docker/docs.git
				
				
				
			docker rename fix to address the issue of renaming with the same name issue #23319
Signed-off-by: Sainath Grandhi <sainath.grandhi@intel.com> (cherry picked from commit 3e8c16ef6d5e6b451996722d99f5d646ed8a0e56)
This commit is contained in:
		
							parent
							
								
									0ec119e727
								
							
						
					
					
						commit
						eebd6ac4df
					
				|  | @ -21,6 +21,10 @@ func (daemon *Daemon) ContainerRename(oldName, newName string) error { | |||
| 		return fmt.Errorf("Neither old nor new names may be empty") | ||||
| 	} | ||||
| 
 | ||||
| 	if newName[0] != '/' { | ||||
| 		newName = "/" + newName | ||||
| 	} | ||||
| 
 | ||||
| 	container, err := daemon.GetContainer(oldName) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
|  | @ -31,6 +35,11 @@ func (daemon *Daemon) ContainerRename(oldName, newName string) error { | |||
| 
 | ||||
| 	container.Lock() | ||||
| 	defer container.Unlock() | ||||
| 
 | ||||
| 	if oldName == newName { | ||||
| 		return fmt.Errorf("Renaming a container with the same name as its current name") | ||||
| 	} | ||||
| 
 | ||||
| 	if newName, err = daemon.reserveName(container.ID, newName); err != nil { | ||||
| 		return fmt.Errorf("Error when allocating new name: %v", err) | ||||
| 	} | ||||
|  |  | |||
|  | @ -108,3 +108,16 @@ func (s *DockerSuite) TestRenameAnonymousContainer(c *check.C) { | |||
| 	_, _, err := dockerCmdWithError("run", "--net", "network1", "busybox", "ping", count, "1", "container1") | ||||
| 	c.Assert(err, check.IsNil, check.Commentf("Embedded DNS lookup fails after renaming anonymous container: %v", err)) | ||||
| } | ||||
| 
 | ||||
| func (s *DockerSuite) TestRenameContainerWithSameName(c *check.C) { | ||||
| 	out, _ := runSleepingContainer(c, "--name", "old") | ||||
| 	ContainerID := strings.TrimSpace(out) | ||||
| 
 | ||||
| 	out, _, err := dockerCmdWithError("rename", "old", "old") | ||||
| 	c.Assert(err, checker.NotNil, check.Commentf("Renaming a container with the same name should have failed")) | ||||
| 	c.Assert(out, checker.Contains, "Renaming a container with the same name", check.Commentf("%v", err)) | ||||
| 
 | ||||
| 	out, _, err = dockerCmdWithError("rename", ContainerID, "old") | ||||
| 	c.Assert(err, checker.NotNil, check.Commentf("Renaming a container with the same name should have failed")) | ||||
| 	c.Assert(out, checker.Contains, "Renaming a container with the same name", check.Commentf("%v", err)) | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue