Skip to content

Commit

Permalink
Merge pull request #11774 from mheon/fix_11750
Browse files Browse the repository at this point in the history
Ensure pod ID bucket is properly updated on rename
  • Loading branch information
openshift-merge-robot authored Sep 29, 2021
2 parents cd10304 + 678b554 commit 453c49c
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
17 changes: 17 additions & 0 deletions libpod/boltdb_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -1756,6 +1756,23 @@ func (s *BoltState) SafeRewriteContainerConfig(ctr *Container, oldName, newName
if err := allCtrsBkt.Put([]byte(ctr.ID()), []byte(newName)); err != nil {
return errors.Wrapf(err, "error renaming container %s in all containers bucket in DB", ctr.ID())
}
if ctr.config.Pod != "" {
podsBkt, err := getPodBucket(tx)
if err != nil {
return err
}
podBkt := podsBkt.Bucket([]byte(ctr.config.Pod))
if podBkt == nil {
return errors.Wrapf(define.ErrInternal, "bucket for pod %s does not exist", ctr.config.Pod)
}
podCtrBkt := podBkt.Bucket(containersBkt)
if podCtrBkt == nil {
return errors.Wrapf(define.ErrInternal, "pod %s does not have a containers bucket", ctr.config.Pod)
}
if err := podCtrBkt.Put([]byte(ctr.ID()), []byte(newName)); err != nil {
return errors.Wrapf(err, "error renaming container %s in pod %s members bucket", ctr.ID(), ctr.config.Pod)
}
}
}
}

Expand Down
25 changes: 25 additions & 0 deletions test/e2e/rename_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,29 @@ var _ = Describe("podman rename", func() {
Expect(ps).Should(Exit(0))
Expect(ps.OutputToString()).To(ContainSubstring(newName))
})

It("Rename a container that is part of a pod", func() {
podName := "testPod"
infraName := "infra1"
pod := podmanTest.Podman([]string{"pod", "create", "--name", podName, "--infra-name", infraName})
pod.WaitWithDefaultTimeout()
Expect(pod).Should(Exit(0))

infraName2 := "infra2"
rename := podmanTest.Podman([]string{"rename", infraName, infraName2})
rename.WaitWithDefaultTimeout()
Expect(rename).Should(Exit(0))

remove := podmanTest.Podman([]string{"pod", "rm", "-f", podName})
remove.WaitWithDefaultTimeout()
Expect(remove).Should(Exit(0))

create := podmanTest.Podman([]string{"create", "--name", infraName2, ALPINE, "top"})
create.WaitWithDefaultTimeout()
Expect(create).Should(Exit(0))

create2 := podmanTest.Podman([]string{"create", "--name", infraName, ALPINE, "top"})
create2.WaitWithDefaultTimeout()
Expect(create2).Should(Exit(0))
})
})

0 comments on commit 453c49c

Please sign in to comment.