Auto-update dependencies (#223)

Produced via:
  `./hack/update-deps.sh --upgrade && ./hack/update-codegen.sh`
/assign n3wscott vagababov
/cc n3wscott vagababov
This commit is contained in:
Knative Prow Robot 2020-03-04 10:54:54 -08:00 committed by GitHub
parent 6acd3ce6bd
commit 5b74238e43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 44 additions and 16 deletions

6
Gopkg.lock generated
View File

@ -966,7 +966,7 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:8599e892ef7b4613f138689826e24cf7ce0db32faac658babd6f60bc6c1db8b8" digest = "1:594e2e8f9e26efdd32cef30b5c099d422bbe23ac6a9f38f3aed473b610351268"
name = "knative.dev/pkg" name = "knative.dev/pkg"
packages = [ packages = [
"apis", "apis",
@ -986,7 +986,7 @@
"reconciler", "reconciler",
] ]
pruneopts = "T" pruneopts = "T"
revision = "73701f1aa50ece37d044bd843a13cac6a84e3939" revision = "5605ade5242dbce408f2d2e5cf6bbc43355dfd6c"
[[projects]] [[projects]]
branch = "master" branch = "master"
@ -997,7 +997,7 @@
"tools/dep-collector", "tools/dep-collector",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "7b384c28e66cb8561f3620bd91eb9d5680686a8c" revision = "b818eb8b5c3c93358da6aa219172981c8f79d247"
[[projects]] [[projects]]
digest = "1:8730e0150dfb2b7e173890c8b9868e7a273082ef8e39f4940e3506a481cf895c" digest = "1:8730e0150dfb2b7e173890c8b9868e7a273082ef8e39f4940e3506a481cf895c"

View File

@ -154,7 +154,10 @@ const (
defaultControllerAgentName = "{{.type|lowercaseSingular}}-controller" defaultControllerAgentName = "{{.type|lowercaseSingular}}-controller"
defaultFinalizerName = "{{.type|allLowercasePlural}}.{{.group}}" defaultFinalizerName = "{{.type|allLowercasePlural}}.{{.group}}"
defaultQueueName = "{{.type|allLowercasePlural}}" defaultQueueName = "{{.type|allLowercasePlural}}"
{{if .hasClass}}classAnnotationKey = "{{ .class }}"{{end}} {{if .hasClass}}
// ClassAnnotationKey points to the annotation for the class of this resource.
ClassAnnotationKey = "{{ .class }}"
{{end}}
) )
// NewImpl returns a {{.controllerImpl|raw}} that handles queuing and feeding work from // NewImpl returns a {{.controllerImpl|raw}} that handles queuing and feeding work from

View File

@ -87,6 +87,18 @@ func (g *reconcilerControllerStubGenerator) GenerateType(c *generator.Context, t
Package: "knative.dev/pkg/configmap", Package: "knative.dev/pkg/configmap",
Name: "Watcher", Name: "Watcher",
}), }),
"classAnnotationKey": c.Universe.Variable(types.Name{
Package: g.reconcilerPkg,
Name: "ClassAnnotationKey",
}),
"annotationFilterFunc": c.Universe.Function(types.Name{
Package: "knative.dev/pkg/reconciler",
Name: "AnnotationFilterFunc",
}),
"filterHandler": c.Universe.Type(types.Name{
Package: "k8s.io/client-go/tools/cache",
Name: "FilteringResourceEventHandler",
}),
} }
sw.Do(reconcilerControllerStub, m) sw.Do(reconcilerControllerStub, m)
@ -106,15 +118,27 @@ func NewController(
{{.type|lowercaseSingular}}Informer := {{.informerGet|raw}}(ctx) {{.type|lowercaseSingular}}Informer := {{.informerGet|raw}}(ctx)
{{if .hasClass}}
classValue := "default" // TODO: update this to the appropriate value.
classFilter := {{.annotationFilterFunc|raw}}({{.classAnnotationKey|raw}}, classValue, false /*allowUnset*/)
{{end}}
// TODO: setup additional informers here. // TODO: setup additional informers here.
{{if .hasClass}}// TODO: pass in the expected value for the class annotation filter.{{end}} {{if .hasClass}}// TODO: remember to use the classFilter from above to filter appropriately.{{end}}
r := &Reconciler{} r := &Reconciler{}
impl := {{.reconcilerNewImpl|raw}}(ctx, r{{if .hasClass}}, "default"{{end}}) impl := {{.reconcilerNewImpl|raw}}(ctx, r{{if .hasClass}}, classValue{{end}})
logger.Info("Setting up event handlers.") logger.Info("Setting up event handlers.")
{{if .hasClass}}
{{.type|lowercaseSingular}}Informer.Informer().AddEventHandler({{.filterHandler|raw}}{
FilterFunc: classFilter,
Handler: controller.HandleAll(impl.Enqueue),
})
{{else}}
{{.type|lowercaseSingular}}Informer.Informer().AddEventHandler(controller.HandleAll(impl.Enqueue)) {{.type|lowercaseSingular}}Informer.Informer().AddEventHandler(controller.HandleAll(impl.Enqueue))
{{end}}
// TODO: add additional informer event handlers here. // TODO: add additional informer event handlers here.

View File

@ -263,9 +263,9 @@ func (r *reconcilerImpl) Reconcile(ctx {{.contextContext|raw}}, key string) erro
return err return err
} }
{{if .hasClass}} {{if .hasClass}}
if classValue, found := original.GetAnnotations()[classAnnotationKey]; !found || classValue != r.classValue { if classValue, found := original.GetAnnotations()[ClassAnnotationKey]; !found || classValue != r.classValue {
logger.Debugw("Skip reconciling resource, class annotation value does not match reconciler instance value.", logger.Debugw("Skip reconciling resource, class annotation value does not match reconciler instance value.",
zap.String("classKey", classAnnotationKey), zap.String("classKey", ClassAnnotationKey),
zap.String("issue", classValue+"!="+r.classValue)) zap.String("issue", classValue+"!="+r.classValue))
return nil return nil
} }

