From 0011eb499fbdd9677f4e63feb0b8e97969cdc3e8 Mon Sep 17 00:00:00 2001 From: "Yandex.Cloud Bot" Date: Mon, 23 Oct 2023 14:05:27 +0000 Subject: [PATCH] sync upstream --- gen/marketplace/licensemanager/lock.go | 116 +++++++++++++++++++++++++ gen/mdb/clickhouse/cluster.go | 9 ++ go.mod | 2 +- go.sum | 2 + 4 files changed, 128 insertions(+), 1 deletion(-) diff --git a/gen/marketplace/licensemanager/lock.go b/gen/marketplace/licensemanager/lock.go index 08888bf..372dfa1 100644 --- a/gen/marketplace/licensemanager/lock.go +++ b/gen/marketplace/licensemanager/lock.go @@ -64,3 +64,119 @@ func (c *LockServiceClient) GetByInstanceAndResource(ctx context.Context, in *li } return licensemanager.NewLockServiceClient(conn).GetByInstanceAndResource(ctx, in, opts...) } + +// List implements licensemanager.LockServiceClient +func (c *LockServiceClient) List(ctx context.Context, in *licensemanager.ListLocksRequest, opts ...grpc.CallOption) (*licensemanager.ListLocksResponse, error) { + conn, err := c.getConn(ctx) + if err != nil { + return nil, err + } + return licensemanager.NewLockServiceClient(conn).List(ctx, in, opts...) +} + +type LockIterator struct { + ctx context.Context + opts []grpc.CallOption + + err error + started bool + requestedSize int64 + pageSize int64 + + client *LockServiceClient + request *licensemanager.ListLocksRequest + + items []*licensemanager.Lock +} + +func (c *LockServiceClient) LockIterator(ctx context.Context, req *licensemanager.ListLocksRequest, opts ...grpc.CallOption) *LockIterator { + var pageSize int64 + const defaultPageSize = 1000 + pageSize = req.PageSize + if pageSize == 0 { + pageSize = defaultPageSize + } + return &LockIterator{ + ctx: ctx, + opts: opts, + client: c, + request: req, + pageSize: pageSize, + } +} + +func (it *LockIterator) Next() bool { + if it.err != nil { + return false + } + if len(it.items) > 1 { + it.items[0] = nil + it.items = it.items[1:] + return true + } + it.items = nil // consume last item, if any + + if it.started && it.request.PageToken == "" { + return false + } + it.started = true + + if it.requestedSize == 0 || it.requestedSize > it.pageSize { + it.request.PageSize = it.pageSize + } else { + it.request.PageSize = it.requestedSize + } + + response, err := it.client.List(it.ctx, it.request, it.opts...) + it.err = err + if err != nil { + return false + } + + it.items = response.Locks + it.request.PageToken = response.NextPageToken + return len(it.items) > 0 +} + +func (it *LockIterator) Take(size int64) ([]*licensemanager.Lock, error) { + if it.err != nil { + return nil, it.err + } + + if size == 0 { + size = 1 << 32 // something insanely large + } + it.requestedSize = size + defer func() { + // reset iterator for future calls. + it.requestedSize = 0 + }() + + var result []*licensemanager.Lock + + for it.requestedSize > 0 && it.Next() { + it.requestedSize-- + result = append(result, it.Value()) + } + + if it.err != nil { + return nil, it.err + } + + return result, nil +} + +func (it *LockIterator) TakeAll() ([]*licensemanager.Lock, error) { + return it.Take(0) +} + +func (it *LockIterator) Value() *licensemanager.Lock { + if len(it.items) == 0 { + panic("calling Value on empty iterator") + } + return it.items[0] +} + +func (it *LockIterator) Error() error { + return it.err +} diff --git a/gen/mdb/clickhouse/cluster.go b/gen/mdb/clickhouse/cluster.go index 532cef8..a7a5c47 100644 --- a/gen/mdb/clickhouse/cluster.go +++ b/gen/mdb/clickhouse/cluster.go @@ -1102,6 +1102,15 @@ func (c *ClusterServiceClient) RescheduleMaintenance(ctx context.Context, in *cl return clickhouse.NewClusterServiceClient(conn).RescheduleMaintenance(ctx, in, opts...) } +// RestartHosts implements clickhouse.ClusterServiceClient +func (c *ClusterServiceClient) RestartHosts(ctx context.Context, in *clickhouse.RestartClusterHostsRequest, opts ...grpc.CallOption) (*operation.Operation, error) { + conn, err := c.getConn(ctx) + if err != nil { + return nil, err + } + return clickhouse.NewClusterServiceClient(conn).RestartHosts(ctx, in, opts...) +} + // Restore implements clickhouse.ClusterServiceClient func (c *ClusterServiceClient) Restore(ctx context.Context, in *clickhouse.RestoreClusterRequest, opts ...grpc.CallOption) (*operation.Operation, error) { conn, err := c.getConn(ctx) diff --git a/go.mod b/go.mod index 99d86e8..f9ec594 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/hashicorp/go-multierror v1.0.0 github.com/mitchellh/go-testing-interface v1.0.0 github.com/stretchr/testify v1.7.0 - github.com/yandex-cloud/go-genproto v0.0.0-20231009081144-b948e2f03d1e + github.com/yandex-cloud/go-genproto v0.0.0-20231023135945-63f600d5bf4e golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 google.golang.org/genproto v0.0.0-20211021150943-2b146023228c google.golang.org/grpc v1.41.0 diff --git a/go.sum b/go.sum index 0b9f3a7..73ba438 100644 --- a/go.sum +++ b/go.sum @@ -200,6 +200,8 @@ github.com/yandex-cloud/go-genproto v0.0.0-20230918115514-93a99045c9de h1:BZxUcH github.com/yandex-cloud/go-genproto v0.0.0-20230918115514-93a99045c9de/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE= github.com/yandex-cloud/go-genproto v0.0.0-20231009081144-b948e2f03d1e h1:Xn7RAMRYSpt+DbfdezZ+e2Po2ms8SWejqA65uw/lhr0= github.com/yandex-cloud/go-genproto v0.0.0-20231009081144-b948e2f03d1e/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE= +github.com/yandex-cloud/go-genproto v0.0.0-20231023135945-63f600d5bf4e h1:Mag6EsIQ4/RnwVkkGtaBvr9Zm2asZ0cmE3IvLtlfE0A= +github.com/yandex-cloud/go-genproto v0.0.0-20231023135945-63f600d5bf4e/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=