mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Fix out-of-band vol delete+create for same driver
Fix issue where out-of-band deletions and then a `docker volume create`
on the same driver caused volume to not be re-created in the driver but
return as created since it was stored in the cache.
Previous fix only worked if the driver names did not match.
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
(cherry picked from commit d8ce4a6e10
)
Signed-off-by: Victor Vieux <victorvieux@gmail.com>
This commit is contained in:
parent
e509501437
commit
2aed732d3a
2 changed files with 77 additions and 40 deletions
|
@ -568,8 +568,36 @@ func (s *DockerExternalVolumeSuite) TestExternalVolumeDriverOutOfBandDelete(c *c
|
|||
// simulate out of band volume deletion on plugin level
|
||||
delete(p.vols, "test")
|
||||
|
||||
// test re-create with same driver
|
||||
out, err = s.d.Cmd("volume", "create", "-d", driverName, "--opt", "foo=bar", "--name", "test")
|
||||
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||
out, err = s.d.Cmd("volume", "inspect", "test")
|
||||
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||
|
||||
var vs []types.Volume
|
||||
err = json.Unmarshal([]byte(out), &vs)
|
||||
c.Assert(err, checker.IsNil)
|
||||
c.Assert(vs, checker.HasLen, 1)
|
||||
c.Assert(vs[0].Driver, checker.Equals, driverName)
|
||||
c.Assert(vs[0].Options, checker.NotNil)
|
||||
c.Assert(vs[0].Options["foo"], checker.Equals, "bar")
|
||||
c.Assert(vs[0].Driver, checker.Equals, driverName)
|
||||
|
||||
// simulate out of band volume deletion on plugin level
|
||||
delete(p.vols, "test")
|
||||
|
||||
// test create with different driver
|
||||
out, err = s.d.Cmd("volume", "create", "-d", "local", "--name", "test")
|
||||
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||
|
||||
out, err = s.d.Cmd("volume", "inspect", "test")
|
||||
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||
vs = nil
|
||||
err = json.Unmarshal([]byte(out), &vs)
|
||||
c.Assert(err, checker.IsNil)
|
||||
c.Assert(vs, checker.HasLen, 1)
|
||||
c.Assert(vs[0].Options, checker.HasLen, 0)
|
||||
c.Assert(vs[0].Driver, checker.Equals, "local")
|
||||
}
|
||||
|
||||
func (s *DockerExternalVolumeSuite) TestExternalVolumeDriverUnmountOnMountFail(c *check.C) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue