Skip to content

Commit 3f89e09

Browse files
authored
refactor: Migrate to new bindings (#4220)
This PR migrates the project from custom Go data structures to Protobuf-generated bindings: - Removing manually defined Go models in `bindings/go/osvdev/models.go`. - Generating the Go bindings based on `osv_service_v1.proto` and putting them in a new package `bindings/go/api`. - Updating the Go client (osvdev.go) and paging logic (paging.go) to use the new generated Go types, including a a new helper function `makeRequest`. - Modifying the Makefile to handle the generation of both Go and Python bindings from proto files. - Removing the copy of `vulnerability.proto` in osv and using the canonical version from the `osv-schema` submodule. Currently generated Python codes are checked-in to the `gcp/api` directory - there will be follow-up PR to undo check-in the generated Python code.
1 parent 83eb64f commit 3f89e09

28 files changed

+2931
-588
lines changed

Makefile

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,36 @@ api-server-tests:
4848
lint:
4949
$(run-cmd) tools/lint_and_format.sh
5050

51-
build-protos:
52-
$(run-cmd) python -m grpc_tools.protoc --python_out=. --mypy_out=. --proto_path=. osv/*.proto
53-
cd gcp/api/v1 && $(run-cmd) python -m grpc_tools.protoc --include_imports --include_source_info --proto_path=googleapis --proto_path=. --proto_path=.. --descriptor_set_out=api_descriptor.pb --python_out=../. --grpc_python_out=../ --mypy_out=../ osv_service_v1.proto
51+
build-osv-protos:
52+
cd osv && $(run-cmd) python -m grpc_tools.protoc --python_out=. --mypy_out=. --proto_path=. --proto_path=osv-schema/proto vulnerability.proto importfinding.proto
53+
54+
build-api-protos:
55+
cd gcp/api/v1 && $(run-cmd) python -m grpc_tools.protoc \
56+
--include_imports \
57+
--include_source_info \
58+
--proto_path=googleapis \
59+
--proto_path=. \
60+
--proto_path=osv \
61+
--proto_path=osv/osv-schema/proto \
62+
--descriptor_set_out=api_descriptor.pb \
63+
--python_out=.. \
64+
--grpc_python_out=.. \
65+
--mypy_out=.. \
66+
vulnerability.proto importfinding.proto osv_service_v1.proto
67+
cd osv && protoc \
68+
--proto_path=. \
69+
--go_out=paths=source_relative:../bindings/go/internal/api \
70+
importfinding.proto
71+
cd gcp/api/v1 && protoc \
72+
--proto_path=googleapis \
73+
--proto_path=. \
74+
--proto_path=osv \
75+
--proto_path=osv/osv-schema/proto \
76+
--go_out=paths=source_relative:../../../bindings/go/internal/api \
77+
--go-grpc_out=paths=source_relative:../../../bindings/go/internal/api \
78+
osv_service_v1.proto
79+
80+
build-protos: build-osv-protos build-api-protos
5481

5582
run-website:
5683
cd gcp/website/frontend3 && npm install && npm run build

bindings/go/go.mod

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@ go 1.24.6
44

55
require (
66
github.com/google/go-cmp v0.7.0
7-
github.com/ossf/osv-schema/bindings/go v0.0.0-20251007010119-a9120ca6469d
7+
github.com/ossf/osv-schema/bindings/go v0.0.0-20251014054035-182a83c87455
88
golang.org/x/sync v0.17.0
9+
google.golang.org/genproto/googleapis/api v0.0.0-20251014184007-4626949a642f
10+
google.golang.org/grpc v1.76.0
11+
)
12+
13+
require (
14+
golang.org/x/net v0.42.0 // indirect
15+
golang.org/x/sys v0.34.0 // indirect
16+
golang.org/x/text v0.27.0 // indirect
17+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251007200510-49b9836ed3ff // indirect
18+
google.golang.org/protobuf v1.36.10
919
)

bindings/go/go.sum

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,42 @@
1+
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
2+
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
3+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
4+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
5+
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
6+
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
17
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
28
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
3-
github.com/ossf/osv-schema/bindings/go v0.0.0-20251007010119-a9120ca6469d h1:0cClIZG/KY9cHzY4e661KZHTzRZkGFb1oHAnjr+NK4w=
4-
github.com/ossf/osv-schema/bindings/go v0.0.0-20251007010119-a9120ca6469d/go.mod h1:/ypmJBpoMvgNp4g93snzyYoyIPmZfLdSiGn/Vq07Dfo=
9+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
10+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
11+
github.com/ossf/osv-schema/bindings/go v0.0.0-20251014054035-182a83c87455 h1:lzqmDclYSSfl7fynmc2+I2Avi/ckHKNMVg8JZRIPceE=
12+
github.com/ossf/osv-schema/bindings/go v0.0.0-20251014054035-182a83c87455/go.mod h1:Eo7R19vlnflsCRdHW1ynyNUyoRwxdaTmTWD9MtKnJTc=
13+
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
14+
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
15+
go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ=
16+
go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I=
17+
go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE=
18+
go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E=
19+
go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI=
20+
go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg=
21+
go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc=
22+
go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps=
23+
go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4=
24+
go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0=
25+
golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
26+
golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
527
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
628
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
29+
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
30+
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
31+
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
32+
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
33+
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
34+
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
35+
google.golang.org/genproto/googleapis/api v0.0.0-20251014184007-4626949a642f h1:OiFuztEyBivVKDvguQJYWq1yDcfAHIID/FVrPR4oiI0=
36+
google.golang.org/genproto/googleapis/api v0.0.0-20251014184007-4626949a642f/go.mod h1:kprOiu9Tr0JYyD6DORrc4Hfyk3RFXqkQ3ctHEum3ZbM=
37+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251007200510-49b9836ed3ff h1:A90eA31Wq6HOMIQlLfzFwzqGKBTuaVztYu/g8sn+8Zc=
38+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251007200510-49b9836ed3ff/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
39+
google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A=
40+
google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=
41+
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
42+
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=

bindings/go/internal/api/importfinding.pb.go

Lines changed: 278 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)