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 3e8c16ef6d
)
This commit is contained in:
parent
0ec119e727
commit
eebd6ac4df
2 changed files with 22 additions and 0 deletions
|
@ -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 a new issue