Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement RDMS backend (postgres/mysql/sqlite) #910

Merged
merged 197 commits into from
Aug 29, 2023

Conversation

ivanvanderbyl
Copy link
Contributor

@ivanvanderbyl ivanvanderbyl commented Jun 4, 2023

Description of the PR

(WIP) Implements a backend using Ent that supports common RDMS such as Postgres, MySQL, Sqlite. Tested only with Postgres at the moment.

PR Checklist

  • All commits have a Developer Certificate of Origin (DCO) -- they are generated using -s flag to git commit.
  • All new changes are covered by tests
  • If GraphQL schema is changed, make generate has been run
  • If collectsub protobuf has been changed, make proto has been run
  • All CI checks are passing (tests and formatting)
  • All dependent PRs have already been merged

To implement:

  • Migration script (Atlas or ent)
  • Test harness using txdb
  • Artifacts
  • Builders
  • Cve
  • Ghsa
  • Osv
  • Packages
  • Sources
  • CertifyBad
  • CertifyGood
  • CertifyVEXStatement
  • CertifyVuln
  • HasSBOM
  • HasSlsa
  • HasSourceAt
  • HashEqual
  • IsDependency
  • IsOccurrence
  • IsVulnerability
  • PkgEqual
  • Scorecards
  • IngestArtifact
  • IngestArtifacts
  • IngestBuilder
  • IngestCve
  • IngestGhsa
  • IngestMaterials
  • IngestOsv
  • IngestPackage
  • IngestPackages
  • IngestSource
  • CertifyScorecard
  • IngestCertifyBad
  • IngestCertifyGood
  • IngestDependency
  • IngestDependencies
  • IngestHasSbom
  • IngestHasSourceAt
  • IngestHashEqual
  • IngestIsVulnerability
  • IngestOccurrence
  • IngestOccurrences
  • IngestPkgEqual
  • IngestSLSA
  • IngestVEXStatement
  • IngestVulnerability
  • Neighbors
  • Node
  • Nodes
  • Path
  • FindSoftware
  • Implement new model.MatchType on deps
  • Implement new vulnerability changes

Note to reviewers: A large chunk of this is code generated using Ent, which results in a large change surface. You'll notice that most ent code is identical for each node type, so you can skim it easily. The actual Backend implementation is in pkg/assembler/backends/ent/backend with the generated code in the parent directory.

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
@google-cla
Copy link

google-cla bot commented Jun 4, 2023

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
@pxp928
Copy link
Collaborator

pxp928 commented Jun 4, 2023

Thanks, @ivanvanderbyl! We never knew about this. This could be a game changer for backend resolver implementation work.

@lumjjb
Copy link
Contributor

lumjjb commented Jun 4, 2023

Nice!!!! This is super awesome!!! Looking forward to diving deeper into this! Let us know if you'd like to spend time to run through anything that you have questions on!

@mihaimaruseac
Copy link
Collaborator

This is amazing! Thank you for starting this!

@ivanvanderbyl
Copy link
Contributor Author

@lumjjb one area that isn't so clear is the schema, I'm inferring a lot of this from reading the inmem and neo4j implementations. Do you have a design document for this?

Another area to discuss is how Ent can optimally work with gqlgen. Given the current Backend interface, if we make a query like (take from the docs):

packages(pkgSpec: { type: "deb" }) {
    type
    namespaces {
      namespace
    }
  }

The backing Ent query should look like:

records,err := client.Package.Query().
  Where(package.TypeEQ(typ)).
  WithNamespaces().
  All(ctx)

Key to this is knowing that the user asked for namespaces and only eagerly querying that edge when asked. The current Backend API I believe makes this possible? Ensuring we don't create an N+1 query problem, which is quite easy to do with gqlgen 🦶🏻 🔫

A larger design decision would be to have Ent generate all this glue code between Ent and gqlgen if you don't mind the interface coupling (https://entgo.io/docs/tutorial-todo-gql-field-collection)

@lumjjb
Copy link
Contributor

lumjjb commented Jun 5, 2023

Key to this is knowing that the user asked for namespaces and only eagerly querying that edge when asked. The current Backend API I believe makes this possible?

Yea if I understand it right. The software trees like packages, etc. all have this behavior.

A larger design decision would be to have Ent generate all this glue code between Ent and gqlgen if you don't mind the interface coupling (https://entgo.io/docs/tutorial-todo-gql-field-collection)

I do personally like being able to manually have control over this since, I do envision that some graphql APIs could be tricky to optimize with ent generated code. With current APIs it looks like a nice fit, but I think we would add some more "analytics" type queries which may make things a bit tricky.

Do you have a design document for this?

hmm, have you looked at some of these docs by any chance? If it still isn't clear maybe we can have a call and answer some questions and then add to the docs to make things clearer!

@pxp928
Copy link
Collaborator

pxp928 commented Jun 5, 2023

Yea if I understand it right. The software trees like packages, etc. all have this behavior.

+1 Via the graphQL preloads, we can get the query fields that the user requested and optimize based on that. We did something similar in the neo4j implementation.

@mihaimaruseac
Copy link
Collaborator

Key to this is knowing that the user asked for namespaces and only eagerly querying that edge when asked. The current Backend API I believe makes this possible?

Yes, we have a getPreloads function for this, but this can be adapted if needed

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
@pull-request-size pull-request-size bot added size/XL and removed size/L labels Jun 6, 2023
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
@ivanvanderbyl
Copy link
Contributor Author

👍🏻 for preloads.

Thanks for pointing me to the docs, hadn't dug deep enough to find them yet. Big help! I've added the software tree packages and a tests. I've also configured this to do an upsert so that you can call ingest multiple times without duplicating each tree node.

I think this is starting to take shape.

@mrizzi
Copy link
Collaborator

mrizzi commented Aug 23, 2023

@pxp928 makes sense. How are you handling the database services for testing arango/neo etc? Is it just a matter of adding a postgres service to Github actions?

Maybe it's out of scope for this PR but I would suggest to evaluate testcontainers.
It would help a lot without having to rely on GH actions but relying on a solution that would easily work also locally for developers.

@pxp928
Copy link
Collaborator

pxp928 commented Aug 23, 2023

Maybe it's out of scope for this PR but I would suggest to evaluate testcontainers.
It would help a lot without having to rely on GH actions but relying on a solution that would easily work also locally for developers.

Interesting. I like the idea!

@mrizzi
Copy link
Collaborator

mrizzi commented Aug 24, 2023

So if @ivanvanderbyl is more confident with GH Services, for this PR, it's fine to add them in order to have the Postresql instance to run tests with.

Then, later on, I can work on adding Testcontainers support to guac tests for Ent and maybe also for ArangoDB to have consistency across development and testing with different backends.

ivanvanderbyl and others added 17 commits August 25, 2023 11:45
Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
…Node

Signed-off-by: mrizzi <mrizzi@redhat.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Enhance 'Node' and add 'Nodes' endpoints
Signed-off-by: mrizzi <mrizzi@redhat.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Copy link
Collaborator

@jeffmendoza jeffmendoza left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lets merge this into main and continue there for the finishing touches.

@kodiakhq kodiakhq bot merged commit 1c0a63f into guacsec:main Aug 29, 2023
8 of 9 checks passed
@ivanvanderbyl ivanvanderbyl deleted the feature/postgres-backend branch August 30, 2023 08:36
m-brophy pushed a commit to m-brophy/guac that referenced this pull request Aug 31, 2023
* Init Artifact and Ent backend

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Configure backend

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Change ID type to Int

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Correct model transform for ID

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement BuilderNode

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Fix transaction implementation to actually use tx

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add package (node) schema

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add PackageNamespace schema

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add PackageName schema

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add PackageVersions

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Document how to generate ent nodes

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add test suite helper for working with sql tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add IngestPackage and tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Generate Ent nodes for Package, NS, Names, and Versions

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add upsert support for software tree

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Ensure only two versions were inserted

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Order tree asc

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Cleanup

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implementing unique versions (WIP)

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Configure postgres in docker

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Make ent backend configurable

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add Packages query

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement preloads for Packages

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Ent isOccurrence progress WIP.

Signed-off-by: Jeff Mendoza <jlm@jlm.name>

* Improve build performance in Docker

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Enable global IDs

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Incorporate Jeff's work

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Adds Index annotation, but we probably need something different

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Move to helpers

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Bridge networking so we can poke at the db from host

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Migrate to backend package to separate generated files

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Finish IsOccurrence ingest.

Also fix Package ingest to only return the ingested package.

Signed-off-by: Jeff Mendoza <jlm@jlm.name>

* Added IsDependency ingest and query to ent backend.

Signed-off-by: Jeff Mendoza <jlm@jlm.name>

* Refactor backend into separate package, adds Source, and tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Use new ent backend package

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Cache build step

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Ignore some files for docker

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Integrate Jeff's work

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add cleanup command to delete all generated ent code

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename IsDependency to Dependency

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename IsOccurrence to Occurrence

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename ent.IsOccurrence

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Improve cleanup logic

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Experimenting

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add tests for IsDependency

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Make tests easier to read

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Cleanup tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Update readme on how to run tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add note about tx

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Try jeff's impl of ingest occurrence

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add func to ignore empty slices in cmp

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Filter dep tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Attempting to get tests passing

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement custom predicates for json qualifiers

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Change PackageVersion schema so that we can query qualifiers

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement version qualfier queries

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Remove debug statement

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Test no qualifiers

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Small refactoring

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Optimise pkgName query

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Refactor Occurrences to use Subject edge

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Simplify package version query

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Cleanup

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add more tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Integrate more of Jeff's work

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* IngestOccurrence with OccurrenceSubject

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Improve some package queries

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Fixing more tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Remove OccurrenceSubject and get one test to pass

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Make all Occurrence tests pass

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename PackageNode to PackageType

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename Source to SourceType

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Improve package queries

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Fix test

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Cleanup package transforms

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Fix our happy path test

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Import more of Jeff's work

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Expose Errorf as a global that we can replace later

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Always query empty package version

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Tighter constraints on versions

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* IngestHasSbom implementation

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Add batch ingest for Artifacts

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add IngestPackages

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Stub IngestOccurrences

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add HasSBOM tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement FindSoftware

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Limit results in search set

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename SBOM to BillOfMaterials and add SLSAAttestation

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename BuilderNode to Builder now that Ent supports it

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename some nodes

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Use global IDs on tests so that we break any hard coded deps

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Fix dependency tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement HasSBOM and fix all tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Mod tidy

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement GHSA

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement CVEs

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement OSV and refatcor advisory upserts

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Change dependency type to enum in pg

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add note to readme

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement IsVulnerability

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Slightly reduce number of fields selected

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* WIP Implementing CertifyVuln

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename Vulnerability to CertifyVuln

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implements CertifyVuln and IngestVulnerability + Tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement HashEqual Ingest and Query

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Improve Package tests and API

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Stub SLSA

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implementing PkgEqual (WIP)

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add SLSA Ingest

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement HasSLSA and IngestSLSA

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Make artifact query consistent

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Fix SLSA ingest tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add IngestMaterials

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add IngestDependencies

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add Sources query and sources tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement HasSourceAt

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement CertifyBad and IngestCertifyBad + tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement CertifyGood and IngestCertifyGood

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implementing Node interface

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Fixing PkgEquals design and tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Small cleanup for consistency

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Ensure arm compilation doesn't complain

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Improve the consistency of package queries and transactions

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Improve code reuse around package queries

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Possibly break everything

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Remove Annotations from Ent SBOM schema

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Run generators

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Fix my merge mistakes

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename ents

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Fix certify bad query

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Fix dependency tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add correct behaviour for match only empty

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add ent/contrib gql support

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Fix pkgversion tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Generate ent code with GQL Support enabled

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Schema version of pkgequal that has a & b branches instead of M2M, reverted

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add ptrWithDefault helper

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* More package tree tests

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add IngestSources

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Update qualifiers match helper

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* More gql code gen for ent

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* All implemented features passing

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Implement Scorecards

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Disable 32bit builds since they have issues with int()

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* package: added pkgSpec entities filtering

Signed-off-by: mrizzi <mrizzi@redhat.com>

* vulnerability: added CertifyVulnSpec entities filtering

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Cleanup

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Use no-op for upserts

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Update .gitignore

Co-authored-by: Mihai Maruseac <mihai.maruseac@gmail.com>

* Add neptude backend to validation

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Cleanup

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Tidy

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Rename SecurityAdvisory to Vulnerability

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Update package spec

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Mark ent as experimental

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Update vuln nodes

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Refactoring backend so that vulns work

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Comment out vuln and dep code that needs to be updated

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Enable go arm arch again

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Use inmem backend by default

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Add CertifyVEXStatement and IngestVEXStatement

Signed-off-by: mrizzi <mrizzi@redhat.com>

* CertifyVex snake_case fields

Signed-off-by: mrizzi <mrizzi@redhat.com>

* IngestVEXStatement: managed DB insert conflict with Ignore()

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Comment out Vex

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>

* Enhance 'Node' and add 'Nodes' endpoints

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Node: Added SourceType, Builder, SecurityAdvisory and refactored TestNode

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Restricted some queries and proposed new tests approach

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Refactored SecurityAdvisory to VulnerabilityType

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Completed test refactoring

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Fix Static Analysis

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Fix Lint checks

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Fix Static Analysis - copyright notice

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Enable postgres GH service

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Fix Unit tests: TestEntBackendSuite/TestCertifyBad/HappyPath

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Scorecards: fix source namespace query

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Commented TestVulnerability: endpoint commented

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Test suite util

Signed-off-by: mrizzi <mrizzi@redhat.com>

* CI for integration tests: enable postgres GH service

Signed-off-by: mrizzi <mrizzi@redhat.com>

---------

Signed-off-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Signed-off-by: Jeff Mendoza <jlm@jlm.name>
Signed-off-by: mrizzi <mrizzi@redhat.com>
Co-authored-by: Jeff Mendoza <jlm@jlm.name>
Co-authored-by: mrizzi <mrizzi@redhat.com>
Co-authored-by: Mihai Maruseac <mihai.maruseac@gmail.com>
Signed-off-by: m-brophy <mbrophy@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants