Skip to content

Commit

Permalink
chore: update golang x tools version
Browse files Browse the repository at this point in the history
Signed-off-by: Rory Z <[email protected]>
  • Loading branch information
Rory-Z committed Apr 8, 2024
1 parent a761bf3 commit f0eb92f
Show file tree
Hide file tree
Showing 21 changed files with 401 additions and 1,237 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/cts.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: '1.20'
go-version: '1.21'
- name: install kubebuilder
run: |
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
Expand Down Expand Up @@ -127,7 +127,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: '1.20'
go-version: '1.21'
- name: Deploy operator
timeout-minutes: 5
uses: ./.github/actions/deploy-operator
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
--set installCRDs=true
- uses: actions/setup-go@v3
with:
go-version: '1.20'
go-version: '1.21'
- uses: actions/checkout@v3
- name: Build image
env:
Expand Down
8 changes: 3 additions & 5 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,9 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: '1.20'
go-version: '1.21'
- uses: golangci/golangci-lint-action@v3
with:
## TODO: https://github.com/golangci/golangci-lint-action/issues/759
version: v1.52.2
args: --timeout=5m
- run: go install github.com/google/go-licenses@latest
- run: $(go env GOPATH)/bin/go-licenses check . --disallowed_types forbidden,restricted,unknown
Expand Down Expand Up @@ -80,7 +78,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: '1.20'
go-version: '1.21'
- run: go install github.com/onsi/ginkgo/v2/ginkgo@latest
- name: Install Telepresence
env:
Expand Down Expand Up @@ -110,7 +108,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: '1.20'
go-version: '1.21'
- run: make test
- uses: actions/upload-artifact@v3
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/upgrade.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
--set installCRDs=true
- uses: actions/setup-go@v3
with:
go-version: '1.20'
go-version: '1.21'
- uses: actions/checkout@v3
with:
fetch-depth: 0
Expand Down
17 changes: 9 additions & 8 deletions apis/apps/v1beta4/emqxbroker_webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import (
ctrl "sigs.k8s.io/controller-runtime"
logf "sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
)

