service_account.go raw

   1  // Code generated by sdkgen-v2. DO NOT EDIT.
   2  package iamsdk
   3  
   4  import (
   5  	"context"
   6  
   7  	access "github.com/yandex-cloud/go-genproto/yandex/cloud/access"
   8  	iam "github.com/yandex-cloud/go-genproto/yandex/cloud/iam/v1"
   9  	operation "github.com/yandex-cloud/go-genproto/yandex/cloud/operation"
  10  	sdkop "github.com/yandex-cloud/go-sdk/v2/pkg/operation"
  11  	"github.com/yandex-cloud/go-sdk/v2/pkg/transport"
  12  	"google.golang.org/grpc"
  13  	proto "google.golang.org/protobuf/proto"
  14  	"google.golang.org/protobuf/reflect/protoreflect"
  15  	emptypb "google.golang.org/protobuf/types/known/emptypb"
  16  )
  17  
  18  // ServiceAccountClient provides methods for managing ServiceAccount resources of Yandex.Cloud IAM.
  19  type ServiceAccountClient interface {
  20  	Get(context.Context, *iam.GetServiceAccountRequest, ...grpc.CallOption) (*iam.ServiceAccount, error)
  21  	List(context.Context, *iam.ListServiceAccountsRequest, ...grpc.CallOption) (*iam.ListServiceAccountsResponse, error)
  22  	Create(context.Context, *iam.CreateServiceAccountRequest, ...grpc.CallOption) (*ServiceAccountCreateOperation, error)
  23  	Update(context.Context, *iam.UpdateServiceAccountRequest, ...grpc.CallOption) (*ServiceAccountUpdateOperation, error)
  24  	Delete(context.Context, *iam.DeleteServiceAccountRequest, ...grpc.CallOption) (*ServiceAccountDeleteOperation, error)
  25  	ListAccessBindings(context.Context, *access.ListAccessBindingsRequest, ...grpc.CallOption) (*access.ListAccessBindingsResponse, error)
  26  	SetAccessBindings(context.Context, *access.SetAccessBindingsRequest, ...grpc.CallOption) (*ServiceAccountSetAccessBindingsOperation, error)
  27  	UpdateAccessBindings(context.Context, *access.UpdateAccessBindingsRequest, ...grpc.CallOption) (*ServiceAccountUpdateAccessBindingsOperation, error)
  28  	ListOperations(context.Context, *iam.ListServiceAccountOperationsRequest, ...grpc.CallOption) (*iam.ListServiceAccountOperationsResponse, error)
  29  }
  30  
  31  var _ ServiceAccountClient = serviceAccountClient{}
  32  
  33  type serviceAccountClient struct {
  34  	connector transport.Connector
  35  }
  36  
  37  // NewServiceAccountClient returns ServiceAccountClient implementation.
  38  func NewServiceAccountClient(connector transport.Connector) ServiceAccountClient {
  39  	return serviceAccountClient{connector}
  40  }
  41  
  42  // Get is an operation of Yandex.Cloud IAM ServiceAccount service.
  43  func (c serviceAccountClient) Get(ctx context.Context, in *iam.GetServiceAccountRequest, opts ...grpc.CallOption) (*iam.ServiceAccount, error) {
  44  	connection, err := c.connector.GetConnection(ctx, ServiceAccountGet, opts...)
  45  	if err != nil {
  46  		return nil, err
  47  	}
  48  	return iam.NewServiceAccountServiceClient(connection).Get(ctx, in, opts...)
  49  }
  50  
  51  // List is an operation of Yandex.Cloud IAM ServiceAccount service.
  52  func (c serviceAccountClient) List(ctx context.Context, in *iam.ListServiceAccountsRequest, opts ...grpc.CallOption) (*iam.ListServiceAccountsResponse, error) {
  53  	connection, err := c.connector.GetConnection(ctx, ServiceAccountList, opts...)
  54  	if err != nil {
  55  		return nil, err
  56  	}
  57  	return iam.NewServiceAccountServiceClient(connection).List(ctx, in, opts...)
  58  }
  59  
  60  // ServiceAccountCreateOperation is used to monitor the state of Create operations.
  61  type ServiceAccountCreateOperation struct {
  62  	sdkop.Operation
  63  }
  64  
  65  // Metadata retrieves the operation metadata.
  66  func (o *ServiceAccountCreateOperation) Metadata() *iam.CreateServiceAccountMetadata {
  67  	return o.Operation.Metadata().(*iam.CreateServiceAccountMetadata)
  68  }
  69  
  70  // Response retrieves the operation response.
  71  func (o *ServiceAccountCreateOperation) Response() *iam.ServiceAccount {
  72  	return o.Operation.Response().(*iam.ServiceAccount)
  73  }
  74  
  75  // Wait polls the operation until it's done.
  76  func (o *ServiceAccountCreateOperation) Wait(ctx context.Context, opts ...grpc.CallOption) (*iam.ServiceAccount, error) {
  77  	abstract, err := o.Operation.Wait(ctx, opts...)
  78  	response, _ := abstract.(*iam.ServiceAccount)
  79  	return response, err
  80  }
  81  
  82  // WaitInterval polls the operation until it's done with custom interval.
  83  func (o *ServiceAccountCreateOperation) WaitInterval(ctx context.Context, pollInterval sdkop.PollIntervalFunc, opts ...grpc.CallOption) (*iam.ServiceAccount, error) {
  84  	abstract, err := o.Operation.WaitInterval(ctx, pollInterval, opts...)
  85  	response, _ := abstract.(*iam.ServiceAccount)
  86  	return response, err
  87  }
  88  
  89  // Create is an operation of Yandex.Cloud IAM ServiceAccount service.
  90  // It returns an object which should be used to monitor the operation state.
  91  func (c serviceAccountClient) Create(ctx context.Context, in *iam.CreateServiceAccountRequest, opts ...grpc.CallOption) (*ServiceAccountCreateOperation, error) {
  92  	connection, err := c.connector.GetConnection(ctx, ServiceAccountCreate, opts...)
  93  	if err != nil {
  94  		return nil, err
  95  	}
  96  	pb, err := iam.NewServiceAccountServiceClient(connection).Create(ctx, in, opts...)
  97  	if err != nil {
  98  		return nil, err
  99  	}
 100  	op, err := sdkop.NewOperation(pb, &sdkop.Concretization{
 101  		Poll: c.pollOperation,
 102  		GetResourceID: func(metadata proto.Message) string {
 103  			return metadata.(*iam.CreateServiceAccountMetadata).GetServiceAccountId()
 104  		},
 105  		MetadataType: (*iam.CreateServiceAccountMetadata)(nil),
 106  		ResponseType: (*iam.ServiceAccount)(nil),
 107  	})
 108  	if err != nil {
 109  		return nil, err
 110  	}
 111  	return &ServiceAccountCreateOperation{*op}, nil
 112  }
 113  
 114  // ServiceAccountUpdateOperation is used to monitor the state of Update operations.
 115  type ServiceAccountUpdateOperation struct {
 116  	sdkop.Operation
 117  }
 118  
 119  // Metadata retrieves the operation metadata.
 120  func (o *ServiceAccountUpdateOperation) Metadata() *iam.UpdateServiceAccountMetadata {
 121  	return o.Operation.Metadata().(*iam.UpdateServiceAccountMetadata)
 122  }
 123  
 124  // Response retrieves the operation response.
 125  func (o *ServiceAccountUpdateOperation) Response() *iam.ServiceAccount {
 126  	return o.Operation.Response().(*iam.ServiceAccount)
 127  }
 128  
 129  // Wait polls the operation until it's done.
 130  func (o *ServiceAccountUpdateOperation) Wait(ctx context.Context, opts ...grpc.CallOption) (*iam.ServiceAccount, error) {
 131  	abstract, err := o.Operation.Wait(ctx, opts...)
 132  	response, _ := abstract.(*iam.ServiceAccount)
 133  	return response, err
 134  }
 135  
 136  // WaitInterval polls the operation until it's done with custom interval.
 137  func (o *ServiceAccountUpdateOperation) WaitInterval(ctx context.Context, pollInterval sdkop.PollIntervalFunc, opts ...grpc.CallOption) (*iam.ServiceAccount, error) {
 138  	abstract, err := o.Operation.WaitInterval(ctx, pollInterval, opts...)
 139  	response, _ := abstract.(*iam.ServiceAccount)
 140  	return response, err
 141  }
 142  
 143  // Update is an operation of Yandex.Cloud IAM ServiceAccount service.
 144  // It returns an object which should be used to monitor the operation state.
 145  func (c serviceAccountClient) Update(ctx context.Context, in *iam.UpdateServiceAccountRequest, opts ...grpc.CallOption) (*ServiceAccountUpdateOperation, error) {
 146  	connection, err := c.connector.GetConnection(ctx, ServiceAccountUpdate, opts...)
 147  	if err != nil {
 148  		return nil, err
 149  	}
 150  	pb, err := iam.NewServiceAccountServiceClient(connection).Update(ctx, in, opts...)
 151  	if err != nil {
 152  		return nil, err
 153  	}
 154  	op, err := sdkop.NewOperation(pb, &sdkop.Concretization{
 155  		Poll: c.pollOperation,
 156  		GetResourceID: func(metadata proto.Message) string {
 157  			return metadata.(*iam.UpdateServiceAccountMetadata).GetServiceAccountId()
 158  		},
 159  		MetadataType: (*iam.UpdateServiceAccountMetadata)(nil),
 160  		ResponseType: (*iam.ServiceAccount)(nil),
 161  	})
 162  	if err != nil {
 163  		return nil, err
 164  	}
 165  	return &ServiceAccountUpdateOperation{*op}, nil
 166  }
 167  
 168  // ServiceAccountDeleteOperation is used to monitor the state of Delete operations.
 169  type ServiceAccountDeleteOperation struct {
 170  	sdkop.Operation
 171  }
 172  
 173  // Metadata retrieves the operation metadata.
 174  func (o *ServiceAccountDeleteOperation) Metadata() *iam.DeleteServiceAccountMetadata {
 175  	return o.Operation.Metadata().(*iam.DeleteServiceAccountMetadata)
 176  }
 177  
 178  // Response retrieves the operation response.
 179  func (o *ServiceAccountDeleteOperation) Response() *emptypb.Empty {
 180  	return o.Operation.Response().(*emptypb.Empty)
 181  }
 182  
 183  // Wait polls the operation until it's done.
 184  func (o *ServiceAccountDeleteOperation) Wait(ctx context.Context, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 185  	abstract, err := o.Operation.Wait(ctx, opts...)
 186  	response, _ := abstract.(*emptypb.Empty)
 187  	return response, err
 188  }
 189  
 190  // WaitInterval polls the operation until it's done with custom interval.
 191  func (o *ServiceAccountDeleteOperation) WaitInterval(ctx context.Context, pollInterval sdkop.PollIntervalFunc, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 192  	abstract, err := o.Operation.WaitInterval(ctx, pollInterval, opts...)
 193  	response, _ := abstract.(*emptypb.Empty)
 194  	return response, err
 195  }
 196  
 197  // Delete is an operation of Yandex.Cloud IAM ServiceAccount service.
 198  // It returns an object which should be used to monitor the operation state.
 199  func (c serviceAccountClient) Delete(ctx context.Context, in *iam.DeleteServiceAccountRequest, opts ...grpc.CallOption) (*ServiceAccountDeleteOperation, error) {
 200  	connection, err := c.connector.GetConnection(ctx, ServiceAccountDelete, opts...)
 201  	if err != nil {
 202  		return nil, err
 203  	}
 204  	pb, err := iam.NewServiceAccountServiceClient(connection).Delete(ctx, in, opts...)
 205  	if err != nil {
 206  		return nil, err
 207  	}
 208  	op, err := sdkop.NewOperation(pb, &sdkop.Concretization{
 209  		Poll: c.pollOperation,
 210  		GetResourceID: func(metadata proto.Message) string {
 211  			return metadata.(*iam.DeleteServiceAccountMetadata).GetServiceAccountId()
 212  		},
 213  		MetadataType: (*iam.DeleteServiceAccountMetadata)(nil),
 214  		ResponseType: (*emptypb.Empty)(nil),
 215  	})
 216  	if err != nil {
 217  		return nil, err
 218  	}
 219  	return &ServiceAccountDeleteOperation{*op}, nil
 220  }
 221  
 222  // ListAccessBindings is an operation of Yandex.Cloud IAM ServiceAccount service.
 223  func (c serviceAccountClient) ListAccessBindings(ctx context.Context, in *access.ListAccessBindingsRequest, opts ...grpc.CallOption) (*access.ListAccessBindingsResponse, error) {
 224  	connection, err := c.connector.GetConnection(ctx, ServiceAccountListAccessBindings, opts...)
 225  	if err != nil {
 226  		return nil, err
 227  	}
 228  	return iam.NewServiceAccountServiceClient(connection).ListAccessBindings(ctx, in, opts...)
 229  }
 230  
 231  // ServiceAccountSetAccessBindingsOperation is used to monitor the state of SetAccessBindings operations.
 232  type ServiceAccountSetAccessBindingsOperation struct {
 233  	sdkop.Operation
 234  }
 235  
 236  // Metadata retrieves the operation metadata.
 237  func (o *ServiceAccountSetAccessBindingsOperation) Metadata() *access.SetAccessBindingsMetadata {
 238  	return o.Operation.Metadata().(*access.SetAccessBindingsMetadata)
 239  }
 240  
 241  // Response retrieves the operation response.
 242  func (o *ServiceAccountSetAccessBindingsOperation) Response() *access.AccessBindingsOperationResult {
 243  	return o.Operation.Response().(*access.AccessBindingsOperationResult)
 244  }
 245  
 246  // Wait polls the operation until it's done.
 247  func (o *ServiceAccountSetAccessBindingsOperation) Wait(ctx context.Context, opts ...grpc.CallOption) (*access.AccessBindingsOperationResult, error) {
 248  	abstract, err := o.Operation.Wait(ctx, opts...)
 249  	response, _ := abstract.(*access.AccessBindingsOperationResult)
 250  	return response, err
 251  }
 252  
 253  // WaitInterval polls the operation until it's done with custom interval.
 254  func (o *ServiceAccountSetAccessBindingsOperation) WaitInterval(ctx context.Context, pollInterval sdkop.PollIntervalFunc, opts ...grpc.CallOption) (*access.AccessBindingsOperationResult, error) {
 255  	abstract, err := o.Operation.WaitInterval(ctx, pollInterval, opts...)
 256  	response, _ := abstract.(*access.AccessBindingsOperationResult)
 257  	return response, err
 258  }
 259  
 260  // SetAccessBindings is an operation of Yandex.Cloud IAM ServiceAccount service.
 261  // It returns an object which should be used to monitor the operation state.
 262  func (c serviceAccountClient) SetAccessBindings(ctx context.Context, in *access.SetAccessBindingsRequest, opts ...grpc.CallOption) (*ServiceAccountSetAccessBindingsOperation, error) {
 263  	connection, err := c.connector.GetConnection(ctx, ServiceAccountSetAccessBindings, opts...)
 264  	if err != nil {
 265  		return nil, err
 266  	}
 267  	pb, err := iam.NewServiceAccountServiceClient(connection).SetAccessBindings(ctx, in, opts...)
 268  	if err != nil {
 269  		return nil, err
 270  	}
 271  	op, err := sdkop.NewOperation(pb, &sdkop.Concretization{
 272  		Poll:         c.pollOperation,
 273  		MetadataType: (*access.SetAccessBindingsMetadata)(nil),
 274  		ResponseType: (*access.AccessBindingsOperationResult)(nil),
 275  	})
 276  	if err != nil {
 277  		return nil, err
 278  	}
 279  	return &ServiceAccountSetAccessBindingsOperation{*op}, nil
 280  }
 281  
 282  // ServiceAccountUpdateAccessBindingsOperation is used to monitor the state of UpdateAccessBindings operations.
 283  type ServiceAccountUpdateAccessBindingsOperation struct {
 284  	sdkop.Operation
 285  }
 286  
 287  // Metadata retrieves the operation metadata.
 288  func (o *ServiceAccountUpdateAccessBindingsOperation) Metadata() *access.UpdateAccessBindingsMetadata {
 289  	return o.Operation.Metadata().(*access.UpdateAccessBindingsMetadata)
 290  }
 291  
 292  // Response retrieves the operation response.
 293  func (o *ServiceAccountUpdateAccessBindingsOperation) Response() *access.AccessBindingsOperationResult {
 294  	return o.Operation.Response().(*access.AccessBindingsOperationResult)
 295  }
 296  
 297  // Wait polls the operation until it's done.
 298  func (o *ServiceAccountUpdateAccessBindingsOperation) Wait(ctx context.Context, opts ...grpc.CallOption) (*access.AccessBindingsOperationResult, error) {
 299  	abstract, err := o.Operation.Wait(ctx, opts...)
 300  	response, _ := abstract.(*access.AccessBindingsOperationResult)
 301  	return response, err
 302  }
 303  
 304  // WaitInterval polls the operation until it's done with custom interval.
 305  func (o *ServiceAccountUpdateAccessBindingsOperation) WaitInterval(ctx context.Context, pollInterval sdkop.PollIntervalFunc, opts ...grpc.CallOption) (*access.AccessBindingsOperationResult, error) {
 306  	abstract, err := o.Operation.WaitInterval(ctx, pollInterval, opts...)
 307  	response, _ := abstract.(*access.AccessBindingsOperationResult)
 308  	return response, err
 309  }
 310  
 311  // UpdateAccessBindings is an operation of Yandex.Cloud IAM ServiceAccount service.
 312  // It returns an object which should be used to monitor the operation state.
 313  func (c serviceAccountClient) UpdateAccessBindings(ctx context.Context, in *access.UpdateAccessBindingsRequest, opts ...grpc.CallOption) (*ServiceAccountUpdateAccessBindingsOperation, error) {
 314  	connection, err := c.connector.GetConnection(ctx, ServiceAccountUpdateAccessBindings, opts...)
 315  	if err != nil {
 316  		return nil, err
 317  	}
 318  	pb, err := iam.NewServiceAccountServiceClient(connection).UpdateAccessBindings(ctx, in, opts...)
 319  	if err != nil {
 320  		return nil, err
 321  	}
 322  	op, err := sdkop.NewOperation(pb, &sdkop.Concretization{
 323  		Poll:         c.pollOperation,
 324  		MetadataType: (*access.UpdateAccessBindingsMetadata)(nil),
 325  		ResponseType: (*access.AccessBindingsOperationResult)(nil),
 326  	})
 327  	if err != nil {
 328  		return nil, err
 329  	}
 330  	return &ServiceAccountUpdateAccessBindingsOperation{*op}, nil
 331  }
 332  
 333  // ListOperations is an operation of Yandex.Cloud IAM ServiceAccount service.
 334  func (c serviceAccountClient) ListOperations(ctx context.Context, in *iam.ListServiceAccountOperationsRequest, opts ...grpc.CallOption) (*iam.ListServiceAccountOperationsResponse, error) {
 335  	connection, err := c.connector.GetConnection(ctx, ServiceAccountListOperations, opts...)
 336  	if err != nil {
 337  		return nil, err
 338  	}
 339  	return iam.NewServiceAccountServiceClient(connection).ListOperations(ctx, in, opts...)
 340  }
 341  
 342  // pollOperation returns the current state of the polled operation.
 343  func (c serviceAccountClient) pollOperation(ctx context.Context, operationId string, opts ...grpc.CallOption) (sdkop.YCOperation, error) {
 344  	connection, err := c.connector.GetConnection(ctx, ServiceAccountOperationPoller, opts...)
 345  	if err != nil {
 346  		return nil, err
 347  	}
 348  	return operation.NewOperationServiceClient(connection).Get(ctx, &operation.GetOperationRequest{OperationId: operationId}, opts...)
 349  }
 350  
 351  var (
 352  	ServiceAccountGet                  = protoreflect.FullName("yandex.cloud.iam.v1.ServiceAccountService.Get")
 353  	ServiceAccountList                 = protoreflect.FullName("yandex.cloud.iam.v1.ServiceAccountService.List")
 354  	ServiceAccountCreate               = protoreflect.FullName("yandex.cloud.iam.v1.ServiceAccountService.Create")
 355  	ServiceAccountUpdate               = protoreflect.FullName("yandex.cloud.iam.v1.ServiceAccountService.Update")
 356  	ServiceAccountDelete               = protoreflect.FullName("yandex.cloud.iam.v1.ServiceAccountService.Delete")
 357  	ServiceAccountListAccessBindings   = protoreflect.FullName("yandex.cloud.iam.v1.ServiceAccountService.ListAccessBindings")
 358  	ServiceAccountSetAccessBindings    = protoreflect.FullName("yandex.cloud.iam.v1.ServiceAccountService.SetAccessBindings")
 359  	ServiceAccountUpdateAccessBindings = protoreflect.FullName("yandex.cloud.iam.v1.ServiceAccountService.UpdateAccessBindings")
 360  	ServiceAccountListOperations       = protoreflect.FullName("yandex.cloud.iam.v1.ServiceAccountService.ListOperations")
 361  	ServiceAccountOperationPoller      = protoreflect.FullName("yandex.cloud.operation.OperationService.Get")
 362  )
 363