Skip to content

Commit 62072ef

Browse files
Merge pull request #37 from fabriziosestito/refactor/remove-easyjson
refactor: remove easyjson dependency
2 parents e308f91 + 8328543 commit 62072ef

File tree

421 files changed

+800
-81440
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

421 files changed

+800
-81440
lines changed

.github/workflows/release.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
on:
22
push:
33
branches:
4-
- main
4+
- main
55
tags:
6-
- 'v*'
6+
- "v*"
77

88
name: Release policy
99

1010
jobs:
11-
1211
test:
1312
name: run tests and linters
14-
uses: kubewarden/github-actions/.github/workflows/reusable-test-policy-go.yml@v3.1.4
13+
uses: kubewarden/github-actions/.github/workflows/reusable-test-policy-go.yml@v3.1.7
1514

1615
release:
1716
needs: test
@@ -23,6 +22,6 @@ jobs:
2322
# Required by cosign keyless signing
2423
id-token: write
2524

26-
uses: kubewarden/github-actions/.github/workflows/reusable-release-policy-go.yml@v3.1.4
25+
uses: kubewarden/github-actions/.github/workflows/reusable-release-policy-go.yml@v3.1.7
2726
with:
2827
oci-target: ghcr.io/${{ github.repository_owner }}/policies/ingress

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ name: Continuous integration
33
jobs:
44
test:
55
name: run tests and linters
6-
uses: kubewarden/github-actions/.github/workflows/reusable-test-policy-go.yml@v3.1.4
6+
uses: kubewarden/github-actions/.github/workflows/reusable-test-policy-go.yml@v3.1.7

Makefile

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
SOURCE_FILES := $(shell find . -type f -name '*.go')
22
VERSION := $(shell git describe | cut -c2-)
33

4-
policy.wasm: $(SOURCE_FILES) go.mod go.sum types_easyjson.go
4+
policy.wasm: $(SOURCE_FILES) go.mod go.sum
55
docker run \
66
--rm \
77
-e GOFLAGS="-buildvcs=false" \
88
-v ${PWD}:/src \
9-
-w /src tinygo/tinygo:0.27.0 \
9+
-w /src tinygo/tinygo:0.28.1 \
1010
tinygo build -o policy.wasm -target=wasi -no-debug .
1111

1212
artifacthub-pkg.yml: metadata.yml go.mod
@@ -21,14 +21,6 @@ artifacthub-pkg.yml: metadata.yml go.mod
2121
annotated-policy.wasm: policy.wasm metadata.yml artifacthub-pkg.yml
2222
kwctl annotate -m metadata.yml -u README.md -o annotated-policy.wasm policy.wasm
2323

24-
.PHONY: generate-easyjson
25-
types_easyjson.go: types.go
26-
docker run \
27-
--rm \
28-
-v ${PWD}:/src \
29-
-w /src \
30-
golang:1.20-alpine ./hack/generate-easyjson.sh
31-
3224
.PHONY: test
3325
test:
3426
go test -v

artifacthub-pkg.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,27 @@
44
#
55
# This config can be saved to its default location with:
66
# kwctl scaffold artifacthub > artifacthub-pkg.yml
7-
version: 0.1.15
7+
version: 0.1.16
88
name: ingress-policy
99
displayName: Ingress Policy
10-
createdAt: 2023-07-07T19:05:26.415988963Z
10+
createdAt: 2023-08-02T07:58:03.375902956Z
1111
description: Enforce requirements on Ingress resources
1212
license: Apache-2.0
1313
homeURL: https://github.com/kubewarden/ingress-policy
1414
containersImages:
1515
- name: policy
16-
image: ghcr.io/kubewarden/policies/ingress:v0.1.15
16+
image: ghcr.io/kubewarden/policies/ingress:v0.1.16
1717
keywords:
1818
- ingress
1919
links:
2020
- name: policy
21-
url: https://github.com/kubewarden/ingress-policy/releases/download/v0.1.15/policy.wasm
21+
url: https://github.com/kubewarden/ingress-policy/releases/download/v0.1.16/policy.wasm
2222
- name: source
2323
url: https://github.com/kubewarden/ingress-policy
2424
install: |
2525
The policy can be obtained using [`kwctl`](https://github.com/kubewarden/kwctl):
2626
```console
27-
kwctl pull ghcr.io/kubewarden/policies/ingress:v0.1.15
27+
kwctl pull ghcr.io/kubewarden/policies/ingress:v0.1.16
2828
```
2929
maintainers:
3030
- name: Kubewarden developers

go.mod

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,15 @@ go 1.20
55
require (
66
github.com/deckarep/golang-set/v2 v2.3.0
77
github.com/kubewarden/gjson v1.7.2
8-
github.com/kubewarden/k8s-objects v1.24.0-kw7
9-
github.com/kubewarden/policy-sdk-go v0.4.1
10-
github.com/mailru/easyjson v0.7.7
8+
github.com/kubewarden/k8s-objects v1.27.0-kw2
9+
github.com/kubewarden/policy-sdk-go v0.5.0
1110
github.com/wapc/wapc-guest-tinygo v0.3.3
1211
)
1312

14-
replace github.com/go-openapi/strfmt => github.com/kubewarden/strfmt v0.1.2
13+
replace github.com/go-openapi/strfmt => github.com/kubewarden/strfmt v0.1.3
1514

1615
require (
1716
github.com/go-openapi/strfmt v0.21.3 // indirect
18-
github.com/josharian/intern v1.0.0 // indirect
1917
github.com/tidwall/match v1.0.3 // indirect
2018
github.com/tidwall/pretty v1.0.2 // indirect
2119
)

go.sum

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,20 @@
1+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
12
github.com/deckarep/golang-set/v2 v2.3.0 h1:qs18EKUfHm2X9fA50Mr/M5hccg2tNnVqsiBImnyDs0g=
23
github.com/deckarep/golang-set/v2 v2.3.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
3-
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
4-
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
54
github.com/kubewarden/gjson v1.7.2 h1:+cLRfPqyvjwrkgE68cGdNfUy1Z6L45DjvuFH9/ofwQ0=
65
github.com/kubewarden/gjson v1.7.2/go.mod h1:jSlxpubGqBG5HHe4v8kwcc8z1JF2reJ7AJAUojw66AY=
7-
github.com/kubewarden/k8s-objects v1.24.0-kw4 h1:/XAEdK8uHUz+asM/PgUs1T4vgCN7d+tiDDb5azMOimo=
8-
github.com/kubewarden/k8s-objects v1.24.0-kw4/go.mod h1:0d8vhSnO2G4bwo58G9ncQYhsgBggGzgh+V0Wqc3CLe8=
9-
github.com/kubewarden/k8s-objects v1.24.0-kw7 h1:uXGSLyyp/qnipq7yNxFy5zebFRy8utoO+wn1fW6QkkU=
10-
github.com/kubewarden/k8s-objects v1.24.0-kw7/go.mod h1:IuIHLG1JtxjC1JnY7SyEEA9MukCh/FACcwpzaBjgdLQ=
11-
github.com/kubewarden/policy-sdk-go v0.3.0 h1:5WqhrC3eJP+gRti14d4vCyXCITeM95X4hob6QA96eX8=
12-
github.com/kubewarden/policy-sdk-go v0.3.0/go.mod h1:zJLxhZkoFVKOlHJ3mlbG8qTCvVbkZprZ7odVwVsunUo=
13-
github.com/kubewarden/policy-sdk-go v0.4.0 h1:qxYHarQ3fHD90QErZEjXRzErEOXLQVtTYKmtyv0rtMQ=
14-
github.com/kubewarden/policy-sdk-go v0.4.0/go.mod h1:pY1FrcuGdhnzzN31wNieAimI4+7rYWbtkP+tYGna0Ug=
15-
github.com/kubewarden/policy-sdk-go v0.4.1 h1:MTGxJaWWH6dZBwCdZ+FYVUclxveGzW3p4kuUJiZw+7M=
16-
github.com/kubewarden/policy-sdk-go v0.4.1/go.mod h1:pY1FrcuGdhnzzN31wNieAimI4+7rYWbtkP+tYGna0Ug=
17-
github.com/kubewarden/strfmt v0.1.2 h1:S0YUVkPeyUMikz8QssbMzfd1MC5K8ZqxLI2zfF8euMs=
18-
github.com/kubewarden/strfmt v0.1.2/go.mod h1:sqLlis8qlm4A4pnZsRyRjNxyH86fiM+7Ee7bO+uJk94=
19-
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
20-
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
6+
github.com/kubewarden/k8s-objects v1.27.0-kw2 h1:6ZA72SFtDSbCupwxlIyJimUzN0nSweMCUx5jUEnoxkw=
7+
github.com/kubewarden/k8s-objects v1.27.0-kw2/go.mod h1:wVx4Rg1HKml8yewPwAHUWp1wYSAtBlKV/tsmteDuK1g=
8+
github.com/kubewarden/policy-sdk-go v0.5.0 h1:JnSRf5pHjFzTNNp6jJbSP5a4cwzFzkUBjLujqJd+Z+w=
9+
github.com/kubewarden/policy-sdk-go v0.5.0/go.mod h1:1IZXauwI5iCuOZj7tU58nE/SZFb/HsCmj3ZpDVStVQs=
10+
github.com/kubewarden/strfmt v0.1.3 h1:bb+2rbotioROjCkziSt+hqnHXzOlumN94NxDKdV2kPI=
11+
github.com/kubewarden/strfmt v0.1.3/go.mod h1:DXoaaIYwqW1LyyRoMeyxfHUU+VUSTNFdj38juCXfRzs=
12+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
13+
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
2114
github.com/tidwall/match v1.0.3 h1:FQUVvBImDutD8wJLN6c5eMzWtjgONK9MwIBCOrUJKeE=
2215
github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
2316
github.com/tidwall/pretty v1.0.2 h1:Z7S3cePv9Jwm1KwS0513MRaoUe3S01WPbLNV40pwWZU=
2417
github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
2518
github.com/wapc/wapc-guest-tinygo v0.3.3 h1:jLebiwjVSHLGnS+BRabQ6+XOV7oihVWAc05Hf1SbeR0=
2619
github.com/wapc/wapc-guest-tinygo v0.3.3/go.mod h1:mzM3CnsdSYktfPkaBdZ8v88ZlfUDEy5Jh5XBOV3fYcw=
20+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

hack/generate-easyjson.sh

Lines changed: 0 additions & 33 deletions
This file was deleted.

settings.go

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,27 @@
11
package main
22

33
import (
4+
"encoding/json"
5+
46
mapset "github.com/deckarep/golang-set/v2"
57
kubewarden "github.com/kubewarden/policy-sdk-go"
68
kubewarden_protocol "github.com/kubewarden/policy-sdk-go/protocol"
7-
easyjson "github.com/mailru/easyjson"
89
)
910

1011
type Settings struct {
11-
RequireTls bool `json:"requireTLS"`
12+
RequireTls bool `json:"requireTLS"`
1213
AllowPorts mapset.Set[uint64] `json:"allowPorts"`
1314
DenyPorts mapset.Set[uint64] `json:"denyPorts"`
1415
}
1516

16-
func NewSettingsFromRaw(rawSettings *RawSettings) Settings {
17-
allowPorts := mapset.NewThreadUnsafeSet[uint64](rawSettings.AllowPorts...)
18-
denyPorts := mapset.NewThreadUnsafeSet[uint64](rawSettings.DenyPorts...)
19-
20-
return Settings{
21-
RequireTls: rawSettings.RequireTls,
22-
AllowPorts: allowPorts,
23-
DenyPorts: denyPorts,
24-
}
25-
}
26-
2717
func NewSettingsFromValidationReq(validationReq *kubewarden_protocol.ValidationRequest) (Settings, error) {
28-
rawSettings := RawSettings{}
29-
err := easyjson.Unmarshal(validationReq.Settings, &rawSettings)
18+
settings := Settings{}
19+
err := json.Unmarshal(validationReq.Settings, &settings)
3020
if err != nil {
3121
return Settings{}, err
3222
}
3323

34-
return NewSettingsFromRaw(&rawSettings), nil
24+
return settings, nil
3525
}
3626

3727
// The AllowPorts and DenyPorts should not have any
@@ -41,16 +31,37 @@ func (s *Settings) Valid() bool {
4131
return common.Cardinality() == 0
4232
}
4333

34+
func (s *Settings) UnmarshalJSON(data []byte) error {
35+
// This is needed becaus golang-set v2.3.0 has a bug that prevents
36+
// the correct unmarshalling of ThreadUnsafeSet types.
37+
rawSettings := struct {
38+
RequireTls bool `json:"requireTLS"`
39+
AllowPorts []uint64 `json:"allowPorts"`
40+
DenyPorts []uint64 `json:"denyPorts"`
41+
}{}
42+
43+
err := json.Unmarshal(data, &rawSettings)
44+
if err != nil {
45+
return err
46+
}
47+
48+
s.RequireTls = rawSettings.RequireTls
49+
s.AllowPorts = mapset.NewThreadUnsafeSet[uint64](rawSettings.AllowPorts...)
50+
s.DenyPorts = mapset.NewThreadUnsafeSet[uint64](rawSettings.DenyPorts...)
51+
52+
return nil
53+
}
54+
4455
func validateSettings(payload []byte) ([]byte, error) {
45-
rawSettings := RawSettings{}
46-
err := easyjson.Unmarshal(payload, &rawSettings)
56+
settings := Settings{}
57+
err := json.Unmarshal(payload, &settings)
4758
if err != nil {
4859
return []byte{}, err
4960
}
5061

51-
settings := NewSettingsFromRaw(&rawSettings)
5262
if settings.Valid() {
5363
return kubewarden.AcceptSettings()
5464
}
65+
5566
return kubewarden.RejectSettings(kubewarden.Message("No port can be allowed and denied at the same time"))
5667
}

settings_test.go

Lines changed: 18 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package main
22

33
import (
4+
"encoding/json"
45
"testing"
56

7+
mapset "github.com/deckarep/golang-set/v2"
68
networkingv1 "github.com/kubewarden/k8s-objects/api/networking/v1"
79
metav1 "github.com/kubewarden/k8s-objects/apimachinery/pkg/apis/meta/v1"
810
kubewarden_protocol "github.com/kubewarden/policy-sdk-go/protocol"
911
kubewarden_testing "github.com/kubewarden/policy-sdk-go/testing"
10-
"github.com/mailru/easyjson"
1112
)
1213

1314
func TestParsingSettingsWithAllValuesProvidedFromValidationReq(t *testing.T) {
@@ -18,18 +19,18 @@ func TestParsingSettingsWithAllValuesProvidedFromValidationReq(t *testing.T) {
1819
},
1920
}
2021

21-
rawSettings := RawSettings{
22+
expectedSettings := Settings{
2223
RequireTls: true,
23-
AllowPorts: []uint64{443},
24-
DenyPorts: []uint64{80, 8080},
24+
AllowPorts: mapset.NewThreadUnsafeSet[uint64](443),
25+
DenyPorts: mapset.NewThreadUnsafeSet[uint64](80, 8080),
2526
}
2627

27-
validationReqRaw, err := kubewarden_testing.BuildValidationRequest(ingress, rawSettings)
28+
validationReqRaw, err := kubewarden_testing.BuildValidationRequest(ingress, &expectedSettings)
2829
if err != nil {
2930
t.Errorf("Unexpected error %+v", err)
3031
}
3132
validationReq := kubewarden_protocol.ValidationRequest{}
32-
err = easyjson.Unmarshal(validationReqRaw, &validationReq)
33+
err = json.Unmarshal(validationReqRaw, &validationReq)
3334
if err != nil {
3435
t.Errorf("Unexpected error %+v", err)
3536
}
@@ -63,18 +64,18 @@ func TestParsingSettingsWithSomeValuesProvided(t *testing.T) {
6364
},
6465
}
6566

66-
rawSettings := RawSettings{
67+
expectedSettings := Settings{
6768
RequireTls: false,
68-
AllowPorts: []uint64{443},
69-
DenyPorts: []uint64{},
69+
AllowPorts: mapset.NewThreadUnsafeSet[uint64](443),
70+
DenyPorts: mapset.NewThreadUnsafeSet[uint64](),
7071
}
7172

72-
validationReqRaw, err := kubewarden_testing.BuildValidationRequest(ingress, rawSettings)
73+
validationReqRaw, err := kubewarden_testing.BuildValidationRequest(ingress, expectedSettings)
7374
if err != nil {
7475
t.Errorf("Unexpected error %+v", err)
7576
}
7677
validationReq := kubewarden_protocol.ValidationRequest{}
77-
err = easyjson.Unmarshal(validationReqRaw, &validationReq)
78+
err = json.Unmarshal(validationReqRaw, &validationReq)
7879
if err != nil {
7980
t.Errorf("Unexpected error %+v", err)
8081
}
@@ -105,13 +106,8 @@ func TestParsingSettingsFromValidateSettingsPayload(t *testing.T) {
105106
"denyPorts": [ 80, 8080 ]
106107
}
107108
`
108-
rawRequest := RawSettings{}
109-
err := easyjson.Unmarshal([]byte(request), &rawRequest)
110-
if err != nil {
111-
t.Errorf("Unexpected error %+v", err)
112-
}
113-
114-
settings := NewSettingsFromRaw(&rawRequest)
109+
settings := Settings{}
110+
err := json.Unmarshal([]byte(request), &settings)
115111
if err != nil {
116112
t.Errorf("Unexpected error %+v", err)
117113
}
@@ -140,13 +136,8 @@ func TestSettingsAreValid(t *testing.T) {
140136
"denyPorts": [ 80, 8080 ]
141137
}
142138
`
143-
rawRequest := RawSettings{}
144-
err := easyjson.Unmarshal([]byte(request), &rawRequest)
145-
if err != nil {
146-
t.Errorf("Unexpected error %+v", err)
147-
}
148-
149-
settings := NewSettingsFromRaw(&rawRequest)
139+
settings := Settings{}
140+
err := json.Unmarshal([]byte(request), &settings)
150141
if err != nil {
151142
t.Errorf("Unexpected error %+v", err)
152143
}
@@ -164,13 +155,8 @@ func TestSettingsAreNotValid(t *testing.T) {
164155
"denyPorts": [ 80, 8080 ]
165156
}
166157
`
167-
rawRequest := RawSettings{}
168-
err := easyjson.Unmarshal([]byte(request), &rawRequest)
169-
if err != nil {
170-
t.Errorf("Unexpected error %+v", err)
171-
}
172-
173-
settings := NewSettingsFromRaw(&rawRequest)
158+
settings := Settings{}
159+
err := json.Unmarshal([]byte(request), &settings)
174160
if err != nil {
175161
t.Errorf("Unexpected error %+v", err)
176162
}

types.go

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)