diff --git a/deploy/operator-role-knative.yaml b/deploy/operator-role-knative.yaml index 76b7fb5a8a..a4edc11bab 100644 --- a/deploy/operator-role-knative.yaml +++ b/deploy/operator-role-knative.yaml @@ -37,6 +37,7 @@ rules: - watch - apiGroups: - eventing.knative.dev + - messaging.knative.dev resources: - "*" verbs: diff --git a/deploy/resources.go b/deploy/resources.go index 1346f1d687..defd3a4af7 100644 --- a/deploy/resources.go +++ b/deploy/resources.go @@ -2894,6 +2894,7 @@ rules: - watch - apiGroups: - eventing.knative.dev + - messaging.knative.dev resources: - "*" verbs: diff --git a/e2e/test_support.go b/e2e/test_support.go index 38e92bfd7b..fd0b1b037f 100644 --- a/e2e/test_support.go +++ b/e2e/test_support.go @@ -39,7 +39,7 @@ import ( "github.com/apache/camel-k/pkg/util/log" "github.com/apache/camel-k/pkg/util/openshift" "github.com/google/uuid" - eventing "github.com/knative/eventing/pkg/apis/eventing/v1alpha1" + messaging "knative.dev/eventing/pkg/apis/messaging/v1alpha1" "github.com/onsi/gomega" projectv1 "github.com/openshift/api/project/v1" "github.com/spf13/cobra" @@ -496,22 +496,15 @@ func createKamelPod(ns string, name string, command ...string) error { func createKnativeChannel(ns string, name string) func() error { return func() error { - channel := eventing.Channel{ + channel := messaging.InMemoryChannel{ TypeMeta: metav1.TypeMeta{ Kind: "Channel", - APIVersion: eventing.SchemeGroupVersion.String(), + APIVersion: messaging.SchemeGroupVersion.String(), }, ObjectMeta: metav1.ObjectMeta{ Namespace: ns, Name: name, }, - Spec: eventing.ChannelSpec{ - Provisioner: &v1.ObjectReference{ - APIVersion: "eventing.knative.dev/v1alpha1", - Kind: "ClusterChannelProvisioner", - Name: "in-memory", - }, - }, } return testClient.Create(testContext, &channel) } diff --git a/examples/knative/messages-channel.yaml b/examples/knative/messages-channel.yaml index 177faf9370..fe44738483 100644 --- a/examples/knative/messages-channel.yaml +++ b/examples/knative/messages-channel.yaml @@ -15,12 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: eventing.knative.dev/v1alpha1 -kind: Channel +apiVersion: messaging.knative.dev/v1alpha1 +kind: InMemoryChannel metadata: name: messages -spec: - provisioner: - apiVersion: eventing.knative.dev/v1alpha1 - kind: ClusterChannelProvisioner - name: in-memory \ No newline at end of file diff --git a/examples/knative/words-channel.yaml b/examples/knative/words-channel.yaml index 1688cea1f6..94e0ec1813 100644 --- a/examples/knative/words-channel.yaml +++ b/examples/knative/words-channel.yaml @@ -15,12 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: eventing.knative.dev/v1alpha1 -kind: Channel +apiVersion: messaging.knative.dev/v1alpha1 +kind: InMemoryChannel metadata: name: words -spec: - provisioner: - apiVersion: eventing.knative.dev/v1alpha1 - kind: ClusterChannelProvisioner - name: in-memory \ No newline at end of file diff --git a/go.mod b/go.mod index 2c0114f22a..bedbd7316e 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,8 @@ module github.com/apache/camel-k require ( - cloud.google.com/go v0.43.0 // indirect + contrib.go.opencensus.io/exporter/prometheus v0.1.0 // indirect + contrib.go.opencensus.io/exporter/stackdriver v0.12.2 github.com/Masterminds/semver v1.4.2 github.com/alecthomas/jsonschema v0.0.0-20190122210438-a6952de1bbe6 github.com/coreos/prometheus-operator v0.29.0 @@ -10,9 +11,6 @@ require ( github.com/google/go-containerregistry v0.0.0-20190206233756-dbc4da98389f // indirect github.com/google/uuid v1.1.1 github.com/jpillora/backoff v0.0.0-20170918002102-8eab2debe79d - github.com/knative/eventing v0.7.1 - github.com/knative/pkg v0.0.0-20190624141606-d82505e6c5b4 - github.com/knative/serving v0.7.1 github.com/mitchellh/mapstructure v1.1.2 github.com/onsi/ginkgo v1.8.0 // indirect github.com/onsi/gomega v1.5.0 @@ -27,13 +25,14 @@ require ( github.com/stoewer/go-strcase v1.0.2 github.com/stretchr/testify v1.3.0 go.uber.org/multierr v1.1.0 - golang.org/x/net v0.0.0-20190628185345-da137c7871d7 // indirect - golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7 // indirect gopkg.in/yaml.v2 v2.2.2 k8s.io/api v0.0.0-20190612125737-db0771252981 k8s.io/apimachinery v0.0.0-20190612125636-6a5db36e93ad k8s.io/client-go v11.0.0+incompatible k8s.io/kube-openapi v0.0.0-20190510232812-a01b7d5d6c22 // indirect + knative.dev/eventing v0.9.0 + knative.dev/pkg v0.0.0-20190913154335-74659889c421 + knative.dev/serving v0.9.0 sigs.k8s.io/controller-runtime v0.1.10 ) diff --git a/go.sum b/go.sum index ec092e63ff..f547e8146c 100644 --- a/go.sum +++ b/go.sum @@ -5,10 +5,18 @@ cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.37.2 h1:4y4L7BdHenTfZL0HervofNTHh9Ad6mNX72cQvl+5eH0= cloud.google.com/go v0.37.2/go.mod h1:H8IAquKe2L30IxoupDgqTaQvKSwF/c8prYHynGIWQbA= +cloud.google.com/go v0.38.0 h1:ROfEUZz+Gh5pa62DJWXSaonyu3StP6EA6lPEXPI6mCo= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.43.0 h1:banaiRPAM8kUVYneOSkhgcDsLzEvL25FinuiSZaH/2w= cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= contrib.go.opencensus.io/exporter/ocagent v0.4.11/go.mod h1:7ihiYRbdcVfW4m4wlXi9WRPdv79C0fStcjNlyE6ek9s= +contrib.go.opencensus.io/exporter/prometheus v0.1.0 h1:SByaIoWwNgMdPSgl5sMqM2KDE5H/ukPWBRo314xiDvg= +contrib.go.opencensus.io/exporter/prometheus v0.1.0/go.mod h1:cGFniUXGZlKRjzOyuZJ6mgB+PgBcCIa79kEKR8YCW+A= +contrib.go.opencensus.io/exporter/stackdriver v0.12.2 h1:jU1p9F07ASK11wYgSTPKtFlTvTtCDj6R1d3nRt0ZHDE= +contrib.go.opencensus.io/exporter/stackdriver v0.12.2/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= +contrib.go.opencensus.io/exporter/stackdriver v0.12.7 h1:XWDDoMSlZchLyQZw8HKE+7vn3FpfaVR5Yz9E4ifxiU0= +contrib.go.opencensus.io/exporter/stackdriver v0.12.7/go.mod h1:ZOhmSfHIoyVaQ+bKN+lR4h7K2olTIJsrdOwWHsNGw4w= +contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-autorest v11.1.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v11.7.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= @@ -38,11 +46,18 @@ github.com/appscode/jsonpatch v0.0.0-20190108182946-7c0e3b262f30 h1:Kn3rqvbUFqSe github.com/appscode/jsonpatch v0.0.0-20190108182946-7c0e3b262f30/go.mod h1:4AJxUpXUhv4N+ziTvIcWWXgeorXpxPZOfk9HdEVr96M= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/aws/aws-sdk-go v1.19.18 h1:Hb3+b9HCqrOrbAtFstUWg7H5TQ+/EcklJtE8VShVs8o= +github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.22.1 h1://WJvJi9iq/i5TWHuK3hIC23xCZYH7Qv7SIN2vZVqxY= +github.com/aws/aws-sdk-go v1.22.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/census-instrumentation/opencensus-proto v0.2.0 h1:LzQXZOgg4CQfE6bFvXGM30YZL1WW/M337pXml+GrcZ4= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/chai2010/gettext-go v0.0.0-20170215093142-bf70f2a70fb1/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/coreos/bbolt v1.3.0/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= @@ -136,6 +151,8 @@ github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.0 h1:G8O7TerXerS4F6sx9OV7/nRfJdnXgHZu/S/7F2SN+UE= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang/glog v0.0.0-20141105023935-44145f04b68c/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -154,6 +171,7 @@ github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/addlicense v0.0.0-20190510175307-22550fa7c1b0/go.mod h1:QtPG26W17m+OIQgE6gQ24gC1M6pUaMBAbFrTIDtwG/E= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c h1:964Od4U6p2jUkFxvCydnIczKteheJEzHRToSGK3Bnlw= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= @@ -162,6 +180,8 @@ github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-containerregistry v0.0.0-20190206233756-dbc4da98389f h1:qfn7ap/7lpxI+y6FEnnoAYxJs2d07OxdC5PFuDEJo0g= github.com/google/go-containerregistry v0.0.0-20190206233756-dbc4da98389f/go.mod h1:yZAFP63pRshzrEYLXLGPmUt0Ay+2zdjmMN1loCnRLUk= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= @@ -178,7 +198,9 @@ github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.4 h1:hU4mGcQI4DaAYW+IbTun+2qEZVFxK0ySjQLTbS0VQKc= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.2.0 h1:l6N3VoaVzTncYYW+9yOz2LJJammFZGBO13sqgEhpy9g= @@ -205,6 +227,8 @@ github.com/hashicorp/golang-lru v0.0.0-20160207214719-a0d98a5f2880/go.mod h1:/m3 github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.3 h1:YPkqC67at8FYaadspW/6uE0COsBxS2656RLEr8Bppgk= +github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -217,6 +241,8 @@ github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJ github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -230,13 +256,8 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/knative/eventing v0.7.1 h1:41Jr2mGB+m27G9keCOuUS/DFfyJLbmglRzTAt/kKcg0= -github.com/knative/eventing v0.7.1/go.mod h1:SkBc5JFsl70Fq/Bjc97+uix8759e4ho0imxq8DQm4DA= -github.com/knative/pkg v0.0.0-20190624141606-d82505e6c5b4 h1:EttEM3qdT41tGjgsYk3RqIBS9vKlgIe2C+F2pZl3kgY= -github.com/knative/pkg v0.0.0-20190624141606-d82505e6c5b4/go.mod h1:7Ijfhw7rfB+H9VtosIsDYvZQ+qYTz7auK3fHW/5z4ww= -github.com/knative/serving v0.7.1 h1:PLlqzHN4MJYHeugK3yxZrwifC+nmNtJGkKEH+j4ZV0Q= -github.com/knative/serving v0.7.1/go.mod h1:ljvMfwQy2qanaM/8xnBSK4Mz3Vv2NawC2fo5kFRJS1A= github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -393,6 +414,7 @@ go.opencensus.io v0.19.2/go.mod h1:NO/8qkisMZLZ1FCsKNqtJPwc8/TaclWyY0B6wcYNg9M= go.opencensus.io v0.20.0 h1:L/ARO58pdktB6dLmYI0zAyW1XnavEmGziFd0MKfxnck= go.opencensus.io v0.20.0/go.mod h1:NO/8qkisMZLZ1FCsKNqtJPwc8/TaclWyY0B6wcYNg9M= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.uber.org/atomic v1.3.2 h1:2Oa65PReHzfn29GpvgsYwloV9AVFHPDk8tYxt2c2tr4= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -446,12 +468,13 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJV golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09 h1:KaQtG+aDELoNmXYas3TVkGNYRuq8JQ1aa7LJt8EXVyo= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7 h1:rTIdg5QFRR7XCaK4LCjBiPbx8j4DQRpdYMnGn/bJUEU= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 h1:Ao/3l156eZf2AW5wK8a7/smtodRU+gha3+BeqJ69lRk= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -489,12 +512,13 @@ golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67 h1:1Fzlr8kkDLQwqMP8GxrhptBLqZG/EDpiATneiZHY998= golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd h1:r7DufRZuZbWB7j439YfAzP8RPDa9unLkpwQKUYbIMPI= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7 h1:LepdCS8Gf/MVejFIt8lsiexZATdoGVyp5bcyS+rYoUI= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa h1:KIDDMLT1O0Nr7TSxp8xM5tJcdn8tgyAONntO829og1M= +golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2 h1:z99zHgr7hKfrUcX/KsoJk5FJfjTceCKIp96+biqP4To= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -510,6 +534,7 @@ golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011152555-a398e557df60/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181207222222-4c874b978acb/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181219222714-6e267b5cc78e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -521,6 +546,7 @@ golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190408170212-12dd9f86f350/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= @@ -529,6 +555,9 @@ google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+ google.golang.org/api v0.2.0/go.mod h1:IfRCZScioGtypHNTlz3gFk67J8uePVW7uDTBzXuIkhU= google.golang.org/api v0.3.0/go.mod h1:IuvZyQh8jgscv8qWfQ4ABd8m7hEudgBFM/EdhA3BnXw= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.5.0 h1:lj9SyhMzyoa38fgFF0oO2T6pjs5IzkLPKfVtxpyCRMM= +google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0 h1:9sdfJOzWlkqPltHAuzT2Cp+yrBeY1KRVYgms8soxMwM= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -546,16 +575,22 @@ google.golang.org/genproto v0.0.0-20181219182458-5a97ab628bfb/go.mod h1:7Ep/1NZk google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb h1:i1Ppqkc3WQXikh8bXiwHqAN5Rv3/qDCcRk0/Otx73BY= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64 h1:iKtrH9Y8mcbADOP0YFaEMth7OfuHY9xHOwNj4znpM1A= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1 h1:/7cs52RnTJmD43s3uxzlq2U7nqVTd/37viQwMrMNlOM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= @@ -583,6 +618,7 @@ honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= k8s.io/api v0.0.0-20190222213804-5cb15d344471 h1:MzQGt8qWQCR+39kbYRd0uQqsvSidpYqJLFeWiJ9l4OE= k8s.io/api v0.0.0-20190222213804-5cb15d344471/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= k8s.io/apiextensions-apiserver v0.0.0-20190228180357-d002e88f6236 h1:JfFtjaElBIgYKCWEtYQkcNrTpW+lMO4GJy8NP6SVQmM= @@ -612,6 +648,14 @@ k8s.io/kube-state-metrics v1.6.0/go.mod h1:84+q9aGVQPzXYGgtvyhZr/fSI6BdLsbPWXn37 k8s.io/kubernetes v1.13.4/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/utils v0.0.0-20190308190857-21c4ce38f2a7 h1:8r+l4bNWjRlsFYlQJnKJ2p7s1YQPj4XyXiJVqDHRx7c= k8s.io/utils v0.0.0-20190308190857-21c4ce38f2a7/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= +knative.dev/eventing v0.9.0 h1:0eqp7rES1E5DE5Hj3MOHHyM2BzCe/7Mtp5tPjYoeCxs= +knative.dev/eventing v0.9.0/go.mod h1:UxweNv8yXhsdHJitcb9R6rmfNaUD2DFi9GWwNRyIs58= +knative.dev/pkg v0.0.0-20190913154335-74659889c421 h1:gdJs7TkosL+7S2mnZpLRS4v2GJVTnY7gQ8PPjktERx8= +knative.dev/pkg v0.0.0-20190913154335-74659889c421/go.mod h1:pgODObA1dTyhNoFxPZTTjNWfx6F0aKsKzn+vaT9XO/Q= +knative.dev/pkg v0.0.0-20190924000116-25b6d3af4d22 h1:tJIYe/gaJn4ZNkZYe7W4ZqCunt29XymVbpEP5rMPSOE= +knative.dev/pkg v0.0.0-20190924000116-25b6d3af4d22/go.mod h1:pgODObA1dTyhNoFxPZTTjNWfx6F0aKsKzn+vaT9XO/Q= +knative.dev/serving v0.9.0 h1:GVnsksAEX6vMXGygvzsGPIrFTypiesaseK7emm0LKWQ= +knative.dev/serving v0.9.0/go.mod h1:x2n255JS2XBI39tmjZ8CwTxIf9EKNMCrkVuiOttLRm0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/controller-runtime v0.1.10 h1:amLOmcekVdnsD1uIpmgRqfTbQWJ2qxvQkcdeFhcotn4= sigs.k8s.io/controller-runtime v0.1.10/go.mod h1:HFAYoOh6XMV+jKF1UjFwrknPbowfyHEHHRdJMf2jMX8= diff --git a/pkg/apis/addtoscheme_knative_eventing_v1alpha1.go b/pkg/apis/addtoscheme_knative_eventing_v1alpha1.go index 8cf75a27d1..222e639c96 100644 --- a/pkg/apis/addtoscheme_knative_eventing_v1alpha1.go +++ b/pkg/apis/addtoscheme_knative_eventing_v1alpha1.go @@ -18,10 +18,12 @@ limitations under the License. package apis import ( - eventing "github.com/knative/eventing/pkg/apis/eventing/v1alpha1" + eventing "knative.dev/eventing/pkg/apis/eventing/v1alpha1" + messaging "knative.dev/eventing/pkg/apis/messaging/v1alpha1" ) func init() { // Register the types with the Scheme so the components can map objects to GroupVersionKinds and back AddToSchemes = append(AddToSchemes, eventing.AddToScheme) + AddToSchemes = append(AddToSchemes, messaging.AddToScheme) } diff --git a/pkg/apis/addtoscheme_knative_serving_v1alpha1.go b/pkg/apis/addtoscheme_knative_serving_v1alpha1.go index c037a3a9c8..b96c913c2e 100644 --- a/pkg/apis/addtoscheme_knative_serving_v1alpha1.go +++ b/pkg/apis/addtoscheme_knative_serving_v1alpha1.go @@ -18,7 +18,7 @@ limitations under the License. package apis import ( - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" + serving "knative.dev/serving/pkg/apis/serving/v1beta1" ) func init() { diff --git a/pkg/trait/classpath_test.go b/pkg/trait/classpath_test.go index 6ea833cdb1..125d75e44d 100644 --- a/pkg/trait/classpath_test.go +++ b/pkg/trait/classpath_test.go @@ -23,10 +23,11 @@ import ( "strings" "testing" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + servingv1 "knative.dev/serving/pkg/apis/serving/v1" + serving "knative.dev/serving/pkg/apis/serving/v1beta1" "github.com/apache/camel-k/pkg/apis/camel/v1alpha1" "github.com/apache/camel-k/pkg/util/kubernetes" @@ -147,7 +148,7 @@ func TestApplyClasspathTraitWithKNativeResource(t *testing.T) { trait, environment := createNominalClasspathTest() s := serving.Service{} - s.Spec.ConfigurationSpec.Template = &serving.RevisionTemplateSpec{} + s.Spec.ConfigurationSpec.Template = servingv1.RevisionTemplateSpec{} s.Spec.ConfigurationSpec.Template.Spec.Containers = []corev1.Container{ { Name: defaultContainerName, diff --git a/pkg/trait/container.go b/pkg/trait/container.go index 4b12089644..df7de6ed35 100644 --- a/pkg/trait/container.go +++ b/pkg/trait/container.go @@ -23,7 +23,7 @@ import ( "github.com/apache/camel-k/pkg/apis/camel/v1alpha1" "github.com/apache/camel-k/pkg/util/envvar" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" + serving "knative.dev/serving/pkg/apis/serving/v1beta1" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" @@ -130,11 +130,11 @@ func (t *containerTrait) Apply(e *Environment) error { } e.ConfigureVolumesAndMounts( - &service.Spec.ConfigurationSpec.GetTemplate().Spec.Volumes, + &service.Spec.ConfigurationSpec.Template.Spec.Volumes, &container.VolumeMounts, ) - service.Spec.ConfigurationSpec.GetTemplate().Spec.Containers = append(service.Spec.ConfigurationSpec.GetTemplate().Spec.Containers, container) + service.Spec.ConfigurationSpec.Template.Spec.Containers = append(service.Spec.ConfigurationSpec.Template.Spec.Containers, container) }) if t.Expose != nil && *t.Expose { diff --git a/pkg/trait/istio.go b/pkg/trait/istio.go index 4f3b353a04..fb883167bd 100644 --- a/pkg/trait/istio.go +++ b/pkg/trait/istio.go @@ -21,8 +21,8 @@ import ( "strconv" "github.com/apache/camel-k/pkg/apis/camel/v1alpha1" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" appsv1 "k8s.io/api/apps/v1" + servingv1 "knative.dev/serving/pkg/apis/serving/v1" ) type istioTrait struct { @@ -56,8 +56,8 @@ func (t *istioTrait) Apply(e *Environment) error { e.Resources.VisitDeployment(func(d *appsv1.Deployment) { d.Spec.Template.Annotations = t.injectIstioAnnotation(d.Spec.Template.Annotations, true) }) - e.Resources.VisitKnativeConfigurationSpec(func(cs *serving.ConfigurationSpec) { - cs.GetTemplate().Annotations = t.injectIstioAnnotation(cs.GetTemplate().Annotations, false) + e.Resources.VisitKnativeConfigurationSpec(func(cs *servingv1.ConfigurationSpec) { + cs.Template.Annotations = t.injectIstioAnnotation(cs.Template.Annotations, false) }) } return nil diff --git a/pkg/trait/istio_test.go b/pkg/trait/istio_test.go index 0aaae7ca7d..7f804e4871 100644 --- a/pkg/trait/istio_test.go +++ b/pkg/trait/istio_test.go @@ -26,10 +26,11 @@ import ( "github.com/stretchr/testify/assert" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + servingv1 "knative.dev/serving/pkg/apis/serving/v1" + serving "knative.dev/serving/pkg/apis/serving/v1beta1" ) func NewIstioTestEnv(t *testing.T, d *appsv1.Deployment, s *serving.Service, enabled bool) Environment { @@ -73,9 +74,9 @@ func NewIstioTestEnv(t *testing.T, d *appsv1.Deployment, s *serving.Service, ena func TestIstioInject(t *testing.T) { s := serving.Service{ - Spec: serving.ServiceSpec{ - ConfigurationSpec: serving.ConfigurationSpec{ - Template: &serving.RevisionTemplateSpec{}, + Spec: servingv1.ServiceSpec{ + ConfigurationSpec: servingv1.ConfigurationSpec{ + Template: servingv1.RevisionTemplateSpec{}, }, }, } @@ -89,15 +90,15 @@ func TestIstioInject(t *testing.T) { err := env.Catalog.apply(&env) assert.Nil(t, err) - assert.Empty(t, s.Spec.ConfigurationSpec.GetTemplate().Annotations[istioSidecarInjectAnnotation]) + assert.Empty(t, s.Spec.ConfigurationSpec.Template.Annotations[istioSidecarInjectAnnotation]) assert.NotEmpty(t, d.Spec.Template.Annotations[istioSidecarInjectAnnotation]) } func TestIstioForcedInjectTrue(t *testing.T) { s := serving.Service{ - Spec: serving.ServiceSpec{ - ConfigurationSpec: serving.ConfigurationSpec{ - Template: &serving.RevisionTemplateSpec{}, + Spec: servingv1.ServiceSpec{ + ConfigurationSpec: servingv1.ConfigurationSpec{ + Template: servingv1.RevisionTemplateSpec{}, }, }, } @@ -113,15 +114,15 @@ func TestIstioForcedInjectTrue(t *testing.T) { err := env.Catalog.apply(&env) assert.Nil(t, err) - assert.Equal(t, "true", s.Spec.ConfigurationSpec.GetTemplate().Annotations[istioSidecarInjectAnnotation]) + assert.Equal(t, "true", s.Spec.ConfigurationSpec.Template.Annotations[istioSidecarInjectAnnotation]) assert.Equal(t, "true", d.Spec.Template.Annotations[istioSidecarInjectAnnotation]) } func TestIstioForcedInjectFalse(t *testing.T) { s := serving.Service{ - Spec: serving.ServiceSpec{ - ConfigurationSpec: serving.ConfigurationSpec{ - Template: &serving.RevisionTemplateSpec{}, + Spec: servingv1.ServiceSpec{ + ConfigurationSpec: servingv1.ConfigurationSpec{ + Template: servingv1.RevisionTemplateSpec{}, }, }, } @@ -137,15 +138,15 @@ func TestIstioForcedInjectFalse(t *testing.T) { err := env.Catalog.apply(&env) assert.Nil(t, err) - assert.Equal(t, "false", s.Spec.ConfigurationSpec.GetTemplate().Annotations[istioSidecarInjectAnnotation]) + assert.Equal(t, "false", s.Spec.ConfigurationSpec.Template.Annotations[istioSidecarInjectAnnotation]) assert.Equal(t, "false", d.Spec.Template.Annotations[istioSidecarInjectAnnotation]) } func TestIstioDisabled(t *testing.T) { s := serving.Service{ - Spec: serving.ServiceSpec{ - ConfigurationSpec: serving.ConfigurationSpec{ - Template: &serving.RevisionTemplateSpec{}, + Spec: servingv1.ServiceSpec{ + ConfigurationSpec: servingv1.ConfigurationSpec{ + Template: servingv1.RevisionTemplateSpec{}, }, }, } diff --git a/pkg/trait/knative.go b/pkg/trait/knative.go index 3246138294..14705adcec 100644 --- a/pkg/trait/knative.go +++ b/pkg/trait/knative.go @@ -19,7 +19,7 @@ package trait import ( "fmt" - "net/url" + "regexp" "strings" "github.com/apache/camel-k/pkg/apis/camel/v1alpha1" @@ -27,28 +27,53 @@ import ( "github.com/apache/camel-k/pkg/util/envvar" "github.com/pkg/errors" "github.com/scylladb/go-set/strset" + k8serrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/runtime/schema" knativeapi "github.com/apache/camel-k/pkg/apis/camel/v1alpha1/knative" knativeutil "github.com/apache/camel-k/pkg/util/knative" - duck "github.com/knative/pkg/apis/duck/v1alpha1" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" ) type knativeTrait struct { BaseTrait `property:",squash"` - Configuration string `property:"configuration"` - ChannelSources string `property:"channel-sources"` - ChannelSinks string `property:"channel-sinks"` - EndpointSources string `property:"endpoint-sources"` - EndpointSinks string `property:"endpoint-sinks"` - FilterSourceChannels *bool `property:"filter-source-channels"` - Auto *bool `property:"auto"` + Configuration string `property:"configuration"` + ChannelSources string `property:"channel-sources"` + ChannelSinks string `property:"channel-sinks"` + EndpointSources string `property:"endpoint-sources"` + EndpointSinks string `property:"endpoint-sinks"` + FilterSourceChannels *bool `property:"filter-source-channels"` + ChannelAPIs []string `property:"channel-apis"` + EndpointAPIs []string `property:"endpoint-apis"` + Auto *bool `property:"auto"` } const ( knativeHistoryHeader = "ce-knativehistory" ) +var ( + kindAPIGroupVersionFormat = regexp.MustCompile(`^([^/]+)/([^/]+)/([^/]+)$`) + + defaultChannelAPIs = []string{ + "messaging.knative.dev/v1alpha1/Channel", + "eventing.knative.dev/v1alpha1/Channel", + "messaging.knative.dev/v1alpha1/InMemoryChannel", + "messaging.knative.dev/v1alpha1/KafkaChannel", + "messaging.knative.dev/v1alpha1/NatssChannel", + } + + defaultEndpointAPIs = []string{ + "serving.knative.dev/v1beta1/Service", + "serving.knative.dev/v1alpha1/Service", + "serving.knative.dev/v1/Service", + } +) + +func init() { + // Channels are also endpoints + defaultEndpointAPIs = append(defaultEndpointAPIs, defaultChannelAPIs...) +} + func newKnativeTrait() *knativeTrait { t := &knativeTrait{ BaseTrait: newBaseTrait("knative"), @@ -66,6 +91,14 @@ func (t *knativeTrait) Configure(e *Environment) (bool, error) { return false, nil } + // Always applying the defaults + if len(t.ChannelAPIs) == 0 { + t.ChannelAPIs = append(t.ChannelAPIs, defaultChannelAPIs...) + } + if len(t.EndpointAPIs) == 0 { + t.EndpointAPIs = append(t.EndpointAPIs, defaultEndpointAPIs...) + } + if t.Auto == nil || *t.Auto { if t.ChannelSources == "" { items := make([]string, 0) @@ -157,8 +190,16 @@ func (t *knativeTrait) createConfiguration(e *Environment) error { func (t *knativeTrait) createSubscriptions(e *Environment) error { channels := t.extractNames(t.ChannelSources) + types, err := decodeKindAPIGroupVersions(t.ChannelAPIs) + if err != nil { + return err + } for _, ch := range channels { - sub := knativeutil.CreateSubscription(e.Integration.Namespace, ch, e.Integration.Name) + chRef, err := knativeutil.GetAddressableReference(t.ctx, t.client, types, e.Integration.Namespace, ch) + if err != nil { + return err + } + sub := knativeutil.CreateSubscription(*chRef, e.Integration.Name) e.Resources.Add(&sub) } @@ -174,7 +215,12 @@ func (t *knativeTrait) configureChannels(e *Environment, env *knativeapi.CamelEn is := strset.Intersection(sr, sk) if is.Size() > 0 { - return fmt.Errorf("cannot use the same channels as source and synk (%s)", is.List()) + return fmt.Errorf("cannot use the same channels as source and sink (%s)", is.List()) + } + + types, err := decodeKindAPIGroupVersions(t.ChannelAPIs) + if err != nil { + return err } // Sources @@ -183,12 +229,11 @@ func (t *knativeTrait) configureChannels(e *Environment, env *knativeapi.CamelEn continue } - c, err := knativeutil.GetChannel(t.ctx, t.client, e.Integration.Namespace, ch) - if err != nil { - return err - } - if c == nil { + targetURL, err := knativeutil.GetAnySinkURL(t.ctx, t.client, types, e.Integration.Namespace, ch) + if err != nil && k8serrors.IsNotFound(err) { return errors.Errorf("cannot find channel %s", ch) + } else if err != nil { + return err } meta := map[string]string{ @@ -196,7 +241,7 @@ func (t *knativeTrait) configureChannels(e *Environment, env *knativeapi.CamelEn } if t.FilterSourceChannels != nil && *t.FilterSourceChannels { meta[knativeapi.CamelMetaFilterHeaderName] = knativeHistoryHeader - meta[knativeapi.CamelMetaFilterHeaderValue] = c.Status.Address.Hostname + meta[knativeapi.CamelMetaFilterHeaderValue] = targetURL.Host } svc := knativeapi.CamelServiceDefinition{ Name: ch, @@ -215,15 +260,14 @@ func (t *knativeTrait) configureChannels(e *Environment, env *knativeapi.CamelEn continue } - c, err := knativeutil.GetChannel(t.ctx, t.client, e.Integration.Namespace, ch) - if err != nil { - return err - } - if c == nil { + targetURL, err := knativeutil.GetAnySinkURL(t.ctx, t.client, types, e.Integration.Namespace, ch) + if err != nil && k8serrors.IsNotFound(err) { return errors.Errorf("cannot find channel %s", ch) + } else if err != nil { + return err } - - svc, err := buildServiceDefinition(ch, knativeapi.CamelServiceTypeChannel, c.Status.Address) + t.L.Infof("Found URL for channel %s: %s", ch, targetURL.String()) + svc, err := knativeapi.BuildCamelServiceDefinition(ch, knativeapi.CamelServiceTypeChannel, *targetURL) if err != nil { return errors.Wrapf(err, "cannot determine address of channel %s", ch) } @@ -245,6 +289,11 @@ func (t *knativeTrait) configureEndpoints(e *Environment, env *knativeapi.CamelE return fmt.Errorf("cannot use the same enadpoints as source and synk (%s)", is.List()) } + types, err := decodeKindAPIGroupVersions(t.EndpointAPIs) + if err != nil { + return err + } + // Sources for _, endpoint := range sources { if env.ContainsService(endpoint, knativeapi.CamelServiceTypeEndpoint) { @@ -269,14 +318,14 @@ func (t *knativeTrait) configureEndpoints(e *Environment, env *knativeapi.CamelE continue } - s, err := knativeutil.GetService(t.ctx, t.client, e.Integration.Namespace, endpoint) - if err != nil { - return err - } - if s == nil { + targetURL, err := knativeutil.GetAnySinkURL(t.ctx, t.client, types, e.Integration.Namespace, endpoint) + if err != nil && k8serrors.IsNotFound(err) { return errors.Errorf("cannot find endpoint %s", endpoint) + } else if err != nil { + return err } - svc, err := buildServiceDefinitionFromStatus(endpoint, knativeapi.CamelServiceTypeEndpoint, s.Status) + t.L.Infof("Found URL for endpoint %s: %s", endpoint, targetURL.String()) + svc, err := knativeapi.BuildCamelServiceDefinition(endpoint, knativeapi.CamelServiceTypeEndpoint, *targetURL) if err != nil { return errors.Wrapf(err, "cannot determine address of endpoint %s", endpoint) } @@ -298,32 +347,26 @@ func (t *knativeTrait) extractNames(names string) []string { return answer } -// buildServiceDefinitionFromStatus creates a CamelServiceDefinition from a Knative ServiceStatus -func buildServiceDefinitionFromStatus(name string, serviceType knativeapi.CamelServiceType, status serving.ServiceStatus) (knativeapi.CamelServiceDefinition, error) { - // use cluster-local URL from the addressable - if status.Address != nil { - return buildServiceDefinition(name, serviceType, *status.Address) - } - // fallback to using the public URL information if available - if status.URL != nil && status.URL.Host != "" { - return knativeapi.BuildCamelServiceDefinition(name, serviceType, url.URL(*status.URL)) +func decodeKindAPIGroupVersions(specs []string) ([]schema.GroupVersionKind, error) { + lst := make([]schema.GroupVersionKind, 0, len(specs)) + for _, spec := range specs { + res, err := decodeKindAPIGroupVersion(spec) + if err != nil { + return lst, err + } + lst = append(lst, res) } - return knativeapi.CamelServiceDefinition{}, errors.New("cannot determine service hostname") + return lst, nil } -// buildServiceDefinition creates a CamelServiceDefinition from a Knative Addressable -func buildServiceDefinition(name string, serviceType knativeapi.CamelServiceType, addressable duck.Addressable) (knativeapi.CamelServiceDefinition, error) { - // build it using the URL information if available - if addressable.URL != nil && addressable.URL.Host != "" { - return knativeapi.BuildCamelServiceDefinition(name, serviceType, url.URL(*addressable.URL)) - } - // fallback to using hostname - if addressable.Hostname == "" { - return knativeapi.CamelServiceDefinition{}, errors.New("cannot determine addressable hostname") - } - serviceURL, err := url.Parse(fmt.Sprintf("http://%s", addressable.Hostname)) - if err != nil { - return knativeapi.CamelServiceDefinition{}, err +func decodeKindAPIGroupVersion(spec string) (schema.GroupVersionKind, error) { + if !kindAPIGroupVersionFormat.MatchString(spec) { + return schema.GroupVersionKind{}, errors.Errorf("spec does not match the Group/Version/Kind format: %s", spec) } - return knativeapi.BuildCamelServiceDefinition(name, serviceType, *serviceURL) + matches := kindAPIGroupVersionFormat.FindStringSubmatch(spec) + return schema.GroupVersionKind{ + Group: matches[1], + Version: matches[2], + Kind: matches[3], + }, nil } diff --git a/pkg/trait/knative_service.go b/pkg/trait/knative_service.go index 63b56b760b..ad622b9503 100644 --- a/pkg/trait/knative_service.go +++ b/pkg/trait/knative_service.go @@ -24,10 +24,10 @@ import ( "github.com/apache/camel-k/pkg/apis/camel/v1alpha1" "github.com/apache/camel-k/pkg/metadata" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" - servingbeta "github.com/knative/serving/pkg/apis/serving/v1beta1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + servingv1 "knative.dev/serving/pkg/apis/serving/v1" + serving "knative.dev/serving/pkg/apis/serving/v1beta1" ) const ( @@ -198,18 +198,16 @@ func (t *knativeServiceTrait) getServiceFor(e *Environment) *serving.Service { Labels: labels, Annotations: e.Integration.Annotations, }, - Spec: serving.ServiceSpec{ - ConfigurationSpec: serving.ConfigurationSpec{ - Template: &serving.RevisionTemplateSpec{ + Spec: servingv1.ServiceSpec{ + ConfigurationSpec: servingv1.ConfigurationSpec{ + Template: servingv1.RevisionTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Labels: labels, Annotations: annotations, }, - Spec: serving.RevisionSpec{ - RevisionSpec: servingbeta.RevisionSpec{ - PodSpec: corev1.PodSpec{ - ServiceAccountName: e.Integration.Spec.ServiceAccountName, - }, + Spec: servingv1.RevisionSpec{ + PodSpec: corev1.PodSpec{ + ServiceAccountName: e.Integration.Spec.ServiceAccountName, }, }, }, diff --git a/pkg/trait/knative_service_test.go b/pkg/trait/knative_service_test.go index 91efd1400c..7b39ed0a28 100644 --- a/pkg/trait/knative_service_test.go +++ b/pkg/trait/knative_service_test.go @@ -28,7 +28,7 @@ import ( "github.com/apache/camel-k/pkg/util/kubernetes" "github.com/apache/camel-k/pkg/util/test" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" + serving "knative.dev/serving/pkg/apis/serving/v1beta1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -127,7 +127,7 @@ func TestKnativeService(t *testing.T) { assert.NotNil(t, s) - spec := s.Spec.ConfigurationSpec.GetTemplate().Spec + spec := s.Spec.ConfigurationSpec.Template.Spec assert.Len(t, spec.Containers[0].VolumeMounts, 5) assert.Len(t, spec.Volumes, 5) @@ -254,6 +254,6 @@ func TestKnativeServiceWithCustomContainerName(t *testing.T) { assert.Equal( t, environment.Integration.Spec.Traits["container"].Configuration["name"], - s.Spec.ConfigurationSpec.GetTemplate().Spec.Containers[0].Name, + s.Spec.ConfigurationSpec.Template.Spec.Containers[0].Name, ) } diff --git a/pkg/trait/knative_test.go b/pkg/trait/knative_test.go index 361129873c..a3cbfacbb6 100644 --- a/pkg/trait/knative_test.go +++ b/pkg/trait/knative_test.go @@ -19,6 +19,8 @@ package trait import ( "context" + "k8s.io/apimachinery/pkg/runtime/schema" + "knative.dev/pkg/apis" "testing" "github.com/apache/camel-k/pkg/apis/camel/v1alpha1" @@ -32,11 +34,13 @@ import ( knativeapi "github.com/apache/camel-k/pkg/apis/camel/v1alpha1/knative" k8sutils "github.com/apache/camel-k/pkg/util/kubernetes" - eventing "github.com/knative/eventing/pkg/apis/eventing/v1alpha1" - duckv1alpha1 "github.com/knative/pkg/apis/duck/v1alpha1" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + messaging "knative.dev/eventing/pkg/apis/messaging/v1alpha1" + duckv1 "knative.dev/pkg/apis/duck/v1" + duckv1alpha1 "knative.dev/pkg/apis/duck/v1alpha1" + servingv1 "knative.dev/serving/pkg/apis/serving/v1" + serving "knative.dev/serving/pkg/apis/serving/v1beta1" ) func TestKnativeEnvConfigurationFromTrait(t *testing.T) { @@ -104,7 +108,6 @@ func TestKnativeEnvConfigurationFromTrait(t *testing.T) { assert.Nil(t, err) tr := tc.GetTrait("knative").(*knativeTrait) - ok, err := tr.Configure(&environment) assert.Nil(t, err) assert.True(t, ok) @@ -236,35 +239,63 @@ func TestKnativeEnvConfigurationFromSource(t *testing.T) { assert.Equal(t, 8080, source.Port) } +func TestDecodeKindAPIGroupVersion(t *testing.T) { + kgv, err := decodeKindAPIGroupVersion("messaging.knative.dev/v1alpha1/Channel") + assert.Nil(t, err) + assert.Equal(t, schema.GroupVersionKind{ + Group: "messaging.knative.dev", + Version: "v1alpha1", + Kind: "Channel", + }, kgv) + + kgv, err = decodeKindAPIGroupVersion("messaging.knative.dev/v1alpha1/Chann/el/") + assert.NotNil(t, err) + + kgv, err = decodeKindAPIGroupVersion("messaging.knative.dev/v1alpha1") + assert.NotNil(t, err) +} + func NewFakeClient(namespace string) (client.Client, error) { + sink1URL, err := apis.ParseURL("http://endpoint-sink-1.host/") + if err != nil { + return nil, err + } + sink2URL, err := apis.ParseURL("http://endpoint-sink-2.host/") + if err != nil { + return nil, err + } return test.NewFakeClient( - &eventing.Channel{ + &messaging.Channel{ TypeMeta: metav1.TypeMeta{ Kind: "Channel", - APIVersion: eventing.SchemeGroupVersion.String(), + APIVersion: messaging.SchemeGroupVersion.String(), }, ObjectMeta: metav1.ObjectMeta{ Namespace: namespace, Name: "channel-source-1", }, - Status: eventing.ChannelStatus{ - Address: duckv1alpha1.Addressable{ - Hostname: "channel-source-1.host", + Status: messaging.ChannelStatus{ + AddressStatus: duckv1alpha1.AddressStatus{ + Address: &duckv1alpha1.Addressable{ + Hostname: "channel-source-1.host", + }, }, }, }, - &eventing.Channel{ + &messaging.Channel{ TypeMeta: metav1.TypeMeta{ Kind: "Channel", - APIVersion: eventing.SchemeGroupVersion.String(), + APIVersion: messaging.SchemeGroupVersion.String(), }, ObjectMeta: metav1.ObjectMeta{ Namespace: namespace, Name: "channel-sink-1", }, - Status: eventing.ChannelStatus{ - Address: duckv1alpha1.Addressable{ - Hostname: "channel-sink-1.host", + Status: messaging.ChannelStatus{ + AddressStatus: duckv1alpha1.AddressStatus{ + Address: &duckv1alpha1.Addressable{ + Hostname: "channel-sink-1.host", + }, }, }, }, @@ -277,10 +308,11 @@ func NewFakeClient(namespace string) (client.Client, error) { Namespace: namespace, Name: "endpoint-sink-1", }, - Status: serving.ServiceStatus{ - RouteStatusFields: serving.RouteStatusFields{ - Address: &duckv1alpha1.Addressable{ - Hostname: "endpoint-sink-1.host", + Status: servingv1.ServiceStatus{ + RouteStatusFields: servingv1.RouteStatusFields{ + + Address: &duckv1.Addressable{ + URL: sink1URL, }, }, }, @@ -294,10 +326,10 @@ func NewFakeClient(namespace string) (client.Client, error) { Namespace: namespace, Name: "endpoint-sink-2", }, - Status: serving.ServiceStatus{ - RouteStatusFields: serving.RouteStatusFields{ - Address: &duckv1alpha1.Addressable{ - Hostname: "endpoint-sink-2.host", + Status: servingv1.ServiceStatus{ + RouteStatusFields: servingv1.RouteStatusFields{ + Address: &duckv1.Addressable{ + URL: sink2URL, }, }, }, diff --git a/pkg/trait/owner.go b/pkg/trait/owner.go index e2ab4b3803..286b085c4b 100644 --- a/pkg/trait/owner.go +++ b/pkg/trait/owner.go @@ -25,7 +25,7 @@ import ( "github.com/pkg/errors" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" + serving "knative.dev/serving/pkg/apis/serving/v1beta1" appsv1 "k8s.io/api/apps/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -113,7 +113,7 @@ func (t *ownerTrait) Apply(e *Environment) error { }) e.Resources.VisitKnativeService(func(service *serving.Service) { - t.propagateLabelAndAnnotations(service.Spec.ConfigurationSpec.GetTemplate(), targetLabels, targetAnnotations) + t.propagateLabelAndAnnotations(&service.Spec.ConfigurationSpec.Template, targetLabels, targetAnnotations) }) return nil diff --git a/pkg/trait/probes_test.go b/pkg/trait/probes_test.go index 1248224fb7..e2d1b09747 100644 --- a/pkg/trait/probes_test.go +++ b/pkg/trait/probes_test.go @@ -25,10 +25,10 @@ import ( "github.com/stretchr/testify/assert" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" - servingbeta "github.com/knative/serving/pkg/apis/serving/v1beta1" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" + servingv1 "knative.dev/serving/pkg/apis/serving/v1" + serving "knative.dev/serving/pkg/apis/serving/v1beta1" ) func TestProbesDeps(t *testing.T) { @@ -101,16 +101,14 @@ func TestProbesOnDeployment(t *testing.T) { func TestProbesOnKnativeService(t *testing.T) { target := serving.Service{ - Spec: serving.ServiceSpec{ - ConfigurationSpec: serving.ConfigurationSpec{ - Template: &serving.RevisionTemplateSpec{ - Spec: serving.RevisionSpec{ - RevisionSpec: servingbeta.RevisionSpec{ - PodSpec: corev1.PodSpec{ - Containers: []corev1.Container{ - { - Image: "dummy", - }, + Spec: servingv1.ServiceSpec{ + ConfigurationSpec: servingv1.ConfigurationSpec{ + Template: servingv1.RevisionTemplateSpec{ + Spec: servingv1.RevisionSpec{ + PodSpec: corev1.PodSpec{ + Containers: []corev1.Container{ + { + Image: "dummy", }, }, }, @@ -142,6 +140,6 @@ func TestProbesOnKnativeService(t *testing.T) { err = tr.Apply(&e) assert.Nil(t, err) - assert.Nil(t, target.Spec.ConfigurationSpec.GetTemplate().Spec.Containers[0].LivenessProbe) - assert.Nil(t, target.Spec.ConfigurationSpec.GetTemplate().Spec.Containers[0].ReadinessProbe) + assert.Nil(t, target.Spec.ConfigurationSpec.Template.Spec.Containers[0].LivenessProbe) + assert.Nil(t, target.Spec.ConfigurationSpec.Template.Spec.Containers[0].ReadinessProbe) } diff --git a/pkg/util/knative/knative.go b/pkg/util/knative/knative.go index 54bfc6fedd..265370195c 100644 --- a/pkg/util/knative/knative.go +++ b/pkg/util/knative/knative.go @@ -19,24 +19,30 @@ package knative import ( "context" + "fmt" + "k8s.io/apimachinery/pkg/runtime/schema" + "net/url" "github.com/apache/camel-k/pkg/client" "github.com/apache/camel-k/pkg/util/log" - "github.com/pkg/errors" - k8serrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/client-go/kubernetes" + controller "sigs.k8s.io/controller-runtime/pkg/client" k8sclient "sigs.k8s.io/controller-runtime/pkg/client" - eventing "github.com/knative/eventing/pkg/apis/eventing/v1alpha1" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + eventing "knative.dev/eventing/pkg/apis/eventing/v1alpha1" + messaging "knative.dev/eventing/pkg/apis/messaging/v1alpha1" + "knative.dev/pkg/apis/duck" + duckv1alpha1 "knative.dev/pkg/apis/duck/v1alpha1" + serving "knative.dev/serving/pkg/apis/serving/v1beta1" ) // IsEnabledInNamespace returns true if we can list some basic knative objects in the given namespace func IsEnabledInNamespace(ctx context.Context, c k8sclient.Reader, namespace string) bool { - channels := eventing.ChannelList{ + channels := messaging.ChannelList{ TypeMeta: metav1.TypeMeta{ Kind: "Channel", APIVersion: eventing.SchemeGroupVersion.String(), @@ -62,73 +68,111 @@ func IsInstalled(ctx context.Context, c kubernetes.Interface) (bool, error) { } // CreateSubscription --- -func CreateSubscription(namespace string, channel string, name string) eventing.Subscription { - return eventing.Subscription{ +func CreateSubscription(channelReference corev1.ObjectReference, serviceName string) messaging.Subscription { + return messaging.Subscription{ TypeMeta: metav1.TypeMeta{ - APIVersion: eventing.SchemeGroupVersion.String(), + APIVersion: messaging.SchemeGroupVersion.String(), Kind: "Subscription", }, ObjectMeta: metav1.ObjectMeta{ - Namespace: namespace, - Name: channel + "-" + name, + Namespace: channelReference.Namespace, + Name: channelReference.Name + "-" + serviceName, }, - Spec: eventing.SubscriptionSpec{ + Spec: messaging.SubscriptionSpec{ Channel: corev1.ObjectReference{ - APIVersion: eventing.SchemeGroupVersion.String(), - Kind: "Channel", - Name: channel, + APIVersion: channelReference.GroupVersionKind().GroupVersion().String(), + Kind: channelReference.Kind, + Name: channelReference.Name, }, - Subscriber: &eventing.SubscriberSpec{ + Subscriber: &messaging.SubscriberSpec{ Ref: &corev1.ObjectReference{ APIVersion: serving.SchemeGroupVersion.String(), Kind: "Service", - Name: name, + Name: serviceName, }, }, }, } } -// GetService -- -func GetService(ctx context.Context, client client.Client, namespace string, name string) (*serving.Service, error) { - service := serving.Service{ - TypeMeta: metav1.TypeMeta{ - Kind: "Service", - APIVersion: serving.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ +// GetAnySinkURL looks up the resource among all given types and returns the resource sink URL if present +func GetAnySinkURL(ctx context.Context, c client.Client, types []schema.GroupVersionKind, namespace string, name string) (*url.URL, error) { + for _, gvk := range types { + sink := corev1.ObjectReference{ + Kind: gvk.Kind, + APIVersion: gvk.GroupVersion().String(), Namespace: namespace, - Name: name, - }, - } - key := k8sclient.ObjectKey{ - Namespace: namespace, - Name: name, - } - if err := client.Get(ctx, key, &service); err != nil { - return nil, errors.Wrap(err, "could not retrieve service "+name+" in namespace "+namespace) + Name: name, + } + + res, err := GetSinkURI(ctx, c, &sink, namespace) + if err != nil && k8serrors.IsNotFound(err) { + continue + } else if err != nil { + return nil, err + } + return url.Parse(res) } - return &service, nil + return nil, k8serrors.NewNotFound(schema.GroupResource{}, name) } -// GetChannel -- -func GetChannel(ctx context.Context, client client.Client, namespace string, name string) (*eventing.Channel, error) { - channel := eventing.Channel{ - TypeMeta: metav1.TypeMeta{ - Kind: "Channel", - APIVersion: eventing.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ +// GetAddressableReference looks up the resource among all given types and returns an object reference to it +func GetAddressableReference(ctx context.Context, c client.Client, types []schema.GroupVersionKind, namespace string, name string) (*corev1.ObjectReference, error) { + for _, gvk := range types { + sink := corev1.ObjectReference{ + Kind: gvk.Kind, + APIVersion: gvk.GroupVersion().String(), Namespace: namespace, - Name: name, - }, + Name: name, + } + + _, err := GetSinkURI(ctx, c, &sink, namespace) + if err != nil && k8serrors.IsNotFound(err) { + continue + } else if err != nil { + return nil, err + } + + return &sink, nil + } + return nil, k8serrors.NewNotFound(schema.GroupResource{}, name) +} + +// GetSinkURI retrieves the sink URI from the object referenced by the given +// ObjectReference. +// +// Method taken from https://github.com/knative/eventing-contrib/blob/master/pkg/controller/sinks/sinks.go +func GetSinkURI(ctx context.Context, c client.Client, sink *corev1.ObjectReference, namespace string) (string, error) { + if sink == nil { + return "", fmt.Errorf("sink ref is nil") + } + + u := &unstructured.Unstructured{} + u.SetGroupVersionKind(sink.GroupVersionKind()) + err := c.Get(ctx, controller.ObjectKey{Namespace: namespace, Name: sink.Name}, u) + if err != nil { + return "", err + } + + objIdentifier := fmt.Sprintf("\"%s/%s\" (%s)", u.GetNamespace(), u.GetName(), u.GroupVersionKind()) + // Special case v1/Service to allow it be addressable + if u.GroupVersionKind().Kind == "Service" && u.GroupVersionKind().Version == "v1" { + return fmt.Sprintf("http://%s.%s.svc/", u.GetName(), u.GetNamespace()), nil } - key := k8sclient.ObjectKey{ - Namespace: namespace, - Name: name, + + t := duckv1alpha1.AddressableType{} + err = duck.FromUnstructured(u, &t) + if err != nil { + return "", fmt.Errorf("failed to deserialize sink %s: %v", objIdentifier, err) } - if err := client.Get(ctx, key, &channel); err != nil { - return nil, errors.Wrap(err, "could not retrieve channel "+name+" in namespace "+namespace) + + if t.Status.Address == nil { + return "", fmt.Errorf("sink %s does not contain address", objIdentifier) + } + + url := t.Status.Address.GetURL() + if url.Host == "" { + return "", fmt.Errorf("sink %s contains an empty hostname", objIdentifier) } - return &channel, nil + return url.String(), nil } diff --git a/pkg/util/kubernetes/collection.go b/pkg/util/kubernetes/collection.go index ca00640629..0f52d4a03e 100644 --- a/pkg/util/kubernetes/collection.go +++ b/pkg/util/kubernetes/collection.go @@ -19,7 +19,8 @@ package kubernetes import ( "github.com/apache/camel-k/pkg/apis/camel/v1alpha1" - serving "github.com/knative/serving/pkg/apis/serving/v1alpha1" + serving "knative.dev/serving/pkg/apis/serving/v1beta1" + servingv1 "knative.dev/serving/pkg/apis/serving/v1" routev1 "github.com/openshift/api/route/v1" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -276,16 +277,16 @@ func (c *Collection) VisitContainer(visitor func(container *corev1.Container)) { visitor(cntref) } }) - c.VisitKnativeConfigurationSpec(func(cs *serving.ConfigurationSpec) { - for id := range cs.GetTemplate().Spec.Containers { - cntref := &cs.GetTemplate().Spec.Containers[id] + c.VisitKnativeConfigurationSpec(func(cs *servingv1.ConfigurationSpec) { + for id := range cs.Template.Spec.Containers { + cntref := &cs.Template.Spec.Containers[id] visitor(cntref) } }) } // VisitKnativeConfigurationSpec executes the visitor function on all knative ConfigurationSpec inside serving Services -func (c *Collection) VisitKnativeConfigurationSpec(visitor func(container *serving.ConfigurationSpec)) { +func (c *Collection) VisitKnativeConfigurationSpec(visitor func(container *servingv1.ConfigurationSpec)) { c.VisitKnativeService(func(s *serving.Service) { visitor(&s.Spec.ConfigurationSpec) }) diff --git a/pkg/util/kubernetes/replace.go b/pkg/util/kubernetes/replace.go index 0e6625f426..927a625495 100644 --- a/pkg/util/kubernetes/replace.go +++ b/pkg/util/kubernetes/replace.go @@ -21,7 +21,7 @@ import ( "context" "github.com/apache/camel-k/pkg/client" - eventing "github.com/knative/eventing/pkg/apis/eventing/v1alpha1" + messaging "knative.dev/eventing/pkg/apis/messaging/v1alpha1" routev1 "github.com/openshift/api/route/v1" "github.com/pkg/errors" corev1 "k8s.io/api/core/v1" @@ -93,8 +93,8 @@ func mapRequiredRouteData(from runtime.Object, to runtime.Object) { } func mapRequiredKnativeData(from runtime.Object, to runtime.Object) { - if fromC, ok := from.(*eventing.Subscription); ok { - if toC, ok := to.(*eventing.Subscription); ok { + if fromC, ok := from.(*messaging.Subscription); ok { + if toC, ok := to.(*messaging.Subscription); ok { toC.Spec.DeprecatedGeneration = fromC.Spec.DeprecatedGeneration } }