// log is for logging in this package.
Expand Down Expand Up @@ -64,19 +65,19 @@ func (r *EmqxBroker) Default() {
var _ webhook.Validator = &EmqxBroker{}

// ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (r *EmqxBroker) ValidateCreate() error {
func (r *EmqxBroker) ValidateCreate() (admission.Warnings, error) {
emqxbrokerlog.Info("validate create", "name", r.Name)

if err := validateImageVersion(r, nil); err != nil {
emqxbrokerlog.Error(err, "validate create failed")
return err
return nil, err
}

return nil
return nil, nil
}

// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
func (r *EmqxBroker) ValidateUpdate(old runtime.Object) error {
func (r *EmqxBroker) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
emqxbrokerlog.Info("validate update", "name", r.Name)

callbacks := []func(new, old Emqx) error{
Expand All @@ -88,17 +89,17 @@ func (r *EmqxBroker) ValidateUpdate(old runtime.Object) error {
for _, cb := range callbacks {
if err := cb(r, old.(*EmqxBroker)); err != nil {
emqxbrokerlog.Error(err, "validate create failed")
return err
return nil, err
}
}
return nil
return nil, nil
}

// ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (r *EmqxBroker) ValidateDelete() error {
func (r *EmqxBroker) ValidateDelete() (admission.Warnings, error) {
emqxbrokerlog.Info("validate delete", "name", r.Name)

return nil
return nil, nil
}

func defaultLabelsAndAnnotations(r Emqx) {
Expand Down
107 changes: 73 additions & 34 deletions apis/apps/v1beta4/emqxbroker_webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -229,35 +229,50 @@ func TestBrokerValidateCreate(t *testing.T) {
}

t.Run("valid image version", func(t *testing.T) {
var err error
instance := broker.DeepCopy()

instance.Spec.Template.Spec.EmqxContainer.Image.Version = "4.4.14"
assert.NoError(t, instance.ValidateCreate())
_, err = instance.ValidateCreate()
assert.NoError(t, err)
instance.Spec.Template.Spec.EmqxContainer.Image.Version = "4.4.14"
assert.NoError(t, instance.ValidateCreate())
_, err = instance.ValidateCreate()
assert.NoError(t, err)
_, err = instance.ValidateCreate()

Check failure on line 241 in apis/apps/v1beta4/emqxbroker_webhook_test.go

View workflow job for this annotation

GitHub Actions / lint

ineffectual assignment to err (ineffassign)
instance.Spec.Template.Spec.EmqxContainer.Image.Version = "4.5.0"
assert.NoError(t, instance.ValidateCreate())
_, err = instance.ValidateCreate()
assert.NoError(t, err)
instance.Spec.Template.Spec.EmqxContainer.Image.Version = "4.10"
assert.NoError(t, instance.ValidateCreate())
_, err = instance.ValidateCreate()
assert.NoError(t, err)
instance.Spec.Template.Spec.EmqxContainer.Image.Version = "4.123456789"
assert.NoError(t, instance.ValidateCreate())
_, err = instance.ValidateCreate()
assert.NoError(t, err)

instance.Spec.Template.Spec.EmqxContainer.Image.Version = "latest"
assert.ErrorContains(t, instance.ValidateCreate(), "image version can not be latest")
_, err = instance.ValidateCreate()
assert.ErrorContains(t, err, "image version can not be latest")
instance.Spec.Template.Spec.EmqxContainer.Image.Version = ""
assert.ErrorContains(t, instance.ValidateCreate(), "invalid image version")
_, err = instance.ValidateCreate()
assert.ErrorContains(t, err, "invalid image version")
instance.Spec.Template.Spec.EmqxContainer.Image.Version = "fake"
assert.ErrorContains(t, instance.ValidateCreate(), "invalid image version")
_, err = instance.ValidateCreate()
assert.ErrorContains(t, err, "invalid image version")
instance.Spec.Template.Spec.EmqxContainer.Image.Version = "4.4.13"
assert.ErrorContains(t, instance.ValidateCreate(), "please upgrade to 4.4.14 or later")
_, err = instance.ValidateCreate()
assert.ErrorContains(t, err, "please upgrade to 4.4.14 or later")
instance.Spec.Template.Spec.EmqxContainer.Image.Version = "4.4"
assert.ErrorContains(t, instance.ValidateCreate(), "please upgrade to 4.4.14 or later")
_, err = instance.ValidateCreate()
assert.ErrorContains(t, err, "please upgrade to 4.4.14 or later")
instance.Spec.Template.Spec.EmqxContainer.Image.Version = "4.3"
assert.ErrorContains(t, instance.ValidateCreate(), "please upgrade to 4.4.14 or later")
_, err = instance.ValidateCreate()
assert.ErrorContains(t, err, "please upgrade to 4.4.14 or later")
instance.Spec.Template.Spec.EmqxContainer.Image.Version = "4"
assert.ErrorContains(t, instance.ValidateCreate(), "please upgrade to 4.4.14 or later")
_, err = instance.ValidateCreate()
assert.ErrorContains(t, err, "please upgrade to 4.4.14 or later")
instance.Spec.Template.Spec.EmqxContainer.Image.Version = "5.0.0"
assert.ErrorContains(t, instance.ValidateCreate(), "please downgrade to 5.0.0 earlier")
_, err = instance.ValidateCreate()
assert.ErrorContains(t, err, "please downgrade to 5.0.0 earlier")
})
}

Expand Down Expand Up @@ -291,82 +306,106 @@ func TestBrokerValidateUpdate(t *testing.T) {
}

t.Run("valid image version", func(t *testing.T) {
var err error
old := broker.DeepCopy()
newIns := broker.DeepCopy()

newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "4.4.14"
assert.NoError(t, newIns.ValidateUpdate(old))
_, err = newIns.ValidateUpdate(old)
assert.NoError(t, err)
newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "4.4.14"
assert.NoError(t, newIns.ValidateUpdate(old))
_, err = newIns.ValidateUpdate(old)
assert.NoError(t, err)
newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "4.5.0"
assert.NoError(t, newIns.ValidateUpdate(old))
_, err = newIns.ValidateUpdate(old)
assert.NoError(t, err)
newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "4.10"
assert.NoError(t, newIns.ValidateUpdate(old))
_, err = newIns.ValidateUpdate(old)
assert.NoError(t, err)
newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "4.123456789"
assert.NoError(t, newIns.ValidateUpdate(old))
_, err = newIns.ValidateUpdate(old)
assert.NoError(t, err)

newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "latest"
assert.ErrorContains(t, newIns.ValidateUpdate(old), "image version can not be latest")
_, err = newIns.ValidateUpdate(old)
assert.ErrorContains(t, err, "image version can not be latest")
newIns.Spec.Template.Spec.EmqxContainer.Image.Version = ""
assert.ErrorContains(t, newIns.ValidateUpdate(old), "invalid image version")
_, err = newIns.ValidateUpdate(old)
assert.ErrorContains(t, err, "invalid image version")
newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "fake"
assert.ErrorContains(t, newIns.ValidateUpdate(old), "invalid image version")
_, err = newIns.ValidateUpdate(old)
assert.ErrorContains(t, err, "invalid image version")
newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "4.4.13"
assert.ErrorContains(t, newIns.ValidateUpdate(old), "please upgrade to 4.4.14 or later")
_, err = newIns.ValidateUpdate(old)
assert.ErrorContains(t, err, "please upgrade to 4.4.14 or later")
newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "4.4"
assert.ErrorContains(t, newIns.ValidateUpdate(old), "please upgrade to 4.4.14 or later")
_, err = newIns.ValidateUpdate(old)
assert.ErrorContains(t, err, "please upgrade to 4.4.14 or later")
newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "4.3"
assert.ErrorContains(t, newIns.ValidateUpdate(old), "please upgrade to 4.4.14 or later")
_, err = newIns.ValidateUpdate(old)
assert.ErrorContains(t, err, "please upgrade to 4.4.14 or later")
newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "4"
assert.ErrorContains(t, newIns.ValidateUpdate(old), "please upgrade to 4.4.14 or later")
_, err = newIns.ValidateUpdate(old)
assert.ErrorContains(t, err, "please upgrade to 4.4.14 or later")
newIns.Spec.Template.Spec.EmqxContainer.Image.Version = "5.0.0"
assert.ErrorContains(t, newIns.ValidateUpdate(old), "please downgrade to 5.0.0 earlier")
_, err = newIns.ValidateUpdate(old)
assert.ErrorContains(t, err, "please downgrade to 5.0.0 earlier")
})

t.Run("valid volume template can not update", func(t *testing.T) {
var err error
old := broker.DeepCopy()
newIns := broker.DeepCopy()

assert.Nil(t, newIns.ValidateUpdate(old))
_, err = newIns.ValidateUpdate(old)
assert.Nil(t, err)

old.Spec.Persistent = &corev1.PersistentVolumeClaimTemplate{
Spec: corev1.PersistentVolumeClaimSpec{
StorageClassName: pointer.String("fake"),
},
}
assert.Error(t, newIns.ValidateUpdate(old))
assert.Error(t, err)
})

t.Run("should return error if bootstrap APIKeys is changed", func(t *testing.T) {
var err error
old := broker.DeepCopy()
broker.Spec.Template.Spec.EmqxContainer.BootstrapAPIKeys = []BootstrapAPIKey{{
Key: "change_key",
Secret: "test",
}}
assert.Error(t, broker.ValidateUpdate(old), "bootstrap APIKeys cannot be updated")
_, err = broker.ValidateUpdate(old)
assert.Error(t, err, "bootstrap APIKeys cannot be updated")
})

t.Run("valid emqxConfig can not update", func(t *testing.T) {
var err error
old := broker.DeepCopy()
newIns := broker.DeepCopy()

assert.Nil(t, newIns.ValidateUpdate(old))
_, err = newIns.ValidateUpdate(old)
assert.Nil(t, err)

newIns.Spec.Template.Spec.EmqxContainer.EmqxConfig["name"] = "emqx-test"
assert.Error(t, newIns.ValidateUpdate(old))
_, err = newIns.ValidateUpdate(old)
assert.Error(t, err)

newIns.Spec.Template.Spec.EmqxContainer.EmqxConfig["name"] = "emqx"
newIns.Spec.Template.Spec.EmqxContainer.EmqxConfig["cluster.dns.app"] = "emqx-test"
assert.Error(t, newIns.ValidateUpdate(old))
_, err = newIns.ValidateUpdate(old)
assert.Error(t, err)

newIns.Spec.Template.Spec.EmqxContainer.EmqxConfig["name"] = "emqx"
newIns.Spec.Template.Spec.EmqxContainer.EmqxConfig["cluster.dns.app"] = "emqx"
newIns.Spec.Template.Spec.EmqxContainer.EmqxConfig["listener.tcp.internal"] = "0.0.0.0:1884"
assert.Nil(t, newIns.ValidateUpdate(old))
_, err = newIns.ValidateUpdate(old)
assert.Nil(t, err)

delete(newIns.Spec.Template.Spec.EmqxContainer.EmqxConfig, "name")
delete(newIns.Spec.Template.Spec.EmqxContainer.EmqxConfig, "cluster.dns.app")
newIns.Spec.Template.Spec.EmqxContainer.EmqxConfig["listener.tcp.internal"] = "0.0.0.0:1885"
assert.Nil(t, newIns.ValidateUpdate(old))
_, err = newIns.ValidateUpdate(old)
assert.Nil(t, err)
})
}
17 changes: 9 additions & 8 deletions apis/apps/v1beta4/emqxenterprise_webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
ctrl "sigs.k8s.io/controller-runtime"
logf "sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
)

// log is for logging in this package.
Expand Down Expand Up @@ -54,19 +55,19 @@ func (r *EmqxEnterprise) Default() {
var _ webhook.Validator = &EmqxEnterprise{}

// ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (r *EmqxEnterprise) ValidateCreate() error {
func (r *EmqxEnterprise) ValidateCreate() (admission.Warnings, error) {
emqxenterpriselog.Info("validate create", "name", r.Name)

if err := validateImageVersion(r, nil); err != nil {
emqxbrokerlog.Error(err, "validate create failed")
return err
return nil, err
}

return nil
return nil, nil
}

// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
func (r *EmqxEnterprise) ValidateUpdate(old runtime.Object) error {
func (r *EmqxEnterprise) ValidateUpdate(old runtime.Object) (admission.Warnings, error) {
emqxenterpriselog.Info("validate update", "name", r.Name)

callbacks := []func(new, old Emqx) error{
Expand All @@ -78,15 +79,15 @@ func (r *EmqxEnterprise) ValidateUpdate(old runtime.Object) error {
for _, cb := range callbacks {
if err := cb(r, old.(*EmqxEnterprise)); err != nil {
emqxbrokerlog.Error(err, "validate create failed")
return err
return nil, err
}
}
return nil
return nil, nil
}

// ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (r *EmqxEnterprise) ValidateDelete() error {
func (r *EmqxEnterprise) ValidateDelete() (admission.Warnings, error) {
emqxenterpriselog.Info("validate delete", "name", r.Name)

return nil
return nil, nil
}
Loading

0 comments on commit f0eb92f

Please sign in to comment.