Skip to content

Commit 98d35c0

Browse files
✨ call Prepare() on each provider (#899)
* call Prepare() on each provider Signed-off-by: Pranav Gaikwad <[email protected]> * use the real dependencies Signed-off-by: Pranav Gaikwad <[email protected]> * upgrade deps Signed-off-by: Pranav Gaikwad <[email protected]> --------- Signed-off-by: Pranav Gaikwad <[email protected]>
1 parent 2dedaf1 commit 98d35c0

File tree

3 files changed

+36
-23
lines changed

3 files changed

+36
-23
lines changed

kai_analyzer_rpc/go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@ go 1.23.9
55
require (
66
github.com/Microsoft/go-winio v0.6.2
77
github.com/cenkalti/rpc2 v1.0.4
8-
github.com/go-logr/logr v1.4.2
9-
github.com/konveyor/analyzer-lsp v0.8.1-alpha.2.0.20251111032340-8753c07691be
8+
github.com/go-logr/logr v1.4.3
9+
github.com/konveyor/analyzer-lsp v0.9.0-alpha.1.0.20251122145207-25a951d7e1d9
1010
go.opentelemetry.io/otel v1.35.0
1111
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0
1212
go.opentelemetry.io/otel/sdk v1.35.0
1313
go.opentelemetry.io/otel/trace v1.35.0
14-
google.golang.org/protobuf v1.36.6
1514
)
1615

1716
require (
@@ -35,8 +34,8 @@ require (
3534
github.com/jhump/protoreflect v1.16.0 // indirect
3635
github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 // indirect
3736
github.com/shopspring/decimal v1.4.0 // indirect
38-
github.com/swaggest/jsonschema-go v0.3.73 // indirect
39-
github.com/swaggest/openapi-go v0.2.57 // indirect
37+
github.com/swaggest/jsonschema-go v0.3.74 // indirect
38+
github.com/swaggest/openapi-go v0.2.58 // indirect
4039
github.com/swaggest/refl v1.3.1 // indirect
4140
go.lsp.dev/uri v0.3.0 // indirect
4241
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
@@ -52,5 +51,6 @@ require (
5251
google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 // indirect
5352
google.golang.org/genproto/googleapis/rpc v0.0.0-20250414145226-207652e42e2e // indirect
5453
google.golang.org/grpc v1.73.0 // indirect
54+
google.golang.org/protobuf v1.36.6 // indirect
5555
gopkg.in/yaml.v2 v2.4.0 // indirect
5656
)

kai_analyzer_rpc/go.sum

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
3434
github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
3535
github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
3636
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
37-
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
38-
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
37+
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
38+
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
3939
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
4040
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
4141
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
@@ -58,10 +58,8 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ
5858
github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE=
5959
github.com/jhump/protoreflect v1.16.0 h1:54fZg+49widqXYQ0b+usAFHbMkBGR4PpXrsHc8+TBDg=
6060
github.com/jhump/protoreflect v1.16.0/go.mod h1:oYPd7nPvcBw/5wlDfm/AVmU9zH9BgqGCI469pGxfj/8=
61-
github.com/konveyor/analyzer-lsp v0.8.1-alpha.2.0.20251027154221-e85bc0bcdd5b h1:8SW1I74BNh/NPxog9Bq0PI80xMwJh1k0ucYH6otbMGw=
62-
github.com/konveyor/analyzer-lsp v0.8.1-alpha.2.0.20251027154221-e85bc0bcdd5b/go.mod h1:tZkfGRokJZqtmNVeEPIFlxltZhZXXMM5g2NNdxmhTXM=
63-
github.com/konveyor/analyzer-lsp v0.8.1-alpha.2.0.20251111032340-8753c07691be h1:u43pkR5njdUczOEUxgFVBfomCJ7mD+/dovmm+XErM2I=
64-
github.com/konveyor/analyzer-lsp v0.8.1-alpha.2.0.20251111032340-8753c07691be/go.mod h1:tZkfGRokJZqtmNVeEPIFlxltZhZXXMM5g2NNdxmhTXM=
61+
github.com/konveyor/analyzer-lsp v0.9.0-alpha.1.0.20251122145207-25a951d7e1d9 h1:sTFkOBUBwmk8vN2zHozNwdo4xQxr1FepfJ4WZGQUVZQ=
62+
github.com/konveyor/analyzer-lsp v0.9.0-alpha.1.0.20251122145207-25a951d7e1d9/go.mod h1:tZkfGRokJZqtmNVeEPIFlxltZhZXXMM5g2NNdxmhTXM=
6563
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
6664
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
6765
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -85,10 +83,10 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf
8583
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
8684
github.com/swaggest/assertjson v1.9.0 h1:dKu0BfJkIxv/xe//mkCrK5yZbs79jL7OVf9Ija7o2xQ=
8785
github.com/swaggest/assertjson v1.9.0/go.mod h1:b+ZKX2VRiUjxfUIal0HDN85W0nHPAYUbYH5WkkSsFsU=
88-
github.com/swaggest/jsonschema-go v0.3.73 h1:gU1pBzF3pkZ1GDD3dRMdQoCjrA0sldJ+QcM7aSSPgvc=
89-
github.com/swaggest/jsonschema-go v0.3.73/go.mod h1:qp+Ym2DIXHlHzch3HKz50gPf2wJhKOrAB/VYqLS2oJU=
90-
github.com/swaggest/openapi-go v0.2.57 h1:ofY6NlZzix6LSMNIzfx74aa6U2OeyVmb6KEnkItT60U=
91-
github.com/swaggest/openapi-go v0.2.57/go.mod h1:pWhyF7lAIBRW6UYAvCijYkhy7PEmD92y3DMefiAQiL8=
86+
github.com/swaggest/jsonschema-go v0.3.74 h1:hkAZBK3RxNWU013kPqj0Q/GHGzYCCm9WcUTnfg2yPp0=
87+
github.com/swaggest/jsonschema-go v0.3.74/go.mod h1:qp+Ym2DIXHlHzch3HKz50gPf2wJhKOrAB/VYqLS2oJU=
88+
github.com/swaggest/openapi-go v0.2.58 h1:H9Nu9+XWGE1ZGU410iCg27R+d3Fhi9r3sOz1BCm5W/E=
89+
github.com/swaggest/openapi-go v0.2.58/go.mod h1:jmFOuYdsWGtHU0BOuILlHZQJxLqHiAE6en+baE+QQUk=
9290
github.com/swaggest/refl v1.3.1 h1:XGplEkYftR7p9cz1lsiwXMM2yzmOymTE9vneVVpaOh4=
9391
github.com/swaggest/refl v1.3.1/go.mod h1:4uUVFVfPJ0NSX9FPwMPspeHos9wPFlCMGoPRllUbpvA=
9492
github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA=

kai_analyzer_rpc/pkg/service/pipe_analyzer.go

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ func NewPipeAnalyzer(ctx context.Context, limitIncidents, limitCodeSnips, contex
5959
locations := []string{}
6060
for _, config := range configs {
6161
if config.Address == "" || config.BinaryPath != "" {
62-
return nil, fmt.Errorf("You can only use an existing provider serving at a particular location")
62+
return nil, fmt.Errorf("you can only use an existing provider serving at a particular location")
6363
}
6464
for _, initConfig := range config.InitConfig {
6565
if initConfig.PipeName == "" {
66-
return nil, fmt.Errorf("The providers should only be using a pipe to communicate to the LSP")
66+
return nil, fmt.Errorf("the providers should only be using a pipe to communicate to the LSP")
6767
}
6868
locations = append(locations, initConfig.Location)
6969
defaultBuiltinConfigs = append(defaultBuiltinConfigs, provider.InitConfig{
@@ -93,7 +93,7 @@ func NewPipeAnalyzer(ctx context.Context, limitIncidents, limitCodeSnips, contex
9393
Log: l.WithName("parser"),
9494
}
9595

96-
discoveryRulesets, violationRulesets, neededProviders, err := parseRules(parser, rules, l, cancelFunc)
96+
discoveryRulesets, violationRulesets, neededProviders, providerConditions, err := parseRules(parser, rules, l, cancelFunc)
9797
if err != nil {
9898
return nil, err
9999
}
@@ -152,6 +152,15 @@ func NewPipeAnalyzer(ctx context.Context, limitIncidents, limitCodeSnips, contex
152152
}
153153
}
154154

155+
// Call Prepare() on all providers with the provider conditions
156+
for k, v := range providerConditions {
157+
if _, ok := neededProviders[k]; ok {
158+
if err := neededProviders[k].Prepare(ctx, v); err != nil {
159+
return nil, err
160+
}
161+
}
162+
}
163+
155164
ctx, cancelFunc = context.WithCancel(context.Background())
156165
eng := engine.CreateRuleEngine(ctx,
157166
10,
@@ -185,21 +194,27 @@ func NewPipeAnalyzer(ctx context.Context, limitIncidents, limitCodeSnips, contex
185194

186195
}
187196

188-
func parseRules(parser parser.RuleParser, rules string, l logr.Logger, cancelFunc func()) ([]engine.RuleSet, []engine.RuleSet, map[string]provider.InternalProviderClient, error) {
197+
func parseRules(parser parser.RuleParser, rules string, l logr.Logger, cancelFunc func()) ([]engine.RuleSet, []engine.RuleSet, map[string]provider.InternalProviderClient, map[string][]provider.ConditionsByCap, error) {
189198
discoveryRulesets := []engine.RuleSet{}
190199
violationRulesets := []engine.RuleSet{}
191200
neededProviders := map[string]provider.InternalProviderClient{}
201+
providerConditions := map[string][]provider.ConditionsByCap{}
192202
for _, f := range strings.Split(rules, ",") {
193-
internRuleSets, newNeededProviders, err := parser.LoadRules(strings.TrimSpace(f))
203+
internRuleSets, newNeededProviders, provConditions, err := parser.LoadRules(strings.TrimSpace(f))
194204
if err != nil {
195205
l.Error(err, "unable to parse all the rules for ruleset", "file", f)
196206
cancelFunc()
197-
return nil, nil, nil, err
207+
return nil, nil, nil, nil, err
198208
}
199209
for k, v := range newNeededProviders {
200210
neededProviders[k] = v
201211
}
202-
212+
for k, v := range provConditions {
213+
if _, ok := providerConditions[k]; !ok {
214+
providerConditions[k] = []provider.ConditionsByCap{}
215+
}
216+
providerConditions[k] = append(providerConditions[k], v...)
217+
}
203218
for _, interimRuleSet := range internRuleSets {
204219
runCacheResetRuleset := engine.RuleSet{
205220
Name: interimRuleSet.Name,
@@ -237,5 +252,5 @@ func parseRules(parser parser.RuleParser, rules string, l logr.Logger, cancelFun
237252
}
238253
}
239254
}
240-
return discoveryRulesets, violationRulesets, neededProviders, nil
255+
return discoveryRulesets, violationRulesets, neededProviders, providerConditions, nil
241256
}

0 commit comments

Comments
 (0)