github.com/AbhinandanKurakure/podman/v3@v3.4.10/libpod/volume_inspect.go (about) 1 package libpod 2 3 import ( 4 "github.com/containers/podman/v3/libpod/define" 5 pluginapi "github.com/docker/go-plugins-helpers/volume" 6 "github.com/pkg/errors" 7 "github.com/sirupsen/logrus" 8 ) 9 10 // Inspect provides detailed information about the configuration of the given 11 // volume. 12 func (v *Volume) Inspect() (*define.InspectVolumeData, error) { 13 if !v.valid { 14 return nil, define.ErrVolumeRemoved 15 } 16 17 v.lock.Lock() 18 defer v.lock.Unlock() 19 20 if err := v.update(); err != nil { 21 return nil, err 22 } 23 24 data := new(define.InspectVolumeData) 25 26 data.Mountpoint = v.config.MountPoint 27 if v.UsesVolumeDriver() { 28 logrus.Debugf("Querying volume plugin %s for status", v.config.Driver) 29 data.Mountpoint = v.state.MountPoint 30 31 if v.plugin == nil { 32 return nil, errors.Wrapf(define.ErrMissingPlugin, "volume %s uses volume plugin %s but it is not available, cannot inspect", v.Name(), v.config.Driver) 33 } 34 35 // Retrieve status for the volume. 36 // Need to query the volume driver. 37 req := new(pluginapi.GetRequest) 38 req.Name = v.Name() 39 resp, err := v.plugin.GetVolume(req) 40 if err != nil { 41 return nil, errors.Wrapf(err, "error retrieving volume %s information from plugin %s", v.Name(), v.Driver()) 42 } 43 if resp != nil { 44 data.Status = resp.Status 45 } 46 } 47 48 data.Name = v.config.Name 49 data.Driver = v.config.Driver 50 data.CreatedAt = v.config.CreatedTime 51 data.Labels = make(map[string]string) 52 for k, v := range v.config.Labels { 53 data.Labels[k] = v 54 } 55 data.Scope = v.Scope() 56 data.Options = make(map[string]string) 57 for k, v := range v.config.Options { 58 data.Options[k] = v 59 } 60 data.UID = v.uid() 61 data.GID = v.gid() 62 data.Anonymous = v.config.IsAnon 63 64 return data, nil 65 }