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