moby/volume/service
Sebastiaan van Stijn e5ae83e503
volumes: only send "create" event when actually creating volume
The VolumesService did not have information wether or not a volume
was _created_ or if a volume already existed in the driver, and
the existing volume was used.

As a result, multiple "create" events could be generated for the
same volume. For example:

1. Run `docker events` in a shell to start listening for events
2. Create a volume:

    docker volume create myvolume

3. Start a container that uses that volume:

    docker run -dit -v myvolume:/foo busybox

4. Check the events that were generated:

    2021-02-15T18:49:55.874621004+01:00 volume create myvolume (driver=local)
    2021-02-15T18:50:11.442759052+01:00 volume create myvolume (driver=local)
    2021-02-15T18:50:11.487104176+01:00 container create 45112157c8b1382626bf5e01ef18445a4c680f3846c5e32d01775dddee8ca6d1 (image=busybox, name=gracious_hypatia)
    2021-02-15T18:50:11.519288102+01:00 network connect a19f6bb8d44ff84d478670fa4e34c5bf5305f42786294d3d90e790ac74b6d3e0 (container=45112157c8b1382626bf5e01ef18445a4c680f3846c5e32d01775dddee8ca6d1, name=bridge, type=bridge)
    2021-02-15T18:50:11.526407799+01:00 volume mount myvolume (container=45112157c8b1382626bf5e01ef18445a4c680f3846c5e32d01775dddee8ca6d1, destination=/foo, driver=local, propagation=, read/write=true)
    2021-02-15T18:50:11.864134043+01:00 container start 45112157c8b1382626bf5e01ef18445a4c680f3846c5e32d01775dddee8ca6d1 (image=busybox, name=gracious_hypatia)

5. Notice that a "volume create" event is created twice;

    - once when `docker volume create` was ran
    - once when `docker run ...` was ran

This patch moves the generation of (most) events to the volume _store_, and only
generates an event if the volume did not yet exist.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-05-05 16:02:22 +02:00
..
opts typo fix retreived 2018-09-26 10:51:22 +08:00
by.go Extract volume interaction to a volumes service 2018-05-25 14:21:07 -04:00
convert.go Extract volume interaction to a volumes service 2018-05-25 14:21:07 -04:00
db.go boltdb/bolt --> go.etcd.io/bbolt 2018-09-13 12:38:39 -07:00
db_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
default_driver.go Add ADD/COPY --chown flag support to Windows 2018-08-13 21:59:11 -07:00
default_driver_stubs.go Add ADD/COPY --chown flag support to Windows 2018-08-13 21:59:11 -07:00
errors.go Extract volume interaction to a volumes service 2018-05-25 14:21:07 -04:00
restore.go boltdb/bolt --> go.etcd.io/bbolt 2018-09-13 12:38:39 -07:00
restore_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
service.go volumes: only send "create" event when actually creating volume 2021-05-05 16:02:22 +02:00
service_linux_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
service_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
store.go volumes: only send "create" event when actually creating volume 2021-05-05 16:02:22 +02:00
store_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
store_unix.go Extract volume interaction to a volumes service 2018-05-25 14:21:07 -04:00
store_windows.go Extract volume interaction to a volumes service 2018-05-25 14:21:07 -04:00