mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Propagate unmount events to the external volume drivers.
Signed-off-by: David Calavera <david.calavera@gmail.com>
This commit is contained in:
		
							parent
							
								
									a867c1b70a
								
							
						
					
					
						commit
						d592778f4a
					
				
					 8 changed files with 217 additions and 57 deletions
				
			
		| 
						 | 
				
			
			@ -1,5 +1,7 @@
 | 
			
		|||
package volumedrivers
 | 
			
		||||
 | 
			
		||||
import "fmt"
 | 
			
		||||
 | 
			
		||||
// currently created by hand. generation tool would generate this like:
 | 
			
		||||
// $ rpc-gen volume/drivers/api.go VolumeDriver > volume/drivers/proxy.go
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -21,9 +23,9 @@ func (pp *volumeDriverProxy) Create(name string) error {
 | 
			
		|||
	var ret volumeDriverResponse
 | 
			
		||||
	err := pp.c.Call("VolumeDriver.Create", args, &ret)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
		return pp.fmtError(name, err)
 | 
			
		||||
	}
 | 
			
		||||
	return ret.Err
 | 
			
		||||
	return pp.fmtError(name, ret.Err)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (pp *volumeDriverProxy) Remove(name string) error {
 | 
			
		||||
| 
						 | 
				
			
			@ -31,27 +33,27 @@ func (pp *volumeDriverProxy) Remove(name string) error {
 | 
			
		|||
	var ret volumeDriverResponse
 | 
			
		||||
	err := pp.c.Call("VolumeDriver.Remove", args, &ret)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
		return pp.fmtError(name, err)
 | 
			
		||||
	}
 | 
			
		||||
	return ret.Err
 | 
			
		||||
	return pp.fmtError(name, ret.Err)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (pp *volumeDriverProxy) Path(name string) (string, error) {
 | 
			
		||||
	args := volumeDriverRequest{name}
 | 
			
		||||
	var ret volumeDriverResponse
 | 
			
		||||
	if err := pp.c.Call("VolumeDriver.Path", args, &ret); err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
		return "", pp.fmtError(name, err)
 | 
			
		||||
	}
 | 
			
		||||
	return ret.Mountpoint, ret.Err
 | 
			
		||||
	return ret.Mountpoint, pp.fmtError(name, ret.Err)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (pp *volumeDriverProxy) Mount(name string) (string, error) {
 | 
			
		||||
	args := volumeDriverRequest{name}
 | 
			
		||||
	var ret volumeDriverResponse
 | 
			
		||||
	if err := pp.c.Call("VolumeDriver.Mount", args, &ret); err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
		return "", pp.fmtError(name, err)
 | 
			
		||||
	}
 | 
			
		||||
	return ret.Mountpoint, ret.Err
 | 
			
		||||
	return ret.Mountpoint, pp.fmtError(name, ret.Err)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (pp *volumeDriverProxy) Unmount(name string) error {
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +61,14 @@ func (pp *volumeDriverProxy) Unmount(name string) error {
 | 
			
		|||
	var ret volumeDriverResponse
 | 
			
		||||
	err := pp.c.Call("VolumeDriver.Unmount", args, &ret)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
		return pp.fmtError(name, err)
 | 
			
		||||
	}
 | 
			
		||||
	return ret.Err
 | 
			
		||||
	return pp.fmtError(name, ret.Err)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (pp *volumeDriverProxy) fmtError(name string, err error) error {
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	return fmt.Errorf("External volume driver request failed for %s: %v", name, err)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue