package docker type DeviceSet interface { AddDevice(hash, baseHash string) error SetInitialized(hash string) error DeactivateDevice(hash string) error RemoveDevice(hash string) error MountDevice(hash, path string) error UnmountDevice(hash, path string) error HasDevice(hash string) bool HasInitializedDevice(hash string) bool HasActivatedDevice(hash string) bool Shutdown() error } type DeviceSetWrapper struct { wrapped DeviceSet prefix string } func (wrapper *DeviceSetWrapper) wrap(hash string) string { if hash != "" { hash = wrapper.prefix + "-" + hash } return hash } func (wrapper *DeviceSetWrapper) AddDevice(hash, baseHash string) error { return wrapper.wrapped.AddDevice(wrapper.wrap(hash), wrapper.wrap(baseHash)) } func (wrapper *DeviceSetWrapper) SetInitialized(hash string) error { return wrapper.wrapped.SetInitialized(wrapper.wrap(hash)) } func (wrapper *DeviceSetWrapper) DeactivateDevice(hash string) error { return wrapper.wrapped.DeactivateDevice(wrapper.wrap(hash)) } func (wrapper *DeviceSetWrapper) Shutdown() error { return nil } func (wrapper *DeviceSetWrapper) RemoveDevice(hash string) error { return wrapper.wrapped.RemoveDevice(wrapper.wrap(hash)) } func (wrapper *DeviceSetWrapper) MountDevice(hash, path string) error { return wrapper.wrapped.MountDevice(wrapper.wrap(hash), path) } func (wrapper *DeviceSetWrapper) UnmountDevice(hash, path string) error { return wrapper.wrapped.UnmountDevice(wrapper.wrap(hash), path) } func (wrapper *DeviceSetWrapper) HasDevice(hash string) bool { return wrapper.wrapped.HasDevice(wrapper.wrap(hash)) } func (wrapper *DeviceSetWrapper) HasInitializedDevice(hash string) bool { return wrapper.wrapped.HasInitializedDevice(wrapper.wrap(hash)) } func (wrapper *DeviceSetWrapper) HasActivatedDevice(hash string) bool { return wrapper.wrapped.HasActivatedDevice(wrapper.wrap(hash)) } func NewDeviceSetWrapper(wrapped DeviceSet, prefix string) DeviceSet { return &DeviceSetWrapper{ wrapped: wrapped, prefix: prefix, } }