Skip to content

Commit 9695908

Browse files
authored
Added RateLimiterFromProto and RateLimiterasProto (#4500)
1 parent da2f3ec commit 9695908

File tree

5 files changed

+61
-9
lines changed

5 files changed

+61
-9
lines changed

go.mod

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ toolchain go1.23.3
77
replace (
88
github.com/c-bata/go-prompt => github.com/turbot/go-prompt v0.2.6-steampipe.0.0.20221028122246-eb118ec58d50
99
// github.com/turbot/pipe-fittings/v2 => ../pipe-fittings
10-
10+
// github.com/turbot/steampipe-plugin-sdk/v5 => ../steampipe-plugin-sdk
1111
)
1212

1313
require (
@@ -42,9 +42,9 @@ require (
4242
github.com/spf13/pflag v1.0.5
4343
github.com/spf13/viper v1.19.0
4444
github.com/thediveo/enumflag/v2 v2.0.5
45-
github.com/turbot/go-kit v1.0.0
45+
github.com/turbot/go-kit v1.1.0
4646
github.com/turbot/pipe-fittings/v2 v2.1.1
47-
github.com/turbot/steampipe-plugin-sdk/v5 v5.11.3
47+
github.com/turbot/steampipe-plugin-sdk/v5 v5.11.4
4848
github.com/turbot/terraform-components v0.0.0-20231213122222-1f3526cab7a7
4949
github.com/zclconf/go-cty v1.14.4 // indirect
5050
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56

go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -771,8 +771,8 @@ github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2bi
771771
github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8=
772772
github.com/tkrajina/go-reflector v0.5.6 h1:hKQ0gyocG7vgMD2M3dRlYN6WBBOmdoOzJ6njQSepKdE=
773773
github.com/tkrajina/go-reflector v0.5.6/go.mod h1:ECbqLgccecY5kPmPmXg1MrHW585yMcDkVl6IvJe64T4=
774-
github.com/turbot/go-kit v1.0.0 h1:TeVYepMyPMpiQ8GxmZcth9h1CzKRshWK+X9JGKAnXOo=
775-
github.com/turbot/go-kit v1.0.0/go.mod h1:vPk4gTUM8HhYGdzfKKLrPeZgnjLVBin41uqxjHScz6k=
774+
github.com/turbot/go-kit v1.1.0 h1:2gW+MFDJD+mN41GcvhAajTrwR8HgN9KKJ8HnYwPGTV0=
775+
github.com/turbot/go-kit v1.1.0/go.mod h1:1xmRuQ0cn/10QUMNLNOAFIqN8P6Rz5s3VLT8mkN3nF8=
776776
github.com/turbot/go-prompt v0.2.6-steampipe.0.0.20221028122246-eb118ec58d50 h1:zs87uA6QZsYLk4RRxDOIxt8ro/B2V6HzoMWm05Lo7ao=
777777
github.com/turbot/go-prompt v0.2.6-steampipe.0.0.20221028122246-eb118ec58d50/go.mod h1:vFnjEGDIIA/Lib7giyE4E9c50Lvl8j0S+7FVlAwDAVw=
778778
github.com/turbot/pipe-fittings/v2 v2.1.1 h1:sV6bviX7WH3zivi45n29+ui+I9tJLlFNCNA2rOpw6/U=
@@ -781,8 +781,8 @@ github.com/turbot/pipes-sdk-go v0.12.0 h1:esbbR7bALa5L8n/hqroMPaQSSo3gNM/4X0iTmH
781781
github.com/turbot/pipes-sdk-go v0.12.0/go.mod h1:Mb+KhvqqEdRbz/6TSZc2QWDrMa5BN3E4Xw+gPt2TRkc=
782782
github.com/turbot/steampipe-plugin-code v1.0.1-alpha.1 h1:mN0k0SGAN0pqPh92QZfJIzFzXuz6TiMALnLLLgCqnTI=
783783
github.com/turbot/steampipe-plugin-code v1.0.1-alpha.1/go.mod h1:Dhkl99FVa9eHbBbHgyy0Zf6jj7eVjZZujyqore+RHmQ=
784-
github.com/turbot/steampipe-plugin-sdk/v5 v5.11.3 h1:/b+ZUVydvkvjtNB0LbzVkDoWy/GB0qrucAxiUg4yznM=
785-
github.com/turbot/steampipe-plugin-sdk/v5 v5.11.3/go.mod h1:zI1JuJjVV+tiqK1MbOfEfeyHJzONRQh/NEYVXEOyd4o=
784+
github.com/turbot/steampipe-plugin-sdk/v5 v5.11.4 h1:Mt1j8xX6bcmtCyFjRg8opvaglaxx2+vnNr+GOCU9gzE=
785+
github.com/turbot/steampipe-plugin-sdk/v5 v5.11.4/go.mod h1:DnhNZF6QJXShotqVurAn1nrfxQFLx3+E8hRwYZ9fO6g=
786786
github.com/turbot/terraform-components v0.0.0-20231213122222-1f3526cab7a7 h1:qDMxFVd8Zo0rIhnEBdCIbR+T6WgjwkxpFZMN8zZmmjg=
787787
github.com/turbot/terraform-components v0.0.0-20231213122222-1f3526cab7a7/go.mod h1:5hzpfalEjfcJWp9yq75/EZoEu2Mzm34eJAPm3HOW2tw=
788788
github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8=

pkg/pluginmanager_service/plugin_manager.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -772,7 +772,7 @@ func (m *PluginManager) setRateLimiters(pluginInstance string, pluginClient *sdk
772772
var defs []*sdkproto.RateLimiterDefinition
773773

774774
for _, l := range m.userLimiters[pluginInstance] {
775-
defs = append(defs, sdkproto.RateLimiterAsProto(l))
775+
defs = append(defs, RateLimiterAsProto(l))
776776
}
777777

778778
req := &sdkproto.SetRateLimitersRequest{Definitions: defs}

pkg/pluginmanager_service/plugin_manager_rate_limiters.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ func (m *PluginManager) LoadPluginRateLimiters(pluginConnectionMap map[string]st
306306

307307
limitersForPlugin := make(connection.LimiterMap)
308308
for _, l := range rateLimiterResp.Definitions {
309-
r, err := proto.RateLimiterFromProto(l, reattach.Plugin, pluginInstance)
309+
r, err := RateLimiterFromProto(l, reattach.Plugin, pluginInstance)
310310
if err != nil {
311311
errors = append(errors, sperr.WrapWithMessage(err, "failed to create rate limiter %s from plugin definition", err))
312312
continue
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package pluginmanager_service
2+
3+
import (
4+
"github.com/turbot/pipe-fittings/v2/plugin"
5+
"github.com/turbot/steampipe-plugin-sdk/v5/grpc/proto"
6+
)
7+
8+
// RateLimiterFromProto converts the proto format RateLimiterDefinition into a Defintion
9+
func RateLimiterFromProto(p *proto.RateLimiterDefinition, pluginImageRef, pluginInstance string) (*plugin.RateLimiter, error) {
10+
var res = &plugin.RateLimiter{
11+
Name: p.Name,
12+
Scope: p.Scope,
13+
}
14+
if p.FillRate != 0 {
15+
res.FillRate = &p.FillRate
16+
res.BucketSize = &p.BucketSize
17+
}
18+
if p.MaxConcurrency != 0 {
19+
res.MaxConcurrency = &p.MaxConcurrency
20+
}
21+
if p.Where != "" {
22+
res.Where = &p.Where
23+
}
24+
if res.Scope == nil {
25+
res.Scope = []string{}
26+
}
27+
// set ImageRef and Plugin fields
28+
res.SetPluginImageRef(pluginImageRef)
29+
res.PluginInstance = pluginInstance
30+
return res, nil
31+
}
32+
33+
func RateLimiterAsProto(l *plugin.RateLimiter) *proto.RateLimiterDefinition {
34+
res := &proto.RateLimiterDefinition{
35+
Name: l.Name,
36+
Scope: l.Scope,
37+
}
38+
if l.MaxConcurrency != nil {
39+
res.MaxConcurrency = *l.MaxConcurrency
40+
}
41+
if l.BucketSize != nil {
42+
res.BucketSize = *l.BucketSize
43+
}
44+
if l.FillRate != nil {
45+
res.FillRate = *l.FillRate
46+
}
47+
if l.Where != nil {
48+
res.Where = *l.Where
49+
}
50+
51+
return res
52+
}

0 commit comments

Comments
 (0)