- create a volume-specific interface that for the methods of daemon
that are used
- remove dependency on daemon package by volume package of server
- like 5087977fc1a4279be55f25e0b8782c9cf9bc65f3
Signed-off-by: Morgan Bauer <mbauer@us.ibm.com>
| 1 | 1 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,16 @@ |
| 0 |
+package volume |
|
| 1 |
+ |
|
| 2 |
+import ( |
|
| 3 |
+ // TODO return types need to be refactored into pkg |
|
| 4 |
+ "github.com/docker/docker/api/types" |
|
| 5 |
+) |
|
| 6 |
+ |
|
| 7 |
+// Backend is the methods that need to be implemented to provide |
|
| 8 |
+// volume specific functionality |
|
| 9 |
+type Backend interface {
|
|
| 10 |
+ Volumes(filter string) ([]*types.Volume, error) |
|
| 11 |
+ VolumeInspect(name string) (*types.Volume, error) |
|
| 12 |
+ VolumeCreate(name, driverName string, |
|
| 13 |
+ opts map[string]string) (*types.Volume, error) |
|
| 14 |
+ VolumeRm(name string) error |
|
| 15 |
+} |
| ... | ... |
@@ -3,19 +3,18 @@ package volume |
| 3 | 3 |
import ( |
| 4 | 4 |
"github.com/docker/docker/api/server/router" |
| 5 | 5 |
"github.com/docker/docker/api/server/router/local" |
| 6 |
- "github.com/docker/docker/daemon" |
|
| 7 | 6 |
) |
| 8 | 7 |
|
| 9 | 8 |
// volumesRouter is a router to talk with the volumes controller |
| 10 | 9 |
type volumeRouter struct {
|
| 11 |
- daemon *daemon.Daemon |
|
| 12 |
- routes []router.Route |
|
| 10 |
+ backend Backend |
|
| 11 |
+ routes []router.Route |
|
| 13 | 12 |
} |
| 14 | 13 |
|
| 15 | 14 |
// NewRouter initializes a new volumes router |
| 16 |
-func NewRouter(d *daemon.Daemon) router.Router {
|
|
| 15 |
+func NewRouter(b Backend) router.Router {
|
|
| 17 | 16 |
r := &volumeRouter{
|
| 18 |
- daemon: d, |
|
| 17 |
+ backend: b, |
|
| 19 | 18 |
} |
| 20 | 19 |
r.initRoutes() |
| 21 | 20 |
return r |
| ... | ... |
@@ -14,7 +14,7 @@ func (v *volumeRouter) getVolumesList(ctx context.Context, w http.ResponseWriter |
| 14 | 14 |
return err |
| 15 | 15 |
} |
| 16 | 16 |
|
| 17 |
- volumes, err := v.daemon.Volumes(r.Form.Get("filters"))
|
|
| 17 |
+ volumes, err := v.backend.Volumes(r.Form.Get("filters"))
|
|
| 18 | 18 |
if err != nil {
|
| 19 | 19 |
return err |
| 20 | 20 |
} |
| ... | ... |
@@ -26,7 +26,7 @@ func (v *volumeRouter) getVolumeByName(ctx context.Context, w http.ResponseWrite |
| 26 | 26 |
return err |
| 27 | 27 |
} |
| 28 | 28 |
|
| 29 |
- volume, err := v.daemon.VolumeInspect(vars["name"]) |
|
| 29 |
+ volume, err := v.backend.VolumeInspect(vars["name"]) |
|
| 30 | 30 |
if err != nil {
|
| 31 | 31 |
return err |
| 32 | 32 |
} |
| ... | ... |
@@ -47,7 +47,7 @@ func (v *volumeRouter) postVolumesCreate(ctx context.Context, w http.ResponseWri |
| 47 | 47 |
return err |
| 48 | 48 |
} |
| 49 | 49 |
|
| 50 |
- volume, err := v.daemon.VolumeCreate(req.Name, req.Driver, req.DriverOpts) |
|
| 50 |
+ volume, err := v.backend.VolumeCreate(req.Name, req.Driver, req.DriverOpts) |
|
| 51 | 51 |
if err != nil {
|
| 52 | 52 |
return err |
| 53 | 53 |
} |
| ... | ... |
@@ -58,7 +58,7 @@ func (v *volumeRouter) deleteVolumes(ctx context.Context, w http.ResponseWriter, |
| 58 | 58 |
if err := httputils.ParseForm(r); err != nil {
|
| 59 | 59 |
return err |
| 60 | 60 |
} |
| 61 |
- if err := v.daemon.VolumeRm(vars["name"]); err != nil {
|
|
| 61 |
+ if err := v.backend.VolumeRm(vars["name"]); err != nil {
|
|
| 62 | 62 |
return err |
| 63 | 63 |
} |
| 64 | 64 |
w.WriteHeader(http.StatusNoContent) |