key.go raw

   1  // Code generated by sdkgen-v2. DO NOT EDIT.
   2  package iamsdk
   3  
   4  import (
   5  	"context"
   6  
   7  	iam "github.com/yandex-cloud/go-genproto/yandex/cloud/iam/v1"
   8  	operation "github.com/yandex-cloud/go-genproto/yandex/cloud/operation"
   9  	sdkop "github.com/yandex-cloud/go-sdk/v2/pkg/operation"
  10  	"github.com/yandex-cloud/go-sdk/v2/pkg/transport"
  11  	"google.golang.org/grpc"
  12  	proto "google.golang.org/protobuf/proto"
  13  	"google.golang.org/protobuf/reflect/protoreflect"
  14  	emptypb "google.golang.org/protobuf/types/known/emptypb"
  15  )
  16  
  17  // KeyClient provides methods for managing Key resources of Yandex.Cloud IAM.
  18  type KeyClient interface {
  19  	Get(context.Context, *iam.GetKeyRequest, ...grpc.CallOption) (*iam.Key, error)
  20  	List(context.Context, *iam.ListKeysRequest, ...grpc.CallOption) (*iam.ListKeysResponse, error)
  21  	Create(context.Context, *iam.CreateKeyRequest, ...grpc.CallOption) (*iam.CreateKeyResponse, error)
  22  	Update(context.Context, *iam.UpdateKeyRequest, ...grpc.CallOption) (*KeyUpdateOperation, error)
  23  	Delete(context.Context, *iam.DeleteKeyRequest, ...grpc.CallOption) (*KeyDeleteOperation, error)
  24  	ListOperations(context.Context, *iam.ListKeyOperationsRequest, ...grpc.CallOption) (*iam.ListKeyOperationsResponse, error)
  25  }
  26  
  27  var _ KeyClient = keyClient{}
  28  
  29  type keyClient struct {
  30  	connector transport.Connector
  31  }
  32  
  33  // NewKeyClient returns KeyClient implementation.
  34  func NewKeyClient(connector transport.Connector) KeyClient {
  35  	return keyClient{connector}
  36  }
  37  
  38  // Get is an operation of Yandex.Cloud IAM Key service.
  39  func (c keyClient) Get(ctx context.Context, in *iam.GetKeyRequest, opts ...grpc.CallOption) (*iam.Key, error) {
  40  	connection, err := c.connector.GetConnection(ctx, KeyGet, opts...)
  41  	if err != nil {
  42  		return nil, err
  43  	}
  44  	return iam.NewKeyServiceClient(connection).Get(ctx, in, opts...)
  45  }
  46  
  47  // List is an operation of Yandex.Cloud IAM Key service.
  48  func (c keyClient) List(ctx context.Context, in *iam.ListKeysRequest, opts ...grpc.CallOption) (*iam.ListKeysResponse, error) {
  49  	connection, err := c.connector.GetConnection(ctx, KeyList, opts...)
  50  	if err != nil {
  51  		return nil, err
  52  	}
  53  	return iam.NewKeyServiceClient(connection).List(ctx, in, opts...)
  54  }
  55  
  56  // Create is an operation of Yandex.Cloud IAM Key service.
  57  func (c keyClient) Create(ctx context.Context, in *iam.CreateKeyRequest, opts ...grpc.CallOption) (*iam.CreateKeyResponse, error) {
  58  	connection, err := c.connector.GetConnection(ctx, KeyCreate, opts...)
  59  	if err != nil {
  60  		return nil, err
  61  	}
  62  	return iam.NewKeyServiceClient(connection).Create(ctx, in, opts...)
  63  }
  64  
  65  // KeyUpdateOperation is used to monitor the state of Update operations.
  66  type KeyUpdateOperation struct {
  67  	sdkop.Operation
  68  }
  69  
  70  // Metadata retrieves the operation metadata.
  71  func (o *KeyUpdateOperation) Metadata() *iam.UpdateKeyMetadata {
  72  	return o.Operation.Metadata().(*iam.UpdateKeyMetadata)
  73  }
  74  
  75  // Response retrieves the operation response.
  76  func (o *KeyUpdateOperation) Response() *iam.Key {
  77  	return o.Operation.Response().(*iam.Key)
  78  }
  79  
  80  // Wait polls the operation until it's done.
  81  func (o *KeyUpdateOperation) Wait(ctx context.Context, opts ...grpc.CallOption) (*iam.Key, error) {
  82  	abstract, err := o.Operation.Wait(ctx, opts...)
  83  	response, _ := abstract.(*iam.Key)
  84  	return response, err
  85  }
  86  
  87  // WaitInterval polls the operation until it's done with custom interval.
  88  func (o *KeyUpdateOperation) WaitInterval(ctx context.Context, pollInterval sdkop.PollIntervalFunc, opts ...grpc.CallOption) (*iam.Key, error) {
  89  	abstract, err := o.Operation.WaitInterval(ctx, pollInterval, opts...)
  90  	response, _ := abstract.(*iam.Key)
  91  	return response, err
  92  }
  93  
  94  // Update is an operation of Yandex.Cloud IAM Key service.
  95  // It returns an object which should be used to monitor the operation state.
  96  func (c keyClient) Update(ctx context.Context, in *iam.UpdateKeyRequest, opts ...grpc.CallOption) (*KeyUpdateOperation, error) {
  97  	connection, err := c.connector.GetConnection(ctx, KeyUpdate, opts...)
  98  	if err != nil {
  99  		return nil, err
 100  	}
 101  	pb, err := iam.NewKeyServiceClient(connection).Update(ctx, in, opts...)
 102  	if err != nil {
 103  		return nil, err
 104  	}
 105  	op, err := sdkop.NewOperation(pb, &sdkop.Concretization{
 106  		Poll: c.pollOperation,
 107  		GetResourceID: func(metadata proto.Message) string {
 108  			return metadata.(*iam.UpdateKeyMetadata).GetKeyId()
 109  		},
 110  		MetadataType: (*iam.UpdateKeyMetadata)(nil),
 111  		ResponseType: (*iam.Key)(nil),
 112  	})
 113  	if err != nil {
 114  		return nil, err
 115  	}
 116  	return &KeyUpdateOperation{*op}, nil
 117  }
 118  
 119  // KeyDeleteOperation is used to monitor the state of Delete operations.
 120  type KeyDeleteOperation struct {
 121  	sdkop.Operation
 122  }
 123  
 124  // Metadata retrieves the operation metadata.
 125  func (o *KeyDeleteOperation) Metadata() *iam.DeleteKeyMetadata {
 126  	return o.Operation.Metadata().(*iam.DeleteKeyMetadata)
 127  }
 128  
 129  // Response retrieves the operation response.
 130  func (o *KeyDeleteOperation) Response() *emptypb.Empty {
 131  	return o.Operation.Response().(*emptypb.Empty)
 132  }
 133  
 134  // Wait polls the operation until it's done.
 135  func (o *KeyDeleteOperation) Wait(ctx context.Context, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 136  	abstract, err := o.Operation.Wait(ctx, opts...)
 137  	response, _ := abstract.(*emptypb.Empty)
 138  	return response, err
 139  }
 140  
 141  // WaitInterval polls the operation until it's done with custom interval.
 142  func (o *KeyDeleteOperation) WaitInterval(ctx context.Context, pollInterval sdkop.PollIntervalFunc, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 143  	abstract, err := o.Operation.WaitInterval(ctx, pollInterval, opts...)
 144  	response, _ := abstract.(*emptypb.Empty)
 145  	return response, err
 146  }
 147  
 148  // Delete is an operation of Yandex.Cloud IAM Key service.
 149  // It returns an object which should be used to monitor the operation state.
 150  func (c keyClient) Delete(ctx context.Context, in *iam.DeleteKeyRequest, opts ...grpc.CallOption) (*KeyDeleteOperation, error) {
 151  	connection, err := c.connector.GetConnection(ctx, KeyDelete, opts...)
 152  	if err != nil {
 153  		return nil, err
 154  	}
 155  	pb, err := iam.NewKeyServiceClient(connection).Delete(ctx, in, opts...)
 156  	if err != nil {
 157  		return nil, err
 158  	}
 159  	op, err := sdkop.NewOperation(pb, &sdkop.Concretization{
 160  		Poll: c.pollOperation,
 161  		GetResourceID: func(metadata proto.Message) string {
 162  			return metadata.(*iam.DeleteKeyMetadata).GetKeyId()
 163  		},
 164  		MetadataType: (*iam.DeleteKeyMetadata)(nil),
 165  		ResponseType: (*emptypb.Empty)(nil),
 166  	})
 167  	if err != nil {
 168  		return nil, err
 169  	}
 170  	return &KeyDeleteOperation{*op}, nil
 171  }
 172  
 173  // ListOperations is an operation of Yandex.Cloud IAM Key service.
 174  func (c keyClient) ListOperations(ctx context.Context, in *iam.ListKeyOperationsRequest, opts ...grpc.CallOption) (*iam.ListKeyOperationsResponse, error) {
 175  	connection, err := c.connector.GetConnection(ctx, KeyListOperations, opts...)
 176  	if err != nil {
 177  		return nil, err
 178  	}
 179  	return iam.NewKeyServiceClient(connection).ListOperations(ctx, in, opts...)
 180  }
 181  
 182  // pollOperation returns the current state of the polled operation.
 183  func (c keyClient) pollOperation(ctx context.Context, operationId string, opts ...grpc.CallOption) (sdkop.YCOperation, error) {
 184  	connection, err := c.connector.GetConnection(ctx, KeyOperationPoller, opts...)
 185  	if err != nil {
 186  		return nil, err
 187  	}
 188  	return operation.NewOperationServiceClient(connection).Get(ctx, &operation.GetOperationRequest{OperationId: operationId}, opts...)
 189  }
 190  
 191  var (
 192  	KeyGet             = protoreflect.FullName("yandex.cloud.iam.v1.KeyService.Get")
 193  	KeyList            = protoreflect.FullName("yandex.cloud.iam.v1.KeyService.List")
 194  	KeyCreate          = protoreflect.FullName("yandex.cloud.iam.v1.KeyService.Create")
 195  	KeyUpdate          = protoreflect.FullName("yandex.cloud.iam.v1.KeyService.Update")
 196  	KeyDelete          = protoreflect.FullName("yandex.cloud.iam.v1.KeyService.Delete")
 197  	KeyListOperations  = protoreflect.FullName("yandex.cloud.iam.v1.KeyService.ListOperations")
 198  	KeyOperationPoller = protoreflect.FullName("yandex.cloud.operation.OperationService.Get")
 199  )
 200