Select Git revision
client.go 2.41 KiB
package extension
import (
"context"
"git.perx.ru/perxis/perxis-go/pkg/operation"
pb "git.perx.ru/perxis/perxis-go/proto/extensions"
"google.golang.org/grpc"
)
// Client описывает клиент для расширений
type Client struct {
client pb.ExtensionServiceClient
opsClient operation.Client
}
func NewClient(conn *grpc.ClientConn) *Client {
return &Client{
client: pb.NewExtensionServiceClient(conn),
opsClient: operation.NewClient(conn),
}
}
func (c Client) GetDescriptor() *ExtensionDescriptor {
return nil
}
// no usage found
//func (c Client) wait(ctx context.Context, fn func(context.Context) (*operation.Proto, error)) error {
// pbOperation, err := fn(ctx)
// if err != nil {
// return err
// }
//
// op := operation.Wrap(c.opsClient, pbOperation)
// if err = op.Wait(ctx); err != nil {
// return err
// }
//
// return op.Error()
//}
func (c *Client) InstallOperation(ctx context.Context, req *InstallRequest) (*operation.Operation, error) {
pbOperation, err := c.client.Install(ctx, req)
if err != nil {
return nil, err
}
return operation.Wrap(c.opsClient, pbOperation), nil
}
func (c *Client) Install(ctx context.Context, req *InstallRequest) error {
op, err := c.InstallOperation(ctx, req)
if err != nil {
return err
}
if err := op.Wait(ctx); err != nil {
return err
}
return op.Error()
}
func (c *Client) UninstallOperation(ctx context.Context, req *UninstallRequest) (*operation.Operation, error) {
pbOperation, err := c.client.Uninstall(ctx, req)
if err != nil {
return nil, err
}
return operation.Wrap(c.opsClient, pbOperation), nil
}
func (c *Client) Uninstall(ctx context.Context, req *UninstallRequest) error {
op, err := c.UninstallOperation(ctx, req)
if err != nil {
return err
}
if err := op.Wait(ctx); err != nil {
return err
}
return op.Error()
}
func (c *Client) CheckOperation(ctx context.Context, req *CheckRequest) (*operation.Operation, error) {
pbOperation, err := c.client.Check(ctx, req)
if err != nil {
return nil, err
}
return operation.Wrap(c.opsClient, pbOperation), nil
}
func (c *Client) Check(ctx context.Context, req *CheckRequest) error {
op, err := c.CheckOperation(ctx, req)
if err != nil {
return err
}
if err := op.Wait(ctx); err != nil {
return err
}
return op.Error()
}
func (c Client) Action(ctx context.Context, in *ActionRequest) (*ActionResponse, error) {
out, err := c.client.Action(ctx, in)
return out, err
}