@@ -13,6 +13,7 @@ import (
1313 cqapi "github.com/cloudquery/cloudquery-api-go"
1414 "github.com/cloudquery/cloudquery-api-go/auth"
1515 "github.com/cloudquery/cloudquery-api-go/config"
16+ "github.com/cloudquery/plugin-sdk/v4/plugin"
1617 "github.com/google/uuid"
1718 "github.com/rs/zerolog"
1819 "github.com/rs/zerolog/log"
@@ -119,19 +120,10 @@ func withTokenClient(tokenClient TokenClient) UsageClientOptions {
119120 }
120121}
121122
122- func WithPluginTeam (pluginTeam string ) cqapi.PluginTeam {
123- return pluginTeam
124- }
125-
126- func WithPluginKind (pluginKind string ) cqapi.PluginKind {
127- return cqapi .PluginKind (pluginKind )
128- }
129-
130- func WithPluginName (pluginName string ) cqapi.PluginName {
131- return pluginName
132- }
133-
134- var _ UsageClient = (* BatchUpdater )(nil )
123+ var (
124+ _ UsageClient = (* BatchUpdater )(nil )
125+ _ UsageClient = (* NoOpUsageClient )(nil )
126+ )
135127
136128type BatchUpdater struct {
137129 logger zerolog.Logger
@@ -141,9 +133,7 @@ type BatchUpdater struct {
141133
142134 // Plugin details
143135 teamName cqapi.TeamName
144- pluginTeam cqapi.PluginTeam
145- pluginKind cqapi.PluginKind
146- pluginName cqapi.PluginName
136+ pluginMeta plugin.Meta
147137
148138 // Configuration
149139 batchLimit uint32
@@ -161,14 +151,12 @@ type BatchUpdater struct {
161151 isClosed bool
162152}
163153
164- func NewUsageClient (pluginTeam cqapi. PluginTeam , pluginKind cqapi. PluginKind , pluginName cqapi. PluginName , ops ... UsageClientOptions ) (* BatchUpdater , error ) {
154+ func NewUsageClient (meta plugin. Meta , ops ... UsageClientOptions ) (UsageClient , error ) {
165155 u := & BatchUpdater {
166156 logger : zerolog .Nop (),
167157 url : defaultAPIURL ,
168158
169- pluginTeam : pluginTeam ,
170- pluginKind : pluginKind ,
171- pluginName : pluginName ,
159+ pluginMeta : meta ,
172160
173161 batchLimit : defaultBatchLimit ,
174162 minTimeBetweenFlushes : defaultMinTimeBetweenFlushes ,
@@ -183,6 +171,13 @@ func NewUsageClient(pluginTeam cqapi.PluginTeam, pluginKind cqapi.PluginKind, pl
183171 op (u )
184172 }
185173
174+ if meta .SkipUsageClient {
175+ u .logger .Debug ().Msg ("Disabling usage client" )
176+ return & NoOpUsageClient {
177+ TeamNameValue : u .teamName ,
178+ }, nil
179+ }
180+
186181 if u .tokenClient == nil {
187182 u .tokenClient = auth .NewTokenClient ()
188183 }
@@ -248,8 +243,8 @@ func (u *BatchUpdater) TeamName() string {
248243}
249244
250245func (u * BatchUpdater ) HasQuota (ctx context.Context ) (bool , error ) {
251- u .logger .Debug ().Str ("url" , u .url ).Str ("team" , u .teamName ).Str ("pluginTeam" , u .pluginTeam ).Str ("pluginKind" , string (u .pluginKind )).Str ("pluginName" , u .pluginName ).Msg ("checking quota" )
252- usage , err := u .apiClient .GetTeamPluginUsageWithResponse (ctx , u .teamName , u .pluginTeam , u .pluginKind , u .pluginName )
246+ u .logger .Debug ().Str ("url" , u .url ).Str ("team" , u .teamName ).Str ("pluginTeam" , u .pluginMeta . Team ).Str ("pluginKind" , string (u .pluginMeta . Kind )).Str ("pluginName" , u .pluginMeta . Name ).Msg ("checking quota" )
247+ usage , err := u .apiClient .GetTeamPluginUsageWithResponse (ctx , u .teamName , u .pluginMeta . Team , u .pluginMeta . Kind , u .pluginMeta . Name )
253248 if err != nil {
254249 return false , fmt .Errorf ("failed to get usage: %w" , err )
255250 }
@@ -333,9 +328,9 @@ func (u *BatchUpdater) updateUsageWithRetryAndBackoff(ctx context.Context, numbe
333328
334329 resp , err := u .apiClient .IncreaseTeamPluginUsageWithResponse (ctx , u .teamName , cqapi.IncreaseTeamPluginUsageJSONRequestBody {
335330 RequestId : uuid .New (),
336- PluginTeam : u .pluginTeam ,
337- PluginKind : u .pluginKind ,
338- PluginName : u .pluginName ,
331+ PluginTeam : u .pluginMeta . Team ,
332+ PluginKind : u .pluginMeta . Kind ,
333+ PluginName : u .pluginMeta . Name ,
339334 Rows : int (numberToUpdate ),
340335 })
341336 if err != nil {
@@ -414,3 +409,23 @@ func (u *BatchUpdater) getTeamNameByTokenType(tokenType auth.TokenType) (string,
414409 return "" , fmt .Errorf ("unsupported token type: %v" , tokenType )
415410 }
416411}
412+
413+ type NoOpUsageClient struct {
414+ TeamNameValue string
415+ }
416+
417+ func (n * NoOpUsageClient ) TeamName () string {
418+ return n .TeamNameValue
419+ }
420+
421+ func (NoOpUsageClient ) HasQuota (_ context.Context ) (bool , error ) {
422+ return true , nil
423+ }
424+
425+ func (NoOpUsageClient ) Increase (_ uint32 ) error {
426+ return nil
427+ }
428+
429+ func (NoOpUsageClient ) Close () error {
430+ return nil
431+ }
0 commit comments