mirror of https://github.com/docker/docs.git
Merge pull request #1872 from echupriyanov/volume_info_fix
Fix get volume call for volumes with non-local drivers
This commit is contained in:
commit
ba31ab2d4b
|
|
@ -32,6 +32,12 @@ func (volumes Volumes) Get(name string) *Volume {
|
|||
if size := len(candidates); size == 1 {
|
||||
return candidates[0]
|
||||
} else if size > 1 {
|
||||
// Match first volume with non-local driver
|
||||
for _, volume := range candidates {
|
||||
if volume.Name == name && volume.Driver != "local" {
|
||||
return volume
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,90 @@
|
|||
package cluster
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/samalba/dockerclient"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestGet(t *testing.T) {
|
||||
engines := []*Engine{
|
||||
{ID: "59C8F4EC-3A71-44C7-BA50-0496B4D8E548",
|
||||
Name: "swarm-node-0"},
|
||||
{ID: "607B1F15-CECA-41B2-9D26-D2626EB14D8D",
|
||||
Name: "swarm-node-1"},
|
||||
}
|
||||
volumes := Volumes{
|
||||
&Volume{
|
||||
Volume: dockerclient.Volume{
|
||||
Name: "t1",
|
||||
Driver: "local",
|
||||
},
|
||||
Engine: engines[0],
|
||||
},
|
||||
&Volume{
|
||||
Volume: dockerclient.Volume{
|
||||
Name: "t2",
|
||||
Driver: "local",
|
||||
},
|
||||
Engine: engines[0],
|
||||
},
|
||||
&Volume{
|
||||
Volume: dockerclient.Volume{
|
||||
Name: "t3",
|
||||
Driver: "rexray",
|
||||
},
|
||||
Engine: engines[0],
|
||||
},
|
||||
&Volume{
|
||||
Volume: dockerclient.Volume{
|
||||
Name: "t4",
|
||||
Driver: "flocker",
|
||||
},
|
||||
Engine: engines[0],
|
||||
},
|
||||
&Volume{
|
||||
Volume: dockerclient.Volume{
|
||||
Name: "t1",
|
||||
Driver: "local",
|
||||
},
|
||||
Engine: engines[1],
|
||||
},
|
||||
&Volume{
|
||||
Volume: dockerclient.Volume{
|
||||
Name: "t2",
|
||||
Driver: "local",
|
||||
},
|
||||
Engine: engines[1],
|
||||
},
|
||||
&Volume{
|
||||
Volume: dockerclient.Volume{
|
||||
Name: "t3",
|
||||
Driver: "rexray",
|
||||
},
|
||||
Engine: engines[1],
|
||||
},
|
||||
&Volume{
|
||||
Volume: dockerclient.Volume{
|
||||
Name: "t4",
|
||||
Driver: "flocker",
|
||||
},
|
||||
Engine: engines[1],
|
||||
},
|
||||
}
|
||||
emptyVolumes := Volumes{}
|
||||
assert.Nil(t, emptyVolumes.Get("test"))
|
||||
assert.Nil(t, volumes.Get("t1"))
|
||||
if assert.NotNil(t, volumes.Get(engines[0].ID+"/"+"t1")) {
|
||||
assert.Equal(t, volumes.Get(engines[0].ID+"/"+"t1"), volumes[0])
|
||||
}
|
||||
if assert.NotNil(t, volumes.Get(engines[0].Name+"/"+"t1")) {
|
||||
assert.Equal(t, volumes.Get(engines[0].Name+"/"+"t1"), volumes[0])
|
||||
}
|
||||
if assert.NotNil(t, volumes.Get("t3")) {
|
||||
assert.Equal(t, volumes.Get("t3"), volumes[2])
|
||||
}
|
||||
if assert.NotNil(t, volumes.Get("t4")) {
|
||||
assert.Equal(t, volumes.Get("t4"), volumes[3])
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue