diff --git a/Gopkg.lock b/Gopkg.lock index 7172a598..98726a16 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -2,23 +2,40 @@ [[projects]] - digest = "1:a79764f95e5c4476d63009ea8a1c61869d9a44e8f3eb16a78d99868a90c1db25" + digest = "1:e555221e526f3509b4c1de4d06f95f5bc0d70eb1b2bbd92044226246ec88317e" name = "cloud.google.com/go" - packages = ["compute/metadata"] + packages = [ + "compute/metadata", + "container/apiv1", + "internal/version", + "monitoring/apiv3", + "trace/apiv2", + ] pruneopts = "NT" - revision = "cf81fad90a1a1de334c4fc27e23eb9a4224b627a" - version = "v0.41.0" + revision = "ceeb313ad77b789a7fa5287b36a1d127b69b7093" + version = "v0.44.3" [[projects]] - digest = "1:6974cb842e66a4600006200e47a067278ea5671d4f7114be67c01a3af5affa7d" - name = "contrib.go.opencensus.io/exporter/ocagent" + digest = "1:b990a5fb1b6fbfc621d17e18d229bb25d56411f53cb33de7d396ec7dcebf777c" + name = "contrib.go.opencensus.io/exporter/prometheus" packages = ["."] pruneopts = "NT" - revision = "dcb33c7f3b7cfe67e8a2cea10207ede1b7c40764" - version = "v0.4.12" + revision = "f4a2c1e53ec45636355d35fb9022b64e4bdd4a91" + version = "v0.1.0" + +[[projects]] + digest = "1:a38ff3f581048eba470b4aea53ef2d0bb9d4d177dabbb3efa8ac21eb05328c09" + name = "contrib.go.opencensus.io/exporter/stackdriver" + packages = [ + ".", + "monitoredresource", + ] + pruneopts = "NT" + revision = "bf39ce456bd8c6e2e3e37ef9775ed8b10628feca" + version = "v0.12.5" [[projects]] - digest = "1:678706d7242a6c30e958b6642d85d481808f7c4bd7ed428493fca1b575943c15" + digest = "1:35cef7c7a24cc3f83d220c409d5dd401681a6cd069efa883d45695b56dab6696" name = "github.com/Azure/go-autorest" packages = [ "autorest", @@ -29,8 +46,8 @@ "tracing", ] pruneopts = "NT" - revision = "2913f263500c4a5b23dada1b46ccd22ac972315f" - version = "v12.3.0" + revision = "5e7a399d8bbf4953ab0c8e3167d7fd535fd74ce1" + version = "v13.0.0" [[projects]] digest = "1:0a111edd8693fd977f42a0c4f199a0efb13c20aec9da99ad8830c7bb6a87e8d6" @@ -56,28 +73,65 @@ revision = "7c0e3b262f30165a8ec3d0b4c6059fd92703bfb2" version = "1.0.0" +[[projects]] + digest = "1:7a09955a2fb396d131808608f75422fd0e9be723a51e1e8b0b24a8483e525336" + name = "github.com/aws/aws-sdk-go" + packages = [ + "aws", + "aws/awserr", + "aws/awsutil", + "aws/client", + "aws/client/metadata", + "aws/corehandlers", + "aws/credentials", + "aws/credentials/ec2rolecreds", + "aws/credentials/endpointcreds", + "aws/credentials/processcreds", + "aws/credentials/stscreds", + "aws/csm", + "aws/defaults", + "aws/ec2metadata", + "aws/endpoints", + "aws/request", + "aws/session", + "aws/signer/v4", + "internal/ini", + "internal/sdkio", + "internal/sdkrand", + "internal/sdkuri", + "internal/shareddefaults", + "private/protocol", + "private/protocol/json/jsonutil", + "private/protocol/query", + "private/protocol/query/queryutil", + "private/protocol/rest", + "private/protocol/xml/xmlutil", + "service/sts", + "service/sts/stsiface", + ] + pruneopts = "NT" + revision = "95d69e28d7d16140dab16d0ef59fff5587e5624f" + version = "v1.23.5" + [[projects]] digest = "1:c819830f4f5ef85874a90ac3cbcc96cd322c715f5c96fbe4722eacd3dafbaa07" name = "github.com/beorn7/perks" packages = ["quantile"] pruneopts = "NT" - revision = "4b2b341e8d7715fae06375aa633dbb6e91b3fb46" - version = "v1.0.0" + revision = "37c8de3658fcb183f997c4e13e8337516ab753e6" + version = "v1.0.1" [[projects]] - digest = "1:13af3d205c774ec0bbda45fee1a4089f3cd9a55c5367b527698b34550ec15e71" + digest = "1:8f78746d858aa9af25740eedb73e7beb4e02016e1922a0c02ac0768d04fa93de" name = "github.com/census-instrumentation/opencensus-proto" packages = [ "gen-go/agent/common/v1", - "gen-go/agent/metrics/v1", - "gen-go/agent/trace/v1", "gen-go/metrics/v1", "gen-go/resource/v1", - "gen-go/trace/v1", ] pruneopts = "NT" - revision = "a105b96453fe85139acc07b68de48f2cbdd71249" - version = "v0.2.0" + revision = "d89fa54de508111353cb0b06403c00569be780d8" + version = "v0.2.1" [[projects]] digest = "1:0c4193043b1a33c7f9ba4ea42b8af2c09bb3d51970212d42e4dac8aa217b4ca5" @@ -176,12 +230,12 @@ revision = "bdfd7e07daecc404d77868a88b2364d0aed0ee5a" [[projects]] - digest = "1:b2ea9a25f2ca9ebea4e58ec61832a80caee98d85038563e43f774b37ef990ebb" + digest = "1:b318f36b1725220c1580b27504b8ee9d33a2a8e2db58f28c176edf6f0d1b7fb2" name = "github.com/go-openapi/swag" packages = ["."] pruneopts = "NT" - revision = "de649ffb9e02183a414820c5b1b4582f7b009792" - version = "v0.19.4" + revision = "c3d0f7896d589f3babb99eea24bbc7de98108e72" + version = "v0.19.5" [[projects]] digest = "1:53151cc4366e3945282d4b783fd41f35222cabbc75601e68d8133648c63498d1" @@ -222,15 +276,12 @@ digest = "1:440a3032b9e2db5bbf14535c63caf0e886f13d4f1d128a4a4d9deb03f924aa0c" name = "github.com/golang/protobuf" packages = [ - "jsonpb", "proto", "protoc-gen-go/descriptor", - "protoc-gen-go/generator", - "protoc-gen-go/generator/internal/remap", - "protoc-gen-go/plugin", "ptypes", "ptypes/any", "ptypes/duration", + "ptypes/empty", "ptypes/struct", "ptypes/timestamp", "ptypes/wrappers", @@ -252,6 +303,7 @@ name = "github.com/google/go-cmp" packages = [ "cmp", + "cmp/cmpopts", "cmp/internal/diff", "cmp/internal/flags", "cmp/internal/function", @@ -284,7 +336,15 @@ version = "v1.1.1" [[projects]] - digest = "1:4be9c3a040a921a53c073587b3f339811f338123d239b556303223e4b9628af9" + digest = "1:13b5bcd4fe1e65f7a4974bb0e466b6dfda6fd0fe28f9cd699e004d5e01dbd5ee" + name = "github.com/googleapis/gax-go" + packages = ["v2"] + pruneopts = "NT" + revision = "bd5b16380fd03dc758d11cef74ba2e3bc8b0e8c2" + version = "v2.0.5" + +[[projects]] + digest = "1:7b822f5317d7bf87097682a763d5c9ff90c5cb86ee3cd23e1255b43d6b04a141" name = "github.com/googleapis/gnostic" packages = [ "OpenAPIv2", @@ -292,11 +352,11 @@ "extensions", ] pruneopts = "NT" - revision = "e73c7ec21d36ddb0711cb36d1502d18363b5c2c9" - version = "v0.3.0" + revision = "ab0dd09aa10e2952b28e12ecd35681b20463ebab" + version = "v0.3.1" [[projects]] - digest = "1:b9b8297d55b96144075d3a18b3a8658acd95ff6c8c4a00159221c0a0e4fbcca1" + digest = "1:7ba1e1d910a240fd2b70be225690d56322886269f5c6da8730582fa8f8b8a9b5" name = "github.com/gophercloud/gophercloud" packages = [ ".", @@ -308,8 +368,8 @@ "pagination", ] pruneopts = "NT" - revision = "157432124aab520975efedb5e54b95287785578d" - version = "v0.2.0" + revision = "0398b0cd16bfffade0883973c745180adbbe8918" + version = "v0.3.0" [[projects]] branch = "master" @@ -323,27 +383,15 @@ revision = "901d90724c7919163f472a9812253fb26761123d" [[projects]] - digest = "1:bd5d9c15a56b815f7c3cfe54dfbcfad46a7f17d483611c76a85ea8af5a617322" - name = "github.com/grpc-ecosystem/grpc-gateway" - packages = [ - "internal", - "runtime", - "utilities", - ] - pruneopts = "NT" - revision = "bebc7374a79e1105d786ef3468b474e47d652511" - version = "v1.9.4" - -[[projects]] - digest = "1:52094d0f8bdf831d1a2401e9b6fee5795fdc0b2a2d1f8bb1980834c289e79129" + digest = "1:ed860d2b2c1d066d36a89c982eefc7d019badd534f60e87ab65d3d94f0797ef0" name = "github.com/hashicorp/golang-lru" packages = [ ".", "simplelru", ] pruneopts = "NT" - revision = "7087cb70de9f7a8bc0a10c375cb0d2280a8edf9c" - version = "v0.5.1" + revision = "7f827b33c0f158ec5dfbba01bb0b14a4541fd81d" + version = "v0.5.3" [[projects]] digest = "1:aaa38889f11896ee3644d77e17dc7764cc47f5f3d3b488268df2af2b52541c5f" @@ -353,6 +401,13 @@ revision = "7c29201646fa3de8506f701213473dd407f19646" version = "v0.3.7" +[[projects]] + digest = "1:1234e31f3de67447e344dabcdf72c4588d31b8eed2d28f1889377ec006a086a9" + name = "github.com/jmespath/go-jmespath" + packages = ["."] + pruneopts = "NT" + revision = "c2b33e84" + [[projects]] digest = "1:f5b9328966ccea0970b1d15075698eff0ddb3e75889560aad2e9f76b289b536a" name = "github.com/joho/godotenv" @@ -362,28 +417,24 @@ version = "v1.3.0" [[projects]] - digest = "1:0fbdc0dfdabfa16d50dd7151b7efe3189ffb0df68fa9866dc35240bfea39ad92" + digest = "1:13b7a2ab50dc8d2492844d1a82f5a798a5befcd337c1f5ec970922523306fcb0" name = "github.com/json-iterator/go" packages = ["."] pruneopts = "NT" - revision = "0ff49de124c6f76f8494e194af75bde0f1a49a29" - version = "v1.1.6" + revision = "27518f6661eba504be5a7a9a9f6d9460d892ade3" + version = "v1.1.7" [[projects]] - branch = "master" - digest = "1:75da113e70e669b32ba8e9f345cf620a4629663735f48e42dab575a743706346" - name = "github.com/knative/serving" + digest = "1:4ea301f331c2b0d1f08681c5a027b98ac0c4f032f93f2c37779ff629b6871725" + name = "github.com/knative/eventing" packages = [ - "pkg/apis/autoscaling", - "pkg/apis/config", - "pkg/apis/networking", - "pkg/apis/networking/v1alpha1", - "pkg/apis/serving", - "pkg/apis/serving/v1alpha1", - "pkg/apis/serving/v1beta1", + "pkg/apis/duck", + "pkg/apis/duck/v1alpha1", + "pkg/apis/eventing", ] pruneopts = "NT" - revision = "c6b6a6f08d6c2d22f79ec1e49cab4b10b6d1e74c" + revision = "a59dae6f326057211f43f7c2d1414a9fd821b8aa" + version = "v0.8.0" [[projects]] branch = "master" @@ -502,7 +553,7 @@ name = "github.com/prometheus/client_model" packages = ["go"] pruneopts = "NT" - revision = "fd36f4220a901265f90734c3183c5f0c91daa0b8" + revision = "14fe0d1b01d4d5fc031dd4bec1823bd3ebbe8016" [[projects]] digest = "1:7b648586b69c7d73698ee422681975eb23e8b7468dbd457872c559fc95177861" @@ -559,33 +610,20 @@ version = "v1.0.3" [[projects]] - digest = "1:0b30d1cfbc7b4a319c1dbfdc81388257ef36e044b583450798511d1a3d8f9330" - name = "github.com/tektoncd/pipeline" - packages = [ - "pkg/apis/config", - "pkg/apis/pipeline", - "pkg/apis/pipeline/v1alpha1", - "pkg/list", - "pkg/names", - ] - pruneopts = "NT" - revision = "c105b6835a899ad1cccadc3556c8a260e812d2cf" - version = "v0.6.0" - -[[projects]] - digest = "1:8bcb2616463bc981681c4b26f2aa817be8167682b76fb7884ec3fafdc9f82372" + digest = "1:48127e583ca365f24dd779c4bd74347c78be147b72afed547d45f3b6a65c32c0" name = "go.opencensus.io" packages = [ ".", "internal", "internal/tagencoding", "metric/metricdata", + "metric/metricexport", "metric/metricproducer", "plugin/ocgrpc", "plugin/ochttp", "plugin/ochttp/propagation/b3", - "plugin/ochttp/propagation/tracecontext", "resource", + "resource/resourcekeys", "stats", "stats/internal", "stats/view", @@ -596,8 +634,8 @@ "trace/tracestate", ] pruneopts = "NT" - revision = "43463a80402d8447b7fce0d2c58edf1687ff0b58" - version = "v0.19.3" + revision = "9c377598961b706d1542bd2d84d538b5094d596e" + version = "v0.22.0" [[projects]] digest = "1:cc9d86ec4e6e3bdf87e3a421273bfeed003cf8e21351c0302fe8b0eb7b10efe6" @@ -640,20 +678,21 @@ [[projects]] branch = "master" - digest = "1:9445b98d5ea9ea221cac46d87aa3a8707f0dcae24aedd5d5c0eb01ddae243503" + digest = "1:cdc5961128f371e0ff8881010e9eda45187281d3c66e81b62fdc1a81bf3521d6" name = "golang.org/x/net" packages = [ "context", "context/ctxhttp", "http/httpguts", "http2", + "http2/h2c", "http2/hpack", "idna", "internal/timeseries", "trace", ] pruneopts = "NT" - revision = "da137c7871d730100384dbcf36e6f8fa493aef5b" + revision = "74dc4d7220e7acc4e100824340f3e66577424772" [[projects]] branch = "master" @@ -679,14 +718,14 @@ [[projects]] branch = "master" - digest = "1:f721cc1b14bd3e5973c73ac02c8c3af4183d2b043affc38ab153c551e0092c9c" + digest = "1:14ee4a02d39404c0c214aa69cf84ec0baf98b4573fc756ebdf3cd5ea92d7756d" name = "golang.org/x/sys" packages = [ "unix", "windows", ] pruneopts = "NT" - revision = "6ec70d6a5542cba804c6d16ebe8392601a0b7b60" + revision = "fde4db37ae7ad8191b03d30d27f258b5291ae4e3" [[projects]] digest = "1:348fa8283a7c60b5b71ce04d27b37f7c0fce552d4d0b463b5b3ebbd1840d3f1a" @@ -745,22 +784,21 @@ [[projects]] branch = "master" - digest = "1:da4baf48e12c5766130e8ec8ae5058cb3b5e8b533606c75340f7fb59604a4018" - name = "golang.org/x/xerrors" + digest = "1:b03f1529de9a7039cead8074d2b9c527769f5a67c1ce3dd3ee03a38867328633" + name = "google.golang.org/api" packages = [ - ".", + "googleapi/transport", "internal", + "iterator", + "option", + "support/bundler", + "transport", + "transport/grpc", + "transport/http", + "transport/http/internal/propagation", ] pruneopts = "NT" - revision = "a985d3407aa71f30cf86696ee0a2f409709f22e1" - -[[projects]] - digest = "1:b3fe055d94338b24d532229659c32b8ef4798f509172efbbb362d0f6d3494e3d" - name = "google.golang.org/api" - packages = ["support/bundler"] - pruneopts = "NT" - revision = "02490b97dff7cfde1995bd77de808fd27053bc87" - version = "v0.7.0" + revision = "feb0267beb8644f5088a03be4d5ec3f8c7020152" [[projects]] digest = "1:25a3797e84a65cc761261eb04134cc03bc64861ef37d1242d92b199bd955800f" @@ -774,7 +812,9 @@ "internal/log", "internal/modules", "internal/remote_api", + "internal/socket", "internal/urlfetch", + "socket", "urlfetch", ] pruneopts = "NT" @@ -783,29 +823,48 @@ [[projects]] branch = "master" - digest = "1:1805cf5cda6c81a8c9b93e7200491fb150b089da330e5b0296286b47c32fb97e" + digest = "1:cfdcfd32c210e47ee2a68e651fe01194959b993063344d3c600ca3258c7f51ae" name = "google.golang.org/genproto" packages = [ - "googleapis/api/httpbody", + "googleapis/api", + "googleapis/api/annotations", + "googleapis/api/distribution", + "googleapis/api/label", + "googleapis/api/metric", + "googleapis/api/monitoredres", + "googleapis/container/v1", + "googleapis/devtools/cloudtrace/v2", + "googleapis/monitoring/v3", "googleapis/rpc/status", "protobuf/field_mask", ] pruneopts = "NT" - revision = "3bdd9d9f5532d75d09efb230bd767d265245cfe5" + revision = "24fa4b261c55da65468f2abfdae2b024eef27dfb" [[projects]] - digest = "1:8c4529f86398b7773d9c0b947345e3b14842566f9f68c42e3334374737b0ff8d" + digest = "1:179cd60a1c4528bc640d9c0b24ab6bab252e858ce41a780f035477f2adbe9dff" name = "google.golang.org/grpc" packages = [ ".", "balancer", "balancer/base", + "balancer/grpclb", + "balancer/grpclb/grpc_lb_v1", "balancer/roundrobin", "binarylog/grpc_binarylog_v1", "codes", "connectivity", "credentials", + "credentials/alts", + "credentials/alts/internal", + "credentials/alts/internal/authinfo", + "credentials/alts/internal/conn", + "credentials/alts/internal/handshaker", + "credentials/alts/internal/handshaker/service", + "credentials/alts/internal/proto/grpc_gcp", + "credentials/google", "credentials/internal", + "credentials/oauth", "encoding", "encoding/proto", "grpclog", @@ -832,8 +891,8 @@ "tap", ] pruneopts = "NT" - revision = "1d89a3c832915b2314551c1d2a506874d62e53f7" - version = "v1.22.0" + revision = "6eaf6f47437a6b4e2153a190160ef39a92c7eceb" + version = "v1.23.0" [[projects]] digest = "1:2d1fbdc6777e5408cabeb02bf336305e724b925ff4546ded0fa8715a7267922a" @@ -940,7 +999,6 @@ "pkg/util/mergepatch", "pkg/util/naming", "pkg/util/net", - "pkg/util/rand", "pkg/util/runtime", "pkg/util/sets", "pkg/util/strategicpatch", @@ -1141,7 +1199,7 @@ [[projects]] branch = "master" - digest = "1:06449c9193d3d1f9375b97d1ce8a3f7a59d531c69ca34a6b0663cf3c144c2178" + digest = "1:001bfd0e1677595cbfe401e12fd168b6bc5889741a6b75c0bc808ea2287dd104" name = "k8s.io/gengo" packages = [ "args", @@ -1153,15 +1211,15 @@ "types", ] pruneopts = "T" - revision = "e17681d19d3ac4837a019ece36c2a0ec31ffe985" + revision = "955ffa8fcfc983717cd9de5d2a1e9f5c465f4376" [[projects]] - digest = "1:8e0d93051b04c69a8f226da08f97515c7991524a676908ef228afd35fdc42264" + digest = "1:f4ba96b662d53fd1d18907c661cc429108e3522b92cb678db5fc1e5e1d2af7a7" name = "k8s.io/klog" packages = ["."] pruneopts = "NT" - revision = "d98d8acdac006fb39831f1b25640813fef9c314f" - version = "v0.3.3" + revision = "3ca30a56d8a775276f9cdae009ba326fdc05af7f" + version = "v0.4.0" [[projects]] digest = "1:c48a795cd7048bb1888273bc604b6e69b22f9b8089c3df65f77cc527757b515c" @@ -1178,22 +1236,56 @@ pruneopts = "NT" revision = "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" +[[projects]] + digest = "1:4ea301f331c2b0d1f08681c5a027b98ac0c4f032f93f2c37779ff629b6871725" + name = "knative.dev/eventing" + packages = ["pkg/apis/eventing/v1alpha1"] + pruneopts = "NT" + revision = "a59dae6f326057211f43f7c2d1414a9fd821b8aa" + version = "v0.8.0" + [[projects]] branch = "master" - digest = "1:02e95964243b3014a1b942069ac0281dc0ece951a16598f183e2b3adac142e35" + digest = "1:8d088b21f5ffd0cf1acef11f2c578e28287f1ad1c340db79aa58c5d8180de8ae" name = "knative.dev/pkg" packages = [ "apis", "apis/duck", "apis/duck/v1alpha1", "apis/duck/v1beta1", + "apis/v1alpha1", + "changeset", "configmap", "kmeta", "kmp", + "logging", + "logging/logkey", + "metrics", + "metrics/metricskey", "ptr", + "webhook", + ] + pruneopts = "NT" + revision = "9cc6a645418f08721a6103ad8b02f33af78e35d5" + +[[projects]] + digest = "1:9c88386c4666bed589f3281eac157de3040a6842e5d1f71bf6c0fce275572fa4" + name = "knative.dev/serving" + packages = [ + "pkg/apis/autoscaling", + "pkg/apis/config", + "pkg/apis/networking", + "pkg/apis/networking/v1alpha1", + "pkg/apis/serving", + "pkg/apis/serving/v1alpha1", + "pkg/apis/serving/v1beta1", + "pkg/gc", + "pkg/network", + "pkg/reconciler/route/config", ] pruneopts = "NT" - revision = "e2418a08c195ff0acda037c11c21882ca5453d96" + revision = "3f73b117b61ee5d8fe5dcedd6cca2c96014329a9" + version = "v0.8.0" [[projects]] digest = "1:06035489efbd51ccface65fc878ceeb849aba05b2f9443c8993f363fc96e80ac" @@ -1260,8 +1352,6 @@ analyzer-version = 1 input-imports = [ "github.com/go-openapi/spec", - "github.com/knative/serving/pkg/apis/serving/v1alpha1", - "github.com/knative/serving/pkg/apis/serving/v1beta1", "github.com/operator-framework/operator-sdk/pkg/k8sutil", "github.com/operator-framework/operator-sdk/pkg/leader", "github.com/operator-framework/operator-sdk/pkg/log/zap", @@ -1269,7 +1359,6 @@ "github.com/operator-framework/operator-sdk/pkg/restmapper", "github.com/operator-framework/operator-sdk/version", "github.com/spf13/pflag", - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1", "k8s.io/api/core/v1", "k8s.io/apimachinery/pkg/api/errors", "k8s.io/apimachinery/pkg/apis/meta/v1", @@ -1285,6 +1374,9 @@ "k8s.io/gengo/args", "k8s.io/kube-openapi/cmd/openapi-gen", "k8s.io/kube-openapi/pkg/common", + "knative.dev/eventing/pkg/apis/eventing/v1alpha1", + "knative.dev/serving/pkg/apis/serving/v1alpha1", + "knative.dev/serving/pkg/apis/serving/v1beta1", "sigs.k8s.io/controller-runtime/pkg/client", "sigs.k8s.io/controller-runtime/pkg/client/config", "sigs.k8s.io/controller-runtime/pkg/controller", diff --git a/Gopkg.toml b/Gopkg.toml index 955c6fe9..ff067b83 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -9,10 +9,6 @@ required = [ "k8s.io/gengo/args", "sigs.k8s.io/controller-tools/pkg/crd/generator", ] - -[[override]] - name = "github.com/knative/serving" - branch = "master" [[override]] name = "github.com/tekton/pipeline" diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 5ae07ced..fe76c456 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -8,8 +8,9 @@ import ( "runtime" // Import knative types - knv1alpha1 "github.com/knative/serving/pkg/apis/serving/v1alpha1" - knv1beta1 "github.com/knative/serving/pkg/apis/serving/v1beta1" + kneventing "knative.dev/eventing/pkg/apis/eventing/v1alpha1" + knv1alpha1 "knative.dev/serving/pkg/apis/serving/v1alpha1" + knv1beta1 "knative.dev/serving/pkg/apis/serving/v1beta1" // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.) _ "k8s.io/client-go/plugin/pkg/client/auth" @@ -117,6 +118,11 @@ func main() { os.Exit(1) } + if err := kneventing.AddToScheme(mgr.GetScheme()); err != nil { + log.Error(err, "Can't register the knative eventing scheme") + os.Exit(1) + } + // Setup all Controllers if err := controller.AddToManager(mgr); err != nil { log.Error(err, "") diff --git a/deploy/crds/faas_v1alpha1_jsfunction_crd.yaml b/deploy/crds/faas_v1alpha1_jsfunction_crd.yaml index 3e512b5b..1e996401 100644 --- a/deploy/crds/faas_v1alpha1_jsfunction_crd.yaml +++ b/deploy/crds/faas_v1alpha1_jsfunction_crd.yaml @@ -29,13 +29,14 @@ spec: type: object spec: properties: + events: + type: boolean func: type: string package: type: string required: - func - - package type: object status: properties: diff --git a/pkg/apis/faas/v1alpha1/jsfunction_types.go b/pkg/apis/faas/v1alpha1/jsfunction_types.go index 4027ee00..5f7a04c8 100644 --- a/pkg/apis/faas/v1alpha1/jsfunction_types.go +++ b/pkg/apis/faas/v1alpha1/jsfunction_types.go @@ -11,7 +11,8 @@ import ( // +k8s:openapi-gen=true type JSFunctionSpec struct { Func string `json:"func"` - Package string `json:"package"` + Package string `json:"package,omitempty"` + Events bool `json:"events,omitempty"` // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster // Important: Run "operator-sdk generate k8s" to regenerate code after modifying this file // Add custom validation using kubebuilder tags: https://book.kubebuilder.io/beyond_basics/generating_crd.html diff --git a/pkg/apis/faas/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/faas/v1alpha1/zz_generated.deepcopy.go index 6541cafc..ccb570b0 100644 --- a/pkg/apis/faas/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/faas/v1alpha1/zz_generated.deepcopy.go @@ -1,6 +1,6 @@ // +build !ignore_autogenerated -// Code generated by deepcopy-gen. DO NOT EDIT. +// Code generated by operator-sdk. DO NOT EDIT. package v1alpha1 diff --git a/pkg/apis/faas/v1alpha1/zz_generated.openapi.go b/pkg/apis/faas/v1alpha1/zz_generated.openapi.go index 64816192..5c09ba2f 100644 --- a/pkg/apis/faas/v1alpha1/zz_generated.openapi.go +++ b/pkg/apis/faas/v1alpha1/zz_generated.openapi.go @@ -1,7 +1,5 @@ // +build !ignore_autogenerated -// Code generated by openapi-gen. DO NOT EDIT. - // This file was autogenerated by openapi-gen. Do not edit it manually! package v1alpha1 @@ -80,8 +78,14 @@ func schema_pkg_apis_faas_v1alpha1_JSFunctionSpec(ref common.ReferenceCallback) Format: "", }, }, + "events": { + SchemaProps: spec.SchemaProps{ + Type: []string{"boolean"}, + Format: "", + }, + }, }, - Required: []string{"func", "package"}, + Required: []string{"func"}, }, }, Dependencies: []string{}, diff --git a/pkg/controller/jsfunction/jsfunction_controller.go b/pkg/controller/jsfunction/jsfunction_controller.go index 4960cdd2..7dfd01ad 100644 --- a/pkg/controller/jsfunction/jsfunction_controller.go +++ b/pkg/controller/jsfunction/jsfunction_controller.go @@ -4,8 +4,9 @@ import ( "context" "fmt" - knv1alpha1 "github.com/knative/serving/pkg/apis/serving/v1alpha1" - knv1beta1 "github.com/knative/serving/pkg/apis/serving/v1beta1" + kneventing "knative.dev/eventing/pkg/apis/eventing/v1alpha1" + knv1alpha1 "knative.dev/serving/pkg/apis/serving/v1alpha1" + knv1beta1 "knative.dev/serving/pkg/apis/serving/v1beta1" faasv1alpha1 "github.com/openshift-cloud-functions/js-function-operator/pkg/apis/faas/v1alpha1" @@ -60,6 +61,22 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error { return err } + // Watch for changes to secondary resources KnChanel and KnSubscription and requeue the owner JSFunction + err = c.Watch(&source.Kind{Type: &kneventing.Channel{}}, &handler.EnqueueRequestForOwner{ + IsController: true, + OwnerType: &faasv1alpha1.JSFunction{}, + }) + if err != nil { + return err + } + err = c.Watch(&source.Kind{Type: &kneventing.Subscription{}}, &handler.EnqueueRequestForOwner{ + IsController: true, + OwnerType: &faasv1alpha1.JSFunction{}, + }) + if err != nil { + return err + } + return nil } @@ -100,8 +117,8 @@ func (r *ReconcileJSFunction) Reconcile(request reconcile.Request) (reconcile.Re } // Check if a Service for this JSFunction already exists, if not create a new one - found := &knv1alpha1.Service{} - err = r.client.Get(context.TODO(), types.NamespacedName{Name: function.Name, Namespace: function.Namespace}, found) + knService := &knv1alpha1.Service{} + err = r.client.Get(context.TODO(), types.NamespacedName{Name: function.Name, Namespace: function.Namespace}, knService) if err != nil && errors.IsNotFound(err) { // No service for this function exists. Create a new one @@ -113,7 +130,7 @@ func (r *ReconcileJSFunction) Reconcile(request reconcile.Request) (reconcile.Re } err = r.client.Create(context.TODO(), configMap) if err != nil { - reqLogger.Error(err, "Failed to create new ConfigMap holding function.", "Service.Namespace", configMap.Namespace, "ConfigMap.Name", configMap.Name) + reqLogger.Error(err, "Failed to create new ConfigMap holding function.", "ConfigMap.Namespace", configMap.Namespace, "ConfigMap.Name", configMap.Name) return reconcile.Result{}, err } @@ -137,18 +154,83 @@ func (r *ReconcileJSFunction) Reconcile(request reconcile.Request) (reconcile.Re return reconcile.Result{}, err } - reqLogger.Info("JSFunction Service exists.", "Service.Namespace", found.Namespace, "Service.Name", found.Name) + /////// Knative Eventing section + // Create or delete Channel + knChannel := &kneventing.Channel{} + err = r.client.Get(context.TODO(), types.NamespacedName{Name: function.Name, Namespace: function.Namespace}, knChannel) + if err != nil && errors.IsNotFound(err) { + if function.Spec.Events { + // Create channel + channel, err := r.channelForFunction(function) + if err != nil { + return reconcile.Result{}, err + } + err = r.client.Create(context.TODO(), channel) + if err != nil { + reqLogger.Error(err, "Failed to create new Channel.", "Channel.Namespace", channel.Namespace, "Channel.Name", channel.Name) + return reconcile.Result{}, err + } + } + } else { + if !function.Spec.Events && knChannel.ObjectMeta.DeletionTimestamp == nil { + err = r.client.Delete(context.TODO(), knChannel) + if err != nil && !errors.IsNotFound(err) { + reqLogger.Error(err, "failed to delete Channel") + return reconcile.Result{}, err + } + } + } + + // Create or delete Subscription + knSubscription := &kneventing.Subscription{} + err = r.client.Get(context.TODO(), types.NamespacedName{Name: function.Name, Namespace: function.Namespace}, knSubscription) + if err != nil && errors.IsNotFound(err) { + if function.Spec.Events { + // Create subscription + subscription, err := r.subscriptionForFunction(function) + if err != nil { + return reconcile.Result{}, err + } + err = r.client.Create(context.TODO(), subscription) + if err != nil { + reqLogger.Error(err, "Failed to create new Subscription.", "Subscription.Namespace", subscription.Namespace, "Subscription.Name", subscription.Name) + return reconcile.Result{}, err + } + } + } else { + if !function.Spec.Events && knSubscription.ObjectMeta.DeletionTimestamp == nil { + err = r.client.Delete(context.TODO(), knSubscription) + if err != nil && !errors.IsNotFound(err) { + reqLogger.Error(err, "failed to delete Subscription") + return reconcile.Result{}, err + } + } + + } + /////// + + // TODO update the JSFunction status with the pod names + // TODO update status nodes if necessary + + reqLogger.Info("JSFunction Service exists.", "Service.Namespace", knService.Namespace, "Service.Name", knService.Name) return reconcile.Result{}, nil } func (r *ReconcileJSFunction) configMapWithFunction(f *faasv1alpha1.JSFunction) (*corev1.ConfigMap, error) { + + data := map[string]string{"index.js": f.Spec.Func} + + if f.Spec.Package != "" { + data["package.json"] = f.Spec.Package + } + // Create a config map containing the user code configMap := &corev1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ Name: f.Name, Namespace: f.Namespace, }, - Data: map[string]string{"index.js": f.Spec.Func, "package.json": f.Spec.Package}, + Data: data, } if err := controllerutil.SetControllerReference(f, configMap, r.scheme); err != nil { return nil, err @@ -191,10 +273,10 @@ func createPodSpec(functionName, configMapName string) corev1.PodSpec { volumeName := fmt.Sprintf("%s-source", functionName) return corev1.PodSpec{ Containers: []corev1.Container{{ - Image: "docker.io/lanceball/js-runtime", + Image: "docker.io/zroubalik/js-runtime", Name: fmt.Sprintf("nodejs-%s", functionName), Ports: []corev1.ContainerPort{{ - ContainerPort: 8181, + ContainerPort: 8080, }}, VolumeMounts: []corev1.VolumeMount{ { @@ -221,3 +303,57 @@ func createConfigMapVolume(volumeName, configMapName string) corev1.Volume { }, } } + +func (r *ReconcileJSFunction) channelForFunction(f *faasv1alpha1.JSFunction) (*kneventing.Channel, error) { + + channel := &kneventing.Channel{ + ObjectMeta: metav1.ObjectMeta{ + Name: f.Name, + Namespace: f.Namespace, + }, + Spec: kneventing.ChannelSpec{ + Provisioner: &corev1.ObjectReference{ + Name: "in-memory", + Kind: "InMemoryChannel", + APIVersion: kneventing.SchemeGroupVersion.String(), + }, + }, + } + + // Set JSFunction instance as the owner and controller + if err := controllerutil.SetControllerReference(f, channel, r.scheme); err != nil { + return nil, err + } + return channel, nil +} + +func (r *ReconcileJSFunction) subscriptionForFunction(f *faasv1alpha1.JSFunction) (*kneventing.Subscription, error) { + subscription := &kneventing.Subscription{ + ObjectMeta: metav1.ObjectMeta{ + Name: f.Name, + Namespace: f.Namespace, + }, + + Spec: kneventing.SubscriptionSpec{ + Channel: corev1.ObjectReference{ + Name: f.Name, + Kind: "Channel", + APIVersion: kneventing.SchemeGroupVersion.String(), + }, + Subscriber: &kneventing.SubscriberSpec{ + Ref: &corev1.ObjectReference{ + Name: f.Name, + Kind: "Service", + APIVersion: knv1alpha1.SchemeGroupVersion.String(), + }, + }, + }, + } + + // Set JSFunction instance as the owner and controller + if err := controllerutil.SetControllerReference(f, subscription, r.scheme); err != nil { + return nil, err + } + + return subscription, nil +}