Skip to content

Commit 3df5290

Browse files
committed
Move schema to a separate go module
This creates a schema submodule to remove dependencies from the cdi package that is more commonly used. Signed-off-by: Evan Lezar <[email protected]>
1 parent 0e064b5 commit 3df5290

File tree

10 files changed

+108
-26
lines changed

10 files changed

+108
-26
lines changed

cmd/cdi/cmd/root.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
"github.com/spf13/cobra"
2424

2525
"tags.cncf.io/container-device-interface/pkg/cdi"
26-
"tags.cncf.io/container-device-interface/pkg/cdi/validate"
2726
"tags.cncf.io/container-device-interface/schema"
2827
)
2928

@@ -65,7 +64,7 @@ func initSpecDirs() {
6564
fmt.Printf("failed to load JSON schema %s: %v\n", schemaName, err)
6665
os.Exit(1)
6766
}
68-
cdi.SetSpecValidator(validate.WithSchema(s))
67+
cdi.SetSpecValidator(schema.WithSchema(s))
6968

7069
if len(specDirs) > 0 {
7170
cache, err := cdi.NewCache(

cmd/cdi/go.mod

+6-3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ require (
99
github.com/spf13/cobra v1.6.0
1010
sigs.k8s.io/yaml v1.3.0
1111
tags.cncf.io/container-device-interface v0.0.0
12+
tags.cncf.io/container-device-interface/schema v0.0.0
1213
)
1314

1415
require (
@@ -25,6 +26,8 @@ require (
2526
tags.cncf.io/container-device-interface/specs-go v0.8.0 // indirect
2627
)
2728

28-
replace tags.cncf.io/container-device-interface => ../..
29-
30-
replace tags.cncf.io/container-device-interface/specs-go => ../../specs-go
29+
replace (
30+
tags.cncf.io/container-device-interface => ../..
31+
tags.cncf.io/container-device-interface/schema => ../../schema
32+
tags.cncf.io/container-device-interface/specs-go => ../../specs-go
33+
)

cmd/validate/go.mod

+9-4
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,21 @@ module tags.cncf.io/container-device-interface/cmd/validate
22

33
go 1.20
44

5-
require tags.cncf.io/container-device-interface v0.0.0
5+
require tags.cncf.io/container-device-interface/schema v0.0.0
66

77
require (
88
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
99
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
1010
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
11+
golang.org/x/mod v0.19.0 // indirect
1112
gopkg.in/yaml.v2 v2.4.0 // indirect
1213
sigs.k8s.io/yaml v1.3.0 // indirect
14+
tags.cncf.io/container-device-interface v0.0.0 // indirect
15+
tags.cncf.io/container-device-interface/specs-go v0.8.0 // indirect
1316
)
1417

15-
replace tags.cncf.io/container-device-interface => ../..
16-
17-
replace tags.cncf.io/container-device-interface/specs-go => ../../specs-go
18+
replace (
19+
tags.cncf.io/container-device-interface => ../..
20+
tags.cncf.io/container-device-interface/schema => ../../schema
21+
tags.cncf.io/container-device-interface/specs-go => ../../specs-go
22+
)

cmd/validate/go.sum

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:
1717
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
1818
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
1919
golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8=
20+
golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
2021
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
2122
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
2223
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

go.mod

-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ require (
77
github.com/opencontainers/runtime-spec v1.1.0
88
github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626
99
github.com/stretchr/testify v1.7.0
10-
github.com/xeipuuv/gojsonschema v1.2.0
1110
golang.org/x/sys v0.19.0
1211
sigs.k8s.io/yaml v1.3.0
1312
tags.cncf.io/container-device-interface/specs-go v0.8.0
@@ -17,8 +16,6 @@ require (
1716
github.com/davecgh/go-spew v1.1.1 // indirect
1817
github.com/pmezard/go-difflib v1.0.0 // indirect
1918
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect
20-
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
21-
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
2219
golang.org/x/mod v0.19.0 // indirect
2320
gopkg.in/yaml.v2 v2.4.0 // indirect
2421
gopkg.in/yaml.v3 v3.0.1 // indirect

pkg/cdi/cache_test.go

-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import (
3131
oci "github.com/opencontainers/runtime-spec/specs-go"
3232
"github.com/stretchr/testify/require"
3333
"sigs.k8s.io/yaml"
34-
"tags.cncf.io/container-device-interface/pkg/cdi/validate"
3534
cdi "tags.cncf.io/container-device-interface/specs-go"
3635
)
3736

@@ -1563,8 +1562,6 @@ containerEdits:
15631562
other *Cache
15641563
)
15651564

1566-
SetSpecValidator(validate.WithNamedSchema("builtin"))
1567-
15681565
if len(tc.invalid) != 0 {
15691566
dir, err = createSpecDirs(t, nil, nil)
15701567
require.NoError(t, err)

pkg/cdi/spec_test.go

-5
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@ import (
2626
"sigs.k8s.io/yaml"
2727

2828
"github.com/stretchr/testify/require"
29-
"tags.cncf.io/container-device-interface/pkg/cdi/validate"
3029
"tags.cncf.io/container-device-interface/pkg/parser"
31-
"tags.cncf.io/container-device-interface/schema"
3230
cdi "tags.cncf.io/container-device-interface/specs-go"
3331
)
3432

@@ -353,9 +351,6 @@ devices:
353351
dir, err := mkTestDir(t, nil)
354352
require.NoError(t, err)
355353

356-
SetSpecValidator(validate.WithDefaultSchema())
357-
defer SetSpecValidator(validate.WithSchema(schema.NopSchema()))
358-
359354
t.Run(tc.name, func(t *testing.T) {
360355
var (
361356
raw = &cdi.Spec{}

schema/go.mod

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
module tags.cncf.io/container-device-interface/schema
2+
3+
go 1.20
4+
5+
require (
6+
github.com/stretchr/testify v1.7.0
7+
github.com/xeipuuv/gojsonschema v1.2.0
8+
sigs.k8s.io/yaml v1.3.0
9+
tags.cncf.io/container-device-interface v0.0.0
10+
tags.cncf.io/container-device-interface/specs-go v0.8.0
11+
)
12+
13+
require (
14+
github.com/davecgh/go-spew v1.1.1 // indirect
15+
github.com/fsnotify/fsnotify v1.5.1 // indirect
16+
github.com/opencontainers/runtime-spec v1.1.0 // indirect
17+
github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 // indirect
18+
github.com/pmezard/go-difflib v1.0.0 // indirect
19+
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect
20+
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
21+
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
22+
golang.org/x/mod v0.19.0 // indirect
23+
golang.org/x/sys v0.19.0 // indirect
24+
gopkg.in/yaml.v2 v2.4.0 // indirect
25+
gopkg.in/yaml.v3 v3.0.1 // indirect
26+
)
27+
28+
replace (
29+
tags.cncf.io/container-device-interface => ../
30+
tags.cncf.io/container-device-interface/specs-go => ../specs-go
31+
)

schema/go.sum

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
2+
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
3+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
4+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
5+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6+
github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
7+
github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
8+
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
9+
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
10+
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
11+
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
12+
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
13+
github.com/mndrix/tap-go v0.0.0-20171203230836-629fa407e90b/go.mod h1:pzzDgJWZ34fGzaAZGFW22KVZDfyrYW+QABMrWnJBnSs=
14+
github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=
15+
github.com/opencontainers/runtime-spec v1.0.3-0.20220825212826-86290f6a00fb/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
16+
github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg=
17+
github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
18+
github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 h1:DmNGcqH3WDbV5k8OJ+esPWbqUOX5rMLR2PMvziDMJi0=
19+
github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626/go.mod h1:BRHJJd0E+cx42OybVYSgUvZmU0B8P9gZuRXlZUP7TKI=
20+
github.com/opencontainers/selinux v1.9.1 h1:b4VPEF3O5JLZgdTDBmGepaaIbAo0GqoF6EBRq5f/g3Y=
21+
github.com/opencontainers/selinux v1.9.1/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI=
22+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
23+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
24+
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
25+
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
26+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
27+
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
28+
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
29+
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
30+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
31+
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI=
32+
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
33+
github.com/urfave/cli v1.19.1/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
34+
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
35+
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
36+
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
37+
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
38+
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
39+
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
40+
golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8=
41+
golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
42+
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
43+
golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
44+
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
45+
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
46+
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
47+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
48+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
49+
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
50+
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
51+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
52+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
53+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
54+
sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
55+
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=

pkg/cdi/validate/schema.go schema/validate.go

+5-6
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@
1414
limitations under the License.
1515
*/
1616

17-
package validate
17+
package schema
1818

1919
import (
20-
"tags.cncf.io/container-device-interface/schema"
2120
cdi "tags.cncf.io/container-device-interface/specs-go"
2221
)
2322

@@ -27,7 +26,7 @@ const (
2726
)
2827

2928
// WithSchema returns a CDI Spec validator that uses the given Schema.
30-
func WithSchema(s *schema.Schema) func(*cdi.Spec) error {
29+
func WithSchema(s *Schema) func(*cdi.Spec) error {
3130
if s == nil {
3231
return func(*cdi.Spec) error {
3332
return nil
@@ -42,17 +41,17 @@ func WithSchema(s *schema.Schema) func(*cdi.Spec) error {
4241
// validator for it. If loading the schema fails a dummy validator is
4342
// returned.
4443
func WithNamedSchema(name string) func(*cdi.Spec) error {
45-
s, _ := schema.Load(name)
44+
s, _ := Load(name)
4645
return WithSchema(s)
4746
}
4847

4948
// WithDefaultSchema returns a CDI Spec validator that uses the default
5049
// external JSON schema, or the default builtin one if the external one
5150
// fails to load.
5251
func WithDefaultSchema() func(*cdi.Spec) error {
53-
s, err := schema.Load(DefaultExternalSchema)
52+
s, err := Load(DefaultExternalSchema)
5453
if err == nil {
5554
return WithSchema(s)
5655
}
57-
return WithSchema(schema.BuiltinSchema())
56+
return WithSchema(BuiltinSchema())
5857
}

0 commit comments

Comments
 (0)