View File

@ -292,7 +292,7 @@ required = [
## Generated Reconciler Responsibilities ## Generated Reconciler Responsibilities
The goal of generating the reconcilers is to provide the controller implementor The goal of generating the reconcilers is to provide the controller implementer
a strongly typed interface, and ensure correct reconciler behaviour around a strongly typed interface, and ensure correct reconciler behaviour around
status updates, Kubernetes event creation, and queue management. status updates, Kubernetes event creation, and queue management.
@ -317,7 +317,7 @@ Optionally, support for finalizers:
``` ```
- `ReconcileKind` is only called if the resource's deletion timestamp is empty. - `ReconcileKind` is only called if the resource's deletion timestamp is empty.
- `FinalizeKind` is optional, and if implemnted by the reconciler will be called - `FinalizeKind` is optional, and if implemented by the reconciler will be called
when the resource's deletion timestamp is set. when the resource's deletion timestamp is set.
The responsibility and consequences of using the generated The responsibility and consequences of using the generated
@ -397,7 +397,7 @@ kindreconciler "knative.dev/<repo>/pkg/client/injection/reconciler/<clientgroup>
Controller related artifacts: Controller related artifacts:
- `NewImpl` - gets an injection based client and lister for <kind>, sets up - `NewImpl` - gets an injection based client and lister for `<kind>`, sets up
Kubernetes Event recorders, and delegates to `controller.NewImpl` for queue Kubernetes Event recorders, and delegates to `controller.NewImpl` for queue
management. management.
@ -408,7 +408,7 @@ impl := reconciler.NewImpl(ctx, reconcilerInstance)
Reconciler related artifacts: Reconciler related artifacts:
- `Interface` - defines the strongly typed interfaces to be implemented by a - `Interface` - defines the strongly typed interfaces to be implemented by a
controller reconciling <kind>. controller reconciling `<kind>`.
```go ```go
// Check that our Reconciler implements Interface // Check that our Reconciler implements Interface
@ -416,7 +416,7 @@ var _ addressableservicereconciler.Interface = (*Reconciler)(nil)
``` ```
- `Finalizer` - defines the strongly typed interfaces to be implemented by a - `Finalizer` - defines the strongly typed interfaces to be implemented by a
controller finalizing <kind>. controller finalizing `<kind>`.
```go ```go
// Check that our Reconciler implements Interface // Check that our Reconciler implements Interface

View File

@ -18,7 +18,8 @@ package testing
import ( import (
"context" "context"
"testing"
"go.uber.org/zap/zaptest"
"k8s.io/client-go/rest" "k8s.io/client-go/rest"
"k8s.io/client-go/tools/record" "k8s.io/client-go/tools/record"
@ -29,14 +30,14 @@ import (
) )
// SetupFakeContext sets up the the Context and the fake informers for the tests. // SetupFakeContext sets up the the Context and the fake informers for the tests.
func SetupFakeContext(t *testing.T) (context.Context, []controller.Informer) { func SetupFakeContext(t zaptest.TestingT) (context.Context, []controller.Informer) {
c, _, is := SetupFakeContextWithCancel(t) c, _, is := SetupFakeContextWithCancel(t)
return c, is return c, is
} }
// SetupFakeContextWithCancel sets up the the Context and the fake informers for the tests // SetupFakeContextWithCancel sets up the the Context and the fake informers for the tests
// The provided context can be canceled using provided callback. // The provided context can be canceled using provided callback.
func SetupFakeContextWithCancel(t *testing.T) (context.Context, context.CancelFunc, []controller.Informer) { func SetupFakeContextWithCancel(t zaptest.TestingT) (context.Context, context.CancelFunc, []controller.Informer) {
ctx, c := context.WithCancel(logtesting.TestContextWithLogger(t)) ctx, c := context.WithCancel(logtesting.TestContextWithLogger(t))
ctx = controller.WithEventRecorder(ctx, record.NewFakeRecorder(1000)) ctx = controller.WithEventRecorder(ctx, record.NewFakeRecorder(1000))
ctx, is := injection.Fake.SetupInformers(ctx, &rest.Config{}) ctx, is := injection.Fake.SetupInformers(ctx, &rest.Config{})