@@ -22,6 +22,7 @@ import (
22
22
"github.com/docker/docker/daemon"
23
23
"github.com/docker/docker/daemon/cluster/convert"
24
24
executorpkg "github.com/docker/docker/daemon/cluster/executor"
25
+ volumeopts "github.com/docker/docker/volume/service/opts"
25
26
"github.com/docker/libnetwork"
26
27
"github.com/docker/swarmkit/agent/exec"
27
28
"github.com/docker/swarmkit/api"
@@ -36,23 +37,25 @@ import (
36
37
// are mostly naked calls to the client API, seeded with information from
37
38
// containerConfig.
38
39
type containerAdapter struct {
39
- backend executorpkg.Backend
40
- imageBackend executorpkg.ImageBackend
41
- container * containerConfig
42
- dependencies exec.DependencyGetter
40
+ backend executorpkg.Backend
41
+ imageBackend executorpkg.ImageBackend
42
+ volumeBackend executorpkg.VolumeBackend
43
+ container * containerConfig
44
+ dependencies exec.DependencyGetter
43
45
}
44
46
45
- func newContainerAdapter (b executorpkg.Backend , i executorpkg.ImageBackend , task * api.Task , node * api.NodeDescription , dependencies exec.DependencyGetter ) (* containerAdapter , error ) {
47
+ func newContainerAdapter (b executorpkg.Backend , i executorpkg.ImageBackend , v executorpkg. VolumeBackend , task * api.Task , node * api.NodeDescription , dependencies exec.DependencyGetter ) (* containerAdapter , error ) {
46
48
ctnr , err := newContainerConfig (task , node )
47
49
if err != nil {
48
50
return nil , err
49
51
}
50
52
51
53
return & containerAdapter {
52
- container : ctnr ,
53
- backend : b ,
54
- imageBackend : i ,
55
- dependencies : dependencies ,
54
+ container : ctnr ,
55
+ backend : b ,
56
+ imageBackend : i ,
57
+ volumeBackend : v ,
58
+ dependencies : dependencies ,
56
59
}, nil
57
60
}
58
61
@@ -388,7 +391,10 @@ func (c *containerAdapter) createVolumes(ctx context.Context) error {
388
391
req := c .container .volumeCreateRequest (& mount )
389
392
390
393
// Check if this volume exists on the engine
391
- if _ , err := c .backend .VolumeCreate (req .Name , req .Driver , req .DriverOpts , req .Labels ); err != nil {
394
+ if _ , err := c .volumeBackend .Create (ctx , req .Name , req .Driver ,
395
+ volumeopts .WithCreateOptions (req .DriverOpts ),
396
+ volumeopts .WithCreateLabels (req .Labels ),
397
+ ); err != nil {
392
398
// TODO(amitshukla): Today, volume create through the engine api does not return an error
393
399
// when the named volume with the same parameters already exists.
394
400
// It returns an error if the driver name is different - that is a valid error
0 commit comments