Skip to content

Commit

Permalink
adding provider condition setup for referenced of external providers
Browse files Browse the repository at this point in the history
Signed-off-by: Shawn Hurley <shawn@hurley.page>
  • Loading branch information
shawn-hurley committed Mar 5, 2024
1 parent 3b7b0e9 commit 3917d7a
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 66 deletions.
102 changes: 52 additions & 50 deletions cmd/analyzer/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,10 +261,12 @@ func validateFlags() error {
return fmt.Errorf("unable to find provider settings file")
}

for _, f := range rulesFile {
_, err = os.Stat(f)
if err != nil {
return fmt.Errorf("unable to find rule path or file")
if getOpenAPISpec == "" {
for _, f := range rulesFile {
_, err = os.Stat(f)
if err != nil {
return fmt.Errorf("unable to find rule path or file")
}
}
}
m := provider.AnalysisMode(strings.ToLower(analysisMode))
Expand Down Expand Up @@ -307,52 +309,52 @@ func createOpenAPISchema(providers map[string]provider.InternalProviderClient, l
}
}

// AndOrRefRuleRef = append(AndOrRefRuleRef, openapi3.SchemaOrRef{
// SchemaReference: &openapi3.SchemaReference{
// Ref: "#/components/schemas/and",
// },
// })
// AndOrRefRuleRef = append(AndOrRefRuleRef, openapi3.SchemaOrRef{
// SchemaReference: &openapi3.SchemaReference{
// Ref: "#/components/schemas/or",
// },
// })
// spec.MapOfSchemaOrRefValues["and"] = openapi3.SchemaOrRef{
// Schema: &openapi3.Schema{
// Type: &provider.SchemaTypeObject,
// Properties: map[string]openapi3.SchemaOrRef{
// "and": {
// Schema: &openapi3.Schema{
// Type: &provider.SchemaTypeArray,
// Items: &openapi3.SchemaOrRef{
// Schema: &openapi3.Schema{
// Type: &provider.SchemaTypeObject,
// OneOf: AndOrRefRuleRef,
// },
// },
// },
// },
// },
// },
// }
// spec.MapOfSchemaOrRefValues["or"] = openapi3.SchemaOrRef{
// Schema: &openapi3.Schema{
// Type: &provider.SchemaTypeObject,
// Properties: map[string]openapi3.SchemaOrRef{
// "or": {
// Schema: &openapi3.Schema{
// Type: &provider.SchemaTypeArray,
// Items: &openapi3.SchemaOrRef{
// Schema: &openapi3.Schema{
// Type: &provider.SchemaTypeObject,
// OneOf: AndOrRefRuleRef,
// },
// },
// },
// },
// },
// },
// }
AndOrRefRuleRef = append(AndOrRefRuleRef, openapi3.SchemaOrRef{
SchemaReference: &openapi3.SchemaReference{
Ref: "#/components/schemas/and",
},
})
AndOrRefRuleRef = append(AndOrRefRuleRef, openapi3.SchemaOrRef{
SchemaReference: &openapi3.SchemaReference{
Ref: "#/components/schemas/or",
},
})
spec.MapOfSchemaOrRefValues["and"] = openapi3.SchemaOrRef{
Schema: &openapi3.Schema{
Type: &provider.SchemaTypeObject,
Properties: map[string]openapi3.SchemaOrRef{
"and": {
Schema: &openapi3.Schema{
Type: &provider.SchemaTypeArray,
Items: &openapi3.SchemaOrRef{
Schema: &openapi3.Schema{
Type: &provider.SchemaTypeObject,
OneOf: AndOrRefRuleRef,
},
},
},
},
},
},
}
spec.MapOfSchemaOrRefValues["or"] = openapi3.SchemaOrRef{
Schema: &openapi3.Schema{
Type: &provider.SchemaTypeObject,
Properties: map[string]openapi3.SchemaOrRef{
"or": {
Schema: &openapi3.Schema{
Type: &provider.SchemaTypeArray,
Items: &openapi3.SchemaOrRef{
Schema: &openapi3.Schema{
Type: &provider.SchemaTypeObject,
OneOf: AndOrRefRuleRef,
},
},
},
},
},
},
}

spec.MapOfSchemaOrRefValues["rule"].Schema.Properties["when"] = openapi3.SchemaOrRef{
Schema: &openapi3.Schema{
Expand Down
4 changes: 1 addition & 3 deletions external-providers/generic-external-provider/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.19

require (
github.com/bombsimon/logrusr/v3 v3.1.0
github.com/getkin/kin-openapi v0.118.0
github.com/swaggest/openapi-go v0.2.45
github.com/go-logr/logr v1.2.4
github.com/konveyor/analyzer-lsp v0.3.0-beta.2
github.com/sirupsen/logrus v1.9.3
Expand Down Expand Up @@ -39,5 +39,3 @@ require (
google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

// replace github.com/konveyor/analyzer-lsp => ../../
2 changes: 1 addition & 1 deletion external-providers/yq-external-provider/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ go 1.19

require (
github.com/bombsimon/logrusr/v3 v3.1.0
github.com/getkin/kin-openapi v0.118.0
github.com/go-logr/logr v1.2.4
github.com/swaggest/openapi-go v0.2.45
github.com/konveyor/analyzer-lsp v0.3.0-alpha.3.0.20230915135621-94f04595688b
github.com/sirupsen/logrus v1.9.3
go.lsp.dev/uri v0.3.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,17 @@ import (
"os"
"os/exec"

"github.com/getkin/kin-openapi/openapi3"
"github.com/go-logr/logr"
"github.com/konveyor/analyzer-lsp/provider"
"github.com/swaggest/openapi-go/openapi3"
)

// TODO(shawn-hurley): Pipe the logger through
// Determine how and where external providers will add the logs to make the logs viewable in a single location.
type yqProvider struct {
ctx context.Context

log logr.Logger
}

var _ provider.BaseClient = &yqProvider{}
Expand All @@ -24,12 +26,14 @@ func NewYqProvider() *yqProvider {
}

func (p *yqProvider) Capabilities() []provider.Capability {
return []provider.Capability{
{
Name: "k8sResourceMatched",
TemplateContext: openapi3.SchemaRef{},
},
caps := []provider.Capability{}
r := openapi3.NewReflector()
k8sResourceMatched, err := provider.ToProviderCap(r, p.log, k8sResourceCondition{}, "k8sResourceMatched")
if err != nil {
fmt.Printf("not working")
}
caps = append(caps, k8sResourceMatched)
return caps
}

type yqCondition struct {
Expand Down
2 changes: 1 addition & 1 deletion provider/internal/builtin/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ type builtinCondition struct {

type fileContentCondition struct {
FilePattern string `yaml:"filePattern" json:"filePattern,omitempty"`
Pattern string `yaml:"pattern json:"pattern"`
Pattern string `yaml:"pattern" json:"pattern"`
}

type fileCondition struct {
Expand Down
8 changes: 3 additions & 5 deletions provider/internal/java/dependency.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,7 @@ func (p *javaServiceClient) GetDependenciesFallback(ctx context.Context, locatio
p.log.V(10).Info("Analyzing POM",
"POM", fmt.Sprintf("%s:%s:%s", pomCoordinate(pom.GroupID), pomCoordinate(pom.ArtifactID), pomCoordinate(pom.Version)),
"error", err)
if err != nil {
return nil, err
}

// If the pom object is empty then parse failed silently.
if reflect.DeepEqual(*pom, gopom.Project{}) {
return nil, nil
Expand Down Expand Up @@ -464,13 +462,13 @@ func addDepLabels(depToLabels map[string]*depLabelItem, depName string) []string
m := map[string]interface{}{}
for _, d := range depToLabels {
if d.r.Match([]byte(depName)) {
for label, _ := range d.labels {
for label := range d.labels {
m[label] = nil
}
}
}
s := []string{}
for k, _ := range m {
for k := range m {
s = append(s, k)
}
// if open source label is not found, qualify the dep as being internal by default
Expand Down

0 comments on commit 3917d7a

Please sign in to comment.