Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
a8580c3
Add CELExpression field to Trigger.Filter
grantr Apr 5, 2019
5f0b69d
Add CEL filtering to Trigger receiver
grantr Apr 5, 2019
914454c
Merge branch 'master' into cel-filters
grantr Apr 8, 2019
f76ad67
Update Trigger CEL fields
grantr Apr 8, 2019
5354011
Switch to dynamic types for CEL filters
grantr Apr 8, 2019
9ea34c0
Add support for JSON event data
grantr Apr 8, 2019
3f12c5e
Add ParseExtensions and ParseData flags
grantr Apr 8, 2019
10f9f2b
Log parse and eval errors
grantr Apr 9, 2019
983f5db
Refactor trigger receiver test to use builders
grantr Apr 9, 2019
b2d4ceb
Refactor CEL variables and add tests
grantr Apr 10, 2019
076768a
Prefix CloudEvent context keys
grantr Apr 10, 2019
f2de314
Merge branch 'master' into cel-filters
grantr Apr 10, 2019
58382f4
Add documentation for Brokers changing channel provisioners. (#996)
Harwayne Apr 11, 2019
ec46349
Format markdown (#1049)
mattmoor-sockpuppet Apr 14, 2019
9ad7999
Format markdown (#1051)
mattmoor-sockpuppet Apr 14, 2019
c43fef4
Update CloudEvents SDK to 0.6.0 (#1052)
n3wscott Apr 15, 2019
767b479
Merge branch 'master' into cel-filters
grantr Apr 15, 2019
37107b2
Be specific when CloudEvents is assumed
grantr Apr 15, 2019
d69672a
Use omitempty for boolean fields in Trigger
grantr Apr 15, 2019
0b8927a
Triggers working via path, rather than host (#1045)
Harwayne Apr 15, 2019
ac7c337
Use CloudEvents instead of CloudEvent
grantr Apr 15, 2019
4d8a37b
Handle errors in GetDataMediaType
grantr Apr 15, 2019
ea90696
Format TODOs correctly
grantr Apr 15, 2019
7816d99
Add custom reporter for ImmutableField validation errors (#1048)
Apr 15, 2019
f8317dd
Remove Istio dependency from Eventing (Part - 1) (#1044)
akashrv Apr 15, 2019
c412df6
Expand the baseline attributes available
grantr Apr 15, 2019
ebe43f1
Clarify multiple filter strategy behavior
grantr Apr 15, 2019
acbf5bf
Use DataMediaType to check for parseable data
grantr Apr 15, 2019
6cd376b
update test-infra (#1056)
chaodaiG Apr 15, 2019
3b06453
Fix errors in test readme (#1046)
chizhg Apr 15, 2019
11b760e
Run e2e tests in parallel and refactoring (#1042)
chizhg Apr 17, 2019
c1c4070
Add a Deprecated condition on 'in-memory-channel' Channels. (#1062)
Harwayne Apr 17, 2019
f53dc83
Take advantage of the package alias from cloudevents. (#1054)
n3wscott Apr 17, 2019
11710b5
Combine all context attributes into the ce var
grantr Apr 18, 2019
83b079f
Reconcile using pkg/controller (#1057)
n3wscott Apr 18, 2019
3114f07
Broker is not ready until its constituent pieces are ready. (#1064)
Harwayne Apr 19, 2019
ba92d78
Add e2e testing support for gcp-pubsub CCP (#1066)
chizhg Apr 19, 2019
ca196e7
Trigger is not ready until its constituent pieces are ready. (#1071)
Harwayne Apr 19, 2019
bd4135e
Remove Istio dependency from Eventing (Part - 2) (#1058)
akashrv Apr 19, 2019
0f60da6
add more logs, try to find the reason for test flakiness (#1075)
chizhg Apr 20, 2019
c935a11
Fix imports for sub test. (#1078)
n3wscott Apr 22, 2019
de0edc1
Fix webhook controller on openshift (#1086)
matzew Apr 23, 2019
9024f2b
Add program caching
grantr Apr 23, 2019
a7c5431
Clarify timestamp comment
grantr Apr 23, 2019
7be0f6a
Update Trigger docs to match #1045. (#1055)
Harwayne Apr 23, 2019
dd4ce24
wait for the default ServiceAccount being created before creating new…
chizhg Apr 23, 2019
6d6da06
Update Boilerplate to be 2019. (#1088)
n3wscott Apr 23, 2019
5f9198c
Issue 734 Move trigger to knative/pkg/controller (#1079)
Apr 23, 2019
6e45dd7
Move channel pkg/controller (#1083)
n3wscott Apr 23, 2019
4c67561
disable gcp pubsub e2e tests until we fix the flaky tests (#1094)
chizhg Apr 23, 2019
c1390e5
Remove a few obsolete overrides (#1090)
grantr Apr 23, 2019
2ff585c
keeping the original deployments as they were, just more on finalizer…
matzew Apr 24, 2019
f907a64
Move namespace controller to pkg/controller style. (#1069)
n3wscott Apr 24, 2019
ff2c461
Remove protobuf constraint
grantr Apr 23, 2019
8b57640
Merge branch 'master' into cel-filters
grantr Apr 24, 2019
447ec15
add more unit tests for trigger (#1097)
Apr 24, 2019
cc11eaa
update test-infra dep (#1098)
chizhg Apr 25, 2019
739c89b
Kafka dispatcher no need for a statefulset (#972)
matzew Apr 25, 2019
47e3de9
API + Reconciler for CronJobSource. (#1092)
n3wscott Apr 25, 2019
abba8f3
k8s forces additionalProperties to true, hence no need to set it ours…
matzew Apr 25, 2019
9565689
Remove Istio dependency from Eventing (Part - 3) - Natss (#1074)
akashrv Apr 25, 2019
2a3b8a2
Broker controller new infrastructure (#1073)
nachocano Apr 25, 2019
6c549cc
Add OWNERS for the Channel implementations, based on those who volunt…
Harwayne Apr 25, 2019
a5a24f5
Move Container source to Eventing, migrate to pkg/controller (#1099)
n3wscott Apr 25, 2019
88dcdf0
make sure NewController doesn't return nil (#1103)
Apr 25, 2019
f707bfd
Consistency is king, use "" for the filter (#1102)
matzew Apr 25, 2019
c4324b0
Add data validation on subscription reconciler (#1100)
shashwathi Apr 26, 2019
54500a2
Event Registry (#1105)
nachocano Apr 26, 2019
285b11a
Remove Istio dependency from Eventing (Part - 4) - gcp-pubsub (#1107)
akashrv Apr 29, 2019
c67c680
compile-time assert numControllers == len(controllersArray) (#1112)
syedriko Apr 30, 2019
b8a1d73
Fix for https://github.com/knative/eventing/issues/1109 (#1118)
syedriko Apr 30, 2019
7081d16
golang format tools (#1123)
mattmoor-sockpuppet Apr 30, 2019
cb2b248
Fix spelling errors (#1124)
mattmoor-sockpuppet Apr 30, 2019
3546f63
Enable e2e testing for NATSS (#1126)
chizhg Apr 30, 2019
8c96f44
Namespace Controller watching for Broker, ServiceAccount, and RoleBin…
nachocano Apr 30, 2019
c7f1582
move apiserver source to eventing (#1108)
lionelvillard May 1, 2019
aaecace
golang format tools (#1132)
mattmoor-sockpuppet May 1, 2019
da72a31
Remove Istio dependency from Eventing (Part - 5) - final cleanup (#1119)
akashrv May 1, 2019
55bd743
Merge branch 'master' into cel-filters
grantr May 1, 2019
4253a4a
Remove unneeded log keys. (#1135)
Harwayne May 1, 2019
15bf0ea
Upgrade knative/pkg for new stackdriver exporter (#1139)
grantr May 1, 2019
b5f5351
Merge branch 'master' into cel-filters
grantr May 1, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
296 changes: 250 additions & 46 deletions Gopkg.lock

Large diffs are not rendered by default.

58 changes: 20 additions & 38 deletions Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ required = [
"k8s.io/code-generator/cmd/informer-gen",
"github.com/knative/test-infra/scripts",
"github.com/knative/test-infra/tools/dep-collector",
"github.com/knative/build/pkg/apis/build/v1alpha1",
]

[prune]
Expand All @@ -27,56 +26,40 @@ required = [
name = "github.com/knative/test-infra"
non-go = false

# Use HEAD (2018-04-21) to pick up:
# https://github.com/spf13/cobra/pull/662
# TODO this can be changed to a version constraint on 0.0.3 which has this commit
# [[constraint]]
# name = "github.com/spf13/cobra"
# version = "0.0.3"
[[override]]
name = "github.com/spf13/cobra"
revision = "615425954c3b0d9485a7027d4d451fdcdfdee84e"

# TODO this can be changed to a version constraint on 1.0.3 which has this commit
# [[constraint]]
# name = "github.com/spf13/pflag"
# version = "1.0.3"
[[override]]
name = "github.com/spf13/pflag"
revision = "583c0c0531f06d5278b7d917446061adc344b5cd"

# TODO why is this overridden?
[[override]]
name = "gopkg.in/yaml.v2"
version = "v2.2.1"

# TODO(https://github.com/knative/eventing/issues/1065): if we get to update k8s.io to > 1.13, we can remove
# k8s-dynamic-fake-simple.patch in ./hack/update-deps.sh
#
# Overridden to ensure compatibility with GKE
# GKE version as of 2019-01-24 is 1.11
# controller-runtime 0.1.9 requires at least 1.12
[[override]]
name = "k8s.io/api"
version = "kubernetes-1.12.5"
version = "kubernetes-1.12.6"

# Overridden to ensure compatibility with GKE
# GKE version as of 2019-01-24 is 1.11
# controller-runtime 0.1.9 requires at least 1.12
[[override]]
name = "k8s.io/apimachinery"
version = "kubernetes-1.12.5"
version = "kubernetes-1.12.6"

# Overridden to ensure compatibility with GKE
# GKE version as of 2019-01-24 is 1.11
# controller-runtime 0.1.9 requires at least 1.12
[[override]]
name = "k8s.io/code-generator"
version = "kubernetes-1.12.5"
version = "kubernetes-1.12.6"

# Overridden to ensure compatibility with GKE
# GKE version as of 2019-01-24 is 1.11
# controller-runtime 0.1.9 requires at least 1.12
[[override]]
name = "k8s.io/client-go"
version = "kubernetes-1.12.5"
version = "kubernetes-1.12.6"

# This is the commit at which k8s depends on this in 1.11
# It seems to be broken at HEAD.
Expand All @@ -86,22 +69,12 @@ required = [
name = "github.com/json-iterator/go"
revision = "f2b4162afba35581b6d4a50d3b8f34e33c144682"

# TODO why is this overridden?
[[override]]
name = "github.com/golang/protobuf"
version = "v1.1.0"

# TODO why is this overridden?
[[override]]
name = "golang.org/x/oauth2"
revision = "cdc340f7c179dbbfa4afd43b7614e8fcadde4269"

# Constrain the version of knative/pkg we would like to import.
# This controls when we upgrade apis independently of Serving.
[[constraint]]
[[override]]
name = "github.com/knative/pkg"
# HEAD as of 2019-04-08
revision = "2b574edcd712e848556c69cc95a2622145284882"
# HEAD as of 2019-05-01
revision = "f95c27ee8cdceb4545b57c7d4cf283a94d303dca"

# TODO why is this overridden?
[[override]]
Expand Down Expand Up @@ -130,4 +103,13 @@ required = [

[[constraint]]
name = "github.com/cloudevents/sdk-go"
version = "=0.4.4"
version = "=0.6.0"

[[constraint]]
name = "github.com/google/cel-go"
version = "=0.2.0"

# needed because pkg upgraded
[[override]]
name = "go.uber.org/zap"
revision = "67bc79d13d155c02fd008f721863ff8cc5f30659"
21 changes: 21 additions & 0 deletions OWNERS_ALIASES
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
aliases:
# These aliases are for OWNERS of the various Channel implementations. These
# Are in addition to the repo level OWNERS.

gcp-pubsub-approvers:
- Harwayne
gcp-pubsub-reviewers:
- Harwayne

kafka-approvers:
- bbrowning
- matzew
kafka-reviewers:
- bbrowning
- matzew

natss-approvers:
- Abd4llA
natss-reviewers:
- Abd4llA

136 changes: 136 additions & 0 deletions cmd/apiserver_receive_adapter/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
/*
Copyright 2019 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 main

import (
"flag"
"time"

"k8s.io/client-go/rest"

// Uncomment the following line to load the gcp plugin (only required to authenticate against GKE clusters).
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"

"github.com/knative/eventing/pkg/reconciler"

"github.com/kelseyhightower/envconfig"
"github.com/knative/eventing/pkg/adapter/apiserver"
"github.com/knative/eventing/pkg/kncloudevents"
"github.com/knative/pkg/apis/duck"
duckv1alpha1 "github.com/knative/pkg/apis/duck/v1alpha1"
kncontroller "github.com/knative/pkg/controller"
"github.com/knative/pkg/signals"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/tools/clientcmd"
)

var (
masterURL = flag.String("master", "", "The address of the Kubernetes API server. Overrides any value in kubeconfig. Only required if out-of-cluster.")
kubeconfig = flag.String("kubeconfig", "", "Path to a kubeconfig. Only required if out-of-cluster.")
)

type envConfig struct {
SinkURI string `split_words:"true" required:"true"`
ApiVersion []string `split_words:"true" required:"true"`
Kind []string `required:"true"`
Controller []bool `required:"true"`
}

func main() {
flag.Parse()

logCfg := zap.NewProductionConfig()
logCfg.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
dlogger, err := logCfg.Build()
logger := dlogger.Sugar()

var env envConfig
err = envconfig.Process("", &env)
if err != nil {
logger.Fatalw("Error processing environment", zap.Error(err))
}

// set up signals so we handle the first shutdown signal gracefully
stopCh := signals.SetupSignalHandler()

cfg, err := clientcmd.BuildConfigFromFlags(*masterURL, *kubeconfig)
if err != nil {
logger.Fatalw("Error building kubeconfig", zap.Error(err))
}

logger = logger.With(zap.String("controller/apiserver", "adapter"))
logger.Info("Starting the controller")

numControllers := len(env.ApiVersion)
cfg.QPS = float32(numControllers) * rest.DefaultQPS
cfg.Burst = numControllers * rest.DefaultBurst
opt := reconciler.NewOptionsOrDie(cfg, logger, stopCh)

client, err := dynamic.NewForConfig(cfg)
if err != nil {
logger.Fatalw("Error building dynamic client", zap.Error(err))
}

eventsClient, err := kncloudevents.NewDefaultClient(env.SinkURI)
if err != nil {
logger.Fatalw("Error building cloud event client", zap.Error(err))
}

controllers := []*kncontroller.Impl{}

// Create one controller per resource.
for i, apiVersion := range env.ApiVersion {
kind := env.Kind[i]
controlled := env.Controller[i]

obj := &duckv1alpha1.AddressableType{}

factory := duck.TypedInformerFactory{
Client: client,
ResyncPeriod: time.Duration(10), // TODO
StopChannel: stopCh,
Type: obj,
}

gv, err := schema.ParseGroupVersion(apiVersion)
if err != nil {
logger.Fatalw("Error parsing APIVersion", zap.Error(err))
}

gvk := schema.GroupVersionKind{Kind: kind, Group: gv.Group, Version: gv.Version}

// This is really bad.
gvr, _ := meta.UnsafeGuessKindToResource(gvk)

// Get and start the informer for gvr
logger.Infof("Starting informer for %v", gvk)
informer, lister, err := factory.Get(gvr)
if err != nil {
logger.Fatalw("Error starting informer", zap.Error(err))
}
controllers = append(controllers, apiserver.NewController(opt, informer, lister, eventsClient, controlled))
}

// Start all of the controllers.
logger.Info("Starting controllers.")
go kncontroller.StartAll(stopCh, controllers...)
<-stopCh
}
21 changes: 12 additions & 9 deletions cmd/broker/ingress/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@ import (
"sync"
"time"

"github.com/cloudevents/sdk-go/pkg/cloudevents"
ceclient "github.com/cloudevents/sdk-go/pkg/cloudevents/client"
cehttp "github.com/cloudevents/sdk-go/pkg/cloudevents/transport/http"
cloudevents "github.com/cloudevents/sdk-go"
eventingv1alpha1 "github.com/knative/eventing/pkg/apis/eventing/v1alpha1"
"github.com/knative/eventing/pkg/broker"
"github.com/knative/eventing/pkg/provisioners"
Expand All @@ -42,10 +40,11 @@ import (
"go.opencensus.io/stats/view"
"go.opencensus.io/tag"
"go.uber.org/zap"
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
"sigs.k8s.io/controller-runtime/pkg/client/config"
"sigs.k8s.io/controller-runtime/pkg/manager"
crlog "sigs.k8s.io/controller-runtime/pkg/runtime/log"
// Uncomment the following line to load the gcp plugin (only required to authenticate against GKE clusters).
// _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
)

var (
Expand Down Expand Up @@ -85,7 +84,7 @@ func main() {
Path: "/",
}

ceClient, err := ceclient.NewDefault()
ceClient, err := cloudevents.NewDefaultClient()
if err != nil {
logger.Fatal("Unable to create CE client", zap.Error(err))
}
Expand Down Expand Up @@ -157,7 +156,7 @@ func getRequiredEnv(envKey string) string {

type handler struct {
logger *zap.Logger
ceClient ceclient.Client
ceClient cloudevents.Client
channelURI *url.URL
brokerName string
}
Expand Down Expand Up @@ -191,7 +190,7 @@ func (h *handler) Start(stopCh <-chan struct{}) error {
}

func (h *handler) serveHTTP(ctx context.Context, event cloudevents.Event, resp *cloudevents.EventResponse) error {
tctx := cehttp.TransportContextFrom(ctx)
tctx := cloudevents.HTTPTransportContextFrom(ctx)
if tctx.Method != http.MethodPost {
resp.Status = http.StatusMethodNotAllowed
return nil
Expand Down Expand Up @@ -220,7 +219,7 @@ func (h *handler) serveHTTP(ctx context.Context, event cloudevents.Event, resp *
return h.sendEvent(ctx, tctx, event)
}

func (h *handler) sendEvent(ctx context.Context, tctx cehttp.TransportContext, event cloudevents.Event) error {
func (h *handler) sendEvent(ctx context.Context, tctx cloudevents.HTTPTransportContext, event cloudevents.Event) error {
sendingCTX := broker.SendingContext(ctx, tctx, h.channelURI)

startTS := time.Now()
Expand All @@ -246,7 +245,11 @@ func (h *handler) decrementTTL(event *cloudevents.Event) bool {
return false
}

event.Context = broker.SetTTL(event.Context, ttl)
var err error
event.Context, err = broker.SetTTL(event.Context, ttl)
if err != nil {
h.logger.Error("failed to set TTL", zap.Error(err))
}
return true
}

Expand Down
Loading