Skip to content

Commit

Permalink
upgrade to latest dependencies (#1206)
Browse files Browse the repository at this point in the history
bumping knative.dev/eventing a574b7b...a8533da:
  > a8533da 🔥 Fix broken job name for 0.24 release (# 5665)
  > b4cabbf [release-0.24] [PingSource] disable @every (# 5590)
bumping knative.dev/pkg dd0db4b...953af01:
  > 953af01 [release-0.24] allow unknown metadata fields (# 2255)
  > 03e7ca5 Drop redundant pointers and decoders (# 2260)

Signed-off-by: Knative Automation <automation@knative.team>
  • Loading branch information
knative-automation authored Sep 3, 2021
1 parent f643896 commit 480cb59
Show file tree
Hide file tree
Showing 8 changed files with 173 additions and 35 deletions.
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ require (
k8s.io/apiserver v0.20.7
k8s.io/client-go v0.20.7
k8s.io/utils v0.0.0-20210111153108-fddb29f9d009
knative.dev/eventing v0.24.0
knative.dev/eventing v0.24.2
knative.dev/hack v0.0.0-20210622141627-e28525d8d260
knative.dev/pkg v0.0.0-20210622173328-dd0db4b05c80
knative.dev/pkg v0.0.0-20210902173607-953af0138c75
knative.dev/reconciler-test v0.0.0-20210623134345-88c84739abd9
)
7 changes: 4 additions & 3 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1222,13 +1222,14 @@ k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAG
k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
k8s.io/utils v0.0.0-20210111153108-fddb29f9d009 h1:0T5IaWHO3sJTEmCP6mUlBvMukxPKUQWqiI/YuiBNMiQ=
k8s.io/utils v0.0.0-20210111153108-fddb29f9d009/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
knative.dev/eventing v0.24.0 h1:CoaQwZBizxZyOFJUvFcyb7vYSvpYBmfb4IYRNWUdTPE=
knative.dev/eventing v0.24.0/go.mod h1:9xo0SWkIfpXrx0lvGQO7MUlPF8cu+QCMd2gGxj6wxrU=
knative.dev/eventing v0.24.2 h1:yW3pOUKm/PixfH/lGsDVX9UdHahR2uzMoewV4PkRbK8=
knative.dev/eventing v0.24.2/go.mod h1:9xo0SWkIfpXrx0lvGQO7MUlPF8cu+QCMd2gGxj6wxrU=
knative.dev/hack v0.0.0-20210622141627-e28525d8d260 h1:f2eMtOubAOc/Q7JlvFPDKXiPlJVK+VpX2Cot8hRzCgQ=
knative.dev/hack v0.0.0-20210622141627-e28525d8d260/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
knative.dev/hack/schema v0.0.0-20210622141627-e28525d8d260/go.mod h1:ffjwmdcrH5vN3mPhO8RrF2KfNnbHeCE2C60A+2cv3U0=
knative.dev/pkg v0.0.0-20210622173328-dd0db4b05c80 h1:GHJ3lglE0/YHfBMMJqluqUNLOmsNXh7s7DBnfrkpRMM=
knative.dev/pkg v0.0.0-20210622173328-dd0db4b05c80/go.mod h1:kGegTnbZ+ljFjAE3E1+8wgaH2LMv8qYi+72o3F3cbdc=
knative.dev/pkg v0.0.0-20210902173607-953af0138c75 h1:U9Im5Wp0oKV2ZWP+V9RZSDgRqv4IhfnzObMrgzWdDRQ=
knative.dev/pkg v0.0.0-20210902173607-953af0138c75/go.mod h1:kGegTnbZ+ljFjAE3E1+8wgaH2LMv8qYi+72o3F3cbdc=
knative.dev/reconciler-test v0.0.0-20210623134345-88c84739abd9 h1:j+ZLX0o1vBxEpTc7J6QT6sSBblQHpZhJP4vxbFe+C5Y=
knative.dev/reconciler-test v0.0.0-20210623134345-88c84739abd9/go.mod h1:4wqv2WyWUC5yhTesRUVwgjv/fHTHny1RYBfdB6tVDok=
modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"context"
"encoding/base64"
"encoding/json"
"errors"
"fmt"
"strings"

Expand All @@ -37,8 +38,10 @@ func (c *PingSource) Validate(ctx context.Context) *apis.FieldError {

func (cs *PingSourceSpec) Validate(ctx context.Context) *apis.FieldError {
var errs *apis.FieldError

schedule := cs.Schedule

errs = validateDescriptor(schedule)

if cs.Timezone != "" {
schedule = "CRON_TZ=" + cs.Timezone + " " + schedule
}
Expand Down Expand Up @@ -98,3 +101,10 @@ func validateJSON(str string) error {
var objmap map[string]interface{}
return json.Unmarshal([]byte(str), &objmap)
}

func validateDescriptor(spec string) *apis.FieldError {
if strings.Contains(spec, "@every") {
return apis.ErrInvalidValue(errors.New("unsupported descriptor @every"), "schedule")
}
return nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"context"
"encoding/base64"
"encoding/json"
"errors"
"fmt"
"strings"

Expand All @@ -37,8 +38,10 @@ func (c *PingSource) Validate(ctx context.Context) *apis.FieldError {

func (cs *PingSourceSpec) Validate(ctx context.Context) *apis.FieldError {
var errs *apis.FieldError

schedule := cs.Schedule

errs = validateDescriptor(schedule)

if cs.Timezone != "" {
schedule = "CRON_TZ=" + cs.Timezone + " " + schedule
}
Expand Down Expand Up @@ -98,3 +101,10 @@ func validateJSON(str string) error {
var objmap map[string]interface{}
return json.Unmarshal([]byte(str), &objmap)
}

func validateDescriptor(spec string) *apis.FieldError {
if strings.Contains(spec, "@every") {
return apis.ErrInvalidValue(errors.New("unsupported descriptor @every"), "schedule")
}
return nil
}
131 changes: 131 additions & 0 deletions vendor/knative.dev/pkg/webhook/json/decode.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
/*
Copyright 2021 The Knative Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package json

import (
"bytes"
"encoding/json"
"io"
)

var (
emptyMeta = []byte(`:{}`)
metaPrefix = []byte(`{"metadata"`)
metaSuffix = []byte(`}`)
)

var (
// Unmarshal is an alias for json.Unmarshal
Unmarshal = json.Unmarshal

//Marshal is an alias for json.Marshal
Marshal = json.Marshal
)

// Decode will parse the json byte array to the target object. When
// unknown fields are _not_ allowed we still accept unknown
// fields in the Object's metadata
//
// See https://github.com/knative/serving/issues/11448 for details
func Decode(bites []byte, target interface{}, disallowUnknownFields bool) error {
if !disallowUnknownFields {
return json.Unmarshal(bites, target)
}

// If we don't allow unknown fields we skip validating fields in the metadata
// block since that is opaque to us and validated by the API server
start, end, err := findMetadataOffsets(bites)
if err != nil {
return err
} else if start == -1 || end == -1 {
// If for some reason the json does not have metadata continue with normal parsing
dec := json.NewDecoder(bytes.NewReader(bites))
dec.DisallowUnknownFields()
return dec.Decode(target)
}

before := bites[:start]
metadata := bites[start:end]
after := bites[end:]

// Parse everything but skip metadata
dec := json.NewDecoder(io.MultiReader(
bytes.NewReader(before),
bytes.NewReader(emptyMeta),
bytes.NewReader(after),
))

dec.DisallowUnknownFields()
if err := dec.Decode(target); err != nil {
return err
}

// Now we parse just the metadata
dec = json.NewDecoder(io.MultiReader(
bytes.NewReader(metaPrefix),
bytes.NewReader(metadata),
bytes.NewReader(metaSuffix),
))

if err := dec.Decode(target); err != nil {
return err
}

return nil
}

func findMetadataOffsets(bites []byte) (start, end int64, err error) {
start, end = -1, -1
level := 0

var (
dec = json.NewDecoder(bytes.NewReader(bites))
t json.Token
)

for {
t, err = dec.Token()
if err == io.EOF { //nolint
break
}
if err != nil {
return
}

switch v := t.(type) {
case json.Delim:
if v == '{' {
level++
} else if v == '}' {
level--
}
case string:
if v == "metadata" && level == 1 {
start = dec.InputOffset()
x := struct{}{}
if err = dec.Decode(&x); err != nil {
return -1, -1, err
}
end = dec.InputOffset()

// we exit early to stop processing the rest of the object
return
}
}
}
return -1, -1, nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@ limitations under the License.
package defaulting

import (
"bytes"
"context"
"encoding/json"
"errors"
"fmt"
"sort"
Expand Down Expand Up @@ -47,6 +45,7 @@ import (
"knative.dev/pkg/system"
"knative.dev/pkg/webhook"
certresources "knative.dev/pkg/webhook/certificates/resources"
"knative.dev/pkg/webhook/json"
"knative.dev/pkg/webhook/resourcesemantics"
)

Expand Down Expand Up @@ -241,21 +240,15 @@ func (ac *reconciler) mutate(ctx context.Context, req *admissionv1.AdmissionRequ

if len(newBytes) != 0 {
newObj = handler.DeepCopyObject().(resourcesemantics.GenericCRD)
newDecoder := json.NewDecoder(bytes.NewBuffer(newBytes))
if ac.disallowUnknownFields {
newDecoder.DisallowUnknownFields()
}
if err := newDecoder.Decode(&newObj); err != nil {
err := json.Decode(newBytes, newObj, ac.disallowUnknownFields)
if err != nil {
return nil, fmt.Errorf("cannot decode incoming new object: %w", err)
}
}
if len(oldBytes) != 0 {
oldObj = handler.DeepCopyObject().(resourcesemantics.GenericCRD)
oldDecoder := json.NewDecoder(bytes.NewBuffer(oldBytes))
if ac.disallowUnknownFields {
oldDecoder.DisallowUnknownFields()
}
if err := oldDecoder.Decode(&oldObj); err != nil {
err := json.Decode(oldBytes, oldObj, ac.disallowUnknownFields)
if err != nil {
return nil, fmt.Errorf("cannot decode incoming old object: %w", err)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@ limitations under the License.
package validation

import (
"bytes"
"context"
"encoding/json"
"errors"
"fmt"

Expand All @@ -31,6 +29,7 @@ import (
kubeclient "knative.dev/pkg/client/injection/kube/client"
"knative.dev/pkg/logging"
"knative.dev/pkg/webhook"
"knative.dev/pkg/webhook/json"
"knative.dev/pkg/webhook/resourcesemantics"
)

Expand Down Expand Up @@ -110,23 +109,17 @@ func (ac *reconciler) decodeRequestAndPrepareContext(
var newObj resourcesemantics.GenericCRD
if len(newBytes) != 0 {
newObj = handler.DeepCopyObject().(resourcesemantics.GenericCRD)
newDecoder := json.NewDecoder(bytes.NewBuffer(newBytes))
if ac.disallowUnknownFields {
newDecoder.DisallowUnknownFields()
}
if err := newDecoder.Decode(&newObj); err != nil {
err := json.Decode(newBytes, newObj, ac.disallowUnknownFields)
if err != nil {
return ctx, nil, fmt.Errorf("cannot decode incoming new object: %w", err)
}
}

var oldObj resourcesemantics.GenericCRD
if len(oldBytes) != 0 {
oldObj = handler.DeepCopyObject().(resourcesemantics.GenericCRD)
oldDecoder := json.NewDecoder(bytes.NewBuffer(oldBytes))
if ac.disallowUnknownFields {
oldDecoder.DisallowUnknownFields()
}
if err := oldDecoder.Decode(&oldObj); err != nil {
err := json.Decode(oldBytes, oldObj, ac.disallowUnknownFields)
if err != nil {
return ctx, nil, fmt.Errorf("cannot decode incoming old object: %w", err)
}
}
Expand Down Expand Up @@ -201,8 +194,7 @@ func (ac *reconciler) callback(ctx context.Context, req *admissionv1.AdmissionRe
if c, ok := ac.callbacks[gvk]; ok {
if _, supported := c.supportedVerbs[req.Operation]; supported {
unstruct := &unstructured.Unstructured{}
newDecoder := json.NewDecoder(bytes.NewBuffer(toDecode))
if err := newDecoder.Decode(&unstruct); err != nil {
if err := json.Unmarshal(toDecode, unstruct); err != nil {
return fmt.Errorf("cannot decode incoming new object: %w", err)
}

Expand Down
5 changes: 3 additions & 2 deletions vendor/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1026,7 +1026,7 @@ k8s.io/utils/buffer
k8s.io/utils/integer
k8s.io/utils/pointer
k8s.io/utils/trace
# knative.dev/eventing v0.24.0
# knative.dev/eventing v0.24.2
## explicit
knative.dev/eventing/pkg/apis/config
knative.dev/eventing/pkg/apis/duck
Expand Down Expand Up @@ -1137,7 +1137,7 @@ knative.dev/eventing/test/test_images/request-sender
# knative.dev/hack v0.0.0-20210622141627-e28525d8d260
## explicit
knative.dev/hack
# knative.dev/pkg v0.0.0-20210622173328-dd0db4b05c80
# knative.dev/pkg v0.0.0-20210902173607-953af0138c75
## explicit
knative.dev/pkg/apis
knative.dev/pkg/apis/duck
Expand Down Expand Up @@ -1225,6 +1225,7 @@ knative.dev/pkg/version
knative.dev/pkg/webhook
knative.dev/pkg/webhook/certificates
knative.dev/pkg/webhook/certificates/resources
knative.dev/pkg/webhook/json
knative.dev/pkg/webhook/resourcesemantics
knative.dev/pkg/webhook/resourcesemantics/defaulting
knative.dev/pkg/webhook/resourcesemantics/validation
Expand Down

0 comments on commit 480cb59

Please sign in to comment.