Documentation ¶
Index ¶
- Variables
- func NewLogger() logrus.FieldLogger
- func Serve(p Interface)
- type BackupItemActionGRPCClient
- func (c *BackupItemActionGRPCClient) AppliesTo() (arkbackup.ResourceSelector, error)
- func (c *BackupItemActionGRPCClient) Execute(item runtime.Unstructured, backup *api.Backup) (runtime.Unstructured, []arkbackup.ResourceIdentifier, error)
- func (c *BackupItemActionGRPCClient) SetLog(log logrus.FieldLogger)
- type BackupItemActionGRPCServer
- type BackupItemActionPlugin
- type BlockStoreGRPCClient
- func (c *BlockStoreGRPCClient) CreateSnapshot(volumeID, volumeAZ string, tags map[string]string) (string, error)
- func (c *BlockStoreGRPCClient) CreateVolumeFromSnapshot(snapshotID, volumeType, volumeAZ string, iops *int64) (string, error)
- func (c *BlockStoreGRPCClient) DeleteSnapshot(snapshotID string) error
- func (c *BlockStoreGRPCClient) GetVolumeID(pv runtime.Unstructured) (string, error)
- func (c *BlockStoreGRPCClient) GetVolumeInfo(volumeID, volumeAZ string) (string, *int64, error)
- func (c *BlockStoreGRPCClient) Init(config map[string]string) error
- func (c *BlockStoreGRPCClient) IsVolumeReady(volumeID, volumeAZ string) (bool, error)
- func (c *BlockStoreGRPCClient) SetVolumeID(pv runtime.Unstructured, volumeID string) (runtime.Unstructured, error)
- type BlockStoreGRPCServer
- func (s *BlockStoreGRPCServer) CreateSnapshot(ctx context.Context, req *proto.CreateSnapshotRequest) (*proto.CreateSnapshotResponse, error)
- func (s *BlockStoreGRPCServer) CreateVolumeFromSnapshot(ctx context.Context, req *proto.CreateVolumeRequest) (*proto.CreateVolumeResponse, error)
- func (s *BlockStoreGRPCServer) DeleteSnapshot(ctx context.Context, req *proto.DeleteSnapshotRequest) (*proto.Empty, error)
- func (s *BlockStoreGRPCServer) GetVolumeID(ctx context.Context, req *proto.GetVolumeIDRequest) (*proto.GetVolumeIDResponse, error)
- func (s *BlockStoreGRPCServer) GetVolumeInfo(ctx context.Context, req *proto.GetVolumeInfoRequest) (*proto.GetVolumeInfoResponse, error)
- func (s *BlockStoreGRPCServer) Init(ctx context.Context, req *proto.InitRequest) (*proto.Empty, error)
- func (s *BlockStoreGRPCServer) IsVolumeReady(ctx context.Context, req *proto.IsVolumeReadyRequest) (*proto.IsVolumeReadyResponse, error)
- func (s *BlockStoreGRPCServer) SetVolumeID(ctx context.Context, req *proto.SetVolumeIDRequest) (*proto.SetVolumeIDResponse, error)
- type BlockStorePlugin
- type CloseFunc
- type Interface
- type Manager
- type ObjectStoreGRPCClient
- func (c *ObjectStoreGRPCClient) CreateSignedURL(bucket, key string, ttl time.Duration) (string, error)
- func (c *ObjectStoreGRPCClient) DeleteObject(bucket, key string) error
- func (c *ObjectStoreGRPCClient) GetObject(bucket, key string) (io.ReadCloser, error)
- func (c *ObjectStoreGRPCClient) Init(config map[string]string) error
- func (c *ObjectStoreGRPCClient) ListCommonPrefixes(bucket, delimiter string) ([]string, error)
- func (c *ObjectStoreGRPCClient) ListObjects(bucket, prefix string) ([]string, error)
- func (c *ObjectStoreGRPCClient) PutObject(bucket, key string, body io.Reader) error
- type ObjectStoreGRPCServer
- func (s *ObjectStoreGRPCServer) CreateSignedURL(ctx context.Context, req *proto.CreateSignedURLRequest) (*proto.CreateSignedURLResponse, error)
- func (s *ObjectStoreGRPCServer) DeleteObject(ctx context.Context, req *proto.DeleteObjectRequest) (*proto.Empty, error)
- func (s *ObjectStoreGRPCServer) GetObject(req *proto.GetObjectRequest, stream proto.ObjectStore_GetObjectServer) error
- func (s *ObjectStoreGRPCServer) Init(ctx context.Context, req *proto.InitRequest) (*proto.Empty, error)
- func (s *ObjectStoreGRPCServer) ListCommonPrefixes(ctx context.Context, req *proto.ListCommonPrefixesRequest) (*proto.ListCommonPrefixesResponse, error)
- func (s *ObjectStoreGRPCServer) ListObjects(ctx context.Context, req *proto.ListObjectsRequest) (*proto.ListObjectsResponse, error)
- func (s *ObjectStoreGRPCServer) PutObject(stream proto.ObjectStore_PutObjectServer) error
- type ObjectStorePlugin
- type PluginKind
- type ReceiveFunc
- type RestoreItemActionGRPCClient
- type RestoreItemActionGRPCServer
- type RestoreItemActionPlugin
- type StreamReadCloser
Constants ¶
This section is empty.
Variables ¶
var AllPluginKinds = []PluginKind{ PluginKindObjectStore, PluginKindBlockStore, PluginKindCloudProvider, PluginKindBackupItemAction, PluginKindRestoreItemAction, }
var Handshake = plugin.HandshakeConfig{
ProtocolVersion: 1,
MagicCookieKey: "ARK_PLUGIN",
MagicCookieValue: "hello",
}
Handshake is configuration information that allows go-plugin clients and servers to perform a handshake.
Functions ¶
func NewLogger ¶
func NewLogger() logrus.FieldLogger
NewLogger returns a logger that is suitable for use within an Ark plugin.
Types ¶
type BackupItemActionGRPCClient ¶
type BackupItemActionGRPCClient struct {
// contains filtered or unexported fields
}
BackupItemActionGRPCClient implements the backup/ItemAction interface and uses a gRPC client to make calls to the plugin server.
func (*BackupItemActionGRPCClient) AppliesTo ¶
func (c *BackupItemActionGRPCClient) AppliesTo() (arkbackup.ResourceSelector, error)
func (*BackupItemActionGRPCClient) Execute ¶
func (c *BackupItemActionGRPCClient) Execute(item runtime.Unstructured, backup *api.Backup) (runtime.Unstructured, []arkbackup.ResourceIdentifier, error)
func (*BackupItemActionGRPCClient) SetLog ¶
func (c *BackupItemActionGRPCClient) SetLog(log logrus.FieldLogger)
type BackupItemActionGRPCServer ¶
type BackupItemActionGRPCServer struct {
// contains filtered or unexported fields
}
BackupItemActionGRPCServer implements the proto-generated BackupItemActionServer interface, and accepts gRPC calls and forwards them to an implementation of the pluggable interface.
func (*BackupItemActionGRPCServer) AppliesTo ¶
func (s *BackupItemActionGRPCServer) AppliesTo(ctx context.Context, req *proto.Empty) (*proto.AppliesToResponse, error)
func (*BackupItemActionGRPCServer) Execute ¶
func (s *BackupItemActionGRPCServer) Execute(ctx context.Context, req *proto.ExecuteRequest) (*proto.ExecuteResponse, error)
type BackupItemActionPlugin ¶
type BackupItemActionPlugin struct { plugin.NetRPCUnsupportedPlugin // contains filtered or unexported fields }
BackupItemActionPlugin is an implementation of go-plugin's Plugin interface with support for gRPC for the backup/ItemAction interface.
func NewBackupItemActionPlugin ¶
func NewBackupItemActionPlugin(itemAction arkbackup.ItemAction) *BackupItemActionPlugin
NewBackupItemActionPlugin constructs a BackupItemActionPlugin.
func (*BackupItemActionPlugin) GRPCClient ¶
func (p *BackupItemActionPlugin) GRPCClient(c *grpc.ClientConn) (interface{}, error)
GRPCClient returns a BackupItemAction gRPC client.
func (*BackupItemActionPlugin) GRPCServer ¶
func (p *BackupItemActionPlugin) GRPCServer(s *grpc.Server) error
GRPCServer registers a BackupItemAction gRPC server.
func (*BackupItemActionPlugin) Kind ¶
func (p *BackupItemActionPlugin) Kind() PluginKind
type BlockStoreGRPCClient ¶
type BlockStoreGRPCClient struct {
// contains filtered or unexported fields
}
BlockStoreGRPCClient implements the cloudprovider.BlockStore interface and uses a gRPC client to make calls to the plugin server.
func (*BlockStoreGRPCClient) CreateSnapshot ¶
func (c *BlockStoreGRPCClient) CreateSnapshot(volumeID, volumeAZ string, tags map[string]string) (string, error)
CreateSnapshot creates a snapshot of the specified block volume, and applies the provided set of tags to the snapshot.
func (*BlockStoreGRPCClient) CreateVolumeFromSnapshot ¶
func (c *BlockStoreGRPCClient) CreateVolumeFromSnapshot(snapshotID, volumeType, volumeAZ string, iops *int64) (string, error)
CreateVolumeFromSnapshot creates a new block volume, initialized from the provided snapshot, and with the specified type and IOPS (if using provisioned IOPS).
func (*BlockStoreGRPCClient) DeleteSnapshot ¶
func (c *BlockStoreGRPCClient) DeleteSnapshot(snapshotID string) error
DeleteSnapshot deletes the specified volume snapshot.
func (*BlockStoreGRPCClient) GetVolumeID ¶
func (c *BlockStoreGRPCClient) GetVolumeID(pv runtime.Unstructured) (string, error)
func (*BlockStoreGRPCClient) GetVolumeInfo ¶
func (c *BlockStoreGRPCClient) GetVolumeInfo(volumeID, volumeAZ string) (string, *int64, error)
GetVolumeInfo returns the type and IOPS (if using provisioned IOPS) for a specified block volume.
func (*BlockStoreGRPCClient) Init ¶
func (c *BlockStoreGRPCClient) Init(config map[string]string) error
Init prepares the BlockStore for usage using the provided map of configuration key-value pairs. It returns an error if the BlockStore cannot be initialized from the provided config.
func (*BlockStoreGRPCClient) IsVolumeReady ¶
func (c *BlockStoreGRPCClient) IsVolumeReady(volumeID, volumeAZ string) (bool, error)
IsVolumeReady returns whether the specified volume is ready to be used.
func (*BlockStoreGRPCClient) SetVolumeID ¶
func (c *BlockStoreGRPCClient) SetVolumeID(pv runtime.Unstructured, volumeID string) (runtime.Unstructured, error)
type BlockStoreGRPCServer ¶
type BlockStoreGRPCServer struct {
// contains filtered or unexported fields
}
BlockStoreGRPCServer implements the proto-generated BlockStoreServer interface, and accepts gRPC calls and forwards them to an implementation of the pluggable interface.
func (*BlockStoreGRPCServer) CreateSnapshot ¶
func (s *BlockStoreGRPCServer) CreateSnapshot(ctx context.Context, req *proto.CreateSnapshotRequest) (*proto.CreateSnapshotResponse, error)
CreateSnapshot creates a snapshot of the specified block volume, and applies the provided set of tags to the snapshot.
func (*BlockStoreGRPCServer) CreateVolumeFromSnapshot ¶
func (s *BlockStoreGRPCServer) CreateVolumeFromSnapshot(ctx context.Context, req *proto.CreateVolumeRequest) (*proto.CreateVolumeResponse, error)
CreateVolumeFromSnapshot creates a new block volume, initialized from the provided snapshot, and with the specified type and IOPS (if using provisioned IOPS).
func (*BlockStoreGRPCServer) DeleteSnapshot ¶
func (s *BlockStoreGRPCServer) DeleteSnapshot(ctx context.Context, req *proto.DeleteSnapshotRequest) (*proto.Empty, error)
DeleteSnapshot deletes the specified volume snapshot.
func (*BlockStoreGRPCServer) GetVolumeID ¶
func (s *BlockStoreGRPCServer) GetVolumeID(ctx context.Context, req *proto.GetVolumeIDRequest) (*proto.GetVolumeIDResponse, error)
func (*BlockStoreGRPCServer) GetVolumeInfo ¶
func (s *BlockStoreGRPCServer) GetVolumeInfo(ctx context.Context, req *proto.GetVolumeInfoRequest) (*proto.GetVolumeInfoResponse, error)
GetVolumeInfo returns the type and IOPS (if using provisioned IOPS) for a specified block volume.
func (*BlockStoreGRPCServer) Init ¶
func (s *BlockStoreGRPCServer) Init(ctx context.Context, req *proto.InitRequest) (*proto.Empty, error)
Init prepares the BlockStore for usage using the provided map of configuration key-value pairs. It returns an error if the BlockStore cannot be initialized from the provided config.
func (*BlockStoreGRPCServer) IsVolumeReady ¶
func (s *BlockStoreGRPCServer) IsVolumeReady(ctx context.Context, req *proto.IsVolumeReadyRequest) (*proto.IsVolumeReadyResponse, error)
IsVolumeReady returns whether the specified volume is ready to be used.
func (*BlockStoreGRPCServer) SetVolumeID ¶
func (s *BlockStoreGRPCServer) SetVolumeID(ctx context.Context, req *proto.SetVolumeIDRequest) (*proto.SetVolumeIDResponse, error)
type BlockStorePlugin ¶
type BlockStorePlugin struct { plugin.NetRPCUnsupportedPlugin // contains filtered or unexported fields }
BlockStorePlugin is an implementation of go-plugin's Plugin interface with support for gRPC for the cloudprovider/BlockStore interface.
func NewBlockStorePlugin ¶
func NewBlockStorePlugin(blockStore cloudprovider.BlockStore) *BlockStorePlugin
NewBlockStorePlugin constructs a BlockStorePlugin.
func (*BlockStorePlugin) GRPCClient ¶
func (p *BlockStorePlugin) GRPCClient(c *grpc.ClientConn) (interface{}, error)
GRPCClient returns a BlockStore gRPC client.
func (*BlockStorePlugin) GRPCServer ¶
func (p *BlockStorePlugin) GRPCServer(s *grpc.Server) error
GRPCServer registers a BlockStore gRPC server.
func (*BlockStorePlugin) Kind ¶
func (p *BlockStorePlugin) Kind() PluginKind
type CloseFunc ¶
type CloseFunc func() error
CloseFunc is used to signal to the source of data that the StreamReadCloser has been closed.
type Interface ¶
type Interface interface { plugin.Plugin // Kind returns the PluginKind for the plugin. Kind() PluginKind }
Interface represents an Ark plugin.
type Manager ¶
type Manager interface { // GetObjectStore returns the plugin implementation of the // cloudprovider.ObjectStore interface with the specified name. GetObjectStore(name string) (cloudprovider.ObjectStore, error) // GetBlockStore returns the plugin implementation of the // cloudprovider.BlockStore interface with the specified name. GetBlockStore(name string) (cloudprovider.BlockStore, error) // GetBackupItemActions returns all backup.ItemAction plugins. // These plugin instances should ONLY be used for a single backup // (mainly because each one outputs to a per-backup log), // and should be terminated upon completion of the backup with // CloseBackupItemActions(). GetBackupItemActions(backupName string) ([]backup.ItemAction, error) // CloseBackupItemActions terminates the plugin sub-processes that // are hosting BackupItemAction plugins for the given backup name. CloseBackupItemActions(backupName string) error // GetRestoreItemActions returns all restore.ItemAction plugins. // These plugin instances should ONLY be used for a single restore // (mainly because each one outputs to a per-restore log), // and should be terminated upon completion of the restore with // CloseRestoreItemActions(). GetRestoreItemActions(restoreName string) ([]restore.ItemAction, error) // CloseRestoreItemActions terminates the plugin sub-processes that // are hosting RestoreItemAction plugins for the given restore name. CloseRestoreItemActions(restoreName string) error }
Manager exposes functions for getting implementations of the pluggable Ark interfaces.
func NewManager ¶
NewManager constructs a manager for getting plugin implementations.
type ObjectStoreGRPCClient ¶
type ObjectStoreGRPCClient struct {
// contains filtered or unexported fields
}
ObjectStoreGRPCClient implements the cloudprovider.ObjectStore interface and uses a gRPC client to make calls to the plugin server.
func (*ObjectStoreGRPCClient) CreateSignedURL ¶
func (c *ObjectStoreGRPCClient) CreateSignedURL(bucket, key string, ttl time.Duration) (string, error)
CreateSignedURL creates a pre-signed URL for the given bucket and key that expires after ttl.
func (*ObjectStoreGRPCClient) DeleteObject ¶
func (c *ObjectStoreGRPCClient) DeleteObject(bucket, key string) error
DeleteObject removes object with the specified key from the given bucket.
func (*ObjectStoreGRPCClient) GetObject ¶
func (c *ObjectStoreGRPCClient) GetObject(bucket, key string) (io.ReadCloser, error)
GetObject retrieves the object with the given key from the specified bucket in object storage.
func (*ObjectStoreGRPCClient) Init ¶
func (c *ObjectStoreGRPCClient) Init(config map[string]string) error
Init prepares the ObjectStore for usage using the provided map of configuration key-value pairs. It returns an error if the ObjectStore cannot be initialized from the provided config.
func (*ObjectStoreGRPCClient) ListCommonPrefixes ¶
func (c *ObjectStoreGRPCClient) ListCommonPrefixes(bucket, delimiter string) ([]string, error)
ListCommonPrefixes gets a list of all object key prefixes that come before the provided delimiter (this is often used to simulate a directory hierarchy in object storage).
func (*ObjectStoreGRPCClient) ListObjects ¶
func (c *ObjectStoreGRPCClient) ListObjects(bucket, prefix string) ([]string, error)
ListObjects gets a list of all objects in bucket that have the same prefix.
type ObjectStoreGRPCServer ¶
type ObjectStoreGRPCServer struct {
// contains filtered or unexported fields
}
ObjectStoreGRPCServer implements the proto-generated ObjectStoreServer interface, and accepts gRPC calls and forwards them to an implementation of the pluggable interface.
func (*ObjectStoreGRPCServer) CreateSignedURL ¶
func (s *ObjectStoreGRPCServer) CreateSignedURL(ctx context.Context, req *proto.CreateSignedURLRequest) (*proto.CreateSignedURLResponse, error)
CreateSignedURL creates a pre-signed URL for the given bucket and key that expires after ttl.
func (*ObjectStoreGRPCServer) DeleteObject ¶
func (s *ObjectStoreGRPCServer) DeleteObject(ctx context.Context, req *proto.DeleteObjectRequest) (*proto.Empty, error)
DeleteObject removes object with the specified key from the given bucket.
func (*ObjectStoreGRPCServer) GetObject ¶
func (s *ObjectStoreGRPCServer) GetObject(req *proto.GetObjectRequest, stream proto.ObjectStore_GetObjectServer) error
GetObject retrieves the object with the given key from the specified bucket in object storage.
func (*ObjectStoreGRPCServer) Init ¶
func (s *ObjectStoreGRPCServer) Init(ctx context.Context, req *proto.InitRequest) (*proto.Empty, error)
Init prepares the ObjectStore for usage using the provided map of configuration key-value pairs. It returns an error if the ObjectStore cannot be initialized from the provided config.
func (*ObjectStoreGRPCServer) ListCommonPrefixes ¶
func (s *ObjectStoreGRPCServer) ListCommonPrefixes(ctx context.Context, req *proto.ListCommonPrefixesRequest) (*proto.ListCommonPrefixesResponse, error)
ListCommonPrefixes gets a list of all object key prefixes that come before the provided delimiter (this is often used to simulate a directory hierarchy in object storage).
func (*ObjectStoreGRPCServer) ListObjects ¶
func (s *ObjectStoreGRPCServer) ListObjects(ctx context.Context, req *proto.ListObjectsRequest) (*proto.ListObjectsResponse, error)
ListObjects gets a list of all objects in bucket that have the same prefix.
func (*ObjectStoreGRPCServer) PutObject ¶
func (s *ObjectStoreGRPCServer) PutObject(stream proto.ObjectStore_PutObjectServer) error
PutObject creates a new object using the data in body within the specified object storage bucket with the given key.
type ObjectStorePlugin ¶
type ObjectStorePlugin struct { plugin.NetRPCUnsupportedPlugin // contains filtered or unexported fields }
ObjectStorePlugin is an implementation of go-plugin's Plugin interface with support for gRPC for the cloudprovider/ObjectStore interface.
func NewObjectStorePlugin ¶
func NewObjectStorePlugin(objectStore cloudprovider.ObjectStore) *ObjectStorePlugin
NewObjectStorePlugin construct an ObjectStorePlugin.
func (*ObjectStorePlugin) GRPCClient ¶
func (p *ObjectStorePlugin) GRPCClient(c *grpc.ClientConn) (interface{}, error)
GRPCClient returns an ObjectStore gRPC client.
func (*ObjectStorePlugin) GRPCServer ¶
func (p *ObjectStorePlugin) GRPCServer(s *grpc.Server) error
GRPCServer registers an ObjectStore gRPC server.
func (*ObjectStorePlugin) Kind ¶
func (p *ObjectStorePlugin) Kind() PluginKind
type PluginKind ¶
type PluginKind string
PluginKind is a type alias for a string that describes the kind of an Ark-supported plugin.
const ( // PluginKindObjectStore is the Kind string for // an Object Store plugin. PluginKindObjectStore PluginKind = "objectstore" // PluginKindBlockStore is the Kind string for // a Block Store plugin. PluginKindBlockStore PluginKind = "blockstore" // PluginKindCloudProvider is the Kind string for // a CloudProvider plugin (i.e. an Object & Block // store). // // NOTE that it is highly likely that in subsequent // versions of Ark this kind of plugin will be replaced // with a different mechanism for providing multiple // plugin impls within a single binary. This should // probably not be used. PluginKindCloudProvider PluginKind = "cloudprovider" // PluginKindBackupItemAction is the Kind string for // a Backup ItemAction plugin. PluginKindBackupItemAction PluginKind = "backupitemaction" // PluginKindRestoreItemAction is the Kind string for // a Restore ItemAction plugin. PluginKindRestoreItemAction PluginKind = "restoreitemaction" )
func (PluginKind) String ¶
func (k PluginKind) String() string
type ReceiveFunc ¶
ReceiveFunc is a function that either returns a slice of an arbitrary number of bytes OR an error. Returning an io.EOF means there is no more data to be read; any other error is considered an actual error.
type RestoreItemActionGRPCClient ¶
type RestoreItemActionGRPCClient struct {
// contains filtered or unexported fields
}
RestoreItemActionGRPCClient implements the backup/ItemAction interface and uses a gRPC client to make calls to the plugin server.
func (*RestoreItemActionGRPCClient) AppliesTo ¶
func (c *RestoreItemActionGRPCClient) AppliesTo() (restore.ResourceSelector, error)
func (*RestoreItemActionGRPCClient) Execute ¶
func (c *RestoreItemActionGRPCClient) Execute(item runtime.Unstructured, restore *api.Restore) (runtime.Unstructured, error, error)
func (*RestoreItemActionGRPCClient) SetLog ¶
func (c *RestoreItemActionGRPCClient) SetLog(log logrus.FieldLogger)
type RestoreItemActionGRPCServer ¶
type RestoreItemActionGRPCServer struct {
// contains filtered or unexported fields
}
RestoreItemActionGRPCServer implements the proto-generated RestoreItemActionServer interface, and accepts gRPC calls and forwards them to an implementation of the pluggable interface.
func (*RestoreItemActionGRPCServer) AppliesTo ¶
func (s *RestoreItemActionGRPCServer) AppliesTo(ctx context.Context, req *proto.Empty) (*proto.AppliesToResponse, error)
func (*RestoreItemActionGRPCServer) Execute ¶
func (s *RestoreItemActionGRPCServer) Execute(ctx context.Context, req *proto.RestoreExecuteRequest) (*proto.RestoreExecuteResponse, error)
type RestoreItemActionPlugin ¶
type RestoreItemActionPlugin struct { plugin.NetRPCUnsupportedPlugin // contains filtered or unexported fields }
RestoreItemActionPlugin is an implementation of go-plugin's Plugin interface with support for gRPC for the restore/ItemAction interface.
func NewRestoreItemActionPlugin ¶
func NewRestoreItemActionPlugin(itemAction restore.ItemAction) *RestoreItemActionPlugin
NewRestoreItemActionPlugin constructs a RestoreItemActionPlugin.
func (*RestoreItemActionPlugin) GRPCClient ¶
func (p *RestoreItemActionPlugin) GRPCClient(c *grpc.ClientConn) (interface{}, error)
GRPCClient returns a RestoreItemAction gRPC client.
func (*RestoreItemActionPlugin) GRPCServer ¶
func (p *RestoreItemActionPlugin) GRPCServer(s *grpc.Server) error
GRPCServer registers a RestoreItemAction gRPC server.
func (*RestoreItemActionPlugin) Kind ¶
func (p *RestoreItemActionPlugin) Kind() PluginKind
type StreamReadCloser ¶
type StreamReadCloser struct {
// contains filtered or unexported fields
}
StreamReadCloser wraps a ReceiveFunc and a CloseSendFunc to implement io.ReadCloser.
func (*StreamReadCloser) Close ¶
func (s *StreamReadCloser) Close() error