diff --git a/.codecov.yml b/.codecov.yml index 5673ba3225..cf2acb16e3 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -5,6 +5,7 @@ ignore: - "examples" - "test" - "tools" + - "pkg/apis/genclient" coverage: status: project: diff --git a/cmd/preupgradechecks/preupgradechecks.go b/cmd/preupgradechecks/preupgradechecks.go index 6d9daf073c..3900161214 100644 --- a/cmd/preupgradechecks/preupgradechecks.go +++ b/cmd/preupgradechecks/preupgradechecks.go @@ -90,7 +90,7 @@ func (client *PreUpgradeTaskClient) VerifyFunctionSpecReferences() { var fList *fv1.FunctionList for i := 0; i < maxRetries; i++ { - fList, err = client.fissionClient.Functions(metav1.NamespaceAll).List(metav1.ListOptions{}) + fList, err = client.fissionClient.V1().Functions(metav1.NamespaceAll).List(metav1.ListOptions{}) if err == nil { break } @@ -108,20 +108,20 @@ func (client *PreUpgradeTaskClient) VerifyFunctionSpecReferences() { for _, fn := range fList.Items { secrets := fn.Spec.Secrets for _, secret := range secrets { - if secret.Namespace != fn.Metadata.Namespace { - errs = multierror.Append(errs, fmt.Errorf("function : %s.%s cannot reference a secret : %s in namespace : %s", fn.Metadata.Name, fn.Metadata.Namespace, secret.Name, secret.Namespace)) + if secret.Namespace != fn.ObjectMeta.Namespace { + errs = multierror.Append(errs, fmt.Errorf("function : %s.%s cannot reference a secret : %s in namespace : %s", fn.ObjectMeta.Name, fn.ObjectMeta.Namespace, secret.Name, secret.Namespace)) } } configmaps := fn.Spec.ConfigMaps for _, configmap := range configmaps { - if configmap.Namespace != fn.Metadata.Namespace { - errs = multierror.Append(errs, fmt.Errorf("function : %s.%s cannot reference a configmap : %s in namespace : %s", fn.Metadata.Name, fn.Metadata.Namespace, configmap.Name, configmap.Namespace)) + if configmap.Namespace != fn.ObjectMeta.Namespace { + errs = multierror.Append(errs, fmt.Errorf("function : %s.%s cannot reference a configmap : %s in namespace : %s", fn.ObjectMeta.Name, fn.ObjectMeta.Namespace, configmap.Name, configmap.Namespace)) } } - if fn.Spec.Package.PackageRef.Namespace != fn.Metadata.Namespace { - errs = multierror.Append(errs, fmt.Errorf("function : %s.%s cannot reference a package : %s in namespace : %s", fn.Metadata.Name, fn.Metadata.Namespace, fn.Spec.Package.PackageRef.Name, fn.Spec.Package.PackageRef.Namespace)) + if fn.Spec.Package.PackageRef.Namespace != fn.ObjectMeta.Namespace { + errs = multierror.Append(errs, fmt.Errorf("function : %s.%s cannot reference a package : %s in namespace : %s", fn.ObjectMeta.Name, fn.ObjectMeta.Namespace, fn.Spec.Package.PackageRef.Name, fn.Spec.Package.PackageRef.Namespace)) } } @@ -168,12 +168,12 @@ func (client *PreUpgradeTaskClient) RemoveClusterAdminRolesForFissionSAs() { // This is because, we just deleted the ClusterRoleBindings for these service accounts in the previous function and // for the existing functions to work, we need to give these SAs the right privileges func (client *PreUpgradeTaskClient) NeedRoleBindings() bool { - pkgList, err := client.fissionClient.Packages(metav1.NamespaceDefault).List(metav1.ListOptions{}) + pkgList, err := client.fissionClient.V1().Packages(metav1.NamespaceDefault).List(metav1.ListOptions{}) if err == nil && len(pkgList.Items) > 0 { return true } - fnList, err := client.fissionClient.Functions(metav1.NamespaceDefault).List(metav1.ListOptions{}) + fnList, err := client.fissionClient.V1().Functions(metav1.NamespaceDefault).List(metav1.ListOptions{}) if err == nil && len(fnList.Items) > 0 { return true } diff --git a/go.mod b/go.mod index 19e43b37da..f29150d57d 100644 --- a/go.mod +++ b/go.mod @@ -25,8 +25,6 @@ require ( github.com/gogo/protobuf v1.2.1 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef // indirect - github.com/golang/protobuf v1.3.1 - github.com/gomodule/redigo v0.0.0-20180627144507-2cd21d9966bf github.com/google/gofuzz v1.0.0 // indirect github.com/googleapis/gnostic v0.3.0 // indirect github.com/gophercloud/gophercloud v0.2.0 // indirect @@ -63,7 +61,6 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.3.0 github.com/ulikunitz/xz v0.0.0-20180703112113-636d36a76670 // indirect - github.com/urfave/cli v1.20.0 github.com/wcharczuk/go-chart v2.0.1+incompatible go.etcd.io/bbolt v1.3.2 // indirect go.opencensus.io v0.22.0 diff --git a/go.sum b/go.sum index 48da825596..fa416500d5 100644 --- a/go.sum +++ b/go.sum @@ -90,6 +90,7 @@ github.com/emicklei/go-restful v2.9.6+incompatible h1:tfrHha8zJ01ywiOEC1miGY8st1 github.com/emicklei/go-restful v2.9.6+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful-openapi v1.2.0 h1:ohRZ1yEZERGzqaozBgxa3A0lt6c6KF14xhs3IL9ECwg= github.com/emicklei/go-restful-openapi v1.2.0/go.mod h1:cy7o3Ge8ZWZ5E90mpEY81sJZZFs2pkuYcLvfngYy1l0= +github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550 h1:mV9jbLoSW/8m4VK16ZkHTozJa8sesK5u5kTMFysTYac= github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -149,8 +150,6 @@ github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v0.0.0-20180627144507-2cd21d9966bf h1:QiyWcEIeOkPTyeLwN4mguSULP/PWjmejPsU9elZAOeY= -github.com/gomodule/redigo v0.0.0-20180627144507-2cd21d9966bf/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -333,8 +332,6 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1 github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ulikunitz/xz v0.0.0-20180703112113-636d36a76670 h1:HQWT4ta3wW5GZ790GaqLCS+w1dvuA3rMfEQxLi+UOYU= github.com/ulikunitz/xz v0.0.0-20180703112113-636d36a76670/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= -github.com/urfave/cli v1.20.0 h1:fDqGv3UG/4jbVl/QkFwEdddtEDjh/5Ov6X+0B/3bPaw= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/wcharczuk/go-chart v2.0.1+incompatible h1:0pz39ZAycJFF7ju/1mepnk26RLVLBCWz1STcD3doU0A= github.com/wcharczuk/go-chart v2.0.1+incompatible/go.mod h1:PF5tmL4EIx/7Wf+hEkpCqYi5He4u90sw+0+6FhrryuE= github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= @@ -504,6 +501,7 @@ k8s.io/gengo v0.0.0-20190116091435-f8a0810f38af/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8 k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.3 h1:niceAagH1tzskmaie/icWd7ci1wbG7Bf2c6YGcQv+3c= k8s.io/klog v0.3.3/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30 h1:TRb4wNWoBVrH9plmkp2q86FIDppkbrEXdXlxU3a3BMI= k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= k8s.io/utils v0.0.0-20190221042446-c2654d5206da h1:ElyM7RPonbKnQqOcw7dG2IK5uvQQn3b/WPHqD5mBvP4= k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= diff --git a/hack/verify-govet.sh b/hack/verify-govet.sh index 83ffea00cd..8e8c2af2a7 100755 --- a/hack/verify-govet.sh +++ b/hack/verify-govet.sh @@ -4,4 +4,4 @@ set -o errexit set -o nounset set -o pipefail -go vet -v $(go list ./...| grep -v "vendor" | grep -v "examples" | grep -v "demos" | grep -v "test") +go vet -v $(go list ./...| grep -v "vendor" | grep -v "examples" | grep -v "genclient" | grep -v "demos" | grep -v "test") diff --git a/hack/verify-staticcheck.sh b/hack/verify-staticcheck.sh index 7b7f1109c8..398d0a93e2 100755 --- a/hack/verify-staticcheck.sh +++ b/hack/verify-staticcheck.sh @@ -4,4 +4,4 @@ set -o errexit set -o nounset set -o pipefail -go list ./...| grep -v vendor | grep -v "examples" | grep -v "demos" | grep -v "test" | xargs -I@ staticcheck @ +go list ./...| grep -v vendor | grep -v "examples" | grep -v "demos" | grep -v "genclient" | grep -v "test" | xargs -I@ staticcheck @ diff --git a/pkg/apis/README.md b/pkg/apis/README.md new file mode 100644 index 0000000000..7464112fcd --- /dev/null +++ b/pkg/apis/README.md @@ -0,0 +1,18 @@ +# Fission CRD generation + +* Clone https://github.com/fission/code-generator to generate fission CRD object deepcopy and client methods. +* MUST run code-generator in the fission root directory. + +``` bash +$ cd $GOPATH/src/github.com/fission/fission/ +$ $GOPATH/src/k8s.io/code-generator/generate-groups.sh \ + all \ + github.com/fission/fission/pkg/apis/genclient/v1 \ + github.com/fission/fission/pkg/apis \ + fission.io:v1 \ + --go-header-file $GOPATH/src/github.com/fission/fission/pkg/apis/boilerplate.txt +``` + +# Reference + +* https://blog.openshift.com/kubernetes-deep-dive-code-generation-customresources/ diff --git a/pkg/apis/boilerplate.txt b/pkg/apis/boilerplate.txt new file mode 100644 index 0000000000..35ab458f27 --- /dev/null +++ b/pkg/apis/boilerplate.txt @@ -0,0 +1,15 @@ +/* +Copyright The Fission 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. +*/ diff --git a/pkg/apis/fission.io/v1/README.md b/pkg/apis/fission.io/v1/README.md deleted file mode 100644 index cbbd9dba0b..0000000000 --- a/pkg/apis/fission.io/v1/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Fission CRD generation - -* Use [code-generator](https://github.com/kubernetes/code-generator) to generate fission CRD object deepcopy and client methods. - -``` bash -$ vendor/k8s.io/code-generator/generate-groups.sh deepcopy \ - github.com/fission/fission/pkg/client \ - github.com/fission/fission/pkg/apis \ - fission.io:v1 -``` - -# Reference - -* https://blog.openshift.com/kubernetes-deep-dive-code-generation-customresources/ diff --git a/pkg/apis/fission.io/v1/doc.go b/pkg/apis/fission.io/v1/doc.go index 05eef000eb..b6989b8477 100644 --- a/pkg/apis/fission.io/v1/doc.go +++ b/pkg/apis/fission.io/v1/doc.go @@ -17,13 +17,13 @@ limitations under the License. // This file tells deepcopy-gen to generate deepcopy methods for all structs in the package. // For more details, please visit https://blog.openshift.com/kubernetes-deep-dive-code-generation-customresources/ -// +k8s:deepcopy-gen=package +// +k8s:deepcopy-gen=package,register // +k8s:defaulter-gen=TypeMeta // +groupName=fission.io +// +groupGoName=V1 package v1 const ( - CRD_VERSION = "fission.io/v1" - + CRD_VERSION = "fission.io/v1" CRD_NAME_ENVIRONMENT = "Environment" ) diff --git a/pkg/apis/fission.io/v1/register.go b/pkg/apis/fission.io/v1/register.go new file mode 100644 index 0000000000..7a661dd177 --- /dev/null +++ b/pkg/apis/fission.io/v1/register.go @@ -0,0 +1,70 @@ +/* +Copyright 2019 The Kubernetes 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. +*/ + +// The file comes from Kubernetes code-generator repo with custom modification. +// https://github.com/kubernetes/code-generator/blob/0826954c61ed88ac5d75e771ade6aae646ca5268/_examples/HyphenGroup/apis/example/v1/register.go + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +var SchemeGroupVersion = schema.GroupVersion{Group: "fission.io", Version: "v1"} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes) +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +// Adds the list of known types to the given scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes( + SchemeGroupVersion, + &Function{}, + &FunctionList{}, + &Environment{}, + &EnvironmentList{}, + &HTTPTrigger{}, + &HTTPTriggerList{}, + &KubernetesWatchTrigger{}, + &KubernetesWatchTriggerList{}, + &TimeTrigger{}, + &TimeTriggerList{}, + &MessageQueueTrigger{}, + &MessageQueueTriggerList{}, + &Package{}, + &PackageList{}, + &CanaryConfig{}, + &CanaryConfigList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/pkg/apis/fission.io/v1/typeDeepcopyFunc.go b/pkg/apis/fission.io/v1/typeDeepcopyFunc.go deleted file mode 100644 index 69ac51436c..0000000000 --- a/pkg/apis/fission.io/v1/typeDeepcopyFunc.go +++ /dev/null @@ -1,266 +0,0 @@ -/* -Copyright 2019 The Fission 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 v1 - -import ( - "github.com/hashicorp/go-multierror" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime/schema" -) - -// Each CRD type needs: -// GetObjectKind (to satisfy the Object interface) -// -// In addition, each singular CRD type needs: -// GetObjectMeta (to satisfy the ObjectMetaAccessor interface) -// -// And each list CRD type needs: -// GetListMeta (to satisfy the ListMetaAccessor interface) - -func (f *Function) GetObjectKind() schema.ObjectKind { - return &f.TypeMeta -} -func (e *Environment) GetObjectKind() schema.ObjectKind { - return &e.TypeMeta -} -func (ht *HTTPTrigger) GetObjectKind() schema.ObjectKind { - return &ht.TypeMeta -} -func (w *KubernetesWatchTrigger) GetObjectKind() schema.ObjectKind { - return &w.TypeMeta -} -func (t *TimeTrigger) GetObjectKind() schema.ObjectKind { - return &t.TypeMeta -} -func (m *MessageQueueTrigger) GetObjectKind() schema.ObjectKind { - return &m.TypeMeta -} -func (p *Package) GetObjectKind() schema.ObjectKind { - return &p.TypeMeta -} -func (c *CanaryConfig) GetObjectKind() schema.ObjectKind { - return &c.TypeMeta -} - -func (f *Function) GetObjectMeta() metav1.Object { - return &f.Metadata -} -func (e *Environment) GetObjectMeta() metav1.Object { - return &e.Metadata -} -func (ht *HTTPTrigger) GetObjectMeta() metav1.Object { - return &ht.Metadata -} -func (w *KubernetesWatchTrigger) GetObjectMeta() metav1.Object { - return &w.Metadata -} -func (t *TimeTrigger) GetObjectMeta() metav1.Object { - return &t.Metadata -} -func (m *MessageQueueTrigger) GetObjectMeta() metav1.Object { - return &m.Metadata -} -func (p *Package) GetObjectMeta() metav1.Object { - return &p.Metadata -} -func (c *CanaryConfig) GetObjectMeta() metav1.Object { - return &c.Metadata -} - -func (fl *FunctionList) GetObjectKind() schema.ObjectKind { - return &fl.TypeMeta -} -func (el *EnvironmentList) GetObjectKind() schema.ObjectKind { - return &el.TypeMeta -} -func (hl *HTTPTriggerList) GetObjectKind() schema.ObjectKind { - return &hl.TypeMeta -} -func (wl *KubernetesWatchTriggerList) GetObjectKind() schema.ObjectKind { - return &wl.TypeMeta -} -func (wl *TimeTriggerList) GetObjectKind() schema.ObjectKind { - return &wl.TypeMeta -} -func (ml *MessageQueueTriggerList) GetObjectKind() schema.ObjectKind { - return &ml.TypeMeta -} -func (pl *PackageList) GetObjectKind() schema.ObjectKind { - return &pl.TypeMeta -} - -func (cl *CanaryConfigList) GetObjectKind() schema.ObjectKind { - return &cl.TypeMeta -} - -func (fl *FunctionList) GetListMeta() metav1.ListInterface { - return &fl.Metadata -} -func (el *EnvironmentList) GetListMeta() metav1.ListInterface { - return &el.Metadata -} -func (hl *HTTPTriggerList) GetListMeta() metav1.ListInterface { - return &hl.Metadata -} -func (wl *KubernetesWatchTriggerList) GetListMeta() metav1.ListInterface { - return &wl.Metadata -} -func (wl *TimeTriggerList) GetListMeta() metav1.ListInterface { - return &wl.Metadata -} -func (ml *MessageQueueTriggerList) GetListMeta() metav1.ListInterface { - return &ml.Metadata -} -func (pl *PackageList) GetListMeta() metav1.ListInterface { - return &pl.Metadata -} - -func (cl *CanaryConfigList) GetListMeta() metav1.ListInterface { - return &cl.Metadata -} - -func validateMetadata(field string, m metav1.ObjectMeta) error { - return ValidateKubeReference(field, m.Name, m.Namespace) -} - -func (p *Package) Validate() error { - result := &multierror.Error{} - - result = multierror.Append(result, - validateMetadata("Package", p.Metadata), - p.Spec.Validate(), - p.Status.Validate()) - - return result.ErrorOrNil() -} - -func (pl *PackageList) Validate() error { - result := &multierror.Error{} - // not validate ListMeta - for _, p := range pl.Items { - result = multierror.Append(result, p.Validate()) - } - return result.ErrorOrNil() -} - -func (f *Function) Validate() error { - result := &multierror.Error{} - - result = multierror.Append(result, - validateMetadata("Function", f.Metadata), - f.Spec.Validate()) - - return result.ErrorOrNil() -} - -func (fl *FunctionList) Validate() error { - result := &multierror.Error{} - for _, f := range fl.Items { - result = multierror.Append(result, f.Validate()) - } - return result.ErrorOrNil() -} - -func (e *Environment) Validate() error { - result := &multierror.Error{} - - result = multierror.Append(result, - validateMetadata("Environment", e.Metadata), - e.Spec.Validate()) - - return result.ErrorOrNil() -} - -func (el *EnvironmentList) Validate() error { - result := &multierror.Error{} - for _, e := range el.Items { - result = multierror.Append(result, e.Validate()) - } - return result.ErrorOrNil() -} - -func (h *HTTPTrigger) Validate() error { - result := &multierror.Error{} - - result = multierror.Append(result, - validateMetadata("HTTPTrigger", h.Metadata), - h.Spec.Validate()) - - return result.ErrorOrNil() -} - -func (hl *HTTPTriggerList) Validate() error { - result := &multierror.Error{} - for _, h := range hl.Items { - result = multierror.Append(result, h.Validate()) - } - return result.ErrorOrNil() -} - -func (k *KubernetesWatchTrigger) Validate() error { - result := &multierror.Error{} - - result = multierror.Append(result, - validateMetadata("KubernetesWatchTrigger", k.Metadata), - k.Spec.Validate()) - - return result.ErrorOrNil() -} - -func (kl *KubernetesWatchTriggerList) Validate() error { - result := &multierror.Error{} - for _, k := range kl.Items { - result = multierror.Append(result, k.Validate()) - } - return result -} - -func (t *TimeTrigger) Validate() error { - result := &multierror.Error{} - - result = multierror.Append(result, - validateMetadata("TimeTrigger", t.Metadata), - t.Spec.Validate()) - - return result.ErrorOrNil() -} - -func (tl *TimeTriggerList) Validate() error { - result := &multierror.Error{} - for _, t := range tl.Items { - result = multierror.Append(result, t.Validate()) - } - return result.ErrorOrNil() -} - -func (m *MessageQueueTrigger) Validate() error { - result := &multierror.Error{} - - result = multierror.Append(result, - validateMetadata("MessageQueueTrigger", m.Metadata), - m.Spec.Validate()) - - return result.ErrorOrNil() -} - -func (ml *MessageQueueTriggerList) Validate() error { - result := &multierror.Error{} - for _, m := range ml.Items { - result = multierror.Append(result, m.Validate()) - } - return result.ErrorOrNil() -} diff --git a/pkg/apis/fission.io/v1/types.go b/pkg/apis/fission.io/v1/types.go index 45b8b9d573..fe9db62503 100644 --- a/pkg/apis/fission.io/v1/types.go +++ b/pkg/apis/fission.io/v1/types.go @@ -17,14 +17,10 @@ limitations under the License. package v1 import ( - "time" - apiv1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object - // // To add a Fission CRD type: // 1. Create a "spec" type, for everything in the type except metadata @@ -42,11 +38,13 @@ import ( type ( // Packages. Think of these as function-level images. + // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object Package struct { - metav1.TypeMeta `json:",inline"` - Metadata metav1.ObjectMeta `json:"metadata"` - Spec PackageSpec `json:"spec"` + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata"` + + Spec PackageSpec `json:"spec"` // Status indicates the build status of package. Status PackageStatus `json:"status"` @@ -56,121 +54,130 @@ type ( // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object PackageList struct { metav1.TypeMeta `json:",inline"` - Metadata metav1.ListMeta `json:"metadata"` - Items []Package `json:"items"` + metav1.ListMeta `json:"metadata"` + Items []Package `json:"items"` } // Function is function runs within environment runtime with given package and secrets/configmaps. + // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object Function struct { - metav1.TypeMeta `json:",inline"` - Metadata metav1.ObjectMeta `json:"metadata"` - Spec FunctionSpec `json:"spec"` + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata"` + Spec FunctionSpec `json:"spec"` } // FunctionList is a list of Functions. // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object FunctionList struct { metav1.TypeMeta `json:",inline"` - Metadata metav1.ListMeta `json:"metadata"` - Items []Function `json:"items"` + metav1.ListMeta `json:"metadata"` + Items []Function `json:"items"` } // Environment is environment for building and running user functions. + // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object Environment struct { - metav1.TypeMeta `json:",inline"` - Metadata metav1.ObjectMeta `json:"metadata"` - Spec EnvironmentSpec `json:"spec"` + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata"` + Spec EnvironmentSpec `json:"spec"` } // EnvironmentList is a list of Environments. // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object EnvironmentList struct { metav1.TypeMeta `json:",inline"` - Metadata metav1.ListMeta `json:"metadata"` - Items []Environment `json:"items"` + metav1.ListMeta `json:"metadata"` + Items []Environment `json:"items"` } // HTTPTrigger is the trigger invokes user functions when receiving HTTP requests. + // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object HTTPTrigger struct { - metav1.TypeMeta `json:",inline"` - Metadata metav1.ObjectMeta `json:"metadata"` - Spec HTTPTriggerSpec `json:"spec"` + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata"` + Spec HTTPTriggerSpec `json:"spec"` } // HTTPTriggerList is a list of HTTPTriggers // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object HTTPTriggerList struct { metav1.TypeMeta `json:",inline"` - Metadata metav1.ListMeta `json:"metadata"` - Items []HTTPTrigger `json:"items"` + metav1.ListMeta `json:"metadata"` + Items []HTTPTrigger `json:"items"` } // KubernetesWatchTrigger watches kubernetes resource events and invokes functions. + // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object KubernetesWatchTrigger struct { - metav1.TypeMeta `json:",inline"` - Metadata metav1.ObjectMeta `json:"metadata"` - Spec KubernetesWatchTriggerSpec `json:"spec"` + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata"` + Spec KubernetesWatchTriggerSpec `json:"spec"` } // KubernetesWatchTriggerList is a list of KubernetesWatchTriggers // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object KubernetesWatchTriggerList struct { metav1.TypeMeta `json:",inline"` - Metadata metav1.ListMeta `json:"metadata"` + metav1.ListMeta `json:"metadata"` Items []KubernetesWatchTrigger `json:"items"` } // TimeTrigger invokes functions based on given cron schedule. + // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object TimeTrigger struct { - metav1.TypeMeta `json:",inline"` - Metadata metav1.ObjectMeta `json:"metadata"` - Spec TimeTriggerSpec `json:"spec"` + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata"` + + Spec TimeTriggerSpec `json:"spec"` } // TimeTriggerList is a list of TimeTriggers. // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object TimeTriggerList struct { metav1.TypeMeta `json:",inline"` - Metadata metav1.ListMeta `json:"metadata"` + metav1.ListMeta `json:"metadata"` Items []TimeTrigger `json:"items"` } // MessageQueueTrigger invokes functions when messages arrive to certain topic that trigger subscribes to. + // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object MessageQueueTrigger struct { - metav1.TypeMeta `json:",inline"` - Metadata metav1.ObjectMeta `json:"metadata"` - Spec MessageQueueTriggerSpec `json:"spec"` + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata"` + + Spec MessageQueueTriggerSpec `json:"spec"` } // MessageQueueTriggerList is a list of MessageQueueTriggers. // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object MessageQueueTriggerList struct { metav1.TypeMeta `json:",inline"` - Metadata metav1.ListMeta `json:"metadata"` + metav1.ListMeta `json:"metadata"` Items []MessageQueueTrigger `json:"items"` } // CanaryConfig is for canary deployment of two functions. + // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object CanaryConfig struct { - metav1.TypeMeta `json:",inline"` - Metadata metav1.ObjectMeta `json:"metadata"` - Spec CanaryConfigSpec `json:"spec"` - Status CanaryConfigStatus `json:"status"` + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata"` + Spec CanaryConfigSpec `json:"spec"` + Status CanaryConfigStatus `json:"status"` } // CanaryConfigList is a list of CanaryConfigs. // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object CanaryConfigList struct { metav1.TypeMeta `json:",inline"` - Metadata metav1.ListMeta `json:"metadata"` + metav1.ListMeta `json:"metadata"` Items []CanaryConfig `json:"items"` } @@ -267,7 +274,9 @@ type ( BuildLog string `json:"buildlog,omitempty"` // output of the build (errors etc) // LastUpdateTimestamp will store the timestamp the package was last updated - LastUpdateTimestamp time.Time `json:"lastUpdateTimestamp,omitempty"` + // metav1.Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. + // https://github.com/kubernetes/apimachinery/blob/44bd77c24ef93cd3a5eb6fef64e514025d10d44e/pkg/apis/meta/v1/time.go#L26-L35 + LastUpdateTimestamp metav1.Time `json:"lastUpdateTimestamp,omitempty"` } // PackageRef is a reference to the package. diff --git a/pkg/apis/fission.io/v1/validation.go b/pkg/apis/fission.io/v1/validation.go index 0782e3aa9a..cd5e286d23 100644 --- a/pkg/apis/fission.io/v1/validation.go +++ b/pkg/apis/fission.io/v1/validation.go @@ -25,6 +25,7 @@ import ( "github.com/hashicorp/go-multierror" nsUtil "github.com/nats-io/nats-streaming-server/util" "github.com/robfig/cron" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/validation" ) @@ -556,3 +557,135 @@ func (spec TimeTriggerSpec) Validate() error { return result.ErrorOrNil() } + +func validateMetadata(field string, m metav1.ObjectMeta) error { + return ValidateKubeReference(field, m.Name, m.Namespace) +} + +func (p *Package) Validate() error { + result := &multierror.Error{} + + result = multierror.Append(result, + validateMetadata("Package", p.ObjectMeta), + p.Spec.Validate(), + p.Status.Validate()) + + return result.ErrorOrNil() +} + +func (pl *PackageList) Validate() error { + result := &multierror.Error{} + // not validate ListMeta + for _, p := range pl.Items { + result = multierror.Append(result, p.Validate()) + } + return result.ErrorOrNil() +} + +func (f *Function) Validate() error { + result := &multierror.Error{} + + result = multierror.Append(result, + validateMetadata("Function", f.ObjectMeta), + f.Spec.Validate()) + + return result.ErrorOrNil() +} + +func (fl *FunctionList) Validate() error { + result := &multierror.Error{} + for _, f := range fl.Items { + result = multierror.Append(result, f.Validate()) + } + return result.ErrorOrNil() +} + +func (e *Environment) Validate() error { + result := &multierror.Error{} + + result = multierror.Append(result, + validateMetadata("Environment", e.ObjectMeta), + e.Spec.Validate()) + + return result.ErrorOrNil() +} + +func (el *EnvironmentList) Validate() error { + result := &multierror.Error{} + for _, e := range el.Items { + result = multierror.Append(result, e.Validate()) + } + return result.ErrorOrNil() +} + +func (h *HTTPTrigger) Validate() error { + result := &multierror.Error{} + + result = multierror.Append(result, + validateMetadata("HTTPTrigger", h.ObjectMeta), + h.Spec.Validate()) + + return result.ErrorOrNil() +} + +func (hl *HTTPTriggerList) Validate() error { + result := &multierror.Error{} + for _, h := range hl.Items { + result = multierror.Append(result, h.Validate()) + } + return result.ErrorOrNil() +} + +func (k *KubernetesWatchTrigger) Validate() error { + result := &multierror.Error{} + + result = multierror.Append(result, + validateMetadata("KubernetesWatchTrigger", k.ObjectMeta), + k.Spec.Validate()) + + return result.ErrorOrNil() +} + +func (kl *KubernetesWatchTriggerList) Validate() error { + result := &multierror.Error{} + for _, k := range kl.Items { + result = multierror.Append(result, k.Validate()) + } + return result +} + +func (t *TimeTrigger) Validate() error { + result := &multierror.Error{} + + result = multierror.Append(result, + validateMetadata("TimeTrigger", t.ObjectMeta), + t.Spec.Validate()) + + return result.ErrorOrNil() +} + +func (tl *TimeTriggerList) Validate() error { + result := &multierror.Error{} + for _, t := range tl.Items { + result = multierror.Append(result, t.Validate()) + } + return result.ErrorOrNil() +} + +func (m *MessageQueueTrigger) Validate() error { + result := &multierror.Error{} + + result = multierror.Append(result, + validateMetadata("MessageQueueTrigger", m.ObjectMeta), + m.Spec.Validate()) + + return result.ErrorOrNil() +} + +func (ml *MessageQueueTriggerList) Validate() error { + result := &multierror.Error{} + for _, m := range ml.Items { + result = multierror.Append(result, m.Validate()) + } + return result.ErrorOrNil() +} diff --git a/pkg/apis/fission.io/v1/zz_generated.deepcopy.go b/pkg/apis/fission.io/v1/zz_generated.deepcopy.go index 386b77f2f6..fb052af169 100644 --- a/pkg/apis/fission.io/v1/zz_generated.deepcopy.go +++ b/pkg/apis/fission.io/v1/zz_generated.deepcopy.go @@ -1,7 +1,7 @@ // +build !ignore_autogenerated /* -Copyright The Kubernetes Authors. +Copyright The Fission Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -55,6 +55,11 @@ func (in *Builder) DeepCopyInto(out *Builder) { *out = new(corev1.Container) (*in).DeepCopyInto(*out) } + if in.PodSpec != nil { + in, out := &in.PodSpec, &out.PodSpec + *out = new(corev1.PodSpec) + (*in).DeepCopyInto(*out) + } return } @@ -72,7 +77,7 @@ func (in *Builder) DeepCopy() *Builder { func (in *CanaryConfig) DeepCopyInto(out *CanaryConfig) { *out = *in out.TypeMeta = in.TypeMeta - in.Metadata.DeepCopyInto(&out.Metadata) + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) out.Spec = in.Spec out.Status = in.Status return @@ -100,7 +105,7 @@ func (in *CanaryConfig) DeepCopyObject() runtime.Object { func (in *CanaryConfigList) DeepCopyInto(out *CanaryConfigList) { *out = *in out.TypeMeta = in.TypeMeta - out.Metadata = in.Metadata + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]CanaryConfig, len(*in)) @@ -197,7 +202,7 @@ func (in *ConfigMapReference) DeepCopy() *ConfigMapReference { func (in *Environment) DeepCopyInto(out *Environment) { *out = *in out.TypeMeta = in.TypeMeta - in.Metadata.DeepCopyInto(&out.Metadata) + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) return } @@ -224,7 +229,7 @@ func (in *Environment) DeepCopyObject() runtime.Object { func (in *EnvironmentList) DeepCopyInto(out *EnvironmentList) { *out = *in out.TypeMeta = in.TypeMeta - out.Metadata = in.Metadata + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]Environment, len(*in)) @@ -308,7 +313,7 @@ func (in *ExecutionStrategy) DeepCopy() *ExecutionStrategy { func (in *Function) DeepCopyInto(out *Function) { *out = *in out.TypeMeta = in.TypeMeta - in.Metadata.DeepCopyInto(&out.Metadata) + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) return } @@ -335,7 +340,7 @@ func (in *Function) DeepCopyObject() runtime.Object { func (in *FunctionList) DeepCopyInto(out *FunctionList) { *out = *in out.TypeMeta = in.TypeMeta - out.Metadata = in.Metadata + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]Function, len(*in)) @@ -438,7 +443,7 @@ func (in *FunctionSpec) DeepCopy() *FunctionSpec { func (in *HTTPTrigger) DeepCopyInto(out *HTTPTrigger) { *out = *in out.TypeMeta = in.TypeMeta - in.Metadata.DeepCopyInto(&out.Metadata) + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) return } @@ -465,7 +470,7 @@ func (in *HTTPTrigger) DeepCopyObject() runtime.Object { func (in *HTTPTriggerList) DeepCopyInto(out *HTTPTriggerList) { *out = *in out.TypeMeta = in.TypeMeta - out.Metadata = in.Metadata + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]HTTPTrigger, len(*in)) @@ -498,6 +503,7 @@ func (in *HTTPTriggerList) DeepCopyObject() runtime.Object { func (in *HTTPTriggerSpec) DeepCopyInto(out *HTTPTriggerSpec) { *out = *in in.FunctionReference.DeepCopyInto(&out.FunctionReference) + in.IngressConfig.DeepCopyInto(&out.IngressConfig) return } @@ -511,6 +517,29 @@ func (in *HTTPTriggerSpec) DeepCopy() *HTTPTriggerSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IngressConfig) DeepCopyInto(out *IngressConfig) { + *out = *in + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressConfig. +func (in *IngressConfig) DeepCopy() *IngressConfig { + if in == nil { + return nil + } + out := new(IngressConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *InvokeStrategy) DeepCopyInto(out *InvokeStrategy) { *out = *in @@ -532,7 +561,7 @@ func (in *InvokeStrategy) DeepCopy() *InvokeStrategy { func (in *KubernetesWatchTrigger) DeepCopyInto(out *KubernetesWatchTrigger) { *out = *in out.TypeMeta = in.TypeMeta - in.Metadata.DeepCopyInto(&out.Metadata) + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) return } @@ -559,7 +588,7 @@ func (in *KubernetesWatchTrigger) DeepCopyObject() runtime.Object { func (in *KubernetesWatchTriggerList) DeepCopyInto(out *KubernetesWatchTriggerList) { *out = *in out.TypeMeta = in.TypeMeta - out.Metadata = in.Metadata + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]KubernetesWatchTrigger, len(*in)) @@ -616,7 +645,7 @@ func (in *KubernetesWatchTriggerSpec) DeepCopy() *KubernetesWatchTriggerSpec { func (in *MessageQueueTrigger) DeepCopyInto(out *MessageQueueTrigger) { *out = *in out.TypeMeta = in.TypeMeta - in.Metadata.DeepCopyInto(&out.Metadata) + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) return } @@ -643,7 +672,7 @@ func (in *MessageQueueTrigger) DeepCopyObject() runtime.Object { func (in *MessageQueueTriggerList) DeepCopyInto(out *MessageQueueTriggerList) { *out = *in out.TypeMeta = in.TypeMeta - out.Metadata = in.Metadata + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]MessageQueueTrigger, len(*in)) @@ -693,9 +722,9 @@ func (in *MessageQueueTriggerSpec) DeepCopy() *MessageQueueTriggerSpec { func (in *Package) DeepCopyInto(out *Package) { *out = *in out.TypeMeta = in.TypeMeta - in.Metadata.DeepCopyInto(&out.Metadata) + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) - out.Status = in.Status + in.Status.DeepCopyInto(&out.Status) return } @@ -721,7 +750,7 @@ func (in *Package) DeepCopyObject() runtime.Object { func (in *PackageList) DeepCopyInto(out *PackageList) { *out = *in out.TypeMeta = in.TypeMeta - out.Metadata = in.Metadata + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]Package, len(*in)) @@ -788,6 +817,7 @@ func (in *PackageSpec) DeepCopy() *PackageSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PackageStatus) DeepCopyInto(out *PackageStatus) { *out = *in + in.LastUpdateTimestamp.DeepCopyInto(&out.LastUpdateTimestamp) return } @@ -809,6 +839,11 @@ func (in *Runtime) DeepCopyInto(out *Runtime) { *out = new(corev1.Container) (*in).DeepCopyInto(*out) } + if in.PodSpec != nil { + in, out := &in.PodSpec, &out.PodSpec + *out = new(corev1.PodSpec) + (*in).DeepCopyInto(*out) + } return } @@ -842,7 +877,7 @@ func (in *SecretReference) DeepCopy() *SecretReference { func (in *TimeTrigger) DeepCopyInto(out *TimeTrigger) { *out = *in out.TypeMeta = in.TypeMeta - in.Metadata.DeepCopyInto(&out.Metadata) + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) return } @@ -869,7 +904,7 @@ func (in *TimeTrigger) DeepCopyObject() runtime.Object { func (in *TimeTriggerList) DeepCopyInto(out *TimeTriggerList) { *out = *in out.TypeMeta = in.TypeMeta - out.Metadata = in.Metadata + in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items *out = make([]TimeTrigger, len(*in)) diff --git a/pkg/apis/genclient/v1/clientset/versioned/clientset.go b/pkg/apis/genclient/v1/clientset/versioned/clientset.go new file mode 100644 index 0000000000..1adb898233 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/clientset.go @@ -0,0 +1,97 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package versioned + +import ( + "fmt" + + v1v1 "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1" + discovery "k8s.io/client-go/discovery" + rest "k8s.io/client-go/rest" + flowcontrol "k8s.io/client-go/util/flowcontrol" +) + +type Interface interface { + Discovery() discovery.DiscoveryInterface + V1V1() v1v1.V1V1Interface +} + +// Clientset contains the clients for groups. Each group has exactly one +// version included in a Clientset. +type Clientset struct { + *discovery.DiscoveryClient + v1V1 *v1v1.V1V1Client +} + +// V1V1 retrieves the V1V1Client +func (c *Clientset) V1V1() v1v1.V1V1Interface { + return c.v1V1 +} + +// Discovery retrieves the DiscoveryClient +func (c *Clientset) Discovery() discovery.DiscoveryInterface { + if c == nil { + return nil + } + return c.DiscoveryClient +} + +// NewForConfig creates a new Clientset for the given config. +// If config's RateLimiter is not set and QPS and Burst are acceptable, +// NewForConfig will generate a rate-limiter in configShallowCopy. +func NewForConfig(c *rest.Config) (*Clientset, error) { + configShallowCopy := *c + if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 { + if configShallowCopy.Burst <= 0 { + return nil, fmt.Errorf("Burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0") + } + configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst) + } + var cs Clientset + var err error + cs.v1V1, err = v1v1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + + cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + return &cs, nil +} + +// NewForConfigOrDie creates a new Clientset for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *Clientset { + var cs Clientset + cs.v1V1 = v1v1.NewForConfigOrDie(c) + + cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c) + return &cs +} + +// New creates a new Clientset for the given RESTClient. +func New(c rest.Interface) *Clientset { + var cs Clientset + cs.v1V1 = v1v1.New(c) + + cs.DiscoveryClient = discovery.NewDiscoveryClient(c) + return &cs +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/doc.go b/pkg/apis/genclient/v1/clientset/versioned/doc.go new file mode 100644 index 0000000000..5cc414fc10 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/doc.go @@ -0,0 +1,20 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +// This package has the automatically generated clientset. +package versioned diff --git a/pkg/apis/genclient/v1/clientset/versioned/fake/clientset_generated.go b/pkg/apis/genclient/v1/clientset/versioned/fake/clientset_generated.go new file mode 100644 index 0000000000..948654c05d --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/fake/clientset_generated.go @@ -0,0 +1,82 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + clientset "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + v1v1 "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1" + fakev1v1 "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/discovery" + fakediscovery "k8s.io/client-go/discovery/fake" + "k8s.io/client-go/testing" +) + +// NewSimpleClientset returns a clientset that will respond with the provided objects. +// It's backed by a very simple object tracker that processes creates, updates and deletions as-is, +// without applying any validations and/or defaults. It shouldn't be considered a replacement +// for a real clientset and is mostly useful in simple unit tests. +func NewSimpleClientset(objects ...runtime.Object) *Clientset { + o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder()) + for _, obj := range objects { + if err := o.Add(obj); err != nil { + panic(err) + } + } + + cs := &Clientset{tracker: o} + cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} + cs.AddReactor("*", "*", testing.ObjectReaction(o)) + cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { + gvr := action.GetResource() + ns := action.GetNamespace() + watch, err := o.Watch(gvr, ns) + if err != nil { + return false, nil, err + } + return true, watch, nil + }) + + return cs +} + +// Clientset implements clientset.Interface. Meant to be embedded into a +// struct to get a default implementation. This makes faking out just the method +// you want to test easier. +type Clientset struct { + testing.Fake + discovery *fakediscovery.FakeDiscovery + tracker testing.ObjectTracker +} + +func (c *Clientset) Discovery() discovery.DiscoveryInterface { + return c.discovery +} + +func (c *Clientset) Tracker() testing.ObjectTracker { + return c.tracker +} + +var _ clientset.Interface = &Clientset{} + +// V1V1 retrieves the V1V1Client +func (c *Clientset) V1V1() v1v1.V1V1Interface { + return &fakev1v1.FakeV1V1{Fake: &c.Fake} +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/fake/doc.go b/pkg/apis/genclient/v1/clientset/versioned/fake/doc.go new file mode 100644 index 0000000000..ee09251415 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +// This package has the automatically generated fake clientset. +package fake diff --git a/pkg/apis/genclient/v1/clientset/versioned/fake/register.go b/pkg/apis/genclient/v1/clientset/versioned/fake/register.go new file mode 100644 index 0000000000..363e1e2f0a --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/fake/register.go @@ -0,0 +1,56 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + v1v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + schema "k8s.io/apimachinery/pkg/runtime/schema" + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" +) + +var scheme = runtime.NewScheme() +var codecs = serializer.NewCodecFactory(scheme) +var parameterCodec = runtime.NewParameterCodec(scheme) +var localSchemeBuilder = runtime.SchemeBuilder{ + v1v1.AddToScheme, +} + +// AddToScheme adds all types of this clientset into the given scheme. This allows composition +// of clientsets, like in: +// +// import ( +// "k8s.io/client-go/kubernetes" +// clientsetscheme "k8s.io/client-go/kubernetes/scheme" +// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" +// ) +// +// kclientset, _ := kubernetes.NewForConfig(c) +// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// +// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types +// correctly. +var AddToScheme = localSchemeBuilder.AddToScheme + +func init() { + v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"}) + utilruntime.Must(AddToScheme(scheme)) +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/scheme/doc.go b/pkg/apis/genclient/v1/clientset/versioned/scheme/doc.go new file mode 100644 index 0000000000..2218e6b787 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/scheme/doc.go @@ -0,0 +1,20 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +// This package contains the scheme of the automatically generated clientset. +package scheme diff --git a/pkg/apis/genclient/v1/clientset/versioned/scheme/register.go b/pkg/apis/genclient/v1/clientset/versioned/scheme/register.go new file mode 100644 index 0000000000..a1ec1ee761 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/scheme/register.go @@ -0,0 +1,56 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package scheme + +import ( + v1v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + schema "k8s.io/apimachinery/pkg/runtime/schema" + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" +) + +var Scheme = runtime.NewScheme() +var Codecs = serializer.NewCodecFactory(Scheme) +var ParameterCodec = runtime.NewParameterCodec(Scheme) +var localSchemeBuilder = runtime.SchemeBuilder{ + v1v1.AddToScheme, +} + +// AddToScheme adds all types of this clientset into the given scheme. This allows composition +// of clientsets, like in: +// +// import ( +// "k8s.io/client-go/kubernetes" +// clientsetscheme "k8s.io/client-go/kubernetes/scheme" +// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" +// ) +// +// kclientset, _ := kubernetes.NewForConfig(c) +// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// +// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types +// correctly. +var AddToScheme = localSchemeBuilder.AddToScheme + +func init() { + v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"}) + utilruntime.Must(AddToScheme(Scheme)) +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/canaryconfig.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/canaryconfig.go new file mode 100644 index 0000000000..e589a0fe53 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/canaryconfig.go @@ -0,0 +1,191 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1 + +import ( + "time" + + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + scheme "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/scheme" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" +) + +// CanaryConfigsGetter has a method to return a CanaryConfigInterface. +// A group's client should implement this interface. +type CanaryConfigsGetter interface { + CanaryConfigs(namespace string) CanaryConfigInterface +} + +// CanaryConfigInterface has methods to work with CanaryConfig resources. +type CanaryConfigInterface interface { + Create(*v1.CanaryConfig) (*v1.CanaryConfig, error) + Update(*v1.CanaryConfig) (*v1.CanaryConfig, error) + UpdateStatus(*v1.CanaryConfig) (*v1.CanaryConfig, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.CanaryConfig, error) + List(opts metav1.ListOptions) (*v1.CanaryConfigList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.CanaryConfig, err error) + CanaryConfigExpansion +} + +// canaryConfigs implements CanaryConfigInterface +type canaryConfigs struct { + client rest.Interface + ns string +} + +// newCanaryConfigs returns a CanaryConfigs +func newCanaryConfigs(c *V1V1Client, namespace string) *canaryConfigs { + return &canaryConfigs{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the _canaryConfig, and returns the corresponding canaryConfig object, and an error if there is any. +func (c *canaryConfigs) Get(name string, options metav1.GetOptions) (result *v1.CanaryConfig, err error) { + result = &v1.CanaryConfig{} + err = c.client.Get(). + Namespace(c.ns). + Resource("canaryconfigs"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of CanaryConfigs that match those selectors. +func (c *canaryConfigs) List(opts metav1.ListOptions) (result *v1.CanaryConfigList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1.CanaryConfigList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("canaryconfigs"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested canaryConfigs. +func (c *canaryConfigs) Watch(opts metav1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("canaryconfigs"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch() +} + +// Create takes the representation of a _canaryConfig and creates it. Returns the server's representation of the canaryConfig, and an error, if there is any. +func (c *canaryConfigs) Create(_canaryConfig *v1.CanaryConfig) (result *v1.CanaryConfig, err error) { + result = &v1.CanaryConfig{} + err = c.client.Post(). + Namespace(c.ns). + Resource("canaryconfigs"). + Body(_canaryConfig). + Do(). + Into(result) + return +} + +// Update takes the representation of a _canaryConfig and updates it. Returns the server's representation of the canaryConfig, and an error, if there is any. +func (c *canaryConfigs) Update(_canaryConfig *v1.CanaryConfig) (result *v1.CanaryConfig, err error) { + result = &v1.CanaryConfig{} + err = c.client.Put(). + Namespace(c.ns). + Resource("canaryconfigs"). + Name(_canaryConfig.Name). + Body(_canaryConfig). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). + +func (c *canaryConfigs) UpdateStatus(_canaryConfig *v1.CanaryConfig) (result *v1.CanaryConfig, err error) { + result = &v1.CanaryConfig{} + err = c.client.Put(). + Namespace(c.ns). + Resource("canaryconfigs"). + Name(_canaryConfig.Name). + SubResource("status"). + Body(_canaryConfig). + Do(). + Into(result) + return +} + +// Delete takes name of the _canaryConfig and deletes it. Returns an error if one occurs. +func (c *canaryConfigs) Delete(name string, options *metav1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("canaryconfigs"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *canaryConfigs) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { + var timeout time.Duration + if listOptions.TimeoutSeconds != nil { + timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Namespace(c.ns). + Resource("canaryconfigs"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Timeout(timeout). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched canaryConfig. +func (c *canaryConfigs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.CanaryConfig, err error) { + result = &v1.CanaryConfig{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("canaryconfigs"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/doc.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/doc.go new file mode 100644 index 0000000000..618d1cb75f --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +// This package has the automatically generated typed clients. +package v1 diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/environment.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/environment.go new file mode 100644 index 0000000000..24772f40ed --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/environment.go @@ -0,0 +1,174 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1 + +import ( + "time" + + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + scheme "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/scheme" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" +) + +// EnvironmentsGetter has a method to return a EnvironmentInterface. +// A group's client should implement this interface. +type EnvironmentsGetter interface { + Environments(namespace string) EnvironmentInterface +} + +// EnvironmentInterface has methods to work with Environment resources. +type EnvironmentInterface interface { + Create(*v1.Environment) (*v1.Environment, error) + Update(*v1.Environment) (*v1.Environment, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.Environment, error) + List(opts metav1.ListOptions) (*v1.EnvironmentList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Environment, err error) + EnvironmentExpansion +} + +// environments implements EnvironmentInterface +type environments struct { + client rest.Interface + ns string +} + +// newEnvironments returns a Environments +func newEnvironments(c *V1V1Client, namespace string) *environments { + return &environments{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the _environment, and returns the corresponding environment object, and an error if there is any. +func (c *environments) Get(name string, options metav1.GetOptions) (result *v1.Environment, err error) { + result = &v1.Environment{} + err = c.client.Get(). + Namespace(c.ns). + Resource("environments"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Environments that match those selectors. +func (c *environments) List(opts metav1.ListOptions) (result *v1.EnvironmentList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1.EnvironmentList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("environments"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested environments. +func (c *environments) Watch(opts metav1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("environments"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch() +} + +// Create takes the representation of a _environment and creates it. Returns the server's representation of the environment, and an error, if there is any. +func (c *environments) Create(_environment *v1.Environment) (result *v1.Environment, err error) { + result = &v1.Environment{} + err = c.client.Post(). + Namespace(c.ns). + Resource("environments"). + Body(_environment). + Do(). + Into(result) + return +} + +// Update takes the representation of a _environment and updates it. Returns the server's representation of the environment, and an error, if there is any. +func (c *environments) Update(_environment *v1.Environment) (result *v1.Environment, err error) { + result = &v1.Environment{} + err = c.client.Put(). + Namespace(c.ns). + Resource("environments"). + Name(_environment.Name). + Body(_environment). + Do(). + Into(result) + return +} + +// Delete takes name of the _environment and deletes it. Returns an error if one occurs. +func (c *environments) Delete(name string, options *metav1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("environments"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *environments) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { + var timeout time.Duration + if listOptions.TimeoutSeconds != nil { + timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Namespace(c.ns). + Resource("environments"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Timeout(timeout). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched environment. +func (c *environments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Environment, err error) { + result = &v1.Environment{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("environments"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/doc.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/doc.go new file mode 100644 index 0000000000..f35bade635 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +// Package fake has the automatically generated clients. +package fake diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_canaryconfig.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_canaryconfig.go new file mode 100644 index 0000000000..6540db6d11 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_canaryconfig.go @@ -0,0 +1,140 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakeCanaryConfigs implements CanaryConfigInterface +type FakeCanaryConfigs struct { + Fake *FakeV1V1 + ns string +} + +var canaryconfigsResource = schema.GroupVersionResource{Group: "fission.io", Version: "v1", Resource: "canaryconfigs"} + +var canaryconfigsKind = schema.GroupVersionKind{Group: "fission.io", Version: "v1", Kind: "CanaryConfig"} + +// Get takes name of the _canaryConfig, and returns the corresponding canaryConfig object, and an error if there is any. +func (c *FakeCanaryConfigs) Get(name string, options v1.GetOptions) (result *fissioniov1.CanaryConfig, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(canaryconfigsResource, c.ns, name), &fissioniov1.CanaryConfig{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.CanaryConfig), err +} + +// List takes label and field selectors, and returns the list of CanaryConfigs that match those selectors. +func (c *FakeCanaryConfigs) List(opts v1.ListOptions) (result *fissioniov1.CanaryConfigList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(canaryconfigsResource, canaryconfigsKind, c.ns, opts), &fissioniov1.CanaryConfigList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &fissioniov1.CanaryConfigList{ListMeta: obj.(*fissioniov1.CanaryConfigList).ListMeta} + for _, item := range obj.(*fissioniov1.CanaryConfigList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested canaryConfigs. +func (c *FakeCanaryConfigs) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(canaryconfigsResource, c.ns, opts)) + +} + +// Create takes the representation of a _canaryConfig and creates it. Returns the server's representation of the canaryConfig, and an error, if there is any. +func (c *FakeCanaryConfigs) Create(_canaryConfig *fissioniov1.CanaryConfig) (result *fissioniov1.CanaryConfig, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(canaryconfigsResource, c.ns, _canaryConfig), &fissioniov1.CanaryConfig{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.CanaryConfig), err +} + +// Update takes the representation of a _canaryConfig and updates it. Returns the server's representation of the canaryConfig, and an error, if there is any. +func (c *FakeCanaryConfigs) Update(_canaryConfig *fissioniov1.CanaryConfig) (result *fissioniov1.CanaryConfig, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(canaryconfigsResource, c.ns, _canaryConfig), &fissioniov1.CanaryConfig{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.CanaryConfig), err +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). +func (c *FakeCanaryConfigs) UpdateStatus(_canaryConfig *fissioniov1.CanaryConfig) (*fissioniov1.CanaryConfig, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(canaryconfigsResource, "status", c.ns, _canaryConfig), &fissioniov1.CanaryConfig{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.CanaryConfig), err +} + +// Delete takes name of the _canaryConfig and deletes it. Returns an error if one occurs. +func (c *FakeCanaryConfigs) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(canaryconfigsResource, c.ns, name), &fissioniov1.CanaryConfig{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeCanaryConfigs) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(canaryconfigsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &fissioniov1.CanaryConfigList{}) + return err +} + +// Patch applies the patch and returns the patched canaryConfig. +func (c *FakeCanaryConfigs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *fissioniov1.CanaryConfig, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(canaryconfigsResource, c.ns, name, pt, data, subresources...), &fissioniov1.CanaryConfig{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.CanaryConfig), err +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_environment.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_environment.go new file mode 100644 index 0000000000..bdce1fdb25 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_environment.go @@ -0,0 +1,128 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakeEnvironments implements EnvironmentInterface +type FakeEnvironments struct { + Fake *FakeV1V1 + ns string +} + +var environmentsResource = schema.GroupVersionResource{Group: "fission.io", Version: "v1", Resource: "environments"} + +var environmentsKind = schema.GroupVersionKind{Group: "fission.io", Version: "v1", Kind: "Environment"} + +// Get takes name of the _environment, and returns the corresponding environment object, and an error if there is any. +func (c *FakeEnvironments) Get(name string, options v1.GetOptions) (result *fissioniov1.Environment, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(environmentsResource, c.ns, name), &fissioniov1.Environment{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Environment), err +} + +// List takes label and field selectors, and returns the list of Environments that match those selectors. +func (c *FakeEnvironments) List(opts v1.ListOptions) (result *fissioniov1.EnvironmentList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(environmentsResource, environmentsKind, c.ns, opts), &fissioniov1.EnvironmentList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &fissioniov1.EnvironmentList{ListMeta: obj.(*fissioniov1.EnvironmentList).ListMeta} + for _, item := range obj.(*fissioniov1.EnvironmentList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested environments. +func (c *FakeEnvironments) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(environmentsResource, c.ns, opts)) + +} + +// Create takes the representation of a _environment and creates it. Returns the server's representation of the environment, and an error, if there is any. +func (c *FakeEnvironments) Create(_environment *fissioniov1.Environment) (result *fissioniov1.Environment, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(environmentsResource, c.ns, _environment), &fissioniov1.Environment{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Environment), err +} + +// Update takes the representation of a _environment and updates it. Returns the server's representation of the environment, and an error, if there is any. +func (c *FakeEnvironments) Update(_environment *fissioniov1.Environment) (result *fissioniov1.Environment, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(environmentsResource, c.ns, _environment), &fissioniov1.Environment{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Environment), err +} + +// Delete takes name of the _environment and deletes it. Returns an error if one occurs. +func (c *FakeEnvironments) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(environmentsResource, c.ns, name), &fissioniov1.Environment{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeEnvironments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(environmentsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &fissioniov1.EnvironmentList{}) + return err +} + +// Patch applies the patch and returns the patched environment. +func (c *FakeEnvironments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *fissioniov1.Environment, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(environmentsResource, c.ns, name, pt, data, subresources...), &fissioniov1.Environment{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Environment), err +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_fission.io_client.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_fission.io_client.go new file mode 100644 index 0000000000..6300f3ae72 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_fission.io_client.go @@ -0,0 +1,68 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + v1 "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeV1V1 struct { + *testing.Fake +} + +func (c *FakeV1V1) CanaryConfigs(namespace string) v1.CanaryConfigInterface { + return &FakeCanaryConfigs{c, namespace} +} + +func (c *FakeV1V1) Environments(namespace string) v1.EnvironmentInterface { + return &FakeEnvironments{c, namespace} +} + +func (c *FakeV1V1) Functions(namespace string) v1.FunctionInterface { + return &FakeFunctions{c, namespace} +} + +func (c *FakeV1V1) HTTPTriggers(namespace string) v1.HTTPTriggerInterface { + return &FakeHTTPTriggers{c, namespace} +} + +func (c *FakeV1V1) KubernetesWatchTriggers(namespace string) v1.KubernetesWatchTriggerInterface { + return &FakeKubernetesWatchTriggers{c, namespace} +} + +func (c *FakeV1V1) MessageQueueTriggers(namespace string) v1.MessageQueueTriggerInterface { + return &FakeMessageQueueTriggers{c, namespace} +} + +func (c *FakeV1V1) Packages(namespace string) v1.PackageInterface { + return &FakePackages{c, namespace} +} + +func (c *FakeV1V1) TimeTriggers(namespace string) v1.TimeTriggerInterface { + return &FakeTimeTriggers{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeV1V1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_function.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_function.go new file mode 100644 index 0000000000..fac2ed7996 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_function.go @@ -0,0 +1,128 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakeFunctions implements FunctionInterface +type FakeFunctions struct { + Fake *FakeV1V1 + ns string +} + +var functionsResource = schema.GroupVersionResource{Group: "fission.io", Version: "v1", Resource: "functions"} + +var functionsKind = schema.GroupVersionKind{Group: "fission.io", Version: "v1", Kind: "Function"} + +// Get takes name of the _function, and returns the corresponding function object, and an error if there is any. +func (c *FakeFunctions) Get(name string, options v1.GetOptions) (result *fissioniov1.Function, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(functionsResource, c.ns, name), &fissioniov1.Function{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Function), err +} + +// List takes label and field selectors, and returns the list of Functions that match those selectors. +func (c *FakeFunctions) List(opts v1.ListOptions) (result *fissioniov1.FunctionList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(functionsResource, functionsKind, c.ns, opts), &fissioniov1.FunctionList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &fissioniov1.FunctionList{ListMeta: obj.(*fissioniov1.FunctionList).ListMeta} + for _, item := range obj.(*fissioniov1.FunctionList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested functions. +func (c *FakeFunctions) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(functionsResource, c.ns, opts)) + +} + +// Create takes the representation of a _function and creates it. Returns the server's representation of the function, and an error, if there is any. +func (c *FakeFunctions) Create(_function *fissioniov1.Function) (result *fissioniov1.Function, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(functionsResource, c.ns, _function), &fissioniov1.Function{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Function), err +} + +// Update takes the representation of a _function and updates it. Returns the server's representation of the function, and an error, if there is any. +func (c *FakeFunctions) Update(_function *fissioniov1.Function) (result *fissioniov1.Function, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(functionsResource, c.ns, _function), &fissioniov1.Function{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Function), err +} + +// Delete takes name of the _function and deletes it. Returns an error if one occurs. +func (c *FakeFunctions) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(functionsResource, c.ns, name), &fissioniov1.Function{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeFunctions) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(functionsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &fissioniov1.FunctionList{}) + return err +} + +// Patch applies the patch and returns the patched function. +func (c *FakeFunctions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *fissioniov1.Function, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(functionsResource, c.ns, name, pt, data, subresources...), &fissioniov1.Function{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Function), err +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_httptrigger.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_httptrigger.go new file mode 100644 index 0000000000..f182cc3bfe --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_httptrigger.go @@ -0,0 +1,128 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakeHTTPTriggers implements HTTPTriggerInterface +type FakeHTTPTriggers struct { + Fake *FakeV1V1 + ns string +} + +var httptriggersResource = schema.GroupVersionResource{Group: "fission.io", Version: "v1", Resource: "httptriggers"} + +var httptriggersKind = schema.GroupVersionKind{Group: "fission.io", Version: "v1", Kind: "HTTPTrigger"} + +// Get takes name of the _hTTPTrigger, and returns the corresponding hTTPTrigger object, and an error if there is any. +func (c *FakeHTTPTriggers) Get(name string, options v1.GetOptions) (result *fissioniov1.HTTPTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(httptriggersResource, c.ns, name), &fissioniov1.HTTPTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.HTTPTrigger), err +} + +// List takes label and field selectors, and returns the list of HTTPTriggers that match those selectors. +func (c *FakeHTTPTriggers) List(opts v1.ListOptions) (result *fissioniov1.HTTPTriggerList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(httptriggersResource, httptriggersKind, c.ns, opts), &fissioniov1.HTTPTriggerList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &fissioniov1.HTTPTriggerList{ListMeta: obj.(*fissioniov1.HTTPTriggerList).ListMeta} + for _, item := range obj.(*fissioniov1.HTTPTriggerList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested hTTPTriggers. +func (c *FakeHTTPTriggers) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(httptriggersResource, c.ns, opts)) + +} + +// Create takes the representation of a _hTTPTrigger and creates it. Returns the server's representation of the hTTPTrigger, and an error, if there is any. +func (c *FakeHTTPTriggers) Create(_hTTPTrigger *fissioniov1.HTTPTrigger) (result *fissioniov1.HTTPTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(httptriggersResource, c.ns, _hTTPTrigger), &fissioniov1.HTTPTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.HTTPTrigger), err +} + +// Update takes the representation of a _hTTPTrigger and updates it. Returns the server's representation of the hTTPTrigger, and an error, if there is any. +func (c *FakeHTTPTriggers) Update(_hTTPTrigger *fissioniov1.HTTPTrigger) (result *fissioniov1.HTTPTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(httptriggersResource, c.ns, _hTTPTrigger), &fissioniov1.HTTPTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.HTTPTrigger), err +} + +// Delete takes name of the _hTTPTrigger and deletes it. Returns an error if one occurs. +func (c *FakeHTTPTriggers) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(httptriggersResource, c.ns, name), &fissioniov1.HTTPTrigger{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeHTTPTriggers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(httptriggersResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &fissioniov1.HTTPTriggerList{}) + return err +} + +// Patch applies the patch and returns the patched hTTPTrigger. +func (c *FakeHTTPTriggers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *fissioniov1.HTTPTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(httptriggersResource, c.ns, name, pt, data, subresources...), &fissioniov1.HTTPTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.HTTPTrigger), err +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_kuberneteswatchtrigger.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_kuberneteswatchtrigger.go new file mode 100644 index 0000000000..7226dcc024 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_kuberneteswatchtrigger.go @@ -0,0 +1,128 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakeKubernetesWatchTriggers implements KubernetesWatchTriggerInterface +type FakeKubernetesWatchTriggers struct { + Fake *FakeV1V1 + ns string +} + +var kuberneteswatchtriggersResource = schema.GroupVersionResource{Group: "fission.io", Version: "v1", Resource: "kuberneteswatchtriggers"} + +var kuberneteswatchtriggersKind = schema.GroupVersionKind{Group: "fission.io", Version: "v1", Kind: "KubernetesWatchTrigger"} + +// Get takes name of the _kubernetesWatchTrigger, and returns the corresponding kubernetesWatchTrigger object, and an error if there is any. +func (c *FakeKubernetesWatchTriggers) Get(name string, options v1.GetOptions) (result *fissioniov1.KubernetesWatchTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(kuberneteswatchtriggersResource, c.ns, name), &fissioniov1.KubernetesWatchTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.KubernetesWatchTrigger), err +} + +// List takes label and field selectors, and returns the list of KubernetesWatchTriggers that match those selectors. +func (c *FakeKubernetesWatchTriggers) List(opts v1.ListOptions) (result *fissioniov1.KubernetesWatchTriggerList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(kuberneteswatchtriggersResource, kuberneteswatchtriggersKind, c.ns, opts), &fissioniov1.KubernetesWatchTriggerList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &fissioniov1.KubernetesWatchTriggerList{ListMeta: obj.(*fissioniov1.KubernetesWatchTriggerList).ListMeta} + for _, item := range obj.(*fissioniov1.KubernetesWatchTriggerList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested kubernetesWatchTriggers. +func (c *FakeKubernetesWatchTriggers) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(kuberneteswatchtriggersResource, c.ns, opts)) + +} + +// Create takes the representation of a _kubernetesWatchTrigger and creates it. Returns the server's representation of the kubernetesWatchTrigger, and an error, if there is any. +func (c *FakeKubernetesWatchTriggers) Create(_kubernetesWatchTrigger *fissioniov1.KubernetesWatchTrigger) (result *fissioniov1.KubernetesWatchTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(kuberneteswatchtriggersResource, c.ns, _kubernetesWatchTrigger), &fissioniov1.KubernetesWatchTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.KubernetesWatchTrigger), err +} + +// Update takes the representation of a _kubernetesWatchTrigger and updates it. Returns the server's representation of the kubernetesWatchTrigger, and an error, if there is any. +func (c *FakeKubernetesWatchTriggers) Update(_kubernetesWatchTrigger *fissioniov1.KubernetesWatchTrigger) (result *fissioniov1.KubernetesWatchTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(kuberneteswatchtriggersResource, c.ns, _kubernetesWatchTrigger), &fissioniov1.KubernetesWatchTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.KubernetesWatchTrigger), err +} + +// Delete takes name of the _kubernetesWatchTrigger and deletes it. Returns an error if one occurs. +func (c *FakeKubernetesWatchTriggers) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(kuberneteswatchtriggersResource, c.ns, name), &fissioniov1.KubernetesWatchTrigger{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeKubernetesWatchTriggers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(kuberneteswatchtriggersResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &fissioniov1.KubernetesWatchTriggerList{}) + return err +} + +// Patch applies the patch and returns the patched kubernetesWatchTrigger. +func (c *FakeKubernetesWatchTriggers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *fissioniov1.KubernetesWatchTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(kuberneteswatchtriggersResource, c.ns, name, pt, data, subresources...), &fissioniov1.KubernetesWatchTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.KubernetesWatchTrigger), err +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_messagequeuetrigger.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_messagequeuetrigger.go new file mode 100644 index 0000000000..f838f37fbd --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_messagequeuetrigger.go @@ -0,0 +1,128 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakeMessageQueueTriggers implements MessageQueueTriggerInterface +type FakeMessageQueueTriggers struct { + Fake *FakeV1V1 + ns string +} + +var messagequeuetriggersResource = schema.GroupVersionResource{Group: "fission.io", Version: "v1", Resource: "messagequeuetriggers"} + +var messagequeuetriggersKind = schema.GroupVersionKind{Group: "fission.io", Version: "v1", Kind: "MessageQueueTrigger"} + +// Get takes name of the _messageQueueTrigger, and returns the corresponding messageQueueTrigger object, and an error if there is any. +func (c *FakeMessageQueueTriggers) Get(name string, options v1.GetOptions) (result *fissioniov1.MessageQueueTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(messagequeuetriggersResource, c.ns, name), &fissioniov1.MessageQueueTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.MessageQueueTrigger), err +} + +// List takes label and field selectors, and returns the list of MessageQueueTriggers that match those selectors. +func (c *FakeMessageQueueTriggers) List(opts v1.ListOptions) (result *fissioniov1.MessageQueueTriggerList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(messagequeuetriggersResource, messagequeuetriggersKind, c.ns, opts), &fissioniov1.MessageQueueTriggerList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &fissioniov1.MessageQueueTriggerList{ListMeta: obj.(*fissioniov1.MessageQueueTriggerList).ListMeta} + for _, item := range obj.(*fissioniov1.MessageQueueTriggerList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested messageQueueTriggers. +func (c *FakeMessageQueueTriggers) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(messagequeuetriggersResource, c.ns, opts)) + +} + +// Create takes the representation of a _messageQueueTrigger and creates it. Returns the server's representation of the messageQueueTrigger, and an error, if there is any. +func (c *FakeMessageQueueTriggers) Create(_messageQueueTrigger *fissioniov1.MessageQueueTrigger) (result *fissioniov1.MessageQueueTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(messagequeuetriggersResource, c.ns, _messageQueueTrigger), &fissioniov1.MessageQueueTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.MessageQueueTrigger), err +} + +// Update takes the representation of a _messageQueueTrigger and updates it. Returns the server's representation of the messageQueueTrigger, and an error, if there is any. +func (c *FakeMessageQueueTriggers) Update(_messageQueueTrigger *fissioniov1.MessageQueueTrigger) (result *fissioniov1.MessageQueueTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(messagequeuetriggersResource, c.ns, _messageQueueTrigger), &fissioniov1.MessageQueueTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.MessageQueueTrigger), err +} + +// Delete takes name of the _messageQueueTrigger and deletes it. Returns an error if one occurs. +func (c *FakeMessageQueueTriggers) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(messagequeuetriggersResource, c.ns, name), &fissioniov1.MessageQueueTrigger{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeMessageQueueTriggers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(messagequeuetriggersResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &fissioniov1.MessageQueueTriggerList{}) + return err +} + +// Patch applies the patch and returns the patched messageQueueTrigger. +func (c *FakeMessageQueueTriggers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *fissioniov1.MessageQueueTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(messagequeuetriggersResource, c.ns, name, pt, data, subresources...), &fissioniov1.MessageQueueTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.MessageQueueTrigger), err +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_package.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_package.go new file mode 100644 index 0000000000..c1555df97a --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_package.go @@ -0,0 +1,140 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakePackages implements PackageInterface +type FakePackages struct { + Fake *FakeV1V1 + ns string +} + +var packagesResource = schema.GroupVersionResource{Group: "fission.io", Version: "v1", Resource: "packages"} + +var packagesKind = schema.GroupVersionKind{Group: "fission.io", Version: "v1", Kind: "Package"} + +// Get takes name of the _package, and returns the corresponding package object, and an error if there is any. +func (c *FakePackages) Get(name string, options v1.GetOptions) (result *fissioniov1.Package, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(packagesResource, c.ns, name), &fissioniov1.Package{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Package), err +} + +// List takes label and field selectors, and returns the list of Packages that match those selectors. +func (c *FakePackages) List(opts v1.ListOptions) (result *fissioniov1.PackageList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(packagesResource, packagesKind, c.ns, opts), &fissioniov1.PackageList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &fissioniov1.PackageList{ListMeta: obj.(*fissioniov1.PackageList).ListMeta} + for _, item := range obj.(*fissioniov1.PackageList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested packages. +func (c *FakePackages) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(packagesResource, c.ns, opts)) + +} + +// Create takes the representation of a _package and creates it. Returns the server's representation of the package, and an error, if there is any. +func (c *FakePackages) Create(_package *fissioniov1.Package) (result *fissioniov1.Package, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(packagesResource, c.ns, _package), &fissioniov1.Package{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Package), err +} + +// Update takes the representation of a _package and updates it. Returns the server's representation of the package, and an error, if there is any. +func (c *FakePackages) Update(_package *fissioniov1.Package) (result *fissioniov1.Package, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(packagesResource, c.ns, _package), &fissioniov1.Package{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Package), err +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). +func (c *FakePackages) UpdateStatus(_package *fissioniov1.Package) (*fissioniov1.Package, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(packagesResource, "status", c.ns, _package), &fissioniov1.Package{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Package), err +} + +// Delete takes name of the _package and deletes it. Returns an error if one occurs. +func (c *FakePackages) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(packagesResource, c.ns, name), &fissioniov1.Package{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakePackages) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(packagesResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &fissioniov1.PackageList{}) + return err +} + +// Patch applies the patch and returns the patched package. +func (c *FakePackages) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *fissioniov1.Package, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(packagesResource, c.ns, name, pt, data, subresources...), &fissioniov1.Package{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.Package), err +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_timetrigger.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_timetrigger.go new file mode 100644 index 0000000000..a3ba56c0e5 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fake/fake_timetrigger.go @@ -0,0 +1,128 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakeTimeTriggers implements TimeTriggerInterface +type FakeTimeTriggers struct { + Fake *FakeV1V1 + ns string +} + +var timetriggersResource = schema.GroupVersionResource{Group: "fission.io", Version: "v1", Resource: "timetriggers"} + +var timetriggersKind = schema.GroupVersionKind{Group: "fission.io", Version: "v1", Kind: "TimeTrigger"} + +// Get takes name of the _timeTrigger, and returns the corresponding timeTrigger object, and an error if there is any. +func (c *FakeTimeTriggers) Get(name string, options v1.GetOptions) (result *fissioniov1.TimeTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(timetriggersResource, c.ns, name), &fissioniov1.TimeTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.TimeTrigger), err +} + +// List takes label and field selectors, and returns the list of TimeTriggers that match those selectors. +func (c *FakeTimeTriggers) List(opts v1.ListOptions) (result *fissioniov1.TimeTriggerList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(timetriggersResource, timetriggersKind, c.ns, opts), &fissioniov1.TimeTriggerList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &fissioniov1.TimeTriggerList{ListMeta: obj.(*fissioniov1.TimeTriggerList).ListMeta} + for _, item := range obj.(*fissioniov1.TimeTriggerList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested timeTriggers. +func (c *FakeTimeTriggers) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(timetriggersResource, c.ns, opts)) + +} + +// Create takes the representation of a _timeTrigger and creates it. Returns the server's representation of the timeTrigger, and an error, if there is any. +func (c *FakeTimeTriggers) Create(_timeTrigger *fissioniov1.TimeTrigger) (result *fissioniov1.TimeTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(timetriggersResource, c.ns, _timeTrigger), &fissioniov1.TimeTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.TimeTrigger), err +} + +// Update takes the representation of a _timeTrigger and updates it. Returns the server's representation of the timeTrigger, and an error, if there is any. +func (c *FakeTimeTriggers) Update(_timeTrigger *fissioniov1.TimeTrigger) (result *fissioniov1.TimeTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(timetriggersResource, c.ns, _timeTrigger), &fissioniov1.TimeTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.TimeTrigger), err +} + +// Delete takes name of the _timeTrigger and deletes it. Returns an error if one occurs. +func (c *FakeTimeTriggers) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(timetriggersResource, c.ns, name), &fissioniov1.TimeTrigger{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeTimeTriggers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(timetriggersResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &fissioniov1.TimeTriggerList{}) + return err +} + +// Patch applies the patch and returns the patched timeTrigger. +func (c *FakeTimeTriggers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *fissioniov1.TimeTrigger, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(timetriggersResource, c.ns, name, pt, data, subresources...), &fissioniov1.TimeTrigger{}) + + if obj == nil { + return nil, err + } + return obj.(*fissioniov1.TimeTrigger), err +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fission.io_client.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fission.io_client.go new file mode 100644 index 0000000000..965ae2935c --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/fission.io_client.go @@ -0,0 +1,124 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/scheme" + rest "k8s.io/client-go/rest" +) + +type V1V1Interface interface { + RESTClient() rest.Interface + CanaryConfigsGetter + EnvironmentsGetter + FunctionsGetter + HTTPTriggersGetter + KubernetesWatchTriggersGetter + MessageQueueTriggersGetter + PackagesGetter + TimeTriggersGetter +} + +// V1V1Client is used to interact with features provided by the fission.io group. +type V1V1Client struct { + restClient rest.Interface +} + +func (c *V1V1Client) CanaryConfigs(namespace string) CanaryConfigInterface { + return newCanaryConfigs(c, namespace) +} + +func (c *V1V1Client) Environments(namespace string) EnvironmentInterface { + return newEnvironments(c, namespace) +} + +func (c *V1V1Client) Functions(namespace string) FunctionInterface { + return newFunctions(c, namespace) +} + +func (c *V1V1Client) HTTPTriggers(namespace string) HTTPTriggerInterface { + return newHTTPTriggers(c, namespace) +} + +func (c *V1V1Client) KubernetesWatchTriggers(namespace string) KubernetesWatchTriggerInterface { + return newKubernetesWatchTriggers(c, namespace) +} + +func (c *V1V1Client) MessageQueueTriggers(namespace string) MessageQueueTriggerInterface { + return newMessageQueueTriggers(c, namespace) +} + +func (c *V1V1Client) Packages(namespace string) PackageInterface { + return newPackages(c, namespace) +} + +func (c *V1V1Client) TimeTriggers(namespace string) TimeTriggerInterface { + return newTimeTriggers(c, namespace) +} + +// NewForConfig creates a new V1V1Client for the given config. +func NewForConfig(c *rest.Config) (*V1V1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &V1V1Client{client}, nil +} + +// NewForConfigOrDie creates a new V1V1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *V1V1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new V1V1Client for the given RESTClient. +func New(c rest.Interface) *V1V1Client { + return &V1V1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = scheme.Codecs.WithoutConversion() + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *V1V1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/function.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/function.go new file mode 100644 index 0000000000..0315501c6f --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/function.go @@ -0,0 +1,174 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1 + +import ( + "time" + + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + scheme "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/scheme" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" +) + +// FunctionsGetter has a method to return a FunctionInterface. +// A group's client should implement this interface. +type FunctionsGetter interface { + Functions(namespace string) FunctionInterface +} + +// FunctionInterface has methods to work with Function resources. +type FunctionInterface interface { + Create(*v1.Function) (*v1.Function, error) + Update(*v1.Function) (*v1.Function, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.Function, error) + List(opts metav1.ListOptions) (*v1.FunctionList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Function, err error) + FunctionExpansion +} + +// functions implements FunctionInterface +type functions struct { + client rest.Interface + ns string +} + +// newFunctions returns a Functions +func newFunctions(c *V1V1Client, namespace string) *functions { + return &functions{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the _function, and returns the corresponding function object, and an error if there is any. +func (c *functions) Get(name string, options metav1.GetOptions) (result *v1.Function, err error) { + result = &v1.Function{} + err = c.client.Get(). + Namespace(c.ns). + Resource("functions"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Functions that match those selectors. +func (c *functions) List(opts metav1.ListOptions) (result *v1.FunctionList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1.FunctionList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("functions"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested functions. +func (c *functions) Watch(opts metav1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("functions"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch() +} + +// Create takes the representation of a _function and creates it. Returns the server's representation of the function, and an error, if there is any. +func (c *functions) Create(_function *v1.Function) (result *v1.Function, err error) { + result = &v1.Function{} + err = c.client.Post(). + Namespace(c.ns). + Resource("functions"). + Body(_function). + Do(). + Into(result) + return +} + +// Update takes the representation of a _function and updates it. Returns the server's representation of the function, and an error, if there is any. +func (c *functions) Update(_function *v1.Function) (result *v1.Function, err error) { + result = &v1.Function{} + err = c.client.Put(). + Namespace(c.ns). + Resource("functions"). + Name(_function.Name). + Body(_function). + Do(). + Into(result) + return +} + +// Delete takes name of the _function and deletes it. Returns an error if one occurs. +func (c *functions) Delete(name string, options *metav1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("functions"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *functions) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { + var timeout time.Duration + if listOptions.TimeoutSeconds != nil { + timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Namespace(c.ns). + Resource("functions"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Timeout(timeout). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched function. +func (c *functions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Function, err error) { + result = &v1.Function{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("functions"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/generated_expansion.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/generated_expansion.go new file mode 100644 index 0000000000..e6a8324587 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/generated_expansion.go @@ -0,0 +1,35 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1 + +type CanaryConfigExpansion interface{} + +type EnvironmentExpansion interface{} + +type FunctionExpansion interface{} + +type HTTPTriggerExpansion interface{} + +type KubernetesWatchTriggerExpansion interface{} + +type MessageQueueTriggerExpansion interface{} + +type PackageExpansion interface{} + +type TimeTriggerExpansion interface{} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/httptrigger.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/httptrigger.go new file mode 100644 index 0000000000..28e2c90240 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/httptrigger.go @@ -0,0 +1,174 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1 + +import ( + "time" + + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + scheme "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/scheme" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" +) + +// HTTPTriggersGetter has a method to return a HTTPTriggerInterface. +// A group's client should implement this interface. +type HTTPTriggersGetter interface { + HTTPTriggers(namespace string) HTTPTriggerInterface +} + +// HTTPTriggerInterface has methods to work with HTTPTrigger resources. +type HTTPTriggerInterface interface { + Create(*v1.HTTPTrigger) (*v1.HTTPTrigger, error) + Update(*v1.HTTPTrigger) (*v1.HTTPTrigger, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.HTTPTrigger, error) + List(opts metav1.ListOptions) (*v1.HTTPTriggerList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.HTTPTrigger, err error) + HTTPTriggerExpansion +} + +// hTTPTriggers implements HTTPTriggerInterface +type hTTPTriggers struct { + client rest.Interface + ns string +} + +// newHTTPTriggers returns a HTTPTriggers +func newHTTPTriggers(c *V1V1Client, namespace string) *hTTPTriggers { + return &hTTPTriggers{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the _hTTPTrigger, and returns the corresponding hTTPTrigger object, and an error if there is any. +func (c *hTTPTriggers) Get(name string, options metav1.GetOptions) (result *v1.HTTPTrigger, err error) { + result = &v1.HTTPTrigger{} + err = c.client.Get(). + Namespace(c.ns). + Resource("httptriggers"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of HTTPTriggers that match those selectors. +func (c *hTTPTriggers) List(opts metav1.ListOptions) (result *v1.HTTPTriggerList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1.HTTPTriggerList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("httptriggers"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested hTTPTriggers. +func (c *hTTPTriggers) Watch(opts metav1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("httptriggers"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch() +} + +// Create takes the representation of a _hTTPTrigger and creates it. Returns the server's representation of the hTTPTrigger, and an error, if there is any. +func (c *hTTPTriggers) Create(_hTTPTrigger *v1.HTTPTrigger) (result *v1.HTTPTrigger, err error) { + result = &v1.HTTPTrigger{} + err = c.client.Post(). + Namespace(c.ns). + Resource("httptriggers"). + Body(_hTTPTrigger). + Do(). + Into(result) + return +} + +// Update takes the representation of a _hTTPTrigger and updates it. Returns the server's representation of the hTTPTrigger, and an error, if there is any. +func (c *hTTPTriggers) Update(_hTTPTrigger *v1.HTTPTrigger) (result *v1.HTTPTrigger, err error) { + result = &v1.HTTPTrigger{} + err = c.client.Put(). + Namespace(c.ns). + Resource("httptriggers"). + Name(_hTTPTrigger.Name). + Body(_hTTPTrigger). + Do(). + Into(result) + return +} + +// Delete takes name of the _hTTPTrigger and deletes it. Returns an error if one occurs. +func (c *hTTPTriggers) Delete(name string, options *metav1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("httptriggers"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *hTTPTriggers) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { + var timeout time.Duration + if listOptions.TimeoutSeconds != nil { + timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Namespace(c.ns). + Resource("httptriggers"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Timeout(timeout). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched hTTPTrigger. +func (c *hTTPTriggers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.HTTPTrigger, err error) { + result = &v1.HTTPTrigger{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("httptriggers"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/kuberneteswatchtrigger.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/kuberneteswatchtrigger.go new file mode 100644 index 0000000000..c0f8353ff8 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/kuberneteswatchtrigger.go @@ -0,0 +1,174 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1 + +import ( + "time" + + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + scheme "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/scheme" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" +) + +// KubernetesWatchTriggersGetter has a method to return a KubernetesWatchTriggerInterface. +// A group's client should implement this interface. +type KubernetesWatchTriggersGetter interface { + KubernetesWatchTriggers(namespace string) KubernetesWatchTriggerInterface +} + +// KubernetesWatchTriggerInterface has methods to work with KubernetesWatchTrigger resources. +type KubernetesWatchTriggerInterface interface { + Create(*v1.KubernetesWatchTrigger) (*v1.KubernetesWatchTrigger, error) + Update(*v1.KubernetesWatchTrigger) (*v1.KubernetesWatchTrigger, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.KubernetesWatchTrigger, error) + List(opts metav1.ListOptions) (*v1.KubernetesWatchTriggerList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.KubernetesWatchTrigger, err error) + KubernetesWatchTriggerExpansion +} + +// kubernetesWatchTriggers implements KubernetesWatchTriggerInterface +type kubernetesWatchTriggers struct { + client rest.Interface + ns string +} + +// newKubernetesWatchTriggers returns a KubernetesWatchTriggers +func newKubernetesWatchTriggers(c *V1V1Client, namespace string) *kubernetesWatchTriggers { + return &kubernetesWatchTriggers{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the _kubernetesWatchTrigger, and returns the corresponding kubernetesWatchTrigger object, and an error if there is any. +func (c *kubernetesWatchTriggers) Get(name string, options metav1.GetOptions) (result *v1.KubernetesWatchTrigger, err error) { + result = &v1.KubernetesWatchTrigger{} + err = c.client.Get(). + Namespace(c.ns). + Resource("kuberneteswatchtriggers"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of KubernetesWatchTriggers that match those selectors. +func (c *kubernetesWatchTriggers) List(opts metav1.ListOptions) (result *v1.KubernetesWatchTriggerList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1.KubernetesWatchTriggerList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("kuberneteswatchtriggers"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested kubernetesWatchTriggers. +func (c *kubernetesWatchTriggers) Watch(opts metav1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("kuberneteswatchtriggers"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch() +} + +// Create takes the representation of a _kubernetesWatchTrigger and creates it. Returns the server's representation of the kubernetesWatchTrigger, and an error, if there is any. +func (c *kubernetesWatchTriggers) Create(_kubernetesWatchTrigger *v1.KubernetesWatchTrigger) (result *v1.KubernetesWatchTrigger, err error) { + result = &v1.KubernetesWatchTrigger{} + err = c.client.Post(). + Namespace(c.ns). + Resource("kuberneteswatchtriggers"). + Body(_kubernetesWatchTrigger). + Do(). + Into(result) + return +} + +// Update takes the representation of a _kubernetesWatchTrigger and updates it. Returns the server's representation of the kubernetesWatchTrigger, and an error, if there is any. +func (c *kubernetesWatchTriggers) Update(_kubernetesWatchTrigger *v1.KubernetesWatchTrigger) (result *v1.KubernetesWatchTrigger, err error) { + result = &v1.KubernetesWatchTrigger{} + err = c.client.Put(). + Namespace(c.ns). + Resource("kuberneteswatchtriggers"). + Name(_kubernetesWatchTrigger.Name). + Body(_kubernetesWatchTrigger). + Do(). + Into(result) + return +} + +// Delete takes name of the _kubernetesWatchTrigger and deletes it. Returns an error if one occurs. +func (c *kubernetesWatchTriggers) Delete(name string, options *metav1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("kuberneteswatchtriggers"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *kubernetesWatchTriggers) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { + var timeout time.Duration + if listOptions.TimeoutSeconds != nil { + timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Namespace(c.ns). + Resource("kuberneteswatchtriggers"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Timeout(timeout). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched kubernetesWatchTrigger. +func (c *kubernetesWatchTriggers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.KubernetesWatchTrigger, err error) { + result = &v1.KubernetesWatchTrigger{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("kuberneteswatchtriggers"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/messagequeuetrigger.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/messagequeuetrigger.go new file mode 100644 index 0000000000..703191c164 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/messagequeuetrigger.go @@ -0,0 +1,174 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1 + +import ( + "time" + + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + scheme "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/scheme" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" +) + +// MessageQueueTriggersGetter has a method to return a MessageQueueTriggerInterface. +// A group's client should implement this interface. +type MessageQueueTriggersGetter interface { + MessageQueueTriggers(namespace string) MessageQueueTriggerInterface +} + +// MessageQueueTriggerInterface has methods to work with MessageQueueTrigger resources. +type MessageQueueTriggerInterface interface { + Create(*v1.MessageQueueTrigger) (*v1.MessageQueueTrigger, error) + Update(*v1.MessageQueueTrigger) (*v1.MessageQueueTrigger, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.MessageQueueTrigger, error) + List(opts metav1.ListOptions) (*v1.MessageQueueTriggerList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.MessageQueueTrigger, err error) + MessageQueueTriggerExpansion +} + +// messageQueueTriggers implements MessageQueueTriggerInterface +type messageQueueTriggers struct { + client rest.Interface + ns string +} + +// newMessageQueueTriggers returns a MessageQueueTriggers +func newMessageQueueTriggers(c *V1V1Client, namespace string) *messageQueueTriggers { + return &messageQueueTriggers{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the _messageQueueTrigger, and returns the corresponding messageQueueTrigger object, and an error if there is any. +func (c *messageQueueTriggers) Get(name string, options metav1.GetOptions) (result *v1.MessageQueueTrigger, err error) { + result = &v1.MessageQueueTrigger{} + err = c.client.Get(). + Namespace(c.ns). + Resource("messagequeuetriggers"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of MessageQueueTriggers that match those selectors. +func (c *messageQueueTriggers) List(opts metav1.ListOptions) (result *v1.MessageQueueTriggerList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1.MessageQueueTriggerList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("messagequeuetriggers"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested messageQueueTriggers. +func (c *messageQueueTriggers) Watch(opts metav1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("messagequeuetriggers"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch() +} + +// Create takes the representation of a _messageQueueTrigger and creates it. Returns the server's representation of the messageQueueTrigger, and an error, if there is any. +func (c *messageQueueTriggers) Create(_messageQueueTrigger *v1.MessageQueueTrigger) (result *v1.MessageQueueTrigger, err error) { + result = &v1.MessageQueueTrigger{} + err = c.client.Post(). + Namespace(c.ns). + Resource("messagequeuetriggers"). + Body(_messageQueueTrigger). + Do(). + Into(result) + return +} + +// Update takes the representation of a _messageQueueTrigger and updates it. Returns the server's representation of the messageQueueTrigger, and an error, if there is any. +func (c *messageQueueTriggers) Update(_messageQueueTrigger *v1.MessageQueueTrigger) (result *v1.MessageQueueTrigger, err error) { + result = &v1.MessageQueueTrigger{} + err = c.client.Put(). + Namespace(c.ns). + Resource("messagequeuetriggers"). + Name(_messageQueueTrigger.Name). + Body(_messageQueueTrigger). + Do(). + Into(result) + return +} + +// Delete takes name of the _messageQueueTrigger and deletes it. Returns an error if one occurs. +func (c *messageQueueTriggers) Delete(name string, options *metav1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("messagequeuetriggers"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *messageQueueTriggers) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { + var timeout time.Duration + if listOptions.TimeoutSeconds != nil { + timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Namespace(c.ns). + Resource("messagequeuetriggers"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Timeout(timeout). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched messageQueueTrigger. +func (c *messageQueueTriggers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.MessageQueueTrigger, err error) { + result = &v1.MessageQueueTrigger{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("messagequeuetriggers"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/package.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/package.go new file mode 100644 index 0000000000..83ffe65bb6 --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/package.go @@ -0,0 +1,191 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1 + +import ( + "time" + + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + scheme "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/scheme" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" +) + +// PackagesGetter has a method to return a PackageInterface. +// A group's client should implement this interface. +type PackagesGetter interface { + Packages(namespace string) PackageInterface +} + +// PackageInterface has methods to work with Package resources. +type PackageInterface interface { + Create(*v1.Package) (*v1.Package, error) + Update(*v1.Package) (*v1.Package, error) + UpdateStatus(*v1.Package) (*v1.Package, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.Package, error) + List(opts metav1.ListOptions) (*v1.PackageList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Package, err error) + PackageExpansion +} + +// packages implements PackageInterface +type packages struct { + client rest.Interface + ns string +} + +// newPackages returns a Packages +func newPackages(c *V1V1Client, namespace string) *packages { + return &packages{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the _package, and returns the corresponding package object, and an error if there is any. +func (c *packages) Get(name string, options metav1.GetOptions) (result *v1.Package, err error) { + result = &v1.Package{} + err = c.client.Get(). + Namespace(c.ns). + Resource("packages"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Packages that match those selectors. +func (c *packages) List(opts metav1.ListOptions) (result *v1.PackageList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1.PackageList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("packages"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested packages. +func (c *packages) Watch(opts metav1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("packages"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch() +} + +// Create takes the representation of a _package and creates it. Returns the server's representation of the package, and an error, if there is any. +func (c *packages) Create(_package *v1.Package) (result *v1.Package, err error) { + result = &v1.Package{} + err = c.client.Post(). + Namespace(c.ns). + Resource("packages"). + Body(_package). + Do(). + Into(result) + return +} + +// Update takes the representation of a _package and updates it. Returns the server's representation of the package, and an error, if there is any. +func (c *packages) Update(_package *v1.Package) (result *v1.Package, err error) { + result = &v1.Package{} + err = c.client.Put(). + Namespace(c.ns). + Resource("packages"). + Name(_package.Name). + Body(_package). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). + +func (c *packages) UpdateStatus(_package *v1.Package) (result *v1.Package, err error) { + result = &v1.Package{} + err = c.client.Put(). + Namespace(c.ns). + Resource("packages"). + Name(_package.Name). + SubResource("status"). + Body(_package). + Do(). + Into(result) + return +} + +// Delete takes name of the _package and deletes it. Returns an error if one occurs. +func (c *packages) Delete(name string, options *metav1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("packages"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *packages) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { + var timeout time.Duration + if listOptions.TimeoutSeconds != nil { + timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Namespace(c.ns). + Resource("packages"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Timeout(timeout). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched package. +func (c *packages) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Package, err error) { + result = &v1.Package{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("packages"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/timetrigger.go b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/timetrigger.go new file mode 100644 index 0000000000..a0f732e62f --- /dev/null +++ b/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1/timetrigger.go @@ -0,0 +1,174 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1 + +import ( + "time" + + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + scheme "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/scheme" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" +) + +// TimeTriggersGetter has a method to return a TimeTriggerInterface. +// A group's client should implement this interface. +type TimeTriggersGetter interface { + TimeTriggers(namespace string) TimeTriggerInterface +} + +// TimeTriggerInterface has methods to work with TimeTrigger resources. +type TimeTriggerInterface interface { + Create(*v1.TimeTrigger) (*v1.TimeTrigger, error) + Update(*v1.TimeTrigger) (*v1.TimeTrigger, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error + Get(name string, options metav1.GetOptions) (*v1.TimeTrigger, error) + List(opts metav1.ListOptions) (*v1.TimeTriggerList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.TimeTrigger, err error) + TimeTriggerExpansion +} + +// timeTriggers implements TimeTriggerInterface +type timeTriggers struct { + client rest.Interface + ns string +} + +// newTimeTriggers returns a TimeTriggers +func newTimeTriggers(c *V1V1Client, namespace string) *timeTriggers { + return &timeTriggers{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the _timeTrigger, and returns the corresponding timeTrigger object, and an error if there is any. +func (c *timeTriggers) Get(name string, options metav1.GetOptions) (result *v1.TimeTrigger, err error) { + result = &v1.TimeTrigger{} + err = c.client.Get(). + Namespace(c.ns). + Resource("timetriggers"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of TimeTriggers that match those selectors. +func (c *timeTriggers) List(opts metav1.ListOptions) (result *v1.TimeTriggerList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1.TimeTriggerList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("timetriggers"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested timeTriggers. +func (c *timeTriggers) Watch(opts metav1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("timetriggers"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch() +} + +// Create takes the representation of a _timeTrigger and creates it. Returns the server's representation of the timeTrigger, and an error, if there is any. +func (c *timeTriggers) Create(_timeTrigger *v1.TimeTrigger) (result *v1.TimeTrigger, err error) { + result = &v1.TimeTrigger{} + err = c.client.Post(). + Namespace(c.ns). + Resource("timetriggers"). + Body(_timeTrigger). + Do(). + Into(result) + return +} + +// Update takes the representation of a _timeTrigger and updates it. Returns the server's representation of the timeTrigger, and an error, if there is any. +func (c *timeTriggers) Update(_timeTrigger *v1.TimeTrigger) (result *v1.TimeTrigger, err error) { + result = &v1.TimeTrigger{} + err = c.client.Put(). + Namespace(c.ns). + Resource("timetriggers"). + Name(_timeTrigger.Name). + Body(_timeTrigger). + Do(). + Into(result) + return +} + +// Delete takes name of the _timeTrigger and deletes it. Returns an error if one occurs. +func (c *timeTriggers) Delete(name string, options *metav1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("timetriggers"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *timeTriggers) DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error { + var timeout time.Duration + if listOptions.TimeoutSeconds != nil { + timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Namespace(c.ns). + Resource("timetriggers"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Timeout(timeout). + Body(options). + Do(). + Error() +} + +// Patch applies the patch and returns the patched timeTrigger. +func (c *timeTriggers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.TimeTrigger, err error) { + result = &v1.TimeTrigger{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("timetriggers"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/factory.go b/pkg/apis/genclient/v1/informers/externalversions/factory.go new file mode 100644 index 0000000000..79f4177347 --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/factory.go @@ -0,0 +1,180 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package externalversions + +import ( + reflect "reflect" + sync "sync" + time "time" + + versioned "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + fissionio "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/fission.io" + internalinterfaces "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + schema "k8s.io/apimachinery/pkg/runtime/schema" + cache "k8s.io/client-go/tools/cache" +) + +// SharedInformerOption defines the functional option type for SharedInformerFactory. +type SharedInformerOption func(*sharedInformerFactory) *sharedInformerFactory + +type sharedInformerFactory struct { + client versioned.Interface + namespace string + tweakListOptions internalinterfaces.TweakListOptionsFunc + lock sync.Mutex + defaultResync time.Duration + customResync map[reflect.Type]time.Duration + + informers map[reflect.Type]cache.SharedIndexInformer + // startedInformers is used for tracking which informers have been started. + // This allows Start() to be called multiple times safely. + startedInformers map[reflect.Type]bool +} + +// WithCustomResyncConfig sets a custom resync period for the specified informer types. +func WithCustomResyncConfig(resyncConfig map[v1.Object]time.Duration) SharedInformerOption { + return func(factory *sharedInformerFactory) *sharedInformerFactory { + for k, v := range resyncConfig { + factory.customResync[reflect.TypeOf(k)] = v + } + return factory + } +} + +// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory. +func WithTweakListOptions(tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerOption { + return func(factory *sharedInformerFactory) *sharedInformerFactory { + factory.tweakListOptions = tweakListOptions + return factory + } +} + +// WithNamespace limits the SharedInformerFactory to the specified namespace. +func WithNamespace(namespace string) SharedInformerOption { + return func(factory *sharedInformerFactory) *sharedInformerFactory { + factory.namespace = namespace + return factory + } +} + +// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces. +func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory { + return NewSharedInformerFactoryWithOptions(client, defaultResync) +} + +// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory. +// Listers obtained via this SharedInformerFactory will be subject to the same filters +// as specified here. +// Deprecated: Please use NewSharedInformerFactoryWithOptions instead +func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory { + return NewSharedInformerFactoryWithOptions(client, defaultResync, WithNamespace(namespace), WithTweakListOptions(tweakListOptions)) +} + +// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options. +func NewSharedInformerFactoryWithOptions(client versioned.Interface, defaultResync time.Duration, options ...SharedInformerOption) SharedInformerFactory { + factory := &sharedInformerFactory{ + client: client, + namespace: v1.NamespaceAll, + defaultResync: defaultResync, + informers: make(map[reflect.Type]cache.SharedIndexInformer), + startedInformers: make(map[reflect.Type]bool), + customResync: make(map[reflect.Type]time.Duration), + } + + // Apply all options + for _, opt := range options { + factory = opt(factory) + } + + return factory +} + +// Start initializes all requested informers. +func (f *sharedInformerFactory) Start(stopCh <-chan struct{}) { + f.lock.Lock() + defer f.lock.Unlock() + + for informerType, informer := range f.informers { + if !f.startedInformers[informerType] { + go informer.Run(stopCh) + f.startedInformers[informerType] = true + } + } +} + +// WaitForCacheSync waits for all started informers' cache were synced. +func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool { + informers := func() map[reflect.Type]cache.SharedIndexInformer { + f.lock.Lock() + defer f.lock.Unlock() + + informers := map[reflect.Type]cache.SharedIndexInformer{} + for informerType, informer := range f.informers { + if f.startedInformers[informerType] { + informers[informerType] = informer + } + } + return informers + }() + + res := map[reflect.Type]bool{} + for informType, informer := range informers { + res[informType] = cache.WaitForCacheSync(stopCh, informer.HasSynced) + } + return res +} + +// InternalInformerFor returns the SharedIndexInformer for obj using an internal +// client. +func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer { + f.lock.Lock() + defer f.lock.Unlock() + + informerType := reflect.TypeOf(obj) + informer, exists := f.informers[informerType] + if exists { + return informer + } + + resyncPeriod, exists := f.customResync[informerType] + if !exists { + resyncPeriod = f.defaultResync + } + + informer = newFunc(f.client, resyncPeriod) + f.informers[informerType] = informer + + return informer +} + +// SharedInformerFactory provides shared informers for resources in all known +// API group versions. +type SharedInformerFactory interface { + internalinterfaces.SharedInformerFactory + ForResource(resource schema.GroupVersionResource) (GenericInformer, error) + WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool + + V1() fissionio.Interface +} + +func (f *sharedInformerFactory) V1() fissionio.Interface { + return fissionio.New(f, f.namespace, f.tweakListOptions) +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/fission.io/interface.go b/pkg/apis/genclient/v1/informers/externalversions/fission.io/interface.go new file mode 100644 index 0000000000..755df464ea --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/fission.io/interface.go @@ -0,0 +1,46 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package fission + +import ( + v1 "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1" + internalinterfaces "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1 provides access to shared informers for resources in V1. + V1() v1.Interface +} + +type group struct { + factory internalinterfaces.SharedInformerFactory + namespace string + tweakListOptions internalinterfaces.TweakListOptionsFunc +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface { + return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} +} + +// V1 returns a new v1.Interface. +func (g *group) V1() v1.Interface { + return v1.New(g.factory, g.namespace, g.tweakListOptions) +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/canaryconfig.go b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/canaryconfig.go new file mode 100644 index 0000000000..efd91b26af --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/canaryconfig.go @@ -0,0 +1,89 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1 + +import ( + time "time" + + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + versioned "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + internalinterfaces "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces" + v1 "github.com/fission/fission/pkg/apis/genclient/v1/listers/fission.io/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" +) + +// CanaryConfigInformer provides access to a shared informer and lister for +// CanaryConfigs. +type CanaryConfigInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.CanaryConfigLister +} + +type _canaryConfigInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewCanaryConfigInformer constructs a new informer for CanaryConfig type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewCanaryConfigInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredCanaryConfigInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredCanaryConfigInformer constructs a new informer for CanaryConfig type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredCanaryConfigInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().CanaryConfigs(namespace).List(options) + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().CanaryConfigs(namespace).Watch(options) + }, + }, + &fissioniov1.CanaryConfig{}, + resyncPeriod, + indexers, + ) +} + +func (f *_canaryConfigInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredCanaryConfigInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *_canaryConfigInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&fissioniov1.CanaryConfig{}, f.defaultInformer) +} + +func (f *_canaryConfigInformer) Lister() v1.CanaryConfigLister { + return v1.NewCanaryConfigLister(f.Informer().GetIndexer()) +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/environment.go b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/environment.go new file mode 100644 index 0000000000..62d618294d --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/environment.go @@ -0,0 +1,89 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1 + +import ( + time "time" + + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + versioned "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + internalinterfaces "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces" + v1 "github.com/fission/fission/pkg/apis/genclient/v1/listers/fission.io/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" +) + +// EnvironmentInformer provides access to a shared informer and lister for +// Environments. +type EnvironmentInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.EnvironmentLister +} + +type _environmentInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewEnvironmentInformer constructs a new informer for Environment type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewEnvironmentInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredEnvironmentInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredEnvironmentInformer constructs a new informer for Environment type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredEnvironmentInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().Environments(namespace).List(options) + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().Environments(namespace).Watch(options) + }, + }, + &fissioniov1.Environment{}, + resyncPeriod, + indexers, + ) +} + +func (f *_environmentInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredEnvironmentInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *_environmentInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&fissioniov1.Environment{}, f.defaultInformer) +} + +func (f *_environmentInformer) Lister() v1.EnvironmentLister { + return v1.NewEnvironmentLister(f.Informer().GetIndexer()) +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/function.go b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/function.go new file mode 100644 index 0000000000..45e31d8086 --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/function.go @@ -0,0 +1,89 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1 + +import ( + time "time" + + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + versioned "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + internalinterfaces "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces" + v1 "github.com/fission/fission/pkg/apis/genclient/v1/listers/fission.io/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" +) + +// FunctionInformer provides access to a shared informer and lister for +// Functions. +type FunctionInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.FunctionLister +} + +type _functionInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewFunctionInformer constructs a new informer for Function type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFunctionInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredFunctionInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredFunctionInformer constructs a new informer for Function type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredFunctionInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().Functions(namespace).List(options) + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().Functions(namespace).Watch(options) + }, + }, + &fissioniov1.Function{}, + resyncPeriod, + indexers, + ) +} + +func (f *_functionInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredFunctionInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *_functionInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&fissioniov1.Function{}, f.defaultInformer) +} + +func (f *_functionInformer) Lister() v1.FunctionLister { + return v1.NewFunctionLister(f.Informer().GetIndexer()) +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/httptrigger.go b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/httptrigger.go new file mode 100644 index 0000000000..076884472b --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/httptrigger.go @@ -0,0 +1,89 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1 + +import ( + time "time" + + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + versioned "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + internalinterfaces "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces" + v1 "github.com/fission/fission/pkg/apis/genclient/v1/listers/fission.io/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" +) + +// HTTPTriggerInformer provides access to a shared informer and lister for +// HTTPTriggers. +type HTTPTriggerInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.HTTPTriggerLister +} + +type _hTTPTriggerInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewHTTPTriggerInformer constructs a new informer for HTTPTrigger type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewHTTPTriggerInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredHTTPTriggerInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredHTTPTriggerInformer constructs a new informer for HTTPTrigger type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredHTTPTriggerInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().HTTPTriggers(namespace).List(options) + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().HTTPTriggers(namespace).Watch(options) + }, + }, + &fissioniov1.HTTPTrigger{}, + resyncPeriod, + indexers, + ) +} + +func (f *_hTTPTriggerInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredHTTPTriggerInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *_hTTPTriggerInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&fissioniov1.HTTPTrigger{}, f.defaultInformer) +} + +func (f *_hTTPTriggerInformer) Lister() v1.HTTPTriggerLister { + return v1.NewHTTPTriggerLister(f.Informer().GetIndexer()) +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/interface.go b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/interface.go new file mode 100644 index 0000000000..1003e0ec82 --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/interface.go @@ -0,0 +1,94 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1 + +import ( + internalinterfaces "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // CanaryConfigs returns a CanaryConfigInformer. + CanaryConfigs() CanaryConfigInformer + // Environments returns a EnvironmentInformer. + Environments() EnvironmentInformer + // Functions returns a FunctionInformer. + Functions() FunctionInformer + // HTTPTriggers returns a HTTPTriggerInformer. + HTTPTriggers() HTTPTriggerInformer + // KubernetesWatchTriggers returns a KubernetesWatchTriggerInformer. + KubernetesWatchTriggers() KubernetesWatchTriggerInformer + // MessageQueueTriggers returns a MessageQueueTriggerInformer. + MessageQueueTriggers() MessageQueueTriggerInformer + // Packages returns a PackageInformer. + Packages() PackageInformer + // TimeTriggers returns a TimeTriggerInformer. + TimeTriggers() TimeTriggerInformer +} + +type version struct { + factory internalinterfaces.SharedInformerFactory + namespace string + tweakListOptions internalinterfaces.TweakListOptionsFunc +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface { + return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} +} + +// CanaryConfigs returns a CanaryConfigInformer. +func (v *version) CanaryConfigs() CanaryConfigInformer { + return &_canaryConfigInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} + +// Environments returns a EnvironmentInformer. +func (v *version) Environments() EnvironmentInformer { + return &_environmentInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} + +// Functions returns a FunctionInformer. +func (v *version) Functions() FunctionInformer { + return &_functionInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} + +// HTTPTriggers returns a HTTPTriggerInformer. +func (v *version) HTTPTriggers() HTTPTriggerInformer { + return &_hTTPTriggerInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} + +// KubernetesWatchTriggers returns a KubernetesWatchTriggerInformer. +func (v *version) KubernetesWatchTriggers() KubernetesWatchTriggerInformer { + return &_kubernetesWatchTriggerInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} + +// MessageQueueTriggers returns a MessageQueueTriggerInformer. +func (v *version) MessageQueueTriggers() MessageQueueTriggerInformer { + return &_messageQueueTriggerInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} + +// Packages returns a PackageInformer. +func (v *version) Packages() PackageInformer { + return &_packageInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} + +// TimeTriggers returns a TimeTriggerInformer. +func (v *version) TimeTriggers() TimeTriggerInformer { + return &_timeTriggerInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/kuberneteswatchtrigger.go b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/kuberneteswatchtrigger.go new file mode 100644 index 0000000000..d43f658b88 --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/kuberneteswatchtrigger.go @@ -0,0 +1,89 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1 + +import ( + time "time" + + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + versioned "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + internalinterfaces "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces" + v1 "github.com/fission/fission/pkg/apis/genclient/v1/listers/fission.io/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" +) + +// KubernetesWatchTriggerInformer provides access to a shared informer and lister for +// KubernetesWatchTriggers. +type KubernetesWatchTriggerInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.KubernetesWatchTriggerLister +} + +type _kubernetesWatchTriggerInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewKubernetesWatchTriggerInformer constructs a new informer for KubernetesWatchTrigger type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewKubernetesWatchTriggerInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredKubernetesWatchTriggerInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredKubernetesWatchTriggerInformer constructs a new informer for KubernetesWatchTrigger type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredKubernetesWatchTriggerInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().KubernetesWatchTriggers(namespace).List(options) + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().KubernetesWatchTriggers(namespace).Watch(options) + }, + }, + &fissioniov1.KubernetesWatchTrigger{}, + resyncPeriod, + indexers, + ) +} + +func (f *_kubernetesWatchTriggerInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredKubernetesWatchTriggerInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *_kubernetesWatchTriggerInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&fissioniov1.KubernetesWatchTrigger{}, f.defaultInformer) +} + +func (f *_kubernetesWatchTriggerInformer) Lister() v1.KubernetesWatchTriggerLister { + return v1.NewKubernetesWatchTriggerLister(f.Informer().GetIndexer()) +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/messagequeuetrigger.go b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/messagequeuetrigger.go new file mode 100644 index 0000000000..a91e8ab2b2 --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/messagequeuetrigger.go @@ -0,0 +1,89 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1 + +import ( + time "time" + + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + versioned "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + internalinterfaces "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces" + v1 "github.com/fission/fission/pkg/apis/genclient/v1/listers/fission.io/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" +) + +// MessageQueueTriggerInformer provides access to a shared informer and lister for +// MessageQueueTriggers. +type MessageQueueTriggerInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.MessageQueueTriggerLister +} + +type _messageQueueTriggerInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewMessageQueueTriggerInformer constructs a new informer for MessageQueueTrigger type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewMessageQueueTriggerInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredMessageQueueTriggerInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredMessageQueueTriggerInformer constructs a new informer for MessageQueueTrigger type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredMessageQueueTriggerInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().MessageQueueTriggers(namespace).List(options) + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().MessageQueueTriggers(namespace).Watch(options) + }, + }, + &fissioniov1.MessageQueueTrigger{}, + resyncPeriod, + indexers, + ) +} + +func (f *_messageQueueTriggerInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredMessageQueueTriggerInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *_messageQueueTriggerInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&fissioniov1.MessageQueueTrigger{}, f.defaultInformer) +} + +func (f *_messageQueueTriggerInformer) Lister() v1.MessageQueueTriggerLister { + return v1.NewMessageQueueTriggerLister(f.Informer().GetIndexer()) +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/package.go b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/package.go new file mode 100644 index 0000000000..35163a5aad --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/package.go @@ -0,0 +1,89 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1 + +import ( + time "time" + + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + versioned "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + internalinterfaces "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces" + v1 "github.com/fission/fission/pkg/apis/genclient/v1/listers/fission.io/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" +) + +// PackageInformer provides access to a shared informer and lister for +// Packages. +type PackageInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.PackageLister +} + +type _packageInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewPackageInformer constructs a new informer for Package type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewPackageInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredPackageInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredPackageInformer constructs a new informer for Package type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredPackageInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().Packages(namespace).List(options) + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().Packages(namespace).Watch(options) + }, + }, + &fissioniov1.Package{}, + resyncPeriod, + indexers, + ) +} + +func (f *_packageInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredPackageInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *_packageInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&fissioniov1.Package{}, f.defaultInformer) +} + +func (f *_packageInformer) Lister() v1.PackageLister { + return v1.NewPackageLister(f.Informer().GetIndexer()) +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/timetrigger.go b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/timetrigger.go new file mode 100644 index 0000000000..915531e4e7 --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/fission.io/v1/timetrigger.go @@ -0,0 +1,89 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1 + +import ( + time "time" + + fissioniov1 "github.com/fission/fission/pkg/apis/fission.io/v1" + versioned "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + internalinterfaces "github.com/fission/fission/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces" + v1 "github.com/fission/fission/pkg/apis/genclient/v1/listers/fission.io/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" +) + +// TimeTriggerInformer provides access to a shared informer and lister for +// TimeTriggers. +type TimeTriggerInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.TimeTriggerLister +} + +type _timeTriggerInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewTimeTriggerInformer constructs a new informer for TimeTrigger type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewTimeTriggerInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredTimeTriggerInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredTimeTriggerInformer constructs a new informer for TimeTrigger type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredTimeTriggerInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().TimeTriggers(namespace).List(options) + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.V1V1().TimeTriggers(namespace).Watch(options) + }, + }, + &fissioniov1.TimeTrigger{}, + resyncPeriod, + indexers, + ) +} + +func (f *_timeTriggerInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredTimeTriggerInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *_timeTriggerInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&fissioniov1.TimeTrigger{}, f.defaultInformer) +} + +func (f *_timeTriggerInformer) Lister() v1.TimeTriggerLister { + return v1.NewTimeTriggerLister(f.Informer().GetIndexer()) +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/generic.go b/pkg/apis/genclient/v1/informers/externalversions/generic.go new file mode 100644 index 0000000000..4cb97af672 --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/generic.go @@ -0,0 +1,76 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package externalversions + +import ( + "fmt" + + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + schema "k8s.io/apimachinery/pkg/runtime/schema" + cache "k8s.io/client-go/tools/cache" +) + +// GenericInformer is type of SharedIndexInformer which will locate and delegate to other +// sharedInformers based on type +type GenericInformer interface { + Informer() cache.SharedIndexInformer + Lister() cache.GenericLister +} + +type genericInformer struct { + informer cache.SharedIndexInformer + resource schema.GroupResource +} + +// Informer returns the SharedIndexInformer. +func (f *genericInformer) Informer() cache.SharedIndexInformer { + return f.informer +} + +// Lister returns the GenericLister. +func (f *genericInformer) Lister() cache.GenericLister { + return cache.NewGenericLister(f.Informer().GetIndexer(), f.resource) +} + +// ForResource gives generic access to a shared informer of the matching type +// TODO extend this to unknown resources with a client pool +func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) { + switch resource { + // Group=fission.io, Version=v1 + case v1.SchemeGroupVersion.WithResource("canaryconfigs"): + return &genericInformer{resource: resource.GroupResource(), informer: f.V1().V1().CanaryConfigs().Informer()}, nil + case v1.SchemeGroupVersion.WithResource("environments"): + return &genericInformer{resource: resource.GroupResource(), informer: f.V1().V1().Environments().Informer()}, nil + case v1.SchemeGroupVersion.WithResource("functions"): + return &genericInformer{resource: resource.GroupResource(), informer: f.V1().V1().Functions().Informer()}, nil + case v1.SchemeGroupVersion.WithResource("httptriggers"): + return &genericInformer{resource: resource.GroupResource(), informer: f.V1().V1().HTTPTriggers().Informer()}, nil + case v1.SchemeGroupVersion.WithResource("kuberneteswatchtriggers"): + return &genericInformer{resource: resource.GroupResource(), informer: f.V1().V1().KubernetesWatchTriggers().Informer()}, nil + case v1.SchemeGroupVersion.WithResource("messagequeuetriggers"): + return &genericInformer{resource: resource.GroupResource(), informer: f.V1().V1().MessageQueueTriggers().Informer()}, nil + case v1.SchemeGroupVersion.WithResource("packages"): + return &genericInformer{resource: resource.GroupResource(), informer: f.V1().V1().Packages().Informer()}, nil + case v1.SchemeGroupVersion.WithResource("timetriggers"): + return &genericInformer{resource: resource.GroupResource(), informer: f.V1().V1().TimeTriggers().Informer()}, nil + + } + + return nil, fmt.Errorf("no informer found for %v", resource) +} diff --git a/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces/factory_interfaces.go b/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces/factory_interfaces.go new file mode 100644 index 0000000000..2e66b81a5a --- /dev/null +++ b/pkg/apis/genclient/v1/informers/externalversions/internalinterfaces/factory_interfaces.go @@ -0,0 +1,40 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package internalinterfaces + +import ( + time "time" + + versioned "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + cache "k8s.io/client-go/tools/cache" +) + +// NewInformerFunc takes versioned.Interface and time.Duration to return a SharedIndexInformer. +type NewInformerFunc func(versioned.Interface, time.Duration) cache.SharedIndexInformer + +// SharedInformerFactory a small interface to allow for adding an informer without an import cycle +type SharedInformerFactory interface { + Start(stopCh <-chan struct{}) + InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer +} + +// TweakListOptionsFunc is a function that transforms a v1.ListOptions. +type TweakListOptionsFunc func(*v1.ListOptions) diff --git a/pkg/apis/genclient/v1/listers/fission.io/v1/canaryconfig.go b/pkg/apis/genclient/v1/listers/fission.io/v1/canaryconfig.go new file mode 100644 index 0000000000..7843735452 --- /dev/null +++ b/pkg/apis/genclient/v1/listers/fission.io/v1/canaryconfig.go @@ -0,0 +1,94 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// CanaryConfigLister helps list CanaryConfigs. +type CanaryConfigLister interface { + // List lists all CanaryConfigs in the indexer. + List(selector labels.Selector) (ret []*v1.CanaryConfig, err error) + // CanaryConfigs returns an object that can list and get CanaryConfigs. + CanaryConfigs(namespace string) CanaryConfigNamespaceLister + CanaryConfigListerExpansion +} + +// _canaryConfigLister implements the CanaryConfigLister interface. +type _canaryConfigLister struct { + indexer cache.Indexer +} + +// NewCanaryConfigLister returns a new CanaryConfigLister. +func NewCanaryConfigLister(indexer cache.Indexer) CanaryConfigLister { + return &_canaryConfigLister{indexer: indexer} +} + +// List lists all CanaryConfigs in the indexer. +func (s *_canaryConfigLister) List(selector labels.Selector) (ret []*v1.CanaryConfig, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.CanaryConfig)) + }) + return ret, err +} + +// CanaryConfigs returns an object that can list and get CanaryConfigs. +func (s *_canaryConfigLister) CanaryConfigs(namespace string) CanaryConfigNamespaceLister { + return _canaryConfigNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// CanaryConfigNamespaceLister helps list and get CanaryConfigs. +type CanaryConfigNamespaceLister interface { + // List lists all CanaryConfigs in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.CanaryConfig, err error) + // Get retrieves the CanaryConfig from the indexer for a given namespace and name. + Get(name string) (*v1.CanaryConfig, error) + CanaryConfigNamespaceListerExpansion +} + +// _canaryConfigNamespaceLister implements the CanaryConfigNamespaceLister +// interface. +type _canaryConfigNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all CanaryConfigs in the indexer for a given namespace. +func (s _canaryConfigNamespaceLister) List(selector labels.Selector) (ret []*v1.CanaryConfig, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.CanaryConfig)) + }) + return ret, err +} + +// Get retrieves the CanaryConfig from the indexer for a given namespace and name. +func (s _canaryConfigNamespaceLister) Get(name string) (*v1.CanaryConfig, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("canaryconfig"), name) + } + return obj.(*v1.CanaryConfig), nil +} diff --git a/pkg/apis/genclient/v1/listers/fission.io/v1/environment.go b/pkg/apis/genclient/v1/listers/fission.io/v1/environment.go new file mode 100644 index 0000000000..b475a3e49a --- /dev/null +++ b/pkg/apis/genclient/v1/listers/fission.io/v1/environment.go @@ -0,0 +1,94 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// EnvironmentLister helps list Environments. +type EnvironmentLister interface { + // List lists all Environments in the indexer. + List(selector labels.Selector) (ret []*v1.Environment, err error) + // Environments returns an object that can list and get Environments. + Environments(namespace string) EnvironmentNamespaceLister + EnvironmentListerExpansion +} + +// _environmentLister implements the EnvironmentLister interface. +type _environmentLister struct { + indexer cache.Indexer +} + +// NewEnvironmentLister returns a new EnvironmentLister. +func NewEnvironmentLister(indexer cache.Indexer) EnvironmentLister { + return &_environmentLister{indexer: indexer} +} + +// List lists all Environments in the indexer. +func (s *_environmentLister) List(selector labels.Selector) (ret []*v1.Environment, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Environment)) + }) + return ret, err +} + +// Environments returns an object that can list and get Environments. +func (s *_environmentLister) Environments(namespace string) EnvironmentNamespaceLister { + return _environmentNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// EnvironmentNamespaceLister helps list and get Environments. +type EnvironmentNamespaceLister interface { + // List lists all Environments in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.Environment, err error) + // Get retrieves the Environment from the indexer for a given namespace and name. + Get(name string) (*v1.Environment, error) + EnvironmentNamespaceListerExpansion +} + +// _environmentNamespaceLister implements the EnvironmentNamespaceLister +// interface. +type _environmentNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Environments in the indexer for a given namespace. +func (s _environmentNamespaceLister) List(selector labels.Selector) (ret []*v1.Environment, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Environment)) + }) + return ret, err +} + +// Get retrieves the Environment from the indexer for a given namespace and name. +func (s _environmentNamespaceLister) Get(name string) (*v1.Environment, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("environment"), name) + } + return obj.(*v1.Environment), nil +} diff --git a/pkg/apis/genclient/v1/listers/fission.io/v1/expansion_generated.go b/pkg/apis/genclient/v1/listers/fission.io/v1/expansion_generated.go new file mode 100644 index 0000000000..06cfb6e8e6 --- /dev/null +++ b/pkg/apis/genclient/v1/listers/fission.io/v1/expansion_generated.go @@ -0,0 +1,83 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1 + +// CanaryConfigListerExpansion allows custom methods to be added to +// CanaryConfigLister. +type CanaryConfigListerExpansion interface{} + +// CanaryConfigNamespaceListerExpansion allows custom methods to be added to +// CanaryConfigNamespaceLister. +type CanaryConfigNamespaceListerExpansion interface{} + +// EnvironmentListerExpansion allows custom methods to be added to +// EnvironmentLister. +type EnvironmentListerExpansion interface{} + +// EnvironmentNamespaceListerExpansion allows custom methods to be added to +// EnvironmentNamespaceLister. +type EnvironmentNamespaceListerExpansion interface{} + +// FunctionListerExpansion allows custom methods to be added to +// FunctionLister. +type FunctionListerExpansion interface{} + +// FunctionNamespaceListerExpansion allows custom methods to be added to +// FunctionNamespaceLister. +type FunctionNamespaceListerExpansion interface{} + +// HTTPTriggerListerExpansion allows custom methods to be added to +// HTTPTriggerLister. +type HTTPTriggerListerExpansion interface{} + +// HTTPTriggerNamespaceListerExpansion allows custom methods to be added to +// HTTPTriggerNamespaceLister. +type HTTPTriggerNamespaceListerExpansion interface{} + +// KubernetesWatchTriggerListerExpansion allows custom methods to be added to +// KubernetesWatchTriggerLister. +type KubernetesWatchTriggerListerExpansion interface{} + +// KubernetesWatchTriggerNamespaceListerExpansion allows custom methods to be added to +// KubernetesWatchTriggerNamespaceLister. +type KubernetesWatchTriggerNamespaceListerExpansion interface{} + +// MessageQueueTriggerListerExpansion allows custom methods to be added to +// MessageQueueTriggerLister. +type MessageQueueTriggerListerExpansion interface{} + +// MessageQueueTriggerNamespaceListerExpansion allows custom methods to be added to +// MessageQueueTriggerNamespaceLister. +type MessageQueueTriggerNamespaceListerExpansion interface{} + +// PackageListerExpansion allows custom methods to be added to +// PackageLister. +type PackageListerExpansion interface{} + +// PackageNamespaceListerExpansion allows custom methods to be added to +// PackageNamespaceLister. +type PackageNamespaceListerExpansion interface{} + +// TimeTriggerListerExpansion allows custom methods to be added to +// TimeTriggerLister. +type TimeTriggerListerExpansion interface{} + +// TimeTriggerNamespaceListerExpansion allows custom methods to be added to +// TimeTriggerNamespaceLister. +type TimeTriggerNamespaceListerExpansion interface{} diff --git a/pkg/apis/genclient/v1/listers/fission.io/v1/function.go b/pkg/apis/genclient/v1/listers/fission.io/v1/function.go new file mode 100644 index 0000000000..ceadf192f9 --- /dev/null +++ b/pkg/apis/genclient/v1/listers/fission.io/v1/function.go @@ -0,0 +1,94 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// FunctionLister helps list Functions. +type FunctionLister interface { + // List lists all Functions in the indexer. + List(selector labels.Selector) (ret []*v1.Function, err error) + // Functions returns an object that can list and get Functions. + Functions(namespace string) FunctionNamespaceLister + FunctionListerExpansion +} + +// _functionLister implements the FunctionLister interface. +type _functionLister struct { + indexer cache.Indexer +} + +// NewFunctionLister returns a new FunctionLister. +func NewFunctionLister(indexer cache.Indexer) FunctionLister { + return &_functionLister{indexer: indexer} +} + +// List lists all Functions in the indexer. +func (s *_functionLister) List(selector labels.Selector) (ret []*v1.Function, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Function)) + }) + return ret, err +} + +// Functions returns an object that can list and get Functions. +func (s *_functionLister) Functions(namespace string) FunctionNamespaceLister { + return _functionNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// FunctionNamespaceLister helps list and get Functions. +type FunctionNamespaceLister interface { + // List lists all Functions in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.Function, err error) + // Get retrieves the Function from the indexer for a given namespace and name. + Get(name string) (*v1.Function, error) + FunctionNamespaceListerExpansion +} + +// _functionNamespaceLister implements the FunctionNamespaceLister +// interface. +type _functionNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Functions in the indexer for a given namespace. +func (s _functionNamespaceLister) List(selector labels.Selector) (ret []*v1.Function, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Function)) + }) + return ret, err +} + +// Get retrieves the Function from the indexer for a given namespace and name. +func (s _functionNamespaceLister) Get(name string) (*v1.Function, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("function"), name) + } + return obj.(*v1.Function), nil +} diff --git a/pkg/apis/genclient/v1/listers/fission.io/v1/httptrigger.go b/pkg/apis/genclient/v1/listers/fission.io/v1/httptrigger.go new file mode 100644 index 0000000000..85a37ea3db --- /dev/null +++ b/pkg/apis/genclient/v1/listers/fission.io/v1/httptrigger.go @@ -0,0 +1,94 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// HTTPTriggerLister helps list HTTPTriggers. +type HTTPTriggerLister interface { + // List lists all HTTPTriggers in the indexer. + List(selector labels.Selector) (ret []*v1.HTTPTrigger, err error) + // HTTPTriggers returns an object that can list and get HTTPTriggers. + HTTPTriggers(namespace string) HTTPTriggerNamespaceLister + HTTPTriggerListerExpansion +} + +// _hTTPTriggerLister implements the HTTPTriggerLister interface. +type _hTTPTriggerLister struct { + indexer cache.Indexer +} + +// NewHTTPTriggerLister returns a new HTTPTriggerLister. +func NewHTTPTriggerLister(indexer cache.Indexer) HTTPTriggerLister { + return &_hTTPTriggerLister{indexer: indexer} +} + +// List lists all HTTPTriggers in the indexer. +func (s *_hTTPTriggerLister) List(selector labels.Selector) (ret []*v1.HTTPTrigger, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.HTTPTrigger)) + }) + return ret, err +} + +// HTTPTriggers returns an object that can list and get HTTPTriggers. +func (s *_hTTPTriggerLister) HTTPTriggers(namespace string) HTTPTriggerNamespaceLister { + return _hTTPTriggerNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// HTTPTriggerNamespaceLister helps list and get HTTPTriggers. +type HTTPTriggerNamespaceLister interface { + // List lists all HTTPTriggers in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.HTTPTrigger, err error) + // Get retrieves the HTTPTrigger from the indexer for a given namespace and name. + Get(name string) (*v1.HTTPTrigger, error) + HTTPTriggerNamespaceListerExpansion +} + +// _hTTPTriggerNamespaceLister implements the HTTPTriggerNamespaceLister +// interface. +type _hTTPTriggerNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all HTTPTriggers in the indexer for a given namespace. +func (s _hTTPTriggerNamespaceLister) List(selector labels.Selector) (ret []*v1.HTTPTrigger, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.HTTPTrigger)) + }) + return ret, err +} + +// Get retrieves the HTTPTrigger from the indexer for a given namespace and name. +func (s _hTTPTriggerNamespaceLister) Get(name string) (*v1.HTTPTrigger, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("httptrigger"), name) + } + return obj.(*v1.HTTPTrigger), nil +} diff --git a/pkg/apis/genclient/v1/listers/fission.io/v1/kuberneteswatchtrigger.go b/pkg/apis/genclient/v1/listers/fission.io/v1/kuberneteswatchtrigger.go new file mode 100644 index 0000000000..54b5c821a4 --- /dev/null +++ b/pkg/apis/genclient/v1/listers/fission.io/v1/kuberneteswatchtrigger.go @@ -0,0 +1,94 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// KubernetesWatchTriggerLister helps list KubernetesWatchTriggers. +type KubernetesWatchTriggerLister interface { + // List lists all KubernetesWatchTriggers in the indexer. + List(selector labels.Selector) (ret []*v1.KubernetesWatchTrigger, err error) + // KubernetesWatchTriggers returns an object that can list and get KubernetesWatchTriggers. + KubernetesWatchTriggers(namespace string) KubernetesWatchTriggerNamespaceLister + KubernetesWatchTriggerListerExpansion +} + +// _kubernetesWatchTriggerLister implements the KubernetesWatchTriggerLister interface. +type _kubernetesWatchTriggerLister struct { + indexer cache.Indexer +} + +// NewKubernetesWatchTriggerLister returns a new KubernetesWatchTriggerLister. +func NewKubernetesWatchTriggerLister(indexer cache.Indexer) KubernetesWatchTriggerLister { + return &_kubernetesWatchTriggerLister{indexer: indexer} +} + +// List lists all KubernetesWatchTriggers in the indexer. +func (s *_kubernetesWatchTriggerLister) List(selector labels.Selector) (ret []*v1.KubernetesWatchTrigger, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.KubernetesWatchTrigger)) + }) + return ret, err +} + +// KubernetesWatchTriggers returns an object that can list and get KubernetesWatchTriggers. +func (s *_kubernetesWatchTriggerLister) KubernetesWatchTriggers(namespace string) KubernetesWatchTriggerNamespaceLister { + return _kubernetesWatchTriggerNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// KubernetesWatchTriggerNamespaceLister helps list and get KubernetesWatchTriggers. +type KubernetesWatchTriggerNamespaceLister interface { + // List lists all KubernetesWatchTriggers in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.KubernetesWatchTrigger, err error) + // Get retrieves the KubernetesWatchTrigger from the indexer for a given namespace and name. + Get(name string) (*v1.KubernetesWatchTrigger, error) + KubernetesWatchTriggerNamespaceListerExpansion +} + +// _kubernetesWatchTriggerNamespaceLister implements the KubernetesWatchTriggerNamespaceLister +// interface. +type _kubernetesWatchTriggerNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all KubernetesWatchTriggers in the indexer for a given namespace. +func (s _kubernetesWatchTriggerNamespaceLister) List(selector labels.Selector) (ret []*v1.KubernetesWatchTrigger, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.KubernetesWatchTrigger)) + }) + return ret, err +} + +// Get retrieves the KubernetesWatchTrigger from the indexer for a given namespace and name. +func (s _kubernetesWatchTriggerNamespaceLister) Get(name string) (*v1.KubernetesWatchTrigger, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("kuberneteswatchtrigger"), name) + } + return obj.(*v1.KubernetesWatchTrigger), nil +} diff --git a/pkg/apis/genclient/v1/listers/fission.io/v1/messagequeuetrigger.go b/pkg/apis/genclient/v1/listers/fission.io/v1/messagequeuetrigger.go new file mode 100644 index 0000000000..67cbdabe95 --- /dev/null +++ b/pkg/apis/genclient/v1/listers/fission.io/v1/messagequeuetrigger.go @@ -0,0 +1,94 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// MessageQueueTriggerLister helps list MessageQueueTriggers. +type MessageQueueTriggerLister interface { + // List lists all MessageQueueTriggers in the indexer. + List(selector labels.Selector) (ret []*v1.MessageQueueTrigger, err error) + // MessageQueueTriggers returns an object that can list and get MessageQueueTriggers. + MessageQueueTriggers(namespace string) MessageQueueTriggerNamespaceLister + MessageQueueTriggerListerExpansion +} + +// _messageQueueTriggerLister implements the MessageQueueTriggerLister interface. +type _messageQueueTriggerLister struct { + indexer cache.Indexer +} + +// NewMessageQueueTriggerLister returns a new MessageQueueTriggerLister. +func NewMessageQueueTriggerLister(indexer cache.Indexer) MessageQueueTriggerLister { + return &_messageQueueTriggerLister{indexer: indexer} +} + +// List lists all MessageQueueTriggers in the indexer. +func (s *_messageQueueTriggerLister) List(selector labels.Selector) (ret []*v1.MessageQueueTrigger, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.MessageQueueTrigger)) + }) + return ret, err +} + +// MessageQueueTriggers returns an object that can list and get MessageQueueTriggers. +func (s *_messageQueueTriggerLister) MessageQueueTriggers(namespace string) MessageQueueTriggerNamespaceLister { + return _messageQueueTriggerNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// MessageQueueTriggerNamespaceLister helps list and get MessageQueueTriggers. +type MessageQueueTriggerNamespaceLister interface { + // List lists all MessageQueueTriggers in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.MessageQueueTrigger, err error) + // Get retrieves the MessageQueueTrigger from the indexer for a given namespace and name. + Get(name string) (*v1.MessageQueueTrigger, error) + MessageQueueTriggerNamespaceListerExpansion +} + +// _messageQueueTriggerNamespaceLister implements the MessageQueueTriggerNamespaceLister +// interface. +type _messageQueueTriggerNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all MessageQueueTriggers in the indexer for a given namespace. +func (s _messageQueueTriggerNamespaceLister) List(selector labels.Selector) (ret []*v1.MessageQueueTrigger, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.MessageQueueTrigger)) + }) + return ret, err +} + +// Get retrieves the MessageQueueTrigger from the indexer for a given namespace and name. +func (s _messageQueueTriggerNamespaceLister) Get(name string) (*v1.MessageQueueTrigger, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("messagequeuetrigger"), name) + } + return obj.(*v1.MessageQueueTrigger), nil +} diff --git a/pkg/apis/genclient/v1/listers/fission.io/v1/package.go b/pkg/apis/genclient/v1/listers/fission.io/v1/package.go new file mode 100644 index 0000000000..9245e41bd7 --- /dev/null +++ b/pkg/apis/genclient/v1/listers/fission.io/v1/package.go @@ -0,0 +1,94 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// PackageLister helps list Packages. +type PackageLister interface { + // List lists all Packages in the indexer. + List(selector labels.Selector) (ret []*v1.Package, err error) + // Packages returns an object that can list and get Packages. + Packages(namespace string) PackageNamespaceLister + PackageListerExpansion +} + +// _packageLister implements the PackageLister interface. +type _packageLister struct { + indexer cache.Indexer +} + +// NewPackageLister returns a new PackageLister. +func NewPackageLister(indexer cache.Indexer) PackageLister { + return &_packageLister{indexer: indexer} +} + +// List lists all Packages in the indexer. +func (s *_packageLister) List(selector labels.Selector) (ret []*v1.Package, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Package)) + }) + return ret, err +} + +// Packages returns an object that can list and get Packages. +func (s *_packageLister) Packages(namespace string) PackageNamespaceLister { + return _packageNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// PackageNamespaceLister helps list and get Packages. +type PackageNamespaceLister interface { + // List lists all Packages in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.Package, err error) + // Get retrieves the Package from the indexer for a given namespace and name. + Get(name string) (*v1.Package, error) + PackageNamespaceListerExpansion +} + +// _packageNamespaceLister implements the PackageNamespaceLister +// interface. +type _packageNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Packages in the indexer for a given namespace. +func (s _packageNamespaceLister) List(selector labels.Selector) (ret []*v1.Package, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Package)) + }) + return ret, err +} + +// Get retrieves the Package from the indexer for a given namespace and name. +func (s _packageNamespaceLister) Get(name string) (*v1.Package, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("package"), name) + } + return obj.(*v1.Package), nil +} diff --git a/pkg/apis/genclient/v1/listers/fission.io/v1/timetrigger.go b/pkg/apis/genclient/v1/listers/fission.io/v1/timetrigger.go new file mode 100644 index 0000000000..5e5467b016 --- /dev/null +++ b/pkg/apis/genclient/v1/listers/fission.io/v1/timetrigger.go @@ -0,0 +1,94 @@ +/* +Copyright The Fission 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. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "github.com/fission/fission/pkg/apis/fission.io/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// TimeTriggerLister helps list TimeTriggers. +type TimeTriggerLister interface { + // List lists all TimeTriggers in the indexer. + List(selector labels.Selector) (ret []*v1.TimeTrigger, err error) + // TimeTriggers returns an object that can list and get TimeTriggers. + TimeTriggers(namespace string) TimeTriggerNamespaceLister + TimeTriggerListerExpansion +} + +// _timeTriggerLister implements the TimeTriggerLister interface. +type _timeTriggerLister struct { + indexer cache.Indexer +} + +// NewTimeTriggerLister returns a new TimeTriggerLister. +func NewTimeTriggerLister(indexer cache.Indexer) TimeTriggerLister { + return &_timeTriggerLister{indexer: indexer} +} + +// List lists all TimeTriggers in the indexer. +func (s *_timeTriggerLister) List(selector labels.Selector) (ret []*v1.TimeTrigger, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.TimeTrigger)) + }) + return ret, err +} + +// TimeTriggers returns an object that can list and get TimeTriggers. +func (s *_timeTriggerLister) TimeTriggers(namespace string) TimeTriggerNamespaceLister { + return _timeTriggerNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// TimeTriggerNamespaceLister helps list and get TimeTriggers. +type TimeTriggerNamespaceLister interface { + // List lists all TimeTriggers in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.TimeTrigger, err error) + // Get retrieves the TimeTrigger from the indexer for a given namespace and name. + Get(name string) (*v1.TimeTrigger, error) + TimeTriggerNamespaceListerExpansion +} + +// _timeTriggerNamespaceLister implements the TimeTriggerNamespaceLister +// interface. +type _timeTriggerNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all TimeTriggers in the indexer for a given namespace. +func (s _timeTriggerNamespaceLister) List(selector labels.Selector) (ret []*v1.TimeTrigger, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.TimeTrigger)) + }) + return ret, err +} + +// Get retrieves the TimeTrigger from the indexer for a given namespace and name. +func (s _timeTriggerNamespaceLister) Get(name string) (*v1.TimeTrigger, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("timetrigger"), name) + } + return obj.(*v1.TimeTrigger), nil +} diff --git a/pkg/buildermgr/common.go b/pkg/buildermgr/common.go index 32bbc0aee2..1d40552834 100644 --- a/pkg/buildermgr/common.go +++ b/pkg/buildermgr/common.go @@ -19,6 +19,7 @@ package buildermgr import ( "context" "fmt" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "net/http" "strings" "time" @@ -46,7 +47,7 @@ import ( func buildPackage(ctx context.Context, logger *zap.Logger, fissionClient *crd.FissionClient, envBuilderNamespace string, storageSvcUrl string, pkg *fv1.Package) (uploadResp *types.ArchiveUploadResponse, buildLogs string, err error) { - env, err := fissionClient.Environments(pkg.Spec.Environment.Namespace).Get(pkg.Spec.Environment.Name) + env, err := fissionClient.V1().Environments(pkg.Spec.Environment.Namespace).Get(pkg.Spec.Environment.Name, metav1.GetOptions{}) if err != nil { e := "error getting environment CRD info" logger.Error(e, zap.Error(err)) @@ -54,14 +55,14 @@ func buildPackage(ctx context.Context, logger *zap.Logger, fissionClient *crd.Fi return nil, e, ferror.MakeError(http.StatusInternalServerError, e) } - svcName := fmt.Sprintf("%v-%v.%v", env.Metadata.Name, env.Metadata.ResourceVersion, envBuilderNamespace) - srcPkgFilename := fmt.Sprintf("%v-%v", pkg.Metadata.Name, strings.ToLower(uniuri.NewLen(6))) + svcName := fmt.Sprintf("%v-%v.%v", env.ObjectMeta.Name, env.ObjectMeta.ResourceVersion, envBuilderNamespace) + srcPkgFilename := fmt.Sprintf("%v-%v", pkg.ObjectMeta.Name, strings.ToLower(uniuri.NewLen(6))) fetcherC := fetcherClient.MakeClient(logger, fmt.Sprintf("http://%v:8000", svcName)) builderC := builderClient.MakeClient(logger, fmt.Sprintf("http://%v:8001", svcName)) fetchReq := &types.FunctionFetchRequest{ FetchType: types.FETCH_SOURCE, - Package: pkg.Metadata, + Package: pkg.ObjectMeta, Filename: srcPkgFilename, KeepArchive: false, } @@ -127,7 +128,7 @@ func updatePackage(logger *zap.Logger, fissionClient *crd.FissionClient, pkg.Status = fv1.PackageStatus{ BuildStatus: status, BuildLog: buildLogs, - LastUpdateTimestamp: time.Now().UTC(), + LastUpdateTimestamp: metav1.Time{Time: time.Now().UTC()}, } if uploadResp != nil { @@ -139,7 +140,7 @@ func updatePackage(logger *zap.Logger, fissionClient *crd.FissionClient, } // update package spec - pkg, err := fissionClient.Packages(pkg.Metadata.Namespace).Update(pkg) + pkg, err := fissionClient.V1().Packages(pkg.ObjectMeta.Namespace).Update(pkg) if err != nil { e := "error updating package" logger.Error(e, zap.Error(err)) diff --git a/pkg/buildermgr/envwatcher.go b/pkg/buildermgr/envwatcher.go index d79d63bd87..1953296cb7 100644 --- a/pkg/buildermgr/envwatcher.go +++ b/pkg/buildermgr/envwatcher.go @@ -148,7 +148,7 @@ func (envw *environmentWatcher) getLabels(envName string, envNamespace string, e func (envw *environmentWatcher) watchEnvironments() { rv := "" for { - wi, err := envw.fissionClient.Environments(metav1.NamespaceAll).Watch(metav1.ListOptions{ + wi, err := envw.fissionClient.V1().Environments(metav1.NamespaceAll).Watch(metav1.ListOptions{ ResourceVersion: rv, }) if err != nil { @@ -173,7 +173,7 @@ func (envw *environmentWatcher) watchEnvironments() { break } env := ev.Object.(*fv1.Environment) - rv = env.Metadata.ResourceVersion + rv = env.ObjectMeta.ResourceVersion envw.sync() } } @@ -182,7 +182,7 @@ func (envw *environmentWatcher) watchEnvironments() { func (envw *environmentWatcher) sync() { maxRetries := 10 for i := 0; i < maxRetries; i++ { - envList, err := envw.fissionClient.Environments(metav1.NamespaceAll).List(metav1.ListOptions{}) + envList, err := envw.fissionClient.V1().Environments(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { if utils.IsNetworkError(err) { envw.logger.Error("error syncing environment CRD resources due to network error, retrying later", zap.Error(err)) @@ -202,7 +202,7 @@ func (envw *environmentWatcher) sync() { } _, err := envw.getEnvBuilder(&env) if err != nil { - envw.logger.Error("error creating builder", zap.Error(err), zap.String("builder_target", env.Metadata.Name)) + envw.logger.Error("error creating builder", zap.Error(err), zap.String("builder_target", env.ObjectMeta.Name)) } } @@ -220,11 +220,11 @@ func (envw *environmentWatcher) service() { // In order to support backward compatibility, for all environments with builder image created in default env, // the pods will be created in fission-builder namespace ns := envw.builderNamespace - if req.env.Metadata.Namespace != metav1.NamespaceDefault { - ns = req.env.Metadata.Namespace + if req.env.ObjectMeta.Namespace != metav1.NamespaceDefault { + ns = req.env.ObjectMeta.Namespace } - key := envw.getCacheKey(req.env.Metadata.Name, ns, req.env.Metadata.ResourceVersion) + key := envw.getCacheKey(req.env.ObjectMeta.Name, ns, req.env.ObjectMeta.ResourceVersion) builderInfo, ok := envw.cache[key] if !ok { builderInfo, err := envw.createBuilder(req.env, ns) @@ -243,10 +243,10 @@ func (envw *environmentWatcher) service() { // In order to support backward compatibility, for all builder images created in default // env, the pods are created in fission-builder namespace ns := envw.builderNamespace - if env.Metadata.Namespace != metav1.NamespaceDefault { - ns = env.Metadata.Namespace + if env.ObjectMeta.Namespace != metav1.NamespaceDefault { + ns = env.ObjectMeta.Namespace } - key := envw.getCacheKey(env.Metadata.Name, ns, env.Metadata.ResourceVersion) + key := envw.getCacheKey(env.ObjectMeta.Name, ns, env.ObjectMeta.ResourceVersion) latestEnvList[key] = &env } @@ -321,7 +321,7 @@ func (envw *environmentWatcher) createBuilder(env *fv1.Environment, ns string) ( var svc *apiv1.Service var deploy *appsv1.Deployment - sel := envw.getLabels(env.Metadata.Name, ns, env.Metadata.ResourceVersion) + sel := envw.getLabels(env.ObjectMeta.Name, ns, env.ObjectMeta.ResourceVersion) svcList, err := envw.getBuilderServiceList(sel, ns) if err != nil { @@ -336,7 +336,7 @@ func (envw *environmentWatcher) createBuilder(env *fv1.Environment, ns string) ( } else if len(svcList) == 1 { svc = &svcList[0] } else { - return nil, fmt.Errorf("found more than one builder service for environment %q", env.Metadata.Name) + return nil, fmt.Errorf("found more than one builder service for environment %q", env.ObjectMeta.Name) } deployList, err := envw.getBuilderDeploymentList(sel, ns) @@ -358,11 +358,11 @@ func (envw *environmentWatcher) createBuilder(env *fv1.Environment, ns string) ( } else if len(deployList) == 1 { deploy = &deployList[0] } else { - return nil, fmt.Errorf("found more than one builder deployment for environment %q", env.Metadata.Name) + return nil, fmt.Errorf("found more than one builder deployment for environment %q", env.ObjectMeta.Name) } return &builderInfo{ - envMetadata: &env.Metadata, + envMetadata: &env.ObjectMeta, service: svc, deployment: deploy, }, nil @@ -400,8 +400,8 @@ func (envw *environmentWatcher) getBuilderServiceList(sel map[string]string, ns } func (envw *environmentWatcher) createBuilderService(env *fv1.Environment, ns string) (*apiv1.Service, error) { - name := fmt.Sprintf("%v-%v", env.Metadata.Name, env.Metadata.ResourceVersion) - sel := envw.getLabels(env.Metadata.Name, ns, env.Metadata.ResourceVersion) + name := fmt.Sprintf("%v-%v", env.ObjectMeta.Name, env.ObjectMeta.ResourceVersion) + sel := envw.getLabels(env.ObjectMeta.Name, ns, env.ObjectMeta.ResourceVersion) service := apiv1.Service{ ObjectMeta: metav1.ObjectMeta{ Namespace: ns, @@ -453,11 +453,11 @@ func (envw *environmentWatcher) getBuilderDeploymentList(sel map[string]string, } func (envw *environmentWatcher) createBuilderDeployment(env *fv1.Environment, ns string) (*appsv1.Deployment, error) { - name := fmt.Sprintf("%v-%v", env.Metadata.Name, env.Metadata.ResourceVersion) - sel := envw.getLabels(env.Metadata.Name, ns, env.Metadata.ResourceVersion) + name := fmt.Sprintf("%v-%v", env.ObjectMeta.Name, env.ObjectMeta.ResourceVersion) + sel := envw.getLabels(env.ObjectMeta.Name, ns, env.ObjectMeta.ResourceVersion) var replicas int32 = 1 - podAnnotations := env.Metadata.Annotations + podAnnotations := env.ObjectMeta.Annotations if podAnnotations == nil { podAnnotations = make(map[string]string) } diff --git a/pkg/buildermgr/pkgwatcher.go b/pkg/buildermgr/pkgwatcher.go index 280ee3502e..12e87b8fb6 100644 --- a/pkg/buildermgr/pkgwatcher.go +++ b/pkg/buildermgr/pkgwatcher.go @@ -83,14 +83,14 @@ func (pkgw *packageWatcher) build(buildCache *cache.Cache, srcpkg *fv1.Package) } // Ignore duplicate build requests - key := fmt.Sprintf("%v-%v", srcpkg.Metadata.Name, srcpkg.Metadata.ResourceVersion) + key := fmt.Sprintf("%v-%v", srcpkg.ObjectMeta.Name, srcpkg.ObjectMeta.ResourceVersion) _, err := buildCache.Set(key, srcpkg) if err != nil { return } defer buildCache.Delete(key) - pkgw.logger.Info("starting build for package", zap.String("package_name", srcpkg.Metadata.Name), zap.String("resource_version", srcpkg.Metadata.ResourceVersion)) + pkgw.logger.Info("starting build for package", zap.String("package_name", srcpkg.ObjectMeta.Name), zap.String("resource_version", srcpkg.ObjectMeta.ResourceVersion)) pkg, err := updatePackage(pkgw.logger, pkgw.fissionClient, srcpkg, fv1.BuildStatusRunning, "", nil) if err != nil { @@ -98,7 +98,7 @@ func (pkgw *packageWatcher) build(buildCache *cache.Cache, srcpkg *fv1.Package) return } - env, err := pkgw.fissionClient.Environments(pkg.Spec.Environment.Namespace).Get(pkg.Spec.Environment.Name) + env, err := pkgw.fissionClient.V1().Environments(pkg.Spec.Environment.Namespace).Get(pkg.Spec.Environment.Name, metav1.GetOptions{}) if k8serrors.IsNotFound(err) { e := "environment does not exist" pkgw.logger.Error(e, zap.String("environment", pkg.Spec.Environment.Name)) @@ -113,7 +113,7 @@ func (pkgw *packageWatcher) build(buildCache *cache.Cache, srcpkg *fv1.Package) // iterate all available environment builders. items := pkgw.podStore.List() if err != nil { - pkgw.logger.Error("error retrieving pod information for environment", zap.Error(err), zap.String("environment", env.Metadata.Name)) + pkgw.logger.Error("error retrieving pod information for environment", zap.Error(err), zap.String("environment", env.ObjectMeta.Name)) return } @@ -129,14 +129,14 @@ func (pkgw *packageWatcher) build(buildCache *cache.Cache, srcpkg *fv1.Package) // In order to support backward compatibility, for all builder images created in default env, // the pods will be created in fission-builder namespace builderNs := pkgw.builderNamespace - if env.Metadata.Namespace != metav1.NamespaceDefault { - builderNs = env.Metadata.Namespace + if env.ObjectMeta.Namespace != metav1.NamespaceDefault { + builderNs = env.ObjectMeta.Namespace } // Filter non-matching pods - if pod.ObjectMeta.Labels[LABEL_ENV_NAME] != env.Metadata.Name || + if pod.ObjectMeta.Labels[LABEL_ENV_NAME] != env.ObjectMeta.Name || pod.ObjectMeta.Labels[LABEL_ENV_NAMESPACE] != builderNs || - pod.ObjectMeta.Labels[LABEL_ENV_RESOURCEVERSION] != env.Metadata.ResourceVersion { + pod.ObjectMeta.Labels[LABEL_ENV_RESOURCEVERSION] != env.ObjectMeta.ResourceVersion { continue } @@ -157,31 +157,31 @@ func (pkgw *packageWatcher) build(buildCache *cache.Cache, srcpkg *fv1.Package) // Add the package getter rolebinding to builder sa // we continue here if role binding was not setup succeesffully. this is because without this, the fetcher wont be able to fetch the source pkg into the container and // the build will fail eventually - err := utils.SetupRoleBinding(pkgw.logger, pkgw.k8sClient, types.PackageGetterRB, pkg.Metadata.Namespace, types.PackageGetterCR, types.ClusterRole, types.FissionBuilderSA, builderNs) + err := utils.SetupRoleBinding(pkgw.logger, pkgw.k8sClient, types.PackageGetterRB, pkg.ObjectMeta.Namespace, types.PackageGetterCR, types.ClusterRole, types.FissionBuilderSA, builderNs) if err != nil { pkgw.logger.Error("error setting up role binding for package", zap.Error(err), zap.String("role_binding", types.PackageGetterRB), - zap.String("package_name", pkg.Metadata.Name), - zap.String("package_namespace", pkg.Metadata.Namespace)) + zap.String("package_name", pkg.ObjectMeta.Name), + zap.String("package_namespace", pkg.ObjectMeta.Namespace)) continue } else { pkgw.logger.Info("setup rolebinding for sa package", zap.String("sa", fmt.Sprintf("%s.%s", types.FissionBuilderSA, builderNs)), - zap.String("package", fmt.Sprintf("%s.%s", pkg.Metadata.Name, pkg.Metadata.Namespace))) + zap.String("package", fmt.Sprintf("%s.%s", pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace))) } ctx := context.Background() uploadResp, buildLogs, err := buildPackage(ctx, pkgw.logger, pkgw.fissionClient, builderNs, pkgw.storageSvcUrl, pkg) if err != nil { - pkgw.logger.Error("error building package", zap.Error(err), zap.String("package_name", pkg.Metadata.Name)) + pkgw.logger.Error("error building package", zap.Error(err), zap.String("package_name", pkg.ObjectMeta.Name)) updatePackage(pkgw.logger, pkgw.fissionClient, pkg, types.BuildStatusFailed, buildLogs, nil) return } - pkgw.logger.Info("starting package info update", zap.String("package_name", pkg.Metadata.Name)) + pkgw.logger.Info("starting package info update", zap.String("package_name", pkg.ObjectMeta.Name)) - fnList, err := pkgw.fissionClient. + fnList, err := pkgw.fissionClient.V1(). Functions(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { e := "error getting function list" @@ -193,12 +193,12 @@ func (pkgw *packageWatcher) build(buildCache *cache.Cache, srcpkg *fv1.Package) // A package may be used by multiple functions. Update // functions with old package resource version for _, fn := range fnList.Items { - if fn.Spec.Package.PackageRef.Name == pkg.Metadata.Name && - fn.Spec.Package.PackageRef.Namespace == pkg.Metadata.Namespace && - fn.Spec.Package.PackageRef.ResourceVersion != pkg.Metadata.ResourceVersion { - fn.Spec.Package.PackageRef.ResourceVersion = pkg.Metadata.ResourceVersion + if fn.Spec.Package.PackageRef.Name == pkg.ObjectMeta.Name && + fn.Spec.Package.PackageRef.Namespace == pkg.ObjectMeta.Namespace && + fn.Spec.Package.PackageRef.ResourceVersion != pkg.ObjectMeta.ResourceVersion { + fn.Spec.Package.PackageRef.ResourceVersion = pkg.ObjectMeta.ResourceVersion // update CRD - _, err = pkgw.fissionClient.Functions(fn.Metadata.Namespace).Update(&fn) + _, err = pkgw.fissionClient.V1().Functions(fn.ObjectMeta.Namespace).Update(&fn) if err != nil { e := "error updating function package resource version" pkgw.logger.Error(e, zap.Error(err)) @@ -212,12 +212,12 @@ func (pkgw *packageWatcher) build(buildCache *cache.Cache, srcpkg *fv1.Package) _, err = updatePackage(pkgw.logger, pkgw.fissionClient, pkg, types.BuildStatusSucceeded, buildLogs, uploadResp) if err != nil { - pkgw.logger.Error("error updating package info", zap.Error(err), zap.String("package_name", pkg.Metadata.Name)) + pkgw.logger.Error("error updating package info", zap.Error(err), zap.String("package_name", pkg.ObjectMeta.Name)) updatePackage(pkgw.logger, pkgw.fissionClient, pkg, types.BuildStatusFailed, buildLogs, nil) return } - pkgw.logger.Info("completed package build request", zap.String("package_name", pkg.Metadata.Name)) + pkgw.logger.Info("completed package build request", zap.String("package_name", pkg.ObjectMeta.Name)) return } } @@ -226,13 +226,13 @@ func (pkgw *packageWatcher) build(buildCache *cache.Cache, srcpkg *fv1.Package) types.BuildStatusFailed, "Build timeout due to environment builder not ready", nil) pkgw.logger.Error("max retries exceeded in building source package, timeout due to environment builder not ready", - zap.String("package", fmt.Sprintf("%s.%s", pkg.Metadata.Name, pkg.Metadata.Namespace))) + zap.String("package", fmt.Sprintf("%s.%s", pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace))) } func (pkgw *packageWatcher) watchPackages(fissionClient *crd.FissionClient, kubernetesClient *kubernetes.Clientset, builderNamespace string) { buildCache := cache.MakeCache(0, 0) - lw := k8sCache.NewListWatchFromClient(pkgw.fissionClient.GetCrdClient(), "packages", apiv1.NamespaceAll, fields.Everything()) + lw := k8sCache.NewListWatchFromClient(pkgw.fissionClient.V1().RESTClient(), "packages", apiv1.NamespaceAll, fields.Everything()) pkgStore, controller := k8sCache.NewInformer(lw, &fv1.Package{}, 60*time.Second, k8sCache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { pkg := obj.(*fv1.Package) diff --git a/pkg/canaryconfigmgr/canaryConfigMgr.go b/pkg/canaryconfigmgr/canaryConfigMgr.go index 8ceecca53c..ab43c44ff7 100644 --- a/pkg/canaryconfigmgr/canaryConfigMgr.go +++ b/pkg/canaryconfigmgr/canaryConfigMgr.go @@ -49,11 +49,11 @@ type canaryConfigMgr struct { canaryConfigStore k8sCache.Store canaryConfigController k8sCache.Controller promClient *PrometheusApiClient - crdClient *rest.RESTClient + crdClient rest.Interface canaryCfgCancelFuncMap *canaryConfigCancelFuncMap } -func MakeCanaryConfigMgr(logger *zap.Logger, fissionClient *crd.FissionClient, kubeClient *kubernetes.Clientset, crdClient *rest.RESTClient, prometheusSvc string) (*canaryConfigMgr, error) { +func MakeCanaryConfigMgr(logger *zap.Logger, fissionClient *crd.FissionClient, kubeClient *kubernetes.Clientset, crdClient rest.Interface, prometheusSvc string) (*canaryConfigMgr, error) { if prometheusSvc == "" { logger.Info("try to retrieve prometheus server information from environment variables") @@ -123,12 +123,12 @@ func (canaryCfgMgr *canaryConfigMgr) initCanaryConfigController() (k8sCache.Stor UpdateFunc: func(oldObj interface{}, newObj interface{}) { oldConfig := oldObj.(*fv1.CanaryConfig) newConfig := newObj.(*fv1.CanaryConfig) - if oldConfig.Metadata.ResourceVersion != newConfig.Metadata.ResourceVersion && + if oldConfig.ObjectMeta.ResourceVersion != newConfig.ObjectMeta.ResourceVersion && newConfig.Status.Status == types.CanaryConfigStatusPending { canaryCfgMgr.logger.Info("update canary config invoked", - zap.String("name", newConfig.Metadata.Name), - zap.String("namespace", newConfig.Metadata.Namespace), - zap.String("version", newConfig.Metadata.ResourceVersion)) + zap.String("name", newConfig.ObjectMeta.Name), + zap.String("namespace", newConfig.ObjectMeta.Namespace), + zap.String("version", newConfig.ObjectMeta.ResourceVersion)) go canaryCfgMgr.updateCanaryConfig(oldConfig, newConfig) } go canaryCfgMgr.reSyncCanaryConfigs() @@ -145,7 +145,7 @@ func (canaryCfgMgr *canaryConfigMgr) Run(ctx context.Context) { } func (canaryCfgMgr *canaryConfigMgr) addCanaryConfig(canaryConfig *fv1.CanaryConfig) { - canaryCfgMgr.logger.Debug("addCanaryConfig called", zap.String("canary_config", canaryConfig.Metadata.Name)) + canaryCfgMgr.logger.Debug("addCanaryConfig called", zap.String("canary_config", canaryConfig.ObjectMeta.Name)) // for each canary config, create a ticker with increment interval interval, err := time.ParseDuration(canaryConfig.Spec.WeightIncrementDuration) @@ -153,9 +153,9 @@ func (canaryCfgMgr *canaryConfigMgr) addCanaryConfig(canaryConfig *fv1.CanaryCon canaryCfgMgr.logger.Error("error parsing duration - cant proceed with this canaryConfig", zap.Error(err), zap.String("duration", canaryConfig.Spec.WeightIncrementDuration), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) return } ticker := time.NewTicker(interval) @@ -168,13 +168,13 @@ func (canaryCfgMgr *canaryConfigMgr) addCanaryConfig(canaryConfig *fv1.CanaryCon CancelFunc: &cancel, Ticker: ticker, } - err = canaryCfgMgr.canaryCfgCancelFuncMap.assign(&canaryConfig.Metadata, cacheValue) + err = canaryCfgMgr.canaryCfgCancelFuncMap.assign(&canaryConfig.ObjectMeta, cacheValue) if err != nil { canaryCfgMgr.logger.Error("error caching canary config", zap.Error(err), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) return } canaryCfgMgr.processCanaryConfig(&ctx, canaryConfig, ticker) @@ -188,16 +188,16 @@ func (canaryCfgMgr *canaryConfigMgr) processCanaryConfig(ctx *context.Context, c case <-(*ctx).Done(): // this case when someone deleted their canary config in the middle of it being processed canaryCfgMgr.logger.Info("cancel func called for canary config", - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) - err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&canaryConfig.Metadata) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) + err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&canaryConfig.ObjectMeta) if err != nil { canaryCfgMgr.logger.Error("error removing canary config", zap.Error(err), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) } return @@ -206,25 +206,25 @@ func (canaryCfgMgr *canaryConfigMgr) processCanaryConfig(ctx *context.Context, c // if yes, rollback. // else, increment the weight of new function and decrement old function by `weightIncrement` canaryCfgMgr.logger.Info("processing canary config", - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) canaryCfgMgr.RollForwardOrBack(canaryConfig, quit, ticker) case <-quit: // we're done processing this canary config either because the new function receives 100% of the traffic // or we rolled back to send all 100% traffic to old function canaryCfgMgr.logger.Info("quit processing canaryConfig", - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) - err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&canaryConfig.Metadata) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) + err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&canaryConfig.ObjectMeta) if err != nil { canaryCfgMgr.logger.Error("error removing canary config from map", zap.Error(err), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) } return } @@ -233,26 +233,26 @@ func (canaryCfgMgr *canaryConfigMgr) processCanaryConfig(ctx *context.Context, c func (canaryCfgMgr *canaryConfigMgr) RollForwardOrBack(canaryConfig *fv1.CanaryConfig, quit chan struct{}, ticker *time.Ticker) { // handle race between delete event and notification on ticker.C - _, err := canaryCfgMgr.canaryCfgCancelFuncMap.lookup(&canaryConfig.Metadata) + _, err := canaryCfgMgr.canaryCfgCancelFuncMap.lookup(&canaryConfig.ObjectMeta) if err != nil { canaryCfgMgr.logger.Info("no need of processing the config, not in cache anymore", - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) return } // get the http trigger object associated with this canary config - triggerObj, err := canaryCfgMgr.fissionClient.HTTPTriggers(canaryConfig.Metadata.Namespace).Get(canaryConfig.Spec.Trigger) + triggerObj, err := canaryCfgMgr.fissionClient.V1().HTTPTriggers(canaryConfig.ObjectMeta.Namespace).Get(canaryConfig.Spec.Trigger, metav1.GetOptions{}) if err != nil { // if the http trigger is not found, then give up processing this config. if k8serrors.IsNotFound(err) { canaryCfgMgr.logger.Error("http trigger object for canary config missing", zap.Error(err), zap.String("trigger", canaryConfig.Spec.Trigger), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) close(quit) return } @@ -260,41 +260,41 @@ func (canaryCfgMgr *canaryConfigMgr) RollForwardOrBack(canaryConfig *fv1.CanaryC // just silently ignore. wait for next window to increment weight canaryCfgMgr.logger.Error("error fetching http trigger object for config", zap.Error(err), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) return } // handle a race between ticker.Stop and receiving a notification on ticker.C if canaryConfig.Status.Status != types.CanaryConfigStatusPending { canaryCfgMgr.logger.Info("no need of processing the config, not pending anymore", - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) return } if triggerObj.Spec.FunctionReference.Type == types.FunctionReferenceTypeFunctionWeights && triggerObj.Spec.FunctionReference.FunctionWeights[canaryConfig.Spec.NewFunction] != 0 { failurePercent, err := canaryCfgMgr.promClient.GetFunctionFailurePercentage(triggerObj.Spec.RelativeURL, triggerObj.Spec.Method, - canaryConfig.Spec.NewFunction, canaryConfig.Metadata.Namespace, canaryConfig.Spec.WeightIncrementDuration) + canaryConfig.Spec.NewFunction, canaryConfig.ObjectMeta.Namespace, canaryConfig.Spec.WeightIncrementDuration) if err != nil { // silently ignore. wait for next window to increment weight canaryCfgMgr.logger.Error("error calculating failure percentage", zap.Error(err), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) return } canaryCfgMgr.logger.Info("failure percentage calculated for canaryConfig", zap.Float64("failure_percent", failurePercent), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) if failurePercent == -1 { // this means there were no requests triggered to this url during this window. return here and check back @@ -307,17 +307,17 @@ func (canaryCfgMgr *canaryConfigMgr) RollForwardOrBack(canaryConfig *fv1.CanaryC canaryCfgMgr.logger.Error("failure percent crossed the threshold, so rolling back", zap.Float64("failure_percent", failurePercent), zap.Int("threshold", canaryConfig.Spec.FailureThreshold), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) ticker.Stop() err := canaryCfgMgr.rollback(canaryConfig, triggerObj) if err != nil { canaryCfgMgr.logger.Error("error rolling back canary config", zap.Error(err), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) } close(quit) return @@ -329,10 +329,10 @@ func (canaryCfgMgr *canaryConfigMgr) RollForwardOrBack(canaryConfig *fv1.CanaryC // just log the error and hope that next iteration will succeed canaryCfgMgr.logger.Error("error incrementing weights for trigger", zap.Error(err), - zap.String("trigger", triggerObj.Metadata.Name), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("trigger", triggerObj.ObjectMeta.Name), + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) return } @@ -340,21 +340,21 @@ func (canaryCfgMgr *canaryConfigMgr) RollForwardOrBack(canaryConfig *fv1.CanaryC ticker.Stop() // update the status of canary config as done processing, we dont care if we arent able to update because // resync takes care of the update - err = canaryCfgMgr.updateCanaryConfigStatusWithRetries(canaryConfig.Metadata.Name, canaryConfig.Metadata.Namespace, + err = canaryCfgMgr.updateCanaryConfigStatusWithRetries(canaryConfig.ObjectMeta.Name, canaryConfig.ObjectMeta.Namespace, types.CanaryConfigStatusSucceeded) if err != nil { // cant do much after max retries other than logging it. canaryCfgMgr.logger.Error("error updating canary config after max retries", zap.Error(err), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) } canaryCfgMgr.logger.Info("done processing canary config - the new function is receiving all the traffic", - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) close(quit) return } @@ -362,7 +362,7 @@ func (canaryCfgMgr *canaryConfigMgr) RollForwardOrBack(canaryConfig *fv1.CanaryC func (canaryCfgMgr *canaryConfigMgr) updateHttpTriggerWithRetries(triggerName, triggerNamespace string, fnWeights map[string]int) (err error) { for i := 0; i < maxRetries; i++ { - triggerObj, err := canaryCfgMgr.fissionClient.HTTPTriggers(triggerNamespace).Get(triggerName) + triggerObj, err := canaryCfgMgr.fissionClient.V1().HTTPTriggers(triggerNamespace).Get(triggerName, metav1.GetOptions{}) if err != nil { e := "error getting http trigger object" canaryCfgMgr.logger.Error(e, zap.Error(err), zap.String("trigger_name", triggerName), zap.String("trigger_namespace", triggerNamespace)) @@ -371,7 +371,7 @@ func (canaryCfgMgr *canaryConfigMgr) updateHttpTriggerWithRetries(triggerName, t triggerObj.Spec.FunctionReference.FunctionWeights = fnWeights - _, err = canaryCfgMgr.fissionClient.HTTPTriggers(triggerNamespace).Update(triggerObj) + _, err = canaryCfgMgr.fissionClient.V1().HTTPTriggers(triggerNamespace).Update(triggerObj) switch { case err == nil: canaryCfgMgr.logger.Debug("updated http trigger", zap.String("trigger_name", triggerName), zap.String("trigger_namespace", triggerNamespace)) @@ -397,7 +397,7 @@ func (canaryCfgMgr *canaryConfigMgr) updateHttpTriggerWithRetries(triggerName, t func (canaryCfgMgr *canaryConfigMgr) updateCanaryConfigStatusWithRetries(cfgName, cfgNamespace string, status string) (err error) { for i := 0; i < maxRetries; i++ { - canaryCfgObj, err := canaryCfgMgr.fissionClient.CanaryConfigs(cfgNamespace).Get(cfgName) + canaryCfgObj, err := canaryCfgMgr.fissionClient.V1().CanaryConfigs(cfgNamespace).Get(cfgName, metav1.GetOptions{}) if err != nil { e := "error getting http canary config object" canaryCfgMgr.logger.Error(e, @@ -415,7 +415,7 @@ func (canaryCfgMgr *canaryConfigMgr) updateCanaryConfigStatusWithRetries(cfgName canaryCfgObj.Status.Status = status - _, err = canaryCfgMgr.fissionClient.CanaryConfigs(cfgNamespace).Update(canaryCfgObj) + _, err = canaryCfgMgr.fissionClient.V1().CanaryConfigs(cfgNamespace).Update(canaryCfgObj) switch { case err == nil: canaryCfgMgr.logger.Info("updated canary config", @@ -446,12 +446,12 @@ func (canaryCfgMgr *canaryConfigMgr) rollback(canaryConfig *fv1.CanaryConfig, tr functionWeights[canaryConfig.Spec.NewFunction] = 0 functionWeights[canaryConfig.Spec.OldFunction] = 100 - err := canaryCfgMgr.updateHttpTriggerWithRetries(trigger.Metadata.Name, trigger.Metadata.Namespace, functionWeights) + err := canaryCfgMgr.updateHttpTriggerWithRetries(trigger.ObjectMeta.Name, trigger.ObjectMeta.Namespace, functionWeights) if err != nil { return err } - err = canaryCfgMgr.updateCanaryConfigStatusWithRetries(canaryConfig.Metadata.Name, canaryConfig.Metadata.Namespace, + err = canaryCfgMgr.updateCanaryConfigStatusWithRetries(canaryConfig.ObjectMeta.Name, canaryConfig.ObjectMeta.Namespace, types.CanaryConfigStatusFailed) return err @@ -475,23 +475,23 @@ func (canaryCfgMgr *canaryConfigMgr) rollForward(canaryConfig *fv1.CanaryConfig, } canaryCfgMgr.logger.Info("incremented functionWeights", - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), zap.Any("function_weights", functionWeights)) - err := canaryCfgMgr.updateHttpTriggerWithRetries(trigger.Metadata.Name, trigger.Metadata.Namespace, functionWeights) + err := canaryCfgMgr.updateHttpTriggerWithRetries(trigger.ObjectMeta.Name, trigger.ObjectMeta.Namespace, functionWeights) return doneProcessingCanaryConfig, err } func (canaryCfgMgr *canaryConfigMgr) reSyncCanaryConfigs() { for _, obj := range canaryCfgMgr.canaryConfigStore.List() { canaryConfig := obj.(*fv1.CanaryConfig) - _, err := canaryCfgMgr.canaryCfgCancelFuncMap.lookup(&canaryConfig.Metadata) + _, err := canaryCfgMgr.canaryCfgCancelFuncMap.lookup(&canaryConfig.ObjectMeta) if err != nil && canaryConfig.Status.Status == types.CanaryConfigStatusPending { canaryCfgMgr.logger.Debug("adding canary config from resync loop", - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) // new canaryConfig detected, add it to our cache and start processing it go canaryCfgMgr.addCanaryConfig(canaryConfig) @@ -501,16 +501,16 @@ func (canaryCfgMgr *canaryConfigMgr) reSyncCanaryConfigs() { func (canaryCfgMgr *canaryConfigMgr) deleteCanaryConfig(canaryConfig *fv1.CanaryConfig) { canaryCfgMgr.logger.Debug("delete event received for canary config", - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) - canaryProcessingInfo, err := canaryCfgMgr.canaryCfgCancelFuncMap.lookup(&canaryConfig.Metadata) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) + canaryProcessingInfo, err := canaryCfgMgr.canaryCfgCancelFuncMap.lookup(&canaryConfig.ObjectMeta) if err != nil { canaryCfgMgr.logger.Error("lookup of canary config for deletion failed", zap.Error(err), - zap.String("name", canaryConfig.Metadata.Name), - zap.String("namespace", canaryConfig.Metadata.Namespace), - zap.String("version", canaryConfig.Metadata.ResourceVersion)) + zap.String("name", canaryConfig.ObjectMeta.Name), + zap.String("namespace", canaryConfig.ObjectMeta.Namespace), + zap.String("version", canaryConfig.ObjectMeta.ResourceVersion)) return } // first stop the ticker @@ -523,13 +523,13 @@ func (canaryCfgMgr *canaryConfigMgr) updateCanaryConfig(oldCanaryConfig *fv1.Can // before removing the object from cache, we need to get it's cancel func and cancel it canaryCfgMgr.deleteCanaryConfig(oldCanaryConfig) - err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&oldCanaryConfig.Metadata) + err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&oldCanaryConfig.ObjectMeta) if err != nil { canaryCfgMgr.logger.Error("error removing canary config from map", zap.Error(err), - zap.String("name", oldCanaryConfig.Metadata.Name), - zap.String("namespace", oldCanaryConfig.Metadata.Namespace), - zap.String("version", oldCanaryConfig.Metadata.ResourceVersion)) + zap.String("name", oldCanaryConfig.ObjectMeta.Name), + zap.String("namespace", oldCanaryConfig.ObjectMeta.Namespace), + zap.String("version", oldCanaryConfig.ObjectMeta.ResourceVersion)) return } canaryCfgMgr.addCanaryConfig(newCanaryConfig) diff --git a/pkg/controller/api_test.go b/pkg/controller/api_test.go index 6c4e27ce06..29b27d3df0 100644 --- a/pkg/controller/api_test.go +++ b/pkg/controller/api_test.go @@ -79,7 +79,7 @@ func assertCronSpecFails(err error) { func TestFunctionApi(t *testing.T) { testFunc := &fv1.Function{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: metav1.NamespaceDefault, }, @@ -99,7 +99,7 @@ func TestFunctionApi(t *testing.T) { }, } _, err := g.Client().V1().Function().Get(&metav1.ObjectMeta{ - Name: testFunc.Metadata.Name, + Name: testFunc.ObjectMeta.Name, Namespace: metav1.NamespaceDefault, }) assertNotFoundFailure(err, "function") @@ -114,13 +114,13 @@ func TestFunctionApi(t *testing.T) { _, err = g.Client().V1().Function().Create(testFunc) assertNameReuseFailure(err, "function") - testFunc.Metadata.ResourceVersion = m.ResourceVersion + testFunc.ObjectMeta.ResourceVersion = m.ResourceVersion testFunc.Spec.Package.FunctionName = "yyy" _, err = g.Client().V1().Function().Update(testFunc) panicIf(err) - testFunc.Metadata.ResourceVersion = "" - testFunc.Metadata.Name = "bar" + testFunc.ObjectMeta.ResourceVersion = "" + testFunc.ObjectMeta.Name = "bar" m2, err := g.Client().V1().Function().Create(testFunc) panicIf(err) defer g.Client().V1().Function().Delete(m2) @@ -146,7 +146,7 @@ func TestFunctionApi(t *testing.T) { func TestHTTPTriggerApi(t *testing.T) { testTrigger := &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: metav1.NamespaceDefault, }, @@ -160,7 +160,7 @@ func TestHTTPTriggerApi(t *testing.T) { }, } _, err := g.Client().V1().HTTPTrigger().Get(&metav1.ObjectMeta{ - Name: testTrigger.Metadata.Name, + Name: testTrigger.ObjectMeta.Name, Namespace: metav1.NamespaceDefault, }) assertNotFoundFailure(err, "httptrigger") @@ -179,13 +179,13 @@ func TestHTTPTriggerApi(t *testing.T) { testTrigger.Spec.FunctionReference.Type == tr.Spec.FunctionReference.Type && testTrigger.Spec.FunctionReference.Name == tr.Spec.FunctionReference.Name, "trigger should match after reading") - testTrigger.Metadata.ResourceVersion = m.ResourceVersion + testTrigger.ObjectMeta.ResourceVersion = m.ResourceVersion testTrigger.Spec.RelativeURL = "/hi" _, err = g.Client().V1().HTTPTrigger().Update(testTrigger) panicIf(err) - testTrigger.Metadata.ResourceVersion = "" - testTrigger.Metadata.Name = "yyy" + testTrigger.ObjectMeta.ResourceVersion = "" + testTrigger.ObjectMeta.Name = "yyy" _, err = g.Client().V1().HTTPTrigger().Create(testTrigger) assert(err != nil, "duplicate trigger should not be allowed") @@ -202,7 +202,7 @@ func TestHTTPTriggerApi(t *testing.T) { func TestEnvironmentApi(t *testing.T) { testEnv := &fv1.Environment{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: metav1.NamespaceDefault, }, @@ -215,7 +215,7 @@ func TestEnvironmentApi(t *testing.T) { }, } _, err := g.Client().V1().Environment().Get(&metav1.ObjectMeta{ - Name: testEnv.Metadata.Name, + Name: testEnv.ObjectMeta.Name, Namespace: metav1.NamespaceDefault, }) assertNotFoundFailure(err, "environment") @@ -231,13 +231,13 @@ func TestEnvironmentApi(t *testing.T) { panicIf(err) assert(reflect.DeepEqual(testEnv.Spec, e.Spec), "env should match after reading") - testEnv.Metadata.ResourceVersion = m.ResourceVersion + testEnv.ObjectMeta.ResourceVersion = m.ResourceVersion testEnv.Spec.Runtime.Image = "another-img" _, err = g.Client().V1().Environment().Update(testEnv) panicIf(err) - testEnv.Metadata.ResourceVersion = "" - testEnv.Metadata.Name = "bar" + testEnv.ObjectMeta.ResourceVersion = "" + testEnv.ObjectMeta.Name = "bar" m2, err := g.Client().V1().Environment().Create(testEnv) panicIf(err) @@ -250,7 +250,7 @@ func TestEnvironmentApi(t *testing.T) { func TestWatchApi(t *testing.T) { testWatch := &fv1.KubernetesWatchTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "xxx", Namespace: metav1.NamespaceDefault, }, @@ -264,7 +264,7 @@ func TestWatchApi(t *testing.T) { }, } _, err := g.Client().V1().KubeWatcher().Get(&metav1.ObjectMeta{ - Name: testWatch.Metadata.Name, + Name: testWatch.ObjectMeta.Name, Namespace: metav1.NamespaceDefault, }) assertNotFoundFailure(err, "watch") @@ -283,7 +283,7 @@ func TestWatchApi(t *testing.T) { testWatch.Spec.FunctionReference.Type == w.Spec.FunctionReference.Type && testWatch.Spec.FunctionReference.Name == w.Spec.FunctionReference.Name, "watch should match after reading") - testWatch.Metadata.Name = "yyy" + testWatch.ObjectMeta.Name = "yyy" m2, err := g.Client().V1().KubeWatcher().Create(testWatch) panicIf(err) defer g.Client().V1().KubeWatcher().Delete(m2) @@ -295,7 +295,7 @@ func TestWatchApi(t *testing.T) { func TestTimeTriggerApi(t *testing.T) { testTrigger := &fv1.TimeTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "xxx", Namespace: metav1.NamespaceDefault, }, @@ -307,7 +307,7 @@ func TestTimeTriggerApi(t *testing.T) { }, }, } - _, err := g.Client().V1().TimeTrigger().Get(&metav1.ObjectMeta{Name: testTrigger.Metadata.Name}) + _, err := g.Client().V1().TimeTrigger().Get(&metav1.ObjectMeta{Name: testTrigger.ObjectMeta.Name}) assertNotFoundFailure(err, "trigger") m, err := g.Client().V1().TimeTrigger().Create(testTrigger) @@ -323,13 +323,13 @@ func TestTimeTriggerApi(t *testing.T) { testTrigger.Spec.FunctionReference.Type == tr.Spec.FunctionReference.Type && testTrigger.Spec.FunctionReference.Name == tr.Spec.FunctionReference.Name, "trigger should match after reading") - testTrigger.Metadata.ResourceVersion = m.ResourceVersion + testTrigger.ObjectMeta.ResourceVersion = m.ResourceVersion testTrigger.Spec.Cron = "@hourly" _, err = g.Client().V1().TimeTrigger().Update(testTrigger) panicIf(err) - testTrigger.Metadata.ResourceVersion = "" - testTrigger.Metadata.Name = "yyy" + testTrigger.ObjectMeta.ResourceVersion = "" + testTrigger.ObjectMeta.Name = "yyy" testTrigger.Spec.Cron = "Not valid cron spec" _, err = g.Client().V1().TimeTrigger().Create(testTrigger) assertCronSpecFails(err) diff --git a/pkg/controller/canaryConfigApi.go b/pkg/controller/canaryConfigApi.go index ffe4e6e269..dc8f6a264c 100644 --- a/pkg/controller/canaryConfigApi.go +++ b/pkg/controller/canaryConfigApi.go @@ -60,7 +60,7 @@ func RegisterCanaryConfigRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.CanaryConfig{}). Writes(metav1.ObjectMeta{}). - Returns(http.StatusCreated, "Metadata of created canaryConfig", metav1.ObjectMeta{})) + Returns(http.StatusCreated, "ObjectMeta of created canaryConfig", metav1.ObjectMeta{})) ws.Route( ws.GET("/v2/canaryconfigs/{canaryConfig}"). @@ -86,7 +86,7 @@ func RegisterCanaryConfigRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.CanaryConfig{}). Writes(metav1.ObjectMeta{}). // on the response - Returns(http.StatusOK, "Metadata of updated canaryConfig", metav1.ObjectMeta{})) + Returns(http.StatusOK, "ObjectMeta of updated canaryConfig", metav1.ObjectMeta{})) ws.Route( ws.DELETE("/v2/canaryconfigs/{canaryConfig}"). @@ -122,13 +122,13 @@ func (a *API) CanaryConfigApiCreate(w http.ResponseWriter, r *http.Request) { return } - canaryCfgNew, err := a.fissionClient.CanaryConfigs(canaryCfg.Metadata.Namespace).Create(&canaryCfg) + canaryCfgNew, err := a.fissionClient.V1().CanaryConfigs(canaryCfg.ObjectMeta.Namespace).Create(&canaryCfg) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(canaryCfgNew.Metadata) + resp, err := json.Marshal(canaryCfgNew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -153,7 +153,7 @@ func (a *API) CanaryConfigApiGet(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - canaryCfg, err := a.fissionClient.CanaryConfigs(ns).Get(name) + canaryCfg, err := a.fissionClient.V1().CanaryConfigs(ns).Get(name, metav1.GetOptions{}) if err != nil { a.respondWithError(w, err) return @@ -180,7 +180,7 @@ func (a *API) CanaryConfigApiList(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - canaryCfgs, err := a.fissionClient.CanaryConfigs(ns).List(metav1.ListOptions{}) + canaryCfgs, err := a.fissionClient.V1().CanaryConfigs(ns).List(metav1.ListOptions{}) if err != nil { a.respondWithError(w, err) return @@ -215,13 +215,13 @@ func (a *API) CanaryConfigApiUpdate(w http.ResponseWriter, r *http.Request) { return } - canayCfgNew, err := a.fissionClient.CanaryConfigs(c.Metadata.Namespace).Update(&c) + canayCfgNew, err := a.fissionClient.V1().CanaryConfigs(c.ObjectMeta.Namespace).Update(&c) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(canayCfgNew.Metadata) + resp, err := json.Marshal(canayCfgNew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -244,7 +244,7 @@ func (a *API) CanaryConfigApiDelete(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - err := a.fissionClient.CanaryConfigs(ns).Delete(name, &metav1.DeleteOptions{}) + err := a.fissionClient.V1().CanaryConfigs(ns).Delete(name, &metav1.DeleteOptions{}) if err != nil { a.respondWithError(w, err) return diff --git a/pkg/controller/client/v1/canaryconfig.go b/pkg/controller/client/v1/canaryconfig.go index f237ae319d..4dd420ce58 100644 --- a/pkg/controller/client/v1/canaryconfig.go +++ b/pkg/controller/client/v1/canaryconfig.go @@ -103,7 +103,7 @@ func (c *CanaryConfig) Update(canaryConf *fv1.CanaryConfig) (*metav1.ObjectMeta, if err != nil { return nil, err } - relativeUrl := fmt.Sprintf("canaryconfigs/%v", canaryConf.Metadata.Name) + relativeUrl := fmt.Sprintf("canaryconfigs/%v", canaryConf.ObjectMeta.Name) resp, err := c.client.Put(relativeUrl, "application/json", reqbody) if err != nil { diff --git a/pkg/controller/client/v1/environment.go b/pkg/controller/client/v1/environment.go index 0c7eaa98f2..d794bb7a8c 100644 --- a/pkg/controller/client/v1/environment.go +++ b/pkg/controller/client/v1/environment.go @@ -114,7 +114,7 @@ func (c *Environment) Update(env *fv1.Environment) (*metav1.ObjectMeta, error) { return nil, err } - relativeUrl := fmt.Sprintf("environments/%v", env.Metadata.Name) + relativeUrl := fmt.Sprintf("environments/%v", env.ObjectMeta.Name) resp, err := c.client.Put(relativeUrl, "application/json", data) if err != nil { diff --git a/pkg/controller/client/v1/function.go b/pkg/controller/client/v1/function.go index 19cdb72145..33701ec717 100644 --- a/pkg/controller/client/v1/function.go +++ b/pkg/controller/client/v1/function.go @@ -128,7 +128,7 @@ func (c *Function) Update(f *fv1.Function) (*metav1.ObjectMeta, error) { if err != nil { return nil, err } - relativeUrl := fmt.Sprintf("functions/%v", f.Metadata.Name) + relativeUrl := fmt.Sprintf("functions/%v", f.ObjectMeta.Name) resp, err := c.client.Put(relativeUrl, "application/json", reqbody) if err != nil { diff --git a/pkg/controller/client/v1/httptrigger.go b/pkg/controller/client/v1/httptrigger.go index 12acbcbe28..d30f24b269 100644 --- a/pkg/controller/client/v1/httptrigger.go +++ b/pkg/controller/client/v1/httptrigger.go @@ -113,7 +113,7 @@ func (c *HTTPTrigger) Update(t *fv1.HTTPTrigger) (*metav1.ObjectMeta, error) { if err != nil { return nil, err } - relativeUrl := fmt.Sprintf("triggers/http/%v", t.Metadata.Name) + relativeUrl := fmt.Sprintf("triggers/http/%v", t.ObjectMeta.Name) resp, err := c.client.Put(relativeUrl, "application/json", reqbody) if err != nil { diff --git a/pkg/controller/client/v1/mqtrigger.go b/pkg/controller/client/v1/mqtrigger.go index 0eaf10ea5c..9aadfbf2a0 100644 --- a/pkg/controller/client/v1/mqtrigger.go +++ b/pkg/controller/client/v1/mqtrigger.go @@ -113,7 +113,7 @@ func (c *MessageQueueTrigger) Update(mqTrigger *fv1.MessageQueueTrigger) (*metav if err != nil { return nil, err } - relativeUrl := fmt.Sprintf("triggers/messagequeue/%v", mqTrigger.Metadata.Name) + relativeUrl := fmt.Sprintf("triggers/messagequeue/%v", mqTrigger.ObjectMeta.Name) resp, err := c.client.Put(relativeUrl, "application/json", reqbody) if err != nil { diff --git a/pkg/controller/client/v1/package.go b/pkg/controller/client/v1/package.go index 087c2a291d..64a7995a31 100644 --- a/pkg/controller/client/v1/package.go +++ b/pkg/controller/client/v1/package.go @@ -113,7 +113,7 @@ func (c *Package) Update(f *fv1.Package) (*metav1.ObjectMeta, error) { if err != nil { return nil, err } - relativeUrl := fmt.Sprintf("packages/%v", f.Metadata.Name) + relativeUrl := fmt.Sprintf("packages/%v", f.ObjectMeta.Name) resp, err := c.client.Put(relativeUrl, "application/json", reqbody) if err != nil { diff --git a/pkg/controller/client/v1/timetrigger.go b/pkg/controller/client/v1/timetrigger.go index db5e546834..a19939db75 100644 --- a/pkg/controller/client/v1/timetrigger.go +++ b/pkg/controller/client/v1/timetrigger.go @@ -113,7 +113,7 @@ func (c *TimeTrigger) Update(t *fv1.TimeTrigger) (*metav1.ObjectMeta, error) { if err != nil { return nil, err } - relativeUrl := fmt.Sprintf("triggers/time/%v", t.Metadata.Name) + relativeUrl := fmt.Sprintf("triggers/time/%v", t.ObjectMeta.Name) resp, err := c.client.Put(relativeUrl, "application/json", reqbody) if err != nil { diff --git a/pkg/controller/config.go b/pkg/controller/config.go index ee0106d195..f43e030d08 100644 --- a/pkg/controller/config.go +++ b/pkg/controller/config.go @@ -31,7 +31,7 @@ import ( func ConfigCanaryFeature(context context.Context, logger *zap.Logger, fissionClient *crd.FissionClient, kubeClient *kubernetes.Clientset, featureConfig *config.FeatureConfig, featureStatus map[string]string) error { // start the appropriate controller if featureConfig.CanaryConfig.IsEnabled { - canaryCfgMgr, err := canaryconfigmgr.MakeCanaryConfigMgr(logger, fissionClient, kubeClient, fissionClient.GetCrdClient(), + canaryCfgMgr, err := canaryconfigmgr.MakeCanaryConfigMgr(logger, fissionClient, kubeClient, fissionClient.V1().RESTClient(), featureConfig.CanaryConfig.PrometheusSvc) if err != nil { featureStatus[config.CanaryFeature] = err.Error() diff --git a/pkg/controller/environmentApi.go b/pkg/controller/environmentApi.go index 2396c1db85..898e8898a3 100644 --- a/pkg/controller/environmentApi.go +++ b/pkg/controller/environmentApi.go @@ -58,7 +58,7 @@ func RegisterEnvironmentRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.Environment{}). Writes(metav1.ObjectMeta{}). - Returns(http.StatusCreated, "Metadata of created environment", metav1.ObjectMeta{})) + Returns(http.StatusCreated, "ObjectMeta of created environment", metav1.ObjectMeta{})) ws.Route( ws.GET("/v2/environments/{environment}"). @@ -84,7 +84,7 @@ func RegisterEnvironmentRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.Environment{}). Writes(metav1.ObjectMeta{}). // on the response - Returns(http.StatusOK, "Metadata of updated environment", metav1.ObjectMeta{})) + Returns(http.StatusOK, "ObjectMeta of updated environment", metav1.ObjectMeta{})) ws.Route( ws.DELETE("/v2/environments/{environment}"). @@ -105,7 +105,7 @@ func (a *API) EnvironmentApiList(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceAll } - envs, err := a.fissionClient.Environments(ns).List(metav1.ListOptions{}) + envs, err := a.fissionClient.V1().Environments(ns).List(metav1.ListOptions{}) if err != nil { a.respondWithError(w, err) return @@ -136,19 +136,19 @@ func (a *API) EnvironmentApiCreate(w http.ResponseWriter, r *http.Request) { } // check if namespace exists, if not create it. - err = a.createNsIfNotExists(env.Metadata.Namespace) + err = a.createNsIfNotExists(env.ObjectMeta.Namespace) if err != nil { a.respondWithError(w, err) return } - enew, err := a.fissionClient.Environments(env.Metadata.Namespace).Create(&env) + enew, err := a.fissionClient.V1().Environments(env.ObjectMeta.Namespace).Create(&env) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(enew.Metadata) + resp, err := json.Marshal(enew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -167,7 +167,7 @@ func (a *API) EnvironmentApiGet(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - env, err := a.fissionClient.Environments(ns).Get(name) + env, err := a.fissionClient.V1().Environments(ns).Get(name, metav1.GetOptions{}) if err != nil { a.respondWithError(w, err) return @@ -199,19 +199,19 @@ func (a *API) EnvironmentApiUpdate(w http.ResponseWriter, r *http.Request) { return } - if name != env.Metadata.Name { + if name != env.ObjectMeta.Name { err = ferror.MakeError(ferror.ErrorInvalidArgument, "Environment name doesn't match URL") a.respondWithError(w, err) return } - enew, err := a.fissionClient.Environments(env.Metadata.Namespace).Update(&env) + enew, err := a.fissionClient.V1().Environments(env.ObjectMeta.Namespace).Update(&env) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(enew.Metadata) + resp, err := json.Marshal(enew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -229,7 +229,7 @@ func (a *API) EnvironmentApiDelete(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - err := a.fissionClient.Environments(ns).Delete(name, &metav1.DeleteOptions{}) + err := a.fissionClient.V1().Environments(ns).Delete(name, &metav1.DeleteOptions{}) if err != nil { a.respondWithError(w, err) return diff --git a/pkg/controller/functionApi.go b/pkg/controller/functionApi.go index e96395be14..09d962896f 100644 --- a/pkg/controller/functionApi.go +++ b/pkg/controller/functionApi.go @@ -70,7 +70,7 @@ func RegisterFunctionRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.Function{}). Writes(metav1.ObjectMeta{}). - Returns(http.StatusOK, "Metadata of created function", metav1.ObjectMeta{})) + Returns(http.StatusOK, "ObjectMeta of created function", metav1.ObjectMeta{})) ws.Route( ws.GET("/v2/functions/{function}"). @@ -96,7 +96,7 @@ func RegisterFunctionRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.Function{}). Writes(metav1.ObjectMeta{}). // on the response - Returns(http.StatusOK, "Metadata of updated function", metav1.ObjectMeta{})) + Returns(http.StatusOK, "ObjectMeta of updated function", metav1.ObjectMeta{})) ws.Route( ws.DELETE("/v2/functions/{function}"). @@ -117,7 +117,7 @@ func (a *API) FunctionApiList(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceAll } - funcs, err := a.fissionClient.Functions(ns).List(metav1.ListOptions{}) + funcs, err := a.fissionClient.V1().Functions(ns).List(metav1.ListOptions{}) if err != nil { a.respondWithError(w, err) return @@ -147,19 +147,19 @@ func (a *API) FunctionApiCreate(w http.ResponseWriter, r *http.Request) { } // check if namespace exists, if not create it. - err = a.createNsIfNotExists(f.Metadata.Namespace) + err = a.createNsIfNotExists(f.ObjectMeta.Namespace) if err != nil { a.respondWithError(w, err) return } - fnew, err := a.fissionClient.Functions(f.Metadata.Namespace).Create(&f) + fnew, err := a.fissionClient.V1().Functions(f.ObjectMeta.Namespace).Create(&f) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(fnew.Metadata) + resp, err := json.Marshal(fnew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -177,7 +177,7 @@ func (a *API) FunctionApiGet(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - f, err := a.fissionClient.Functions(ns).Get(name) + f, err := a.fissionClient.V1().Functions(ns).Get(name, metav1.GetOptions{}) if err != nil { a.respondWithError(w, err) return @@ -208,19 +208,19 @@ func (a *API) FunctionApiUpdate(w http.ResponseWriter, r *http.Request) { return } - if name != f.Metadata.Name { + if name != f.ObjectMeta.Name { err = ferror.MakeError(ferror.ErrorInvalidArgument, "Function name doesn't match URL") a.respondWithError(w, err) return } - fnew, err := a.fissionClient.Functions(f.Metadata.Namespace).Update(&f) + fnew, err := a.fissionClient.V1().Functions(f.ObjectMeta.Namespace).Update(&f) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(fnew.Metadata) + resp, err := json.Marshal(fnew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -236,7 +236,7 @@ func (a *API) FunctionApiDelete(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - err := a.fissionClient.Functions(ns).Delete(name, &metav1.DeleteOptions{}) + err := a.fissionClient.V1().Functions(ns).Delete(name, &metav1.DeleteOptions{}) if err != nil { a.respondWithError(w, err) return @@ -299,7 +299,7 @@ func (a *API) FunctionPodLogs(w http.ResponseWriter, r *http.Request) { podNs = ns } - f, err := a.fissionClient.Functions(ns).Get(fnName) + f, err := a.fissionClient.V1().Functions(ns).Get(fnName, metav1.GetOptions{}) if err != nil { a.respondWithError(w, err) return @@ -307,7 +307,7 @@ func (a *API) FunctionPodLogs(w http.ResponseWriter, r *http.Request) { // Get function Pods first selector := map[string]string{ - types.FUNCTION_UID: string(f.Metadata.UID), + types.FUNCTION_UID: string(f.ObjectMeta.UID), types.ENVIRONMENT_NAME: f.Spec.Environment.Name, types.ENVIRONMENT_NAMESPACE: f.Spec.Environment.Namespace, } @@ -353,7 +353,7 @@ func getContainerLog(kubernetesClient *kubernetes.Clientset, w http.ResponseWrit } msg := fmt.Sprintf("\n%v\nFunction: %v\nEnvironment: %v\nNamespace: %v\nPod: %v\nContainer: %v\nNode: %v\n%v\n", seq, - fn.Metadata.Name, fn.Spec.Environment.Name, pod.Namespace, pod.Name, container.Name, pod.Spec.NodeName, seq) + fn.ObjectMeta.Name, fn.Spec.Environment.Name, pod.Namespace, pod.Name, container.Name, pod.Spec.NodeName, seq) w.Write([]byte(msg)) _, err = io.Copy(w, podLogs) diff --git a/pkg/controller/httpTriggerApi.go b/pkg/controller/httpTriggerApi.go index 75cbdd181c..2c62fdc19f 100644 --- a/pkg/controller/httpTriggerApi.go +++ b/pkg/controller/httpTriggerApi.go @@ -58,7 +58,7 @@ func RegisterHTTPTriggerRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.HTTPTrigger{}). Writes(metav1.ObjectMeta{}). - Returns(http.StatusCreated, "Metadata of created httpTrigger", metav1.ObjectMeta{})) + Returns(http.StatusCreated, "ObjectMeta of created httpTrigger", metav1.ObjectMeta{})) ws.Route( ws.GET("/v2/triggers/http/{httpTrigger}"). @@ -84,7 +84,7 @@ func RegisterHTTPTriggerRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.HTTPTrigger{}). Writes(metav1.ObjectMeta{}). // on the response - Returns(http.StatusOK, "Metadata of updated httpTrigger", metav1.ObjectMeta{})) + Returns(http.StatusOK, "ObjectMeta of updated httpTrigger", metav1.ObjectMeta{})) ws.Route( ws.DELETE("/v2/triggers/http/{httpTrigger}"). @@ -105,7 +105,7 @@ func (a *API) HTTPTriggerApiList(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceAll } - triggers, err := a.fissionClient.HTTPTriggers(ns).List(metav1.ListOptions{}) + triggers, err := a.fissionClient.V1().HTTPTriggers(ns).List(metav1.ListOptions{}) if err != nil { a.respondWithError(w, err) return @@ -122,19 +122,19 @@ func (a *API) HTTPTriggerApiList(w http.ResponseWriter, r *http.Request) { // checkHTTPTriggerDuplicates checks whether the tuple (Method, Host, URL) is duplicate or not. func (a *API) checkHTTPTriggerDuplicates(t *fv1.HTTPTrigger) error { - triggers, err := a.fissionClient.HTTPTriggers(metav1.NamespaceAll).List(metav1.ListOptions{}) + triggers, err := a.fissionClient.V1().HTTPTriggers(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { return err } for _, ht := range triggers.Items { - if ht.Metadata.UID == t.Metadata.UID { + if ht.ObjectMeta.UID == t.ObjectMeta.UID { // Same resource. No need to check. continue } if ht.Spec.RelativeURL == t.Spec.RelativeURL && ht.Spec.Method == t.Spec.Method && ht.Spec.Host == t.Spec.Host { return ferror.MakeError(ferror.ErrorNameExists, fmt.Sprintf("HTTPTrigger with same Host, URL & method already exists (%v)", - ht.Metadata.Name)) + ht.ObjectMeta.Name)) } } return nil @@ -162,19 +162,19 @@ func (a *API) HTTPTriggerApiCreate(w http.ResponseWriter, r *http.Request) { } // check if namespace exists, if not create it. - err = a.createNsIfNotExists(t.Metadata.Namespace) + err = a.createNsIfNotExists(t.ObjectMeta.Namespace) if err != nil { a.respondWithError(w, err) return } - tnew, err := a.fissionClient.HTTPTriggers(t.Metadata.Namespace).Create(&t) + tnew, err := a.fissionClient.V1().HTTPTriggers(t.ObjectMeta.Namespace).Create(&t) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(tnew.Metadata) + resp, err := json.Marshal(tnew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -192,7 +192,7 @@ func (a *API) HTTPTriggerApiGet(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - t, err := a.fissionClient.HTTPTriggers(ns).Get(name) + t, err := a.fissionClient.V1().HTTPTriggers(ns).Get(name, metav1.GetOptions{}) if err != nil { a.respondWithError(w, err) return @@ -224,7 +224,7 @@ func (a *API) HTTPTriggerApiUpdate(w http.ResponseWriter, r *http.Request) { return } - if name != t.Metadata.Name { + if name != t.ObjectMeta.Name { err = ferror.MakeError(ferror.ErrorInvalidArgument, "HTTPTrigger name doesn't match URL") a.respondWithError(w, err) return @@ -236,13 +236,13 @@ func (a *API) HTTPTriggerApiUpdate(w http.ResponseWriter, r *http.Request) { return } - tnew, err := a.fissionClient.HTTPTriggers(t.Metadata.Namespace).Update(&t) + tnew, err := a.fissionClient.V1().HTTPTriggers(t.ObjectMeta.Namespace).Update(&t) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(tnew.Metadata) + resp, err := json.Marshal(tnew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -258,7 +258,7 @@ func (a *API) HTTPTriggerApiDelete(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - err := a.fissionClient.HTTPTriggers(ns).Delete(name, &metav1.DeleteOptions{}) + err := a.fissionClient.V1().HTTPTriggers(ns).Delete(name, &metav1.DeleteOptions{}) if err != nil { a.respondWithError(w, err) return diff --git a/pkg/controller/mqTriggerApi.go b/pkg/controller/mqTriggerApi.go index 9f43ea3593..e8e9b6a7be 100644 --- a/pkg/controller/mqTriggerApi.go +++ b/pkg/controller/mqTriggerApi.go @@ -57,7 +57,7 @@ func RegisterMessageQueueTriggerRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.MessageQueueTrigger{}). Writes(metav1.ObjectMeta{}). - Returns(http.StatusCreated, "Metadata of created messageQueueTrigger", metav1.ObjectMeta{})) + Returns(http.StatusCreated, "ObjectMeta of created messageQueueTrigger", metav1.ObjectMeta{})) ws.Route( ws.GET("/v2/triggers/messagequeue/{mqTrigger}"). @@ -83,7 +83,7 @@ func RegisterMessageQueueTriggerRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.MessageQueueTrigger{}). Writes(metav1.ObjectMeta{}). // on the response - Returns(http.StatusOK, "Metadata of updated messageQueueTrigger", metav1.ObjectMeta{})) + Returns(http.StatusOK, "ObjectMeta of updated messageQueueTrigger", metav1.ObjectMeta{})) ws.Route( ws.DELETE("/v2/triggers/messagequeue/{mqTrigger}"). @@ -105,7 +105,7 @@ func (a *API) MessageQueueTriggerApiList(w http.ResponseWriter, r *http.Request) ns = metav1.NamespaceAll } - triggers, err := a.fissionClient.MessageQueueTriggers(ns).List(metav1.ListOptions{}) + triggers, err := a.fissionClient.V1().MessageQueueTriggers(ns).List(metav1.ListOptions{}) if err != nil { a.respondWithError(w, err) return @@ -133,19 +133,19 @@ func (a *API) MessageQueueTriggerApiCreate(w http.ResponseWriter, r *http.Reques } // check if namespace exists, if not create it. - err = a.createNsIfNotExists(mqTrigger.Metadata.Namespace) + err = a.createNsIfNotExists(mqTrigger.ObjectMeta.Namespace) if err != nil { a.respondWithError(w, err) return } - tnew, err := a.fissionClient.MessageQueueTriggers(mqTrigger.Metadata.Namespace).Create(&mqTrigger) + tnew, err := a.fissionClient.V1().MessageQueueTriggers(mqTrigger.ObjectMeta.Namespace).Create(&mqTrigger) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(tnew.Metadata) + resp, err := json.Marshal(tnew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -162,7 +162,7 @@ func (a *API) MessageQueueTriggerApiGet(w http.ResponseWriter, r *http.Request) ns = metav1.NamespaceDefault } - mqTrigger, err := a.fissionClient.MessageQueueTriggers(ns).Get(name) + mqTrigger, err := a.fissionClient.V1().MessageQueueTriggers(ns).Get(name, metav1.GetOptions{}) if err != nil { a.respondWithError(w, err) return @@ -192,19 +192,19 @@ func (a *API) MessageQueueTriggerApiUpdate(w http.ResponseWriter, r *http.Reques return } - if name != mqTrigger.Metadata.Name { + if name != mqTrigger.ObjectMeta.Name { err = ferror.MakeError(ferror.ErrorInvalidArgument, "Message queue trigger name doesn't match URL") a.respondWithError(w, err) return } - tnew, err := a.fissionClient.MessageQueueTriggers(mqTrigger.Metadata.Namespace).Update(&mqTrigger) + tnew, err := a.fissionClient.V1().MessageQueueTriggers(mqTrigger.ObjectMeta.Namespace).Update(&mqTrigger) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(tnew.Metadata) + resp, err := json.Marshal(tnew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -220,7 +220,7 @@ func (a *API) MessageQueueTriggerApiDelete(w http.ResponseWriter, r *http.Reques ns = metav1.NamespaceDefault } - err := a.fissionClient.MessageQueueTriggers(ns).Delete(name, &metav1.DeleteOptions{}) + err := a.fissionClient.V1().MessageQueueTriggers(ns).Delete(name, &metav1.DeleteOptions{}) if err != nil { a.respondWithError(w, err) return diff --git a/pkg/controller/openapi.go b/pkg/controller/openapi.go index b6e1d4d703..5b69999065 100644 --- a/pkg/controller/openapi.go +++ b/pkg/controller/openapi.go @@ -71,7 +71,7 @@ func enrichSwaggerObject(swo *spec.Swagger) { var openapiDescription = ` OpenAPI 2.0 document for fission controller -* Metadata (v1.ObjectMeta) should be empty when creating a CRD resource. Kubernetes will assign it automatically. +* ObjectMeta (v1.ObjectMeta) should be empty when creating a CRD resource. Kubernetes will assign it automatically. * Following semantic errors are known issues and won't affect the API accessibility. - Operations must have unique operationIds. - All scale semantic errors. (Due to go-restful exposes inner fields of k8s struct). diff --git a/pkg/controller/packageApi.go b/pkg/controller/packageApi.go index cea3c84e36..979bb8cef1 100644 --- a/pkg/controller/packageApi.go +++ b/pkg/controller/packageApi.go @@ -60,7 +60,7 @@ func RegisterPackageRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.Package{}). Writes(metav1.ObjectMeta{}). - Returns(http.StatusCreated, "Metadata of created package", metav1.ObjectMeta{})) + Returns(http.StatusCreated, "ObjectMeta of created package", metav1.ObjectMeta{})) ws.Route( ws.GET("/v2/packages/{package}"). @@ -86,7 +86,7 @@ func RegisterPackageRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.Package{}). Writes(metav1.ObjectMeta{}). // on the response - Returns(http.StatusOK, "Metadata of updated package", metav1.ObjectMeta{})) + Returns(http.StatusOK, "ObjectMeta of updated package", metav1.ObjectMeta{})) ws.Route( ws.DELETE("/v2/packages/{package}"). @@ -106,7 +106,7 @@ func (a *API) PackageApiList(w http.ResponseWriter, r *http.Request) { if len(ns) == 0 { ns = metav1.NamespaceAll } - funcs, err := a.fissionClient.Packages(ns).List(metav1.ListOptions{}) + funcs, err := a.fissionClient.V1().Packages(ns).List(metav1.ListOptions{}) if err != nil { a.respondWithError(w, err) return @@ -150,19 +150,19 @@ func (a *API) PackageApiCreate(w http.ResponseWriter, r *http.Request) { } // check if namespace exists, if not create it. - err = a.createNsIfNotExists(f.Metadata.Namespace) + err = a.createNsIfNotExists(f.ObjectMeta.Namespace) if err != nil { a.respondWithError(w, err) return } - fnew, err := a.fissionClient.Packages(f.Metadata.Namespace).Create(&f) + fnew, err := a.fissionClient.V1().Packages(f.ObjectMeta.Namespace).Create(&f) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(fnew.Metadata) + resp, err := json.Marshal(fnew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -181,7 +181,7 @@ func (a *API) PackageApiGet(w http.ResponseWriter, r *http.Request) { } raw := r.FormValue("raw") // just the deployment pkg - f, err := a.fissionClient.Packages(ns).Get(name) + f, err := a.fissionClient.V1().Packages(ns).Get(name, metav1.GetOptions{}) if err != nil { a.respondWithError(w, err) return @@ -217,19 +217,19 @@ func (a *API) PackageApiUpdate(w http.ResponseWriter, r *http.Request) { return } - if name != f.Metadata.Name { + if name != f.ObjectMeta.Name { err = ferror.MakeError(ferror.ErrorInvalidArgument, "Package name doesn't match URL") a.respondWithError(w, err) return } - fnew, err := a.fissionClient.Packages(f.Metadata.Namespace).Update(&f) + fnew, err := a.fissionClient.V1().Packages(f.ObjectMeta.Namespace).Update(&f) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(fnew.Metadata) + resp, err := json.Marshal(fnew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -245,7 +245,7 @@ func (a *API) PackageApiDelete(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - err := a.fissionClient.Packages(ns).Delete(name, &metav1.DeleteOptions{}) + err := a.fissionClient.V1().Packages(ns).Delete(name, &metav1.DeleteOptions{}) if err != nil { a.respondWithError(w, err) return diff --git a/pkg/controller/timeTriggerApi.go b/pkg/controller/timeTriggerApi.go index 0df4388131..e72f261378 100644 --- a/pkg/controller/timeTriggerApi.go +++ b/pkg/controller/timeTriggerApi.go @@ -58,7 +58,7 @@ func RegisterTimeTriggerRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.TimeTrigger{}). Writes(metav1.ObjectMeta{}). - Returns(http.StatusCreated, "Metadata of created timeTrigger", metav1.ObjectMeta{})) + Returns(http.StatusCreated, "ObjectMeta of created timeTrigger", metav1.ObjectMeta{})) ws.Route( ws.GET("/v2/triggers/time/{timeTrigger}"). @@ -84,7 +84,7 @@ func RegisterTimeTriggerRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.TimeTrigger{}). Writes(metav1.ObjectMeta{}). // on the response - Returns(http.StatusOK, "Metadata of updated timeTrigger", metav1.ObjectMeta{})) + Returns(http.StatusOK, "ObjectMeta of updated timeTrigger", metav1.ObjectMeta{})) ws.Route( ws.DELETE("/v2/triggers/time/{timeTrigger}"). @@ -105,7 +105,7 @@ func (a *API) TimeTriggerApiList(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceAll } - triggers, err := a.fissionClient.TimeTriggers(ns).List(metav1.ListOptions{}) + triggers, err := a.fissionClient.V1().TimeTriggers(ns).List(metav1.ListOptions{}) if err != nil { a.respondWithError(w, err) return @@ -143,19 +143,19 @@ func (a *API) TimeTriggerApiCreate(w http.ResponseWriter, r *http.Request) { } // check if namespace exists, if not create it. - err = a.createNsIfNotExists(t.Metadata.Namespace) + err = a.createNsIfNotExists(t.ObjectMeta.Namespace) if err != nil { a.respondWithError(w, err) return } - tnew, err := a.fissionClient.TimeTriggers(t.Metadata.Namespace).Create(&t) + tnew, err := a.fissionClient.V1().TimeTriggers(t.ObjectMeta.Namespace).Create(&t) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(tnew.Metadata) + resp, err := json.Marshal(tnew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -173,7 +173,7 @@ func (a *API) TimeTriggerApiGet(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - t, err := a.fissionClient.TimeTriggers(ns).Get(name) + t, err := a.fissionClient.V1().TimeTriggers(ns).Get(name, metav1.GetOptions{}) if err != nil { a.respondWithError(w, err) return @@ -205,7 +205,7 @@ func (a *API) TimeTriggerApiUpdate(w http.ResponseWriter, r *http.Request) { return } - if name != t.Metadata.Name { + if name != t.ObjectMeta.Name { err = ferror.MakeError(ferror.ErrorInvalidArgument, "TimeTrigger name doesn't match URL") a.respondWithError(w, err) return @@ -218,13 +218,13 @@ func (a *API) TimeTriggerApiUpdate(w http.ResponseWriter, r *http.Request) { return } - tnew, err := a.fissionClient.TimeTriggers(t.Metadata.Namespace).Update(&t) + tnew, err := a.fissionClient.V1().TimeTriggers(t.ObjectMeta.Namespace).Update(&t) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(tnew.Metadata) + resp, err := json.Marshal(tnew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -240,7 +240,7 @@ func (a *API) TimeTriggerApiDelete(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - err := a.fissionClient.TimeTriggers(ns).Delete(name, &metav1.DeleteOptions{}) + err := a.fissionClient.V1().TimeTriggers(ns).Delete(name, &metav1.DeleteOptions{}) if err != nil { a.respondWithError(w, err) return diff --git a/pkg/controller/watchApi.go b/pkg/controller/watchApi.go index 94a66cd6e6..cbef07bfc8 100644 --- a/pkg/controller/watchApi.go +++ b/pkg/controller/watchApi.go @@ -57,7 +57,7 @@ func RegisterWatchRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.KubernetesWatchTrigger{}). Writes(metav1.ObjectMeta{}). - Returns(http.StatusCreated, "Metadata of created kubernetesWatch", metav1.ObjectMeta{})) + Returns(http.StatusCreated, "ObjectMeta of created kubernetesWatch", metav1.ObjectMeta{})) ws.Route( ws.GET("/v2/watches/{watch}"). @@ -83,7 +83,7 @@ func RegisterWatchRoute(ws *restful.WebService) { Produces(restful.MIME_JSON). Reads(fv1.KubernetesWatchTrigger{}). Writes(metav1.ObjectMeta{}). // on the response - Returns(http.StatusOK, "Metadata of updated kubernetesWatch", metav1.ObjectMeta{})) + Returns(http.StatusOK, "ObjectMeta of updated kubernetesWatch", metav1.ObjectMeta{})) ws.Route( ws.DELETE("/v2/watches/{watch}"). @@ -104,7 +104,7 @@ func (a *API) WatchApiList(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceAll } - watches, err := a.fissionClient.KubernetesWatchTriggers(ns).List(metav1.ListOptions{}) + watches, err := a.fissionClient.V1().KubernetesWatchTriggers(ns).List(metav1.ListOptions{}) if err != nil { a.respondWithError(w, err) return @@ -136,19 +136,19 @@ func (a *API) WatchApiCreate(w http.ResponseWriter, r *http.Request) { // TODO check for duplicate watches // TODO check for duplicate watches -> we probably wont need it? // check if namespace exists, if not create it. - err = a.createNsIfNotExists(watch.Metadata.Namespace) + err = a.createNsIfNotExists(watch.ObjectMeta.Namespace) if err != nil { a.respondWithError(w, err) return } - wnew, err := a.fissionClient.KubernetesWatchTriggers(watch.Metadata.Namespace).Create(&watch) + wnew, err := a.fissionClient.V1().KubernetesWatchTriggers(watch.ObjectMeta.Namespace).Create(&watch) if err != nil { a.respondWithError(w, err) return } - resp, err := json.Marshal(wnew.Metadata) + resp, err := json.Marshal(wnew.ObjectMeta) if err != nil { a.respondWithError(w, err) return @@ -166,7 +166,7 @@ func (a *API) WatchApiGet(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - watch, err := a.fissionClient.KubernetesWatchTriggers(ns).Get(name) + watch, err := a.fissionClient.V1().KubernetesWatchTriggers(ns).Get(name, metav1.GetOptions{}) if err != nil { a.respondWithError(w, err) return @@ -194,7 +194,7 @@ func (a *API) WatchApiDelete(w http.ResponseWriter, r *http.Request) { ns = metav1.NamespaceDefault } - err := a.fissionClient.KubernetesWatchTriggers(ns).Delete(name, &metav1.DeleteOptions{}) + err := a.fissionClient.V1().KubernetesWatchTriggers(ns).Delete(name, &metav1.DeleteOptions{}) if err != nil { a.respondWithError(w, err) return diff --git a/pkg/crd/canaryConfig.go b/pkg/crd/canaryConfig.go deleted file mode 100644 index 860ec5ae38..0000000000 --- a/pkg/crd/canaryConfig.go +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright 2016 The Fission 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 crd - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - - fv1 "github.com/fission/fission/pkg/apis/fission.io/v1" -) - -type ( - CanaryConfigInterface interface { - Create(*fv1.CanaryConfig) (*fv1.CanaryConfig, error) - Get(name string) (*fv1.CanaryConfig, error) - Update(*fv1.CanaryConfig) (*fv1.CanaryConfig, error) - Delete(name string, options *metav1.DeleteOptions) error - List(opts metav1.ListOptions) (*fv1.CanaryConfigList, error) - Watch(opts metav1.ListOptions) (watch.Interface, error) - } - - canaryConfigClient struct { - client *rest.RESTClient - namespace string - } -) - -func MakeCanaryConfigInterface(crdClient *rest.RESTClient, namespace string) CanaryConfigInterface { - return &canaryConfigClient{ - client: crdClient, - namespace: namespace, - } -} - -func (c *canaryConfigClient) Create(f *fv1.CanaryConfig) (*fv1.CanaryConfig, error) { - var result fv1.CanaryConfig - err := c.client.Post(). - Resource("canaryconfigs"). - Namespace(c.namespace). - Body(f). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *canaryConfigClient) Get(name string) (*fv1.CanaryConfig, error) { - var result fv1.CanaryConfig - err := c.client.Get(). - Resource("canaryconfigs"). - Namespace(c.namespace). - Name(name). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *canaryConfigClient) Update(f *fv1.CanaryConfig) (*fv1.CanaryConfig, error) { - var result fv1.CanaryConfig - err := c.client.Put(). - Resource("canaryconfigs"). - Namespace(c.namespace). - Name(f.Metadata.Name). - Body(f). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *canaryConfigClient) Delete(name string, opts *metav1.DeleteOptions) error { - return c.client.Delete(). - Namespace(c.namespace). - Resource("canaryconfigs"). - Name(name). - Body(opts). - Do(). - Error() -} - -func (c *canaryConfigClient) List(opts metav1.ListOptions) (*fv1.CanaryConfigList, error) { - var result fv1.CanaryConfigList - err := c.client.Get(). - Namespace(c.namespace). - Resource("canaryconfigs"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(). - Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *canaryConfigClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return c.client.Get(). - Prefix("watch"). - Namespace(c.namespace). - Resource("canaryconfigs"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch() -} diff --git a/pkg/crd/client.go b/pkg/crd/client.go index 8dcb9efefe..7da03680ab 100644 --- a/pkg/crd/client.go +++ b/pkg/crd/client.go @@ -23,21 +23,18 @@ import ( apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/client-go/kubernetes" - "k8s.io/client-go/kubernetes/scheme" _ "k8s.io/client-go/plugin/pkg/client/auth" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" - fv1 "github.com/fission/fission/pkg/apis/fission.io/v1" + clientset "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned" + genv1 "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1" ) type ( FissionClient struct { - crdClient *rest.RESTClient + crdClient clientset.Interface } ) @@ -77,100 +74,35 @@ func GetKubernetesClient() (*rest.Config, *kubernetes.Clientset, *apiextensionsc return config, clientset, apiExtClientset, nil } -// GetCrdClient gets a CRD client config -func GetCrdClient(config *rest.Config) (*rest.RESTClient, error) { - // mutate config to add our types - configureClient(config) +func MakeFissionClient() (*FissionClient, *kubernetes.Clientset, *apiextensionsclient.Clientset, error) { + config, kubeClient, apiExtClient, err := GetKubernetesClient() + if err != nil { + return nil, nil, nil, err + } - // make a REST client with that config - return rest.RESTClientFor(config) -} + // make a CRD REST client with the config + crdClient, err := clientset.NewForConfig(config) + if err != nil { + return nil, nil, nil, err + } -// configureClient sets up a REST client for Fission CRD types. -// -// This is copied from the client-go CRD example. (I don't understand -// all of it completely.) It registers our types with the global API -// "scheme" (api.Scheme), which keeps a directory of types [I guess so -// it can use the string in the Kind field to make a Go object?]. It -// also puts the fission CRD types under a "group version" which we -// create for our CRDs types. -func configureClient(config *rest.Config) { - groupversion := schema.GroupVersion{ - Group: "fission.io", - Version: "v1", + fc := &FissionClient{ + crdClient: crdClient, } - config.GroupVersion = &groupversion - config.APIPath = "/apis" - config.ContentType = runtime.ContentTypeJSON - config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} - - schemeBuilder := runtime.NewSchemeBuilder( - func(scheme *runtime.Scheme) error { - scheme.AddKnownTypes( - groupversion, - &fv1.Function{}, - &fv1.FunctionList{}, - &metav1.ListOptions{}, - &metav1.DeleteOptions{}, - ) - scheme.AddKnownTypes( - groupversion, - &fv1.Environment{}, - &fv1.EnvironmentList{}, - &metav1.ListOptions{}, - &metav1.DeleteOptions{}, - ) - scheme.AddKnownTypes( - groupversion, - &fv1.HTTPTrigger{}, - &fv1.HTTPTriggerList{}, - &metav1.ListOptions{}, - &metav1.DeleteOptions{}, - ) - scheme.AddKnownTypes( - groupversion, - &fv1.KubernetesWatchTrigger{}, - &fv1.KubernetesWatchTriggerList{}, - &metav1.ListOptions{}, - &metav1.DeleteOptions{}, - ) - scheme.AddKnownTypes( - groupversion, - &fv1.TimeTrigger{}, - &fv1.TimeTriggerList{}, - &metav1.ListOptions{}, - &metav1.DeleteOptions{}, - ) - scheme.AddKnownTypes( - groupversion, - &fv1.MessageQueueTrigger{}, - &fv1.MessageQueueTriggerList{}, - &metav1.ListOptions{}, - &metav1.DeleteOptions{}, - ) - scheme.AddKnownTypes( - groupversion, - &fv1.Package{}, - &fv1.PackageList{}, - &metav1.ListOptions{}, - &metav1.DeleteOptions{}, - ) - scheme.AddKnownTypes( - groupversion, - &fv1.CanaryConfig{}, - &fv1.CanaryConfigList{}, - &metav1.ListOptions{}, - &metav1.DeleteOptions{}, - ) - return nil - }) - schemeBuilder.AddToScheme(scheme.Scheme) + return fc, kubeClient, apiExtClient, nil } -func waitForCRDs(crdClient *rest.RESTClient) error { +// V1 returns the instance of v1 rest client. +// The only reason to have this function is to avoid +// using V1V1() in codebase. +func (fc *FissionClient) V1() genv1.V1V1Interface { + return fc.crdClient.V1V1() +} + +func (fc *FissionClient) WaitForCRDs() error { start := time.Now() for { - fi := MakeFunctionInterface(crdClient, metav1.NamespaceDefault) + fi := fc.crdClient.V1V1().Functions(metav1.NamespaceDefault) _, err := fi.List(metav1.ListOptions{}) if err != nil { time.Sleep(100 * time.Millisecond) @@ -183,49 +115,3 @@ func waitForCRDs(crdClient *rest.RESTClient) error { } } } - -func MakeFissionClient() (*FissionClient, *kubernetes.Clientset, *apiextensionsclient.Clientset, error) { - config, kubeClient, apiExtClient, err := GetKubernetesClient() - if err != nil { - return nil, nil, nil, err - } - crdClient, err := GetCrdClient(config) - if err != nil { - return nil, nil, nil, err - } - fc := &FissionClient{ - crdClient: crdClient, - } - return fc, kubeClient, apiExtClient, nil -} - -func (fc *FissionClient) Functions(ns string) FunctionInterface { - return MakeFunctionInterface(fc.crdClient, ns) -} -func (fc *FissionClient) Environments(ns string) EnvironmentInterface { - return MakeEnvironmentInterface(fc.crdClient, ns) -} -func (fc *FissionClient) HTTPTriggers(ns string) HTTPTriggerInterface { - return MakeHTTPTriggerInterface(fc.crdClient, ns) -} -func (fc *FissionClient) KubernetesWatchTriggers(ns string) KubernetesWatchTriggerInterface { - return MakeKubernetesWatchTriggerInterface(fc.crdClient, ns) -} -func (fc *FissionClient) TimeTriggers(ns string) TimeTriggerInterface { - return MakeTimeTriggerInterface(fc.crdClient, ns) -} -func (fc *FissionClient) MessageQueueTriggers(ns string) MessageQueueTriggerInterface { - return MakeMessageQueueTriggerInterface(fc.crdClient, ns) -} -func (fc *FissionClient) Packages(ns string) PackageInterface { - return MakePackageInterface(fc.crdClient, ns) -} -func (fc *FissionClient) CanaryConfigs(ns string) CanaryConfigInterface { - return MakeCanaryConfigInterface(fc.crdClient, ns) -} -func (fc *FissionClient) WaitForCRDs() error { - return waitForCRDs(fc.crdClient) -} -func (fc *FissionClient) GetCrdClient() *rest.RESTClient { - return fc.crdClient -} diff --git a/pkg/crd/crd_test.go b/pkg/crd/crd_test.go index e775c48210..7b8929eea5 100644 --- a/pkg/crd/crd_test.go +++ b/pkg/crd/crd_test.go @@ -24,9 +24,9 @@ import ( "go.uber.org/zap" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/rest" fv1 "github.com/fission/fission/pkg/apis/fission.io/v1" + genv1 "github.com/fission/fission/pkg/apis/genclient/v1/clientset/versioned/typed/fission.io/v1" ) func panicIf(err error) { @@ -35,14 +35,14 @@ func panicIf(err error) { } } -func functionTests(crdClient *rest.RESTClient) { +func functionTests(crdClient genv1.V1V1Interface) { // sample function object function := &fv1.Function{ TypeMeta: metav1.TypeMeta{ Kind: "Function", APIVersion: "fission.io/v1", }, - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "hello", Namespace: metav1.NamespaceDefault, }, @@ -61,34 +61,34 @@ func functionTests(crdClient *rest.RESTClient) { } // Test function CRUD - fi := MakeFunctionInterface(crdClient, metav1.NamespaceDefault) + fi := crdClient.Functions(metav1.NamespaceDefault) // cleanup from old crashed tests, ignore errors - fi.Delete(function.Metadata.Name, nil) + fi.Delete(function.ObjectMeta.Name, nil) // create f, err := fi.Create(function) panicIf(err) - if f.Metadata.Name != function.Metadata.Name { + if f.ObjectMeta.Name != function.ObjectMeta.Name { log.Panicf("Bad result from create: %v", f) } // read - f, err = fi.Get(function.Metadata.Name) + f, err = fi.Get(function.ObjectMeta.Name, metav1.GetOptions{}) panicIf(err) if f.Spec.Environment.Name != function.Spec.Environment.Name { log.Panicf("Bad result from Get: %v", f) } - log.Printf("f.Metadata = %#v", f.Metadata) + log.Printf("f.ObjectMeta = %#v", f.ObjectMeta) // update - function.Metadata.ResourceVersion = f.Metadata.ResourceVersion + function.ObjectMeta.ResourceVersion = f.ObjectMeta.ResourceVersion function.Spec.Environment.Name = "yyy" f, err = fi.Update(function) panicIf(err) - log.Printf("f.Metadata = %#v", f.Metadata) + log.Printf("f.ObjectMeta = %#v", f.ObjectMeta) // list fl, err := fi.List(metav1.ListOptions{}) @@ -101,7 +101,7 @@ func functionTests(crdClient *rest.RESTClient) { } // delete - err = fi.Delete(f.Metadata.Name, nil) + err = fi.Delete(f.ObjectMeta.Name, nil) panicIf(err) // start a watch @@ -109,10 +109,10 @@ func functionTests(crdClient *rest.RESTClient) { panicIf(err) start := time.Now() - function.Metadata.ResourceVersion = "" + function.ObjectMeta.ResourceVersion = "" f, err = fi.Create(function) panicIf(err) - defer fi.Delete(f.Metadata.Name, nil) + defer fi.Delete(f.ObjectMeta.Name, nil) // assert that we get a watch event for the new function recvd := false @@ -135,14 +135,14 @@ func functionTests(crdClient *rest.RESTClient) { } -func environmentTests(crdClient *rest.RESTClient) { +func environmentTests(crdClient genv1.V1V1Interface) { // sample environment object environment := &fv1.Environment{ TypeMeta: metav1.TypeMeta{ Kind: "Environment", APIVersion: "fission.io/v1", }, - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "hello", Namespace: metav1.NamespaceDefault, }, @@ -159,27 +159,27 @@ func environmentTests(crdClient *rest.RESTClient) { } // Test environment CRUD - ei := MakeEnvironmentInterface(crdClient, metav1.NamespaceDefault) + ei := crdClient.Environments(metav1.NamespaceDefault) // cleanup from old crashed tests, ignore errors - ei.Delete(environment.Metadata.Name, nil) + ei.Delete(environment.ObjectMeta.Name, nil) // create e, err := ei.Create(environment) panicIf(err) - if e.Metadata.Name != environment.Metadata.Name { + if e.ObjectMeta.Name != environment.ObjectMeta.Name { log.Panicf("Bad result from create: %v", e) } // read - e, err = ei.Get(environment.Metadata.Name) + e, err = ei.Get(environment.ObjectMeta.Name, metav1.GetOptions{}) panicIf(err) if len(e.Spec.Runtime.Image) != len(environment.Spec.Runtime.Image) { log.Panicf("Bad result from Get: %#v", e) } // update - environment.Metadata.ResourceVersion = e.Metadata.ResourceVersion + environment.ObjectMeta.ResourceVersion = e.ObjectMeta.ResourceVersion environment.Spec.Runtime.Image = "www" e, err = ei.Update(environment) panicIf(err) @@ -195,7 +195,7 @@ func environmentTests(crdClient *rest.RESTClient) { } // delete - err = ei.Delete(e.Metadata.Name, nil) + err = ei.Delete(e.ObjectMeta.Name, nil) panicIf(err) // start a watch @@ -203,10 +203,10 @@ func environmentTests(crdClient *rest.RESTClient) { panicIf(err) start := time.Now() - environment.Metadata.ResourceVersion = "" + environment.ObjectMeta.ResourceVersion = "" e, err = ei.Create(environment) panicIf(err) - defer ei.Delete(e.Metadata.Name, nil) + defer ei.Delete(e.ObjectMeta.Name, nil) // assert that we get a watch event for the new environment recvd := false @@ -229,14 +229,14 @@ func environmentTests(crdClient *rest.RESTClient) { } -func httpTriggerTests(crdClient *rest.RESTClient) { +func httpTriggerTests(crdClient genv1.V1V1Interface) { // sample httpTrigger object httpTrigger := &fv1.HTTPTrigger{ TypeMeta: metav1.TypeMeta{ Kind: "HTTPTrigger", APIVersion: "fission.io/v1", }, - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "hello", Namespace: metav1.NamespaceDefault, }, @@ -251,27 +251,27 @@ func httpTriggerTests(crdClient *rest.RESTClient) { } // Test httpTrigger CRUD - ei := MakeHTTPTriggerInterface(crdClient, metav1.NamespaceDefault) + ei := crdClient.HTTPTriggers(metav1.NamespaceDefault) // cleanup from old crashed tests, ignore errors - ei.Delete(httpTrigger.Metadata.Name, nil) + ei.Delete(httpTrigger.ObjectMeta.Name, nil) // create e, err := ei.Create(httpTrigger) panicIf(err) - if e.Metadata.Name != httpTrigger.Metadata.Name { + if e.ObjectMeta.Name != httpTrigger.ObjectMeta.Name { log.Panicf("Bad result from create: %v", e) } // read - e, err = ei.Get(httpTrigger.Metadata.Name) + e, err = ei.Get(httpTrigger.ObjectMeta.Name, metav1.GetOptions{}) panicIf(err) if len(e.Spec.Method) != len(httpTrigger.Spec.Method) { log.Panicf("Bad result from Get: %#v", e) } // update - httpTrigger.Metadata.ResourceVersion = e.Metadata.ResourceVersion + httpTrigger.ObjectMeta.ResourceVersion = e.ObjectMeta.ResourceVersion httpTrigger.Spec.Method = "POST" e, err = ei.Update(httpTrigger) panicIf(err) @@ -287,7 +287,7 @@ func httpTriggerTests(crdClient *rest.RESTClient) { } // delete - err = ei.Delete(e.Metadata.Name, nil) + err = ei.Delete(e.ObjectMeta.Name, nil) panicIf(err) // start a watch @@ -295,10 +295,10 @@ func httpTriggerTests(crdClient *rest.RESTClient) { panicIf(err) start := time.Now() - httpTrigger.Metadata.ResourceVersion = "" + httpTrigger.ObjectMeta.ResourceVersion = "" e, err = ei.Create(httpTrigger) panicIf(err) - defer ei.Delete(e.Metadata.Name, nil) + defer ei.Delete(e.ObjectMeta.Name, nil) // assert that we get a watch event for the new httpTrigger recvd := false @@ -321,14 +321,14 @@ func httpTriggerTests(crdClient *rest.RESTClient) { } -func kubernetesWatchTriggerTests(crdClient *rest.RESTClient) { +func kubernetesWatchTriggerTests(crdClient genv1.V1V1Interface) { // sample kubernetesWatchTrigger object kubernetesWatchTrigger := &fv1.KubernetesWatchTrigger{ TypeMeta: metav1.TypeMeta{ Kind: "KubernetesWatchTrigger", APIVersion: "fission.io/v1", }, - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "hello", Namespace: metav1.NamespaceDefault, }, @@ -346,27 +346,27 @@ func kubernetesWatchTriggerTests(crdClient *rest.RESTClient) { } // Test kubernetesWatchTrigger CRUD - ei := MakeKubernetesWatchTriggerInterface(crdClient, metav1.NamespaceDefault) + ei := crdClient.KubernetesWatchTriggers(metav1.NamespaceDefault) // cleanup from old crashed tests, ignore errors - ei.Delete(kubernetesWatchTrigger.Metadata.Name, nil) + ei.Delete(kubernetesWatchTrigger.ObjectMeta.Name, nil) // create e, err := ei.Create(kubernetesWatchTrigger) panicIf(err) - if e.Metadata.Name != kubernetesWatchTrigger.Metadata.Name { + if e.ObjectMeta.Name != kubernetesWatchTrigger.ObjectMeta.Name { log.Panicf("Bad result from create: %v", e) } // read - e, err = ei.Get(kubernetesWatchTrigger.Metadata.Name) + e, err = ei.Get(kubernetesWatchTrigger.ObjectMeta.Name, metav1.GetOptions{}) panicIf(err) if e.Spec.Type != kubernetesWatchTrigger.Spec.Type { log.Panicf("Bad result from Get: %#v", e) } // update - kubernetesWatchTrigger.Metadata.ResourceVersion = e.Metadata.ResourceVersion + kubernetesWatchTrigger.ObjectMeta.ResourceVersion = e.ObjectMeta.ResourceVersion kubernetesWatchTrigger.Spec.Type = "service" e, err = ei.Update(kubernetesWatchTrigger) panicIf(err) @@ -382,7 +382,7 @@ func kubernetesWatchTriggerTests(crdClient *rest.RESTClient) { } // delete - err = ei.Delete(e.Metadata.Name, nil) + err = ei.Delete(e.ObjectMeta.Name, nil) panicIf(err) // start a watch @@ -390,10 +390,10 @@ func kubernetesWatchTriggerTests(crdClient *rest.RESTClient) { panicIf(err) start := time.Now() - kubernetesWatchTrigger.Metadata.ResourceVersion = "" + kubernetesWatchTrigger.ObjectMeta.ResourceVersion = "" e, err = ei.Create(kubernetesWatchTrigger) panicIf(err) - defer ei.Delete(e.Metadata.Name, nil) + defer ei.Delete(e.ObjectMeta.Name, nil) // assert that we get a watch event for the new kubernetesWatchTrigger recvd := false @@ -424,27 +424,24 @@ func TestCrd(t *testing.T) { return } - // Create the client config. Needs the KUBECONFIG env var to - // point at a valid kubeconfig. - config, _, apiExtClient, err := GetKubernetesClient() - panicIf(err) - logger, err := zap.NewDevelopment() panicIf(err) + fc, _, apiExtClient, err := MakeFissionClient() + if err != nil { + panicIf(err) + } + // init our types err = EnsureFissionCRDs(logger, apiExtClient) panicIf(err) - // rest client with knowledge about our crd types - crdClient, err := GetCrdClient(config) - panicIf(err) - - err = waitForCRDs(crdClient) + err = fc.WaitForCRDs() panicIf(err) - functionTests(crdClient) - environmentTests(crdClient) - httpTriggerTests(crdClient) - kubernetesWatchTriggerTests(crdClient) + // rest client with knowledge about our crd types + functionTests(fc.crdClient.V1V1()) + environmentTests(fc.crdClient.V1V1()) + httpTriggerTests(fc.crdClient.V1V1()) + kubernetesWatchTriggerTests(fc.crdClient.V1V1()) } diff --git a/pkg/crd/environment.go b/pkg/crd/environment.go deleted file mode 100644 index ce36d5d129..0000000000 --- a/pkg/crd/environment.go +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright 2016 The Fission 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 crd - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - - fv1 "github.com/fission/fission/pkg/apis/fission.io/v1" -) - -type ( - EnvironmentInterface interface { - Create(*fv1.Environment) (*fv1.Environment, error) - Get(name string) (*fv1.Environment, error) - Update(*fv1.Environment) (*fv1.Environment, error) - Delete(name string, options *metav1.DeleteOptions) error - List(opts metav1.ListOptions) (*fv1.EnvironmentList, error) - Watch(opts metav1.ListOptions) (watch.Interface, error) - } - - environmentClient struct { - client *rest.RESTClient - namespace string - } -) - -func MakeEnvironmentInterface(crdClient *rest.RESTClient, namespace string) EnvironmentInterface { - return &environmentClient{ - client: crdClient, - namespace: namespace, - } -} - -func (ec *environmentClient) Create(e *fv1.Environment) (*fv1.Environment, error) { - var result fv1.Environment - err := ec.client.Post(). - Resource("environments"). - Namespace(ec.namespace). - Body(e). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (ec *environmentClient) Get(name string) (*fv1.Environment, error) { - var result fv1.Environment - err := ec.client.Get(). - Resource("environments"). - Namespace(ec.namespace). - Name(name). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (ec *environmentClient) Update(e *fv1.Environment) (*fv1.Environment, error) { - var result fv1.Environment - err := ec.client.Put(). - Resource("environments"). - Namespace(ec.namespace). - Name(e.Metadata.Name). - Body(e). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (ec *environmentClient) Delete(name string, opts *metav1.DeleteOptions) error { - return ec.client.Delete(). - Namespace(ec.namespace). - Resource("environments"). - Name(name). - Body(opts). - Do(). - Error() -} - -func (ec *environmentClient) List(opts metav1.ListOptions) (*fv1.EnvironmentList, error) { - var result fv1.EnvironmentList - err := ec.client.Get(). - Namespace(ec.namespace). - Resource("environments"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(). - Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (ec *environmentClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return ec.client.Get(). - Prefix("watch"). - Namespace(ec.namespace). - Resource("environments"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch() -} diff --git a/pkg/crd/function.go b/pkg/crd/function.go deleted file mode 100644 index 8e296e2e16..0000000000 --- a/pkg/crd/function.go +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright 2016 The Fission 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 crd - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - - fv1 "github.com/fission/fission/pkg/apis/fission.io/v1" -) - -type ( - FunctionInterface interface { - Create(*fv1.Function) (*fv1.Function, error) - Get(name string) (*fv1.Function, error) - Update(*fv1.Function) (*fv1.Function, error) - Delete(name string, options *metav1.DeleteOptions) error - List(opts metav1.ListOptions) (*fv1.FunctionList, error) - Watch(opts metav1.ListOptions) (watch.Interface, error) - } - - functionClient struct { - client *rest.RESTClient - namespace string - } -) - -func MakeFunctionInterface(crdClient *rest.RESTClient, namespace string) FunctionInterface { - return &functionClient{ - client: crdClient, - namespace: namespace, - } -} - -func (fc *functionClient) Create(f *fv1.Function) (*fv1.Function, error) { - var result fv1.Function - err := fc.client.Post(). - Resource("functions"). - Namespace(fc.namespace). - Body(f). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *functionClient) Get(name string) (*fv1.Function, error) { - var result fv1.Function - err := fc.client.Get(). - Resource("functions"). - Namespace(fc.namespace). - Name(name). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *functionClient) Update(f *fv1.Function) (*fv1.Function, error) { - var result fv1.Function - err := fc.client.Put(). - Resource("functions"). - Namespace(fc.namespace). - Name(f.Metadata.Name). - Body(f). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *functionClient) Delete(name string, opts *metav1.DeleteOptions) error { - return fc.client.Delete(). - Namespace(fc.namespace). - Resource("functions"). - Name(name). - Body(opts). - Do(). - Error() -} - -func (fc *functionClient) List(opts metav1.ListOptions) (*fv1.FunctionList, error) { - var result fv1.FunctionList - err := fc.client.Get(). - Namespace(fc.namespace). - Resource("functions"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(). - Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *functionClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return fc.client.Get(). - Prefix("watch"). - Namespace(fc.namespace). - Resource("functions"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch() -} diff --git a/pkg/crd/httptrigger.go b/pkg/crd/httptrigger.go deleted file mode 100644 index 1096bb1822..0000000000 --- a/pkg/crd/httptrigger.go +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright 2016 The Fission 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 crd - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - - fv1 "github.com/fission/fission/pkg/apis/fission.io/v1" -) - -type ( - HTTPTriggerInterface interface { - Create(*fv1.HTTPTrigger) (*fv1.HTTPTrigger, error) - Get(name string) (*fv1.HTTPTrigger, error) - Update(*fv1.HTTPTrigger) (*fv1.HTTPTrigger, error) - Delete(name string, options *metav1.DeleteOptions) error - List(opts metav1.ListOptions) (*fv1.HTTPTriggerList, error) - Watch(opts metav1.ListOptions) (watch.Interface, error) - } - - httpTriggerClient struct { - client *rest.RESTClient - namespace string - } -) - -func MakeHTTPTriggerInterface(crdClient *rest.RESTClient, namespace string) HTTPTriggerInterface { - return &httpTriggerClient{ - client: crdClient, - namespace: namespace, - } -} - -func (c *httpTriggerClient) Create(obj *fv1.HTTPTrigger) (*fv1.HTTPTrigger, error) { - var result fv1.HTTPTrigger - err := c.client.Post(). - Resource("httptriggers"). - Namespace(c.namespace). - Body(obj). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *httpTriggerClient) Get(name string) (*fv1.HTTPTrigger, error) { - var result fv1.HTTPTrigger - err := c.client.Get(). - Resource("httptriggers"). - Namespace(c.namespace). - Name(name). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *httpTriggerClient) Update(obj *fv1.HTTPTrigger) (*fv1.HTTPTrigger, error) { - var result fv1.HTTPTrigger - err := c.client.Put(). - Resource("httptriggers"). - Namespace(c.namespace). - Name(obj.Metadata.Name). - Body(obj). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *httpTriggerClient) Delete(name string, opts *metav1.DeleteOptions) error { - return c.client.Delete(). - Namespace(c.namespace). - Resource("httptriggers"). - Name(name). - Body(opts). - Do(). - Error() -} - -func (c *httpTriggerClient) List(opts metav1.ListOptions) (*fv1.HTTPTriggerList, error) { - var result fv1.HTTPTriggerList - err := c.client.Get(). - Namespace(c.namespace). - Resource("httptriggers"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(). - Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *httpTriggerClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return c.client.Get(). - Prefix("watch"). - Namespace(c.namespace). - Resource("httptriggers"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch() -} diff --git a/pkg/crd/kubernetesWatchTrigger.go b/pkg/crd/kubernetesWatchTrigger.go deleted file mode 100644 index 12187c838a..0000000000 --- a/pkg/crd/kubernetesWatchTrigger.go +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright 2016 The Fission 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 crd - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - - fv1 "github.com/fission/fission/pkg/apis/fission.io/v1" -) - -type ( - KubernetesWatchTriggerInterface interface { - Create(*fv1.KubernetesWatchTrigger) (*fv1.KubernetesWatchTrigger, error) - Get(name string) (*fv1.KubernetesWatchTrigger, error) - Update(*fv1.KubernetesWatchTrigger) (*fv1.KubernetesWatchTrigger, error) - Delete(name string, options *metav1.DeleteOptions) error - List(opts metav1.ListOptions) (*fv1.KubernetesWatchTriggerList, error) - Watch(opts metav1.ListOptions) (watch.Interface, error) - } - - kubernetesWatchTriggerClient struct { - client *rest.RESTClient - namespace string - } -) - -func MakeKubernetesWatchTriggerInterface(crdClient *rest.RESTClient, namespace string) KubernetesWatchTriggerInterface { - return &kubernetesWatchTriggerClient{ - client: crdClient, - namespace: namespace, - } -} - -func (c *kubernetesWatchTriggerClient) Create(obj *fv1.KubernetesWatchTrigger) (*fv1.KubernetesWatchTrigger, error) { - var result fv1.KubernetesWatchTrigger - err := c.client.Post(). - Resource("kuberneteswatchtriggers"). - Namespace(c.namespace). - Body(obj). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *kubernetesWatchTriggerClient) Get(name string) (*fv1.KubernetesWatchTrigger, error) { - var result fv1.KubernetesWatchTrigger - err := c.client.Get(). - Resource("kuberneteswatchtriggers"). - Namespace(c.namespace). - Name(name). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *kubernetesWatchTriggerClient) Update(obj *fv1.KubernetesWatchTrigger) (*fv1.KubernetesWatchTrigger, error) { - var result fv1.KubernetesWatchTrigger - err := c.client.Put(). - Resource("kuberneteswatchtriggers"). - Namespace(c.namespace). - Name(obj.Metadata.Name). - Body(obj). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *kubernetesWatchTriggerClient) Delete(name string, opts *metav1.DeleteOptions) error { - return c.client.Delete(). - Namespace(c.namespace). - Resource("kuberneteswatchtriggers"). - Name(name). - Body(opts). - Do(). - Error() -} - -func (c *kubernetesWatchTriggerClient) List(opts metav1.ListOptions) (*fv1.KubernetesWatchTriggerList, error) { - var result fv1.KubernetesWatchTriggerList - err := c.client.Get(). - Namespace(c.namespace). - Resource("kuberneteswatchtriggers"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(). - Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *kubernetesWatchTriggerClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return c.client.Get(). - Prefix("watch"). - Namespace(c.namespace). - Resource("kuberneteswatchtriggers"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch() -} diff --git a/pkg/crd/messagequeuetrigger.go b/pkg/crd/messagequeuetrigger.go deleted file mode 100644 index df447cdfc9..0000000000 --- a/pkg/crd/messagequeuetrigger.go +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright 2016 The Fission 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 crd - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - - fv1 "github.com/fission/fission/pkg/apis/fission.io/v1" -) - -type ( - MessageQueueTriggerInterface interface { - Create(*fv1.MessageQueueTrigger) (*fv1.MessageQueueTrigger, error) - Get(name string) (*fv1.MessageQueueTrigger, error) - Update(*fv1.MessageQueueTrigger) (*fv1.MessageQueueTrigger, error) - Delete(name string, options *metav1.DeleteOptions) error - List(opts metav1.ListOptions) (*fv1.MessageQueueTriggerList, error) - Watch(opts metav1.ListOptions) (watch.Interface, error) - } - - messageQueueTriggerClient struct { - client *rest.RESTClient - namespace string - } -) - -func MakeMessageQueueTriggerInterface(crdClient *rest.RESTClient, namespace string) MessageQueueTriggerInterface { - return &messageQueueTriggerClient{ - client: crdClient, - namespace: namespace, - } -} - -func (fc *messageQueueTriggerClient) Create(f *fv1.MessageQueueTrigger) (*fv1.MessageQueueTrigger, error) { - var result fv1.MessageQueueTrigger - err := fc.client.Post(). - Resource("messagequeuetriggers"). - Namespace(fc.namespace). - Body(f). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *messageQueueTriggerClient) Get(name string) (*fv1.MessageQueueTrigger, error) { - var result fv1.MessageQueueTrigger - err := fc.client.Get(). - Resource("messagequeuetriggers"). - Namespace(fc.namespace). - Name(name). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *messageQueueTriggerClient) Update(f *fv1.MessageQueueTrigger) (*fv1.MessageQueueTrigger, error) { - var result fv1.MessageQueueTrigger - err := fc.client.Put(). - Resource("messagequeuetriggers"). - Namespace(fc.namespace). - Name(f.Metadata.Name). - Body(f). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *messageQueueTriggerClient) Delete(name string, opts *metav1.DeleteOptions) error { - return fc.client.Delete(). - Namespace(fc.namespace). - Resource("messagequeuetriggers"). - Name(name). - Body(opts). - Do(). - Error() -} - -func (fc *messageQueueTriggerClient) List(opts metav1.ListOptions) (*fv1.MessageQueueTriggerList, error) { - var result fv1.MessageQueueTriggerList - err := fc.client.Get(). - Namespace(fc.namespace). - Resource("messagequeuetriggers"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(). - Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *messageQueueTriggerClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return fc.client.Get(). - Prefix("watch"). - Namespace(fc.namespace). - Resource("messagequeuetriggers"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch() -} diff --git a/pkg/crd/package.go b/pkg/crd/package.go deleted file mode 100644 index 40d0155d79..0000000000 --- a/pkg/crd/package.go +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright 2016 The Fission 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 crd - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - - fv1 "github.com/fission/fission/pkg/apis/fission.io/v1" -) - -type ( - PackageInterface interface { - Create(*fv1.Package) (*fv1.Package, error) - Get(name string) (*fv1.Package, error) - Update(*fv1.Package) (*fv1.Package, error) - Delete(name string, options *metav1.DeleteOptions) error - List(opts metav1.ListOptions) (*fv1.PackageList, error) - Watch(opts metav1.ListOptions) (watch.Interface, error) - } - - packageClient struct { - client *rest.RESTClient - namespace string - } -) - -func MakePackageInterface(crdClient *rest.RESTClient, namespace string) PackageInterface { - return &packageClient{ - client: crdClient, - namespace: namespace, - } -} - -func (c *packageClient) Create(f *fv1.Package) (*fv1.Package, error) { - var result fv1.Package - err := c.client.Post(). - Resource("packages"). - Namespace(c.namespace). - Body(f). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *packageClient) Get(name string) (*fv1.Package, error) { - var result fv1.Package - err := c.client.Get(). - Resource("packages"). - Namespace(c.namespace). - Name(name). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *packageClient) Update(f *fv1.Package) (*fv1.Package, error) { - var result fv1.Package - err := c.client.Put(). - Resource("packages"). - Namespace(c.namespace). - Name(f.Metadata.Name). - Body(f). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *packageClient) Delete(name string, opts *metav1.DeleteOptions) error { - return c.client.Delete(). - Namespace(c.namespace). - Resource("packages"). - Name(name). - Body(opts). - Do(). - Error() -} - -func (c *packageClient) List(opts metav1.ListOptions) (*fv1.PackageList, error) { - var result fv1.PackageList - err := c.client.Get(). - Namespace(c.namespace). - Resource("packages"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(). - Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (c *packageClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return c.client.Get(). - Prefix("watch"). - Namespace(c.namespace). - Resource("packages"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch() -} diff --git a/pkg/crd/timetrigger.go b/pkg/crd/timetrigger.go deleted file mode 100644 index 9f2a970ee9..0000000000 --- a/pkg/crd/timetrigger.go +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright 2016 The Fission 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 crd - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - - fv1 "github.com/fission/fission/pkg/apis/fission.io/v1" -) - -type ( - TimeTriggerInterface interface { - Create(*fv1.TimeTrigger) (*fv1.TimeTrigger, error) - Get(name string) (*fv1.TimeTrigger, error) - Update(*fv1.TimeTrigger) (*fv1.TimeTrigger, error) - Delete(name string, options *metav1.DeleteOptions) error - List(opts metav1.ListOptions) (*fv1.TimeTriggerList, error) - Watch(opts metav1.ListOptions) (watch.Interface, error) - } - - timeTriggerClient struct { - client *rest.RESTClient - namespace string - } -) - -func MakeTimeTriggerInterface(crdClient *rest.RESTClient, namespace string) TimeTriggerInterface { - return &timeTriggerClient{ - client: crdClient, - namespace: namespace, - } -} - -func (fc *timeTriggerClient) Create(f *fv1.TimeTrigger) (*fv1.TimeTrigger, error) { - var result fv1.TimeTrigger - err := fc.client.Post(). - Resource("timetriggers"). - Namespace(fc.namespace). - Body(f). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *timeTriggerClient) Get(name string) (*fv1.TimeTrigger, error) { - var result fv1.TimeTrigger - err := fc.client.Get(). - Resource("timetriggers"). - Namespace(fc.namespace). - Name(name). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *timeTriggerClient) Update(f *fv1.TimeTrigger) (*fv1.TimeTrigger, error) { - var result fv1.TimeTrigger - err := fc.client.Put(). - Resource("timetriggers"). - Namespace(fc.namespace). - Name(f.Metadata.Name). - Body(f). - Do().Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *timeTriggerClient) Delete(name string, opts *metav1.DeleteOptions) error { - return fc.client.Delete(). - Namespace(fc.namespace). - Resource("timetriggers"). - Name(name). - Body(opts). - Do(). - Error() -} - -func (fc *timeTriggerClient) List(opts metav1.ListOptions) (*fv1.TimeTriggerList, error) { - var result fv1.TimeTriggerList - err := fc.client.Get(). - Namespace(fc.namespace). - Resource("timetriggers"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(). - Into(&result) - if err != nil { - return nil, err - } - return &result, nil -} - -func (fc *timeTriggerClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return fc.client.Get(). - Prefix("watch"). - Namespace(fc.namespace). - Resource("timetriggers"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch() -} diff --git a/pkg/executor/api.go b/pkg/executor/api.go index c146661529..fb912221a5 100644 --- a/pkg/executor/api.go +++ b/pkg/executor/api.go @@ -51,7 +51,7 @@ func (executor *Executor) getServiceForFunctionApi(w http.ResponseWriter, r *htt return } - fn, err := executor.fissionClient.Functions(m.Namespace).Get(m.Name) + fn, err := executor.fissionClient.V1().Functions(m.Namespace).Get(m.Name, metav1.GetOptions{}) if err != nil { if k8serrors.IsNotFound(err) { http.Error(w, "Failed to find function", http.StatusNotFound) @@ -87,8 +87,8 @@ func (executor *Executor) getServiceForFunctionApi(w http.ResponseWriter, r *htt func (executor *Executor) getServiceForFunction(fn *fv1.Function) (string, error) { // Check function -> svc cache executor.logger.Debug("checking for cached function service", - zap.String("function_name", fn.Metadata.Name), - zap.String("function_namespace", fn.Metadata.Namespace)) + zap.String("function_name", fn.ObjectMeta.Name), + zap.String("function_namespace", fn.ObjectMeta.Namespace)) t := fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType et, exists := executor.executorTypes[t] @@ -103,8 +103,8 @@ func (executor *Executor) getServiceForFunction(fn *fv1.Function) (string, error return fsvc.Address, nil } else { executor.logger.Debug("deleting cache entry for invalid address", - zap.String("function_name", fn.Metadata.Name), - zap.String("function_namespace", fn.Metadata.Namespace), + zap.String("function_name", fn.ObjectMeta.Name), + zap.String("function_namespace", fn.ObjectMeta.Namespace), zap.String("address", fsvc.Address)) et.DeleteFuncSvcFromCache(fsvc) } diff --git a/pkg/executor/cms/cmscontroller.go b/pkg/executor/cms/cmscontroller.go index 107ae02a8b..2d8661b280 100644 --- a/pkg/executor/cms/cmscontroller.go +++ b/pkg/executor/cms/cmscontroller.go @@ -93,7 +93,7 @@ func initConfigmapController(logger *zap.Logger, fissionClient *crd.FissionClien } func getConfigmapRelatedFuncs(logger *zap.Logger, m *metav1.ObjectMeta, fissionClient *crd.FissionClient) ([]fv1.Function, error) { - funcList, err := fissionClient.Functions(metav1.NamespaceAll).List(metav1.ListOptions{}) + funcList, err := fissionClient.V1().Functions(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { return nil, err } @@ -140,7 +140,7 @@ func initSecretController(logger *zap.Logger, fissionClient *crd.FissionClient, } func getSecretRelatedFuncs(logger *zap.Logger, m *metav1.ObjectMeta, fissionClient *crd.FissionClient) ([]fv1.Function, error) { - funcList, err := fissionClient.Functions(metav1.NamespaceAll).List(metav1.ListOptions{}) + funcList, err := fissionClient.V1().Functions(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { return nil, err } diff --git a/pkg/executor/executor.go b/pkg/executor/executor.go index 86e52e2a88..b9f76b4090 100644 --- a/pkg/executor/executor.go +++ b/pkg/executor/executor.go @@ -97,7 +97,7 @@ func MakeExecutor(logger *zap.Logger, cms *cms.ConfigSecretController, func (executor *Executor) serveCreateFuncServices() { for { req := <-executor.requestChan - fnMetadata := &req.function.Metadata + fnMetadata := &req.function.ObjectMeta // Cache miss -- is this first one to request the func? wg, found := executor.fsCreateWg[crd.CacheKey(fnMetadata)] @@ -167,8 +167,8 @@ func (executor *Executor) serveCreateFuncServices() { func (executor *Executor) createServiceForFunction(ctx context.Context, fn *fv1.Function) (*fscache.FuncSvc, error) { executor.logger.Debug("no cached function service found, creating one", - zap.String("function_name", fn.Metadata.Name), - zap.String("function_namespace", fn.Metadata.Namespace)) + zap.String("function_name", fn.ObjectMeta.Name), + zap.String("function_namespace", fn.ObjectMeta.Namespace)) t := fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType e, ok := executor.executorTypes[t] @@ -181,9 +181,9 @@ func (executor *Executor) createServiceForFunction(ctx context.Context, fn *fv1. e := "error creating service for function" executor.logger.Error(e, zap.Error(fsvcErr), - zap.String("function_name", fn.Metadata.Name), - zap.String("function_namespace", fn.Metadata.Namespace)) - fsvcErr = errors.Wrap(fsvcErr, fmt.Sprintf("[%s] %s", fn.Metadata.Name, e)) + zap.String("function_name", fn.ObjectMeta.Name), + zap.String("function_namespace", fn.ObjectMeta.Namespace)) + fsvcErr = errors.Wrap(fsvcErr, fmt.Sprintf("[%s] %s", fn.ObjectMeta.Name, e)) } return fsvc, fsvcErr @@ -225,7 +225,6 @@ func StartExecutor(logger *zap.Logger, functionNamespace string, envBuilderNames return errors.Wrap(err, "Error making fetcher config") } - restClient := fissionClient.GetCrdClient() executorInstanceID := strings.ToLower(uniuri.NewLen(8)) logger.Info("Starting executor", zap.String("instanceID", executorInstanceID)) @@ -237,7 +236,7 @@ func StartExecutor(logger *zap.Logger, functionNamespace string, envBuilderNames ndm := newdeploy.MakeNewDeploy( logger, - fissionClient, kubernetesClient, restClient, + fissionClient, kubernetesClient, fissionClient.V1().RESTClient(), functionNamespace, fetcherConfig, executorInstanceID) executorTypes := make(map[fv1.ExecutorType]executortype.ExecutorType) diff --git a/pkg/executor/executor_test.go b/pkg/executor/executor_test.go index 182422f954..a7467c1f60 100644 --- a/pkg/executor/executor_test.go +++ b/pkg/executor/executor_test.go @@ -141,8 +141,8 @@ func TestExecutor(t *testing.T) { } // create an env on the cluster - env, err := fissionClient.Environments(fissionNs).Create(&fv1.Environment{ - Metadata: metav1.ObjectMeta{ + env, err := fissionClient.V1().Environments(fissionNs).Create(&fv1.Environment{ + ObjectMeta: metav1.ObjectMeta{ Name: "nodejs", Namespace: fissionNs, }, @@ -174,8 +174,8 @@ func TestExecutor(t *testing.T) { time.Sleep(6 * time.Second) envRef := fv1.EnvironmentReference{ - Namespace: env.Metadata.Namespace, - Name: env.Metadata.Name, + Namespace: env.ObjectMeta.Namespace, + Name: env.ObjectMeta.Name, } deployment := fv1.Archive{ @@ -185,7 +185,7 @@ func TestExecutor(t *testing.T) { // create a package p := &fv1.Package{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "hello", Namespace: fissionNs, }, @@ -194,14 +194,14 @@ func TestExecutor(t *testing.T) { Deployment: deployment, }, } - p, err = fissionClient.Packages(fissionNs).Create(p) + p, err = fissionClient.V1().Packages(fissionNs).Create(p) if err != nil { log.Panicf("failed to create package: %v", err) } // create a function f := &fv1.Function{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "hello", Namespace: fissionNs, }, @@ -209,38 +209,38 @@ func TestExecutor(t *testing.T) { Environment: envRef, Package: fv1.FunctionPackageRef{ PackageRef: fv1.PackageRef{ - Namespace: p.Metadata.Namespace, - Name: p.Metadata.Name, - ResourceVersion: p.Metadata.ResourceVersion, + Namespace: p.ObjectMeta.Namespace, + Name: p.ObjectMeta.Name, + ResourceVersion: p.ObjectMeta.ResourceVersion, }, }, }, } - _, err = fissionClient.Functions(fissionNs).Create(f) + _, err = fissionClient.V1().Functions(fissionNs).Create(f) if err != nil { log.Panicf("failed to create function: %v", err) } // create a service to call fetcher and the env container - labels := map[string]string{"functionName": f.Metadata.Name} + labels := map[string]string{"functionName": f.ObjectMeta.Name} var fetcherPort int32 = 30001 - fetcherSvc := createSvc(kubeClient, functionNs, fmt.Sprintf("%v-%v", f.Metadata.Name, "fetcher"), 8000, fetcherPort, labels) + fetcherSvc := createSvc(kubeClient, functionNs, fmt.Sprintf("%v-%v", f.ObjectMeta.Name, "fetcher"), 8000, fetcherPort, labels) defer kubeClient.CoreV1().Services(functionNs).Delete(fetcherSvc.ObjectMeta.Name, nil) var funcSvcPort int32 = 30002 - functionSvc := createSvc(kubeClient, functionNs, f.Metadata.Name, 8888, funcSvcPort, labels) + functionSvc := createSvc(kubeClient, functionNs, f.ObjectMeta.Name, 8888, funcSvcPort, labels) defer kubeClient.CoreV1().Services(functionNs).Delete(functionSvc.ObjectMeta.Name, nil) // the main test: get a service for a given function t1 := time.Now() - svc, err := poolmgrClient.GetServiceForFunction(context.Background(), &f.Metadata) + svc, err := poolmgrClient.GetServiceForFunction(context.Background(), &f.ObjectMeta) if err != nil { log.Panicf("failed to get func svc: %v", err) } log.Printf("svc for function created at: %v (in %v)", svc, time.Since(t1)) - // ensure that a pod with the label functionName=f.Metadata.Name exists - podCount := countPods(kubeClient, functionNs, map[string]string{"functionName": f.Metadata.Name}) + // ensure that a pod with the label functionName=f.ObjectMeta.Name exists + podCount := countPods(kubeClient, functionNs, map[string]string{"functionName": f.ObjectMeta.Name}) if podCount != 1 { log.Panicf("expected 1 function pod, found %v", podCount) } diff --git a/pkg/executor/executortype/newdeploy/newdeploy.go b/pkg/executor/executortype/newdeploy/newdeploy.go index 9aa19d7910..641869a9ae 100644 --- a/pkg/executor/executortype/newdeploy/newdeploy.go +++ b/pkg/executor/executortype/newdeploy/newdeploy.go @@ -84,7 +84,7 @@ func (deploy *NewDeploy) createOrGetDeployment(fn *fv1.Function, env *fv1.Enviro if *existingDepl.Spec.Replicas < minScale { err = deploy.scaleDeployment(existingDepl.Namespace, existingDepl.Name, minScale) if err != nil { - deploy.logger.Error("error scaling up function deployment", zap.Error(err), zap.String("function", fn.Metadata.Name)) + deploy.logger.Error("error scaling up function deployment", zap.Error(err), zap.String("function", fn.ObjectMeta.Name)) return nil, err } } @@ -107,7 +107,7 @@ func (deploy *NewDeploy) createOrGetDeployment(fn *fv1.Function, env *fv1.Enviro if err != nil { deploy.logger.Error("error while creating function deployment", zap.Error(err), - zap.String("function", fn.Metadata.Name), + zap.String("function", fn.ObjectMeta.Name), zap.String("deployment_name", deployName), zap.String("deployment_namespace", deployNamespace)) return nil, err @@ -123,14 +123,14 @@ func (deploy *NewDeploy) createOrGetDeployment(fn *fv1.Function, env *fv1.Enviro func (deploy *NewDeploy) setupRBACObjs(deployNamespace string, fn *fv1.Function) error { // create fetcher SA in this ns, if not already created - err := deploy.fetcherConfig.SetupServiceAccount(deploy.kubernetesClient, deployNamespace, fn.Metadata) + err := deploy.fetcherConfig.SetupServiceAccount(deploy.kubernetesClient, deployNamespace, fn.ObjectMeta) if err != nil { deploy.logger.Error("error creating fission fetcher service account for function", zap.Error(err), zap.String("service_account_name", types.FissionFetcherSA), zap.String("service_account_namespace", deployNamespace), - zap.String("function_name", fn.Metadata.Name), - zap.String("function_namespace", fn.Metadata.Namespace)) + zap.String("function_name", fn.ObjectMeta.Name), + zap.String("function_namespace", fn.ObjectMeta.Namespace)) return err } @@ -140,25 +140,25 @@ func (deploy *NewDeploy) setupRBACObjs(deployNamespace string, fn *fv1.Function) deploy.logger.Error("error creating role binding for function", zap.Error(err), zap.String("role_binding", types.PackageGetterRB), - zap.String("function_name", fn.Metadata.Name), - zap.String("function_namespace", fn.Metadata.Namespace)) + zap.String("function_name", fn.ObjectMeta.Name), + zap.String("function_namespace", fn.ObjectMeta.Namespace)) return err } // create rolebinding in function namespace for fetcherSA.envNamespace to be able to get secrets and configmaps - err = utils.SetupRoleBinding(deploy.logger, deploy.kubernetesClient, types.SecretConfigMapGetterRB, fn.Metadata.Namespace, types.SecretConfigMapGetterCR, types.ClusterRole, types.FissionFetcherSA, deployNamespace) + err = utils.SetupRoleBinding(deploy.logger, deploy.kubernetesClient, types.SecretConfigMapGetterRB, fn.ObjectMeta.Namespace, types.SecretConfigMapGetterCR, types.ClusterRole, types.FissionFetcherSA, deployNamespace) if err != nil { deploy.logger.Error("error creating role binding for function", zap.Error(err), zap.String("role_binding", types.SecretConfigMapGetterRB), - zap.String("function_name", fn.Metadata.Name), - zap.String("function_namespace", fn.Metadata.Namespace)) + zap.String("function_name", fn.ObjectMeta.Name), + zap.String("function_namespace", fn.ObjectMeta.Namespace)) return err } deploy.logger.Info("set up all RBAC objects for function", - zap.String("function_name", fn.Metadata.Name), - zap.String("function_namespace", fn.Metadata.Namespace)) + zap.String("function_name", fn.ObjectMeta.Name), + zap.String("function_namespace", fn.ObjectMeta.Namespace)) return nil } @@ -189,7 +189,7 @@ func (deploy *NewDeploy) getDeploymentSpec(fn *fv1.Function, env *fv1.Environmen gracePeriodSeconds = env.Spec.TerminationGracePeriod } - podAnnotations := env.Metadata.Annotations + podAnnotations := env.ObjectMeta.Annotations if podAnnotations == nil { podAnnotations = make(map[string]string) } @@ -219,13 +219,13 @@ func (deploy *NewDeploy) getDeploymentSpec(fn *fv1.Function, env *fv1.Environmen // rollback, set RevisionHistoryLimit to 0 to disable this feature. revisionHistoryLimit := int32(0) - rvCount, err := referencedResourcesRVSum(deploy.kubernetesClient, fn.Metadata.Namespace, fn.Spec.Secrets, fn.Spec.ConfigMaps) + rvCount, err := referencedResourcesRVSum(deploy.kubernetesClient, fn.ObjectMeta.Namespace, fn.Spec.Secrets, fn.Spec.ConfigMaps) if err != nil { return nil, err } container, err := util.MergeContainer(&apiv1.Container{ - Name: fn.Metadata.Name, + Name: fn.ObjectMeta.Name, Image: env.Spec.Runtime.Image, ImagePullPolicy: deploy.runtimeImagePullPolicy, TerminationMessagePath: "/dev/termination-log", @@ -298,7 +298,7 @@ func (deploy *NewDeploy) getDeploymentSpec(fn *fv1.Function, env *fv1.Environmen // Order of merging is important here - first fetcher, then containers and lastly pod spec err = deploy.fetcherConfig.AddSpecializingFetcherToPodSpec( &deployment.Spec.Template.Spec, - fn.Metadata.Name, + fn.ObjectMeta.Name, fn, env, ) diff --git a/pkg/executor/executortype/newdeploy/newdeploymgr.go b/pkg/executor/executortype/newdeploy/newdeploymgr.go index 4d5d44d6e0..fb8ca3899d 100644 --- a/pkg/executor/executortype/newdeploy/newdeploymgr.go +++ b/pkg/executor/executortype/newdeploy/newdeploymgr.go @@ -58,7 +58,7 @@ type ( kubernetesClient *kubernetes.Clientset fissionClient *crd.FissionClient - crdClient *rest.RESTClient + crdClient rest.Interface instanceID string fetcherConfig *fetcherConfig.Config @@ -83,7 +83,7 @@ func MakeNewDeploy( logger *zap.Logger, fissionClient *crd.FissionClient, kubernetesClient *kubernetes.Clientset, - crdClient *rest.RESTClient, + crdClient rest.Interface, namespace string, fetcherConfig *fetcherConfig.Config, instanceID string, @@ -147,7 +147,7 @@ func (deploy *NewDeploy) GetFuncSvc(ctx context.Context, fn *fv1.Function) (*fsc } func (deploy *NewDeploy) GetFuncSvcFromCache(fn *fv1.Function) (*fscache.FuncSvc, error) { - return deploy.fsCache.GetByFunction(&fn.Metadata) + return deploy.fsCache.GetByFunction(&fn.ObjectMeta) } func (deploy *NewDeploy) DeleteFuncSvcFromCache(fsvc *fscache.FuncSvc) { @@ -205,15 +205,15 @@ func (deploy *NewDeploy) IsValid(fsvc *fscache.FuncSvc) bool { // RefreshFuncPods deleted pods related to the function so that new pods are replenished func (deploy *NewDeploy) RefreshFuncPods(logger *zap.Logger, f fv1.Function) error { - env, err := deploy.fissionClient.Environments(f.Spec.Environment.Namespace).Get(f.Spec.Environment.Name) + env, err := deploy.fissionClient.V1().Environments(f.Spec.Environment.Namespace).Get(f.Spec.Environment.Name, metav1.GetOptions{}) if err != nil { return err } - funcLabels := deploy.getDeployLabels(f.Metadata, metav1.ObjectMeta{ + funcLabels := deploy.getDeployLabels(f.ObjectMeta, metav1.ObjectMeta{ Name: f.Spec.Environment.Name, Namespace: f.Spec.Environment.Namespace, - UID: env.Metadata.UID, + UID: env.ObjectMeta.UID, }) dep, err := deploy.kubernetesClient.AppsV1().Deployments(metav1.NamespaceAll).List(metav1.ListOptions{ @@ -232,7 +232,7 @@ func (deploy *NewDeploy) RefreshFuncPods(logger *zap.Logger, f fv1.Function) err } patch := fmt.Sprintf(`{"spec" : {"template": {"spec":{"containers":[{"name": "%s", "env":[{"name": "%s", "value": "%v"}]}]}}}}`, - f.Metadata.Name, fv1.ResourceVersionCount, rvCount) + f.ObjectMeta.Name, fv1.ResourceVersionCount, rvCount) _, err = deploy.kubernetesClient.AppsV1().Deployments(deployment.ObjectMeta.Namespace).Patch(deployment.ObjectMeta.Name, k8sTypes.StrategicMergePatchType, @@ -245,7 +245,7 @@ func (deploy *NewDeploy) RefreshFuncPods(logger *zap.Logger, f fv1.Function) err } func (deploy *NewDeploy) AdoptExistingResources() { - fnList, err := deploy.fissionClient.Functions(metav1.NamespaceAll).List(metav1.ListOptions{}) + fnList, err := deploy.fissionClient.V1().Functions(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { deploy.logger.Error("error getting function list", zap.Error(err)) return @@ -265,7 +265,7 @@ func (deploy *NewDeploy) AdoptExistingResources() { deploy.logger.Warn("failed to adopt resources for function", zap.Error(err)) return } - deploy.logger.Info("adopt resources for function", zap.String("function", fn.Metadata.Name)) + deploy.logger.Info("adopt resources for function", zap.String("function", fn.ObjectMeta.Name)) }() } } @@ -312,14 +312,14 @@ func (deploy *NewDeploy) initFuncController() (k8sCache.Store, k8sCache.Controll // example: https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/job/job_controller.go go func() { fn := obj.(*fv1.Function) - deploy.logger.Debug("create deployment for function", zap.Any("fn", fn.Metadata), zap.Any("fnspec", fn.Spec)) + deploy.logger.Debug("create deployment for function", zap.Any("fn", fn.ObjectMeta), zap.Any("fnspec", fn.Spec)) _, err := deploy.createFunction(fn) if err != nil { deploy.logger.Error("error eager creating function", zap.Error(err), zap.Any("function", fn)) } - deploy.logger.Debug("end create deployment for function", zap.Any("fn", fn.Metadata), zap.Any("fnspec", fn.Spec)) + deploy.logger.Debug("end create deployment for function", zap.Any("fn", fn.ObjectMeta), zap.Any("fnspec", fn.Spec)) }() }, DeleteFunc: func(obj interface{}) { @@ -362,9 +362,9 @@ func (deploy *NewDeploy) initEnvController() (k8sCache.Store, k8sCache.Controlle // Currently only an image update in environment calls for function's deployment recreation. In future there might be more attributes which would want to do it if oldEnv.Spec.Runtime.Image != newEnv.Spec.Runtime.Image { deploy.logger.Debug("Updating all function of the environment that changed, old env:", zap.Any("environment", oldEnv)) - funcs := deploy.getEnvFunctions(&newEnv.Metadata) + funcs := deploy.getEnvFunctions(&newEnv.ObjectMeta) for _, f := range funcs { - function, err := deploy.fissionClient.Functions(f.Metadata.Namespace).Get(f.Metadata.Name) + function, err := deploy.fissionClient.V1().Functions(f.ObjectMeta.Namespace).Get(f.ObjectMeta.Name, metav1.GetOptions{}) if err != nil { deploy.logger.Error("Error getting function", zap.Error(err), zap.Any("function", function)) continue @@ -382,7 +382,7 @@ func (deploy *NewDeploy) initEnvController() (k8sCache.Store, k8sCache.Controlle } func (deploy *NewDeploy) getEnvFunctions(m *metav1.ObjectMeta) []fv1.Function { - funcList, err := deploy.fissionClient.Functions(m.Namespace).List(metav1.ListOptions{}) + funcList, err := deploy.fissionClient.V1().Functions(m.Namespace).List(metav1.ListOptions{}) if err != nil { deploy.logger.Error("Error getting functions for env", zap.Error(err), zap.Any("environment", m)) } @@ -400,20 +400,20 @@ func (deploy *NewDeploy) createFunction(fn *fv1.Function) (*fscache.FuncSvc, err return nil, nil } - fsvcObj, err := deploy.throttler.RunOnce(string(fn.Metadata.UID), func(ableToCreate bool) (interface{}, error) { + fsvcObj, err := deploy.throttler.RunOnce(string(fn.ObjectMeta.UID), func(ableToCreate bool) (interface{}, error) { if ableToCreate { return deploy.fnCreate(fn) } - return deploy.fsCache.GetByFunctionUID(fn.Metadata.UID) + return deploy.fsCache.GetByFunctionUID(fn.ObjectMeta.UID) }) if err != nil { e := "error creating k8s resources for function" deploy.logger.Error(e, zap.Error(err), - zap.String("function_name", fn.Metadata.Name), - zap.String("function_namespace", fn.Metadata.Namespace)) - return nil, errors.Wrapf(err, "%s %s_%s", e, fn.Metadata.Name, fn.Metadata.Namespace) + zap.String("function_name", fn.ObjectMeta.Name), + zap.String("function_namespace", fn.ObjectMeta.Namespace)) + return nil, errors.Wrapf(err, "%s %s_%s", e, fn.ObjectMeta.Name, fn.ObjectMeta.Namespace) } fsvc, ok := fsvcObj.(*fscache.FuncSvc) @@ -430,28 +430,28 @@ func (deploy *NewDeploy) deleteFunction(fn *fv1.Function) error { } err := deploy.fnDelete(fn) if err != nil { - err = errors.Wrapf(err, "error deleting kubernetes objects of function %v", fn.Metadata) + err = errors.Wrapf(err, "error deleting kubernetes objects of function %v", fn.ObjectMeta) } return err } func (deploy *NewDeploy) fnCreate(fn *fv1.Function) (*fscache.FuncSvc, error) { - env, err := deploy.fissionClient. + env, err := deploy.fissionClient.V1(). Environments(fn.Spec.Environment.Namespace). - Get(fn.Spec.Environment.Name) + Get(fn.Spec.Environment.Name, metav1.GetOptions{}) if err != nil { return nil, err } objName := deploy.getObjName(fn) - deployLabels := deploy.getDeployLabels(fn.Metadata, env.Metadata) - deployAnnotations := deploy.getDeployAnnotations(fn.Metadata) + deployLabels := deploy.getDeployLabels(fn.ObjectMeta, env.ObjectMeta) + deployAnnotations := deploy.getDeployAnnotations(fn.ObjectMeta) // to support backward compatibility, if the function was created in default ns, we fall back to creating the // deployment of the function in fission-function ns ns := deploy.namespace - if fn.Metadata.Namespace != metav1.NamespaceDefault { - ns = fn.Metadata.Namespace + if fn.ObjectMeta.Namespace != metav1.NamespaceDefault { + ns = fn.ObjectMeta.Namespace } // Envoy(istio-proxy) returns 404 directly before istio pilot @@ -511,7 +511,7 @@ func (deploy *NewDeploy) fnCreate(fn *fv1.Function) (*fscache.FuncSvc, error) { fsvc := &fscache.FuncSvc{ Name: objName, - Function: &fn.Metadata, + Function: &fn.ObjectMeta, Environment: env, Address: svcAddress, KubernetesObjects: kubeObjRefs, @@ -524,14 +524,14 @@ func (deploy *NewDeploy) fnCreate(fn *fv1.Function) (*fscache.FuncSvc, error) { return fsvc, err } - deploy.fsCache.IncreaseColdStarts(fn.Metadata.Name, string(fn.Metadata.UID)) + deploy.fsCache.IncreaseColdStarts(fn.ObjectMeta.Name, string(fn.ObjectMeta.UID)) return fsvc, nil } func (deploy *NewDeploy) updateFunction(oldFn *fv1.Function, newFn *fv1.Function) error { - if oldFn.Metadata.ResourceVersion == newFn.Metadata.ResourceVersion { + if oldFn.ObjectMeta.ResourceVersion == newFn.ObjectMeta.ResourceVersion { return nil } @@ -554,8 +554,8 @@ func (deploy *NewDeploy) updateFunction(oldFn *fv1.Function, newFn *fv1.Function if oldFn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType != fv1.ExecutorTypeNewdeploy && newFn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType == fv1.ExecutorTypeNewdeploy { deploy.logger.Info("function type changed to new deployment, creating resources", - zap.Any("old_function", oldFn.Metadata), - zap.Any("new_function", newFn.Metadata)) + zap.Any("old_function", oldFn.ObjectMeta), + zap.Any("new_function", newFn.ObjectMeta)) _, err := deploy.createFunction(newFn) if err != nil { deploy.updateStatus(oldFn, err, "error changing the function's type to newdeploy") @@ -570,11 +570,11 @@ func (deploy *NewDeploy) updateFunction(oldFn *fv1.Function, newFn *fv1.Function // to support backward compatibility, if the function was created in default ns, we fall back to creating the // deployment of the function in fission-function ns, so cleaning up resources there ns := deploy.namespace - if newFn.Metadata.Namespace != metav1.NamespaceDefault { - ns = newFn.Metadata.Namespace + if newFn.ObjectMeta.Namespace != metav1.NamespaceDefault { + ns = newFn.ObjectMeta.Namespace } - fsvc, err := deploy.fsCache.GetByFunctionUID(newFn.Metadata.UID) + fsvc, err := deploy.fsCache.GetByFunctionUID(newFn.ObjectMeta.UID) if err != nil { err = errors.Wrapf(err, "error updating function due to unable to find function service cache: %v", oldFn) return err @@ -643,8 +643,8 @@ func (deploy *NewDeploy) updateFunction(oldFn *fv1.Function, newFn *fv1.Function } if deployChanged { - env, err := deploy.fissionClient.Environments(newFn.Spec.Environment.Namespace). - Get(newFn.Spec.Environment.Name) + env, err := deploy.fissionClient.V1().Environments(newFn.Spec.Environment.Namespace). + Get(newFn.Spec.Environment.Name, metav1.GetOptions{}) if err != nil { deploy.updateStatus(oldFn, err, "failed to get environment while updating function") return err @@ -657,22 +657,22 @@ func (deploy *NewDeploy) updateFunction(oldFn *fv1.Function, newFn *fv1.Function func (deploy *NewDeploy) updateFuncDeployment(fn *fv1.Function, env *fv1.Environment) error { - fsvc, err := deploy.fsCache.GetByFunctionUID(fn.Metadata.UID) + fsvc, err := deploy.fsCache.GetByFunctionUID(fn.ObjectMeta.UID) if err != nil { err = errors.Wrapf(err, "error updating function due to unable to find function service cache: %v", fn) return err } fnObjName := fsvc.Name - deployLabels := deploy.getDeployLabels(fn.Metadata, env.Metadata) + deployLabels := deploy.getDeployLabels(fn.ObjectMeta, env.ObjectMeta) deploy.logger.Info("updating deployment due to function/environment update", - zap.String("deployment", fnObjName), zap.Any("function", fn.Metadata.Name)) + zap.String("deployment", fnObjName), zap.Any("function", fn.ObjectMeta.Name)) // to support backward compatibility, if the function was created in default ns, we fall back to creating the // deployment of the function in fission-function ns ns := deploy.namespace - if fn.Metadata.Namespace != metav1.NamespaceDefault { - ns = fn.Metadata.Namespace + if fn.ObjectMeta.Namespace != metav1.NamespaceDefault { + ns = fn.ObjectMeta.Namespace } existingDepl, err := deploy.kubernetesClient.AppsV1().Deployments(ns).Get(fnObjName, metav1.GetOptions{}) @@ -685,7 +685,7 @@ func (deploy *NewDeploy) updateFuncDeployment(fn *fv1.Function, env *fv1.Environ // Therefore, the deployment update will trigger a rolling update. newDeployment, err := deploy.getDeploymentSpec(fn, env, existingDepl.Spec.Replicas, // use current replicas instead of minscale in the ExecutionStrategy. - fnObjName, ns, deployLabels, deploy.getDeployAnnotations(fn.Metadata)) + fnObjName, ns, deployLabels, deploy.getDeployAnnotations(fn.ObjectMeta)) if err != nil { deploy.updateStatus(fn, err, "failed to get new deployment spec while updating function") return err @@ -708,9 +708,9 @@ func (deploy *NewDeploy) fnDelete(fn *fv1.Function) error { // is deleted and cause newdeploy backend fails to delete the entry. // Use GetByFunctionUID instead of GetByFunction here to find correct // fsvc entry. - fsvc, err := deploy.fsCache.GetByFunctionUID(fn.Metadata.UID) + fsvc, err := deploy.fsCache.GetByFunctionUID(fn.ObjectMeta.UID) if err != nil { - err = errors.Wrap(err, fmt.Sprintf("fsvc not found in cache: %v", fn.Metadata)) + err = errors.Wrap(err, fmt.Sprintf("fsvc not found in cache: %v", fn.ObjectMeta)) return err } @@ -725,8 +725,8 @@ func (deploy *NewDeploy) fnDelete(fn *fv1.Function) error { // to support backward compatibility, if the function was created in default ns, we fall back to creating the // deployment of the function in fission-function ns, so cleaning up resources there ns := deploy.namespace - if fn.Metadata.Namespace != metav1.NamespaceDefault { - ns = fn.Metadata.Namespace + if fn.ObjectMeta.Namespace != metav1.NamespaceDefault { + ns = fn.ObjectMeta.Namespace } err = deploy.cleanupNewdeploy(ns, objName) @@ -738,8 +738,8 @@ func (deploy *NewDeploy) fnDelete(fn *fv1.Function) error { // getObjName returns a unique name for kubernetes objects of function func (deploy *NewDeploy) getObjName(fn *fv1.Function) string { // use meta uuid of function, this ensure we always get the same name for the same function. - uid := fn.Metadata.UID[len(fn.Metadata.UID)-17:] - return strings.ToLower(fmt.Sprintf("newdeploy-%v-%v-%v", fn.Metadata.Name, fn.Metadata.Namespace, uid)) + uid := fn.ObjectMeta.UID[len(fn.ObjectMeta.UID)-17:] + return strings.ToLower(fmt.Sprintf("newdeploy-%v-%v-%v", fn.ObjectMeta.Name, fn.ObjectMeta.Namespace, uid)) } func (deploy *NewDeploy) getDeployLabels(fnMeta metav1.ObjectMeta, envMeta metav1.ObjectMeta) map[string]string { @@ -774,14 +774,14 @@ func (deploy *NewDeploy) idleObjectReaper() { for { time.Sleep(pollSleep) - envs, err := deploy.fissionClient.Environments(metav1.NamespaceAll).List(metav1.ListOptions{}) + envs, err := deploy.fissionClient.V1().Environments(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { deploy.logger.Fatal("failed to get environment list", zap.Error(err)) } envList := make(map[k8sTypes.UID]struct{}) for _, env := range envs.Items { - envList[env.Metadata.UID] = struct{}{} + envList[env.ObjectMeta.UID] = struct{}{} } funcSvcs, err := deploy.fsCache.ListOld(deploy.idlePodReapTime) @@ -797,13 +797,13 @@ func (deploy *NewDeploy) idleObjectReaper() { // For function with the environment that no longer exists, executor // scales down the deployment as usual and prints log to notify user. - if _, ok := envList[fsvc.Environment.Metadata.UID]; !ok { + if _, ok := envList[fsvc.Environment.ObjectMeta.UID]; !ok { deploy.logger.Error("function environment no longer exists", - zap.String("environment", fsvc.Environment.Metadata.Name), + zap.String("environment", fsvc.Environment.ObjectMeta.Name), zap.String("function", fsvc.Name)) } - fn, err := deploy.fissionClient.Functions(fsvc.Function.Namespace).Get(fsvc.Function.Name) + fn, err := deploy.fissionClient.V1().Functions(fsvc.Function.Namespace).Get(fsvc.Function.Name, metav1.GetOptions{}) if err != nil { // Newdeploy manager handles the function delete event and clean cache/kubeobjs itself, // so we ignore the not found error for functions with newdeploy executor type here. diff --git a/pkg/executor/executortype/poolmgr/funcwatcher.go b/pkg/executor/executortype/poolmgr/funcwatcher.go index 67554ad522..007c0f9717 100644 --- a/pkg/executor/executortype/poolmgr/funcwatcher.go +++ b/pkg/executor/executortype/poolmgr/funcwatcher.go @@ -44,7 +44,7 @@ func (gpm *GenericPoolManager) makeFuncController(fissionClient *crd.FissionClie kubernetesClient *kubernetes.Clientset, fissionfnNamespace string, istioEnabled bool) (k8sCache.Store, k8sCache.Controller) { resyncPeriod := 30 * time.Second - lw := k8sCache.NewListWatchFromClient(fissionClient.GetCrdClient(), "functions", metav1.NamespaceAll, fields.Everything()) + lw := k8sCache.NewListWatchFromClient(fissionClient.V1().RESTClient(), "functions", metav1.NamespaceAll, fields.Everything()) funcStore, controller := k8sCache.NewInformer(lw, &fv1.Function{}, resyncPeriod, k8sCache.ResourceEventHandlerFuncs{ @@ -74,33 +74,33 @@ func (gpm *GenericPoolManager) makeFuncController(fissionClient *crd.FissionClie // setup rolebinding is tried, if it fails, we dont return. we just log an error and move on, because : // 1. not all functions have secrets and/or configmaps, so things will work without this rolebinding in that case. // 2. on the contrary, when the route is tried, the env fetcher logs will show a 403 forbidden message and same will be relayed to executor. - err := utils.SetupRoleBinding(gpm.logger, kubernetesClient, types.SecretConfigMapGetterRB, fn.Metadata.Namespace, types.SecretConfigMapGetterCR, types.ClusterRole, types.FissionFetcherSA, envNs) + err := utils.SetupRoleBinding(gpm.logger, kubernetesClient, types.SecretConfigMapGetterRB, fn.ObjectMeta.Namespace, types.SecretConfigMapGetterCR, types.ClusterRole, types.FissionFetcherSA, envNs) if err != nil { gpm.logger.Error("error creating rolebinding", zap.Error(err), zap.String("role_binding", types.SecretConfigMapGetterRB)) } else { gpm.logger.Debug("successfully set up rolebinding for fetcher service account for function", zap.String("service_account", types.FissionFetcherSA), zap.String("service_account_namepsace", envNs), - zap.String("function_name", fn.Metadata.Name), - zap.String("function_namespace", fn.Metadata.Namespace)) + zap.String("function_name", fn.ObjectMeta.Name), + zap.String("function_namespace", fn.ObjectMeta.Namespace)) } if istioEnabled { // create a same name service for function // since istio only allows the traffic to service sel := map[string]string{ - "functionName": fn.Metadata.Name, - "functionUid": string(fn.Metadata.UID), + "functionName": fn.ObjectMeta.Name, + "functionUid": string(fn.ObjectMeta.UID), } - svcName := utils.GetFunctionIstioServiceName(fn.Metadata.Name, fn.Metadata.Namespace) + svcName := utils.GetFunctionIstioServiceName(fn.ObjectMeta.Name, fn.ObjectMeta.Namespace) // service for accepting user traffic svc := apiv1.Service{ ObjectMeta: metav1.ObjectMeta{ Namespace: envNs, Name: svcName, - Labels: getIstioServiceLabels(fn.Metadata.Name), + Labels: getIstioServiceLabels(fn.ObjectMeta.Name), }, Spec: apiv1.ServiceSpec{ Type: apiv1.ServiceTypeClusterIP, @@ -130,7 +130,7 @@ func (gpm *GenericPoolManager) makeFuncController(fissionClient *crd.FissionClie gpm.logger.Error("error creating istio service for function", zap.Error(err), zap.String("service_name", svcName), - zap.String("function_name", fn.Metadata.Name), + zap.String("function_name", fn.ObjectMeta.Name), zap.Any("selectors", sel)) } } @@ -150,14 +150,14 @@ func (gpm *GenericPoolManager) makeFuncController(fissionClient *crd.FissionClie } if istioEnabled { - svcName := utils.GetFunctionIstioServiceName(fn.Metadata.Name, fn.Metadata.Namespace) + svcName := utils.GetFunctionIstioServiceName(fn.ObjectMeta.Name, fn.ObjectMeta.Namespace) // delete function istio service err := kubernetesClient.CoreV1().Services(envNs).Delete(svcName, nil) if err != nil && !kerrors.IsNotFound(err) { gpm.logger.Error("error deleting istio service for function", zap.Error(err), zap.String("service_name", svcName), - zap.String("function_name", fn.Metadata.Name)) + zap.String("function_name", fn.ObjectMeta.Name)) } } @@ -167,7 +167,7 @@ func (gpm *GenericPoolManager) makeFuncController(fissionClient *crd.FissionClie oldFunc := oldObj.(*fv1.Function) newFunc := newObj.(*fv1.Function) - if oldFunc.Metadata.ResourceVersion == newFunc.Metadata.ResourceVersion { + if oldFunc.ObjectMeta.ResourceVersion == newFunc.ObjectMeta.ResourceVersion { return } @@ -188,7 +188,7 @@ func (gpm *GenericPoolManager) makeFuncController(fissionClient *crd.FissionClie } err := utils.SetupRoleBinding(gpm.logger, kubernetesClient, types.SecretConfigMapGetterRB, - newFunc.Metadata.Namespace, types.SecretConfigMapGetterCR, types.ClusterRole, + newFunc.ObjectMeta.Namespace, types.SecretConfigMapGetterCR, types.ClusterRole, types.FissionFetcherSA, envNs) if err != nil { @@ -197,8 +197,8 @@ func (gpm *GenericPoolManager) makeFuncController(fissionClient *crd.FissionClie gpm.logger.Debug("successfully set up rolebinding for fetcher service account for function", zap.String("service_account", types.FissionFetcherSA), zap.String("service_account_namepsace", envNs), - zap.String("function_name", newFunc.Metadata.Name), - zap.String("function_namespace", newFunc.Metadata.Namespace)) + zap.String("function_name", newFunc.ObjectMeta.Name), + zap.String("function_namespace", newFunc.ObjectMeta.Namespace)) } } }, diff --git a/pkg/executor/executortype/poolmgr/gp.go b/pkg/executor/executortype/poolmgr/gp.go index d4becfa9c8..a5c512a123 100644 --- a/pkg/executor/executortype/poolmgr/gp.go +++ b/pkg/executor/executortype/poolmgr/gp.go @@ -97,7 +97,7 @@ func MakeGenericPool( gpLogger := logger.Named("generic_pool") - gpLogger.Info("creating pool", zap.Any("environment", env.Metadata)) + gpLogger.Info("creating pool", zap.Any("environment", env.ObjectMeta)) ctx, stopCh := context.WithCancel(context.Background()) @@ -139,7 +139,7 @@ func MakeGenericPool( if err != nil { return nil, err } - gpLogger.Info("deployment created", zap.Any("environment", env.Metadata)) + gpLogger.Info("deployment created", zap.Any("environment", env.ObjectMeta)) go gp.choosePodService(ctx) @@ -149,9 +149,9 @@ func MakeGenericPool( func (gp *GenericPool) getEnvironmentPoolLabels() map[string]string { return map[string]string{ types.EXECUTOR_TYPE: string(fv1.ExecutorTypePoolmgr), - types.ENVIRONMENT_NAME: gp.env.Metadata.Name, - types.ENVIRONMENT_NAMESPACE: gp.env.Metadata.Namespace, - types.ENVIRONMENT_UID: string(gp.env.Metadata.UID), + types.ENVIRONMENT_NAME: gp.env.ObjectMeta.Name, + types.ENVIRONMENT_NAMESPACE: gp.env.ObjectMeta.Namespace, + types.ENVIRONMENT_UID: string(gp.env.ObjectMeta.UID), "managed": "true", // this allows us to easily find pods managed by the deployment } } @@ -321,17 +321,17 @@ func (gp *GenericPool) specializePod(ctx context.Context, pod *apiv1.Pod, fn *fv } // specialize pod with service if gp.useIstio { - svc := utils.GetFunctionIstioServiceName(fn.Metadata.Name, fn.Metadata.Namespace) + svc := utils.GetFunctionIstioServiceName(fn.ObjectMeta.Name, fn.ObjectMeta.Namespace) podIP = fmt.Sprintf("%v.%v", svc, gp.namespace) } // tell fetcher to get the function. fetcherUrl := gp.getFetcherUrl(podIP) - gp.logger.Info("calling fetcher to copy function", zap.String("function", fn.Metadata.Name), zap.String("url", fetcherUrl)) + gp.logger.Info("calling fetcher to copy function", zap.String("function", fn.ObjectMeta.Name), zap.String("url", fetcherUrl)) specializeReq := gp.fetcherConfig.NewSpecializeRequest(fn, gp.env) - gp.logger.Info("specializing pod", zap.String("function", fn.Metadata.Name)) + gp.logger.Info("specializing pod", zap.String("function", fn.ObjectMeta.Name)) // Fetcher will download user function to share volume of pod, and // invoke environment specialize api for pod specialization. @@ -345,7 +345,7 @@ func (gp *GenericPool) specializePod(ctx context.Context, pod *apiv1.Pod, fn *fv // getPoolName returns a unique name of an environment func (gp *GenericPool) getPoolName() string { - return strings.ToLower(fmt.Sprintf("poolmgr-%v-%v-%v", gp.env.Metadata.Name, gp.env.Metadata.Namespace, gp.env.Metadata.ResourceVersion)) + return strings.ToLower(fmt.Sprintf("poolmgr-%v-%v-%v", gp.env.ObjectMeta.Name, gp.env.ObjectMeta.Namespace, gp.env.ObjectMeta.ResourceVersion)) } // A pool is a deployment of generic containers for an env. This @@ -361,7 +361,7 @@ func (gp *GenericPool) createPool() error { gracePeriodSeconds = gp.env.Spec.TerminationGracePeriod } - podAnnotations := gp.env.Metadata.Annotations + podAnnotations := gp.env.ObjectMeta.Annotations if podAnnotations == nil { podAnnotations = make(map[string]string) } @@ -376,7 +376,7 @@ func (gp *GenericPool) createPool() error { } container, err := util.MergeContainer(&apiv1.Container{ - Name: gp.env.Metadata.Name, + Name: gp.env.ObjectMeta.Name, Image: gp.env.Spec.Runtime.Image, ImagePullPolicy: gp.runtimeImagePullPolicy, TerminationMessagePath: "/dev/termination-log", @@ -446,7 +446,7 @@ func (gp *GenericPool) createPool() error { } // Order of merging is important here - first fetcher, then containers and lastly pod spec - err = gp.fetcherConfig.AddFetcherToPodSpec(&deployment.Spec.Template.Spec, gp.env.Metadata.Name) + err = gp.fetcherConfig.AddFetcherToPodSpec(&deployment.Spec.Template.Spec, gp.env.ObjectMeta.Name) if err != nil { return err } @@ -549,8 +549,8 @@ func (gp *GenericPool) createSvc(name string, labels map[string]string) (*apiv1. } func (gp *GenericPool) getFuncSvc(ctx context.Context, fn *fv1.Function) (*fscache.FuncSvc, error) { - gp.logger.Info("choosing pod from pool", zap.Any("function", fn.Metadata)) - funcLabels := gp.labelsForFunction(&fn.Metadata) + gp.logger.Info("choosing pod from pool", zap.Any("function", fn.ObjectMeta)) + funcLabels := gp.labelsForFunction(&fn.ObjectMeta) if gp.useIstio { // Istio only allows accessing pod through k8s service, and requests come to @@ -576,8 +576,8 @@ func (gp *GenericPool) getFuncSvc(ctx context.Context, fn *fv1.Function) (*fscac // and make sure that there is only one pod behind the service sel := map[string]string{ - "functionName": fn.Metadata.Name, - "functionUid": string(fn.Metadata.UID), + "functionName": fn.ObjectMeta.Name, + "functionUid": string(fn.ObjectMeta.UID), } podList, err := gp.kubernetesClient.CoreV1().Pods(gp.namespace).List(metav1.ListOptions{ LabelSelector: labels.Set(sel).AsSelector().String(), @@ -603,13 +603,13 @@ func (gp *GenericPool) getFuncSvc(ctx context.Context, fn *fv1.Function) (*fscac gp.scheduleDeletePod(pod.ObjectMeta.Name) return nil, err } - gp.logger.Info("specialized pod", zap.String("pod", pod.ObjectMeta.Name), zap.Any("function", fn.Metadata)) + gp.logger.Info("specialized pod", zap.String("pod", pod.ObjectMeta.Name), zap.Any("function", fn.ObjectMeta)) var svcHost string if gp.useSvc && !gp.useIstio { - svcName := fmt.Sprintf("svc-%v", fn.Metadata.Name) - if len(fn.Metadata.UID) > 0 { - svcName = fmt.Sprintf("%s-%v", svcName, fn.Metadata.UID) + svcName := fmt.Sprintf("svc-%v", fn.ObjectMeta.Name) + if len(fn.ObjectMeta.UID) > 0 { + svcName = fmt.Sprintf("%s-%v", svcName, fn.ObjectMeta.UID) } svc, err := gp.createSvc(svcName, funcLabels) @@ -626,7 +626,7 @@ func (gp *GenericPool) getFuncSvc(ctx context.Context, fn *fv1.Function) (*fscac // namespace-qualified hostname svcHost = fmt.Sprintf("%v.%v:8888", svcName, gp.namespace) } else if gp.useIstio { - svc := utils.GetFunctionIstioServiceName(fn.Metadata.Name, fn.Metadata.Namespace) + svc := utils.GetFunctionIstioServiceName(fn.ObjectMeta.Name, fn.ObjectMeta.Namespace) svcHost = fmt.Sprintf("%v.%v:8888", svc, gp.namespace) } else { svcHost = fmt.Sprintf("%v:8888", pod.Status.PodIP) @@ -634,7 +634,7 @@ func (gp *GenericPool) getFuncSvc(ctx context.Context, fn *fv1.Function) (*fscac // patch svc-host and resource version to the pod annotations for new executor to adopt the pod patch := fmt.Sprintf(`{"metadata":{"annotations":{"%v":"%v","%v":"%v"}}}`, - types.ANNOTATION_SVC_HOST, svcHost, types.FUNCTION_RESOURCE_VERSION, fn.Metadata.ResourceVersion) + types.ANNOTATION_SVC_HOST, svcHost, types.FUNCTION_RESOURCE_VERSION, fn.ObjectMeta.ResourceVersion) p, err := gp.kubernetesClient.CoreV1().Pods(pod.Namespace).Patch(pod.Name, k8sTypes.StrategicMergePatchType, []byte(patch)) if err != nil { // just log the error since it won't affect the function serving @@ -647,8 +647,8 @@ func (gp *GenericPool) getFuncSvc(ctx context.Context, fn *fv1.Function) (*fscac gp.logger.Info("specialized pod", zap.String("pod", pod.ObjectMeta.Name), zap.String("podNamespace", pod.ObjectMeta.Namespace), - zap.String("function", fn.Metadata.Name), - zap.String("functionNamespace", fn.Metadata.Namespace), + zap.String("function", fn.ObjectMeta.Name), + zap.String("functionNamespace", fn.ObjectMeta.Namespace), zap.String("specialization_host", svcHost)) kubeObjRefs := []apiv1.ObjectReference{ @@ -662,7 +662,7 @@ func (gp *GenericPool) getFuncSvc(ctx context.Context, fn *fv1.Function) (*fscac }, } - m := fn.Metadata // only cache necessary part + m := fn.ObjectMeta // only cache necessary part fsvc := &fscache.FuncSvc{ Name: pod.ObjectMeta.Name, Function: &m, @@ -679,7 +679,7 @@ func (gp *GenericPool) getFuncSvc(ctx context.Context, fn *fv1.Function) (*fscac return nil, err } - gp.fsCache.IncreaseColdStarts(fn.Metadata.Name, string(fn.Metadata.UID)) + gp.fsCache.IncreaseColdStarts(fn.ObjectMeta.Name, string(fn.ObjectMeta.UID)) return fsvc, nil } diff --git a/pkg/executor/executortype/poolmgr/gpm.go b/pkg/executor/executortype/poolmgr/gpm.go index d5056a4230..d21cfff10c 100644 --- a/pkg/executor/executortype/poolmgr/gpm.go +++ b/pkg/executor/executortype/poolmgr/gpm.go @@ -147,7 +147,7 @@ func (gpm *GenericPoolManager) GetTypeName() fv1.ExecutorType { func (gpm *GenericPoolManager) GetFuncSvc(ctx context.Context, fn *fv1.Function) (*fscache.FuncSvc, error) { // from Func -> get Env - gpm.logger.Debug("getting environment for function", zap.String("function", fn.Metadata.Name)) + gpm.logger.Debug("getting environment for function", zap.String("function", fn.ObjectMeta.Name)) env, err := gpm.getFunctionEnv(fn) if err != nil { return nil, err @@ -160,12 +160,12 @@ func (gpm *GenericPoolManager) GetFuncSvc(ctx context.Context, fn *fv1.Function) // from GenericPool -> get one function container // (this also adds to the cache) - gpm.logger.Debug("getting function service from pool", zap.String("function", fn.Metadata.Name)) + gpm.logger.Debug("getting function service from pool", zap.String("function", fn.ObjectMeta.Name)) return pool.getFuncSvc(ctx, fn) } func (gpm *GenericPoolManager) GetFuncSvcFromCache(fn *fv1.Function) (*fscache.FuncSvc, error) { - return gpm.fsCache.GetByFunction(&fn.Metadata) + return gpm.fsCache.GetByFunction(&fn.ObjectMeta) } func (gpm *GenericPoolManager) DeleteFuncSvcFromCache(fsvc *fscache.FuncSvc) { @@ -208,7 +208,7 @@ func (gpm *GenericPoolManager) IsValid(fsvc *fscache.FuncSvc) bool { func (gpm *GenericPoolManager) RefreshFuncPods(logger *zap.Logger, f fv1.Function) error { - env, err := gpm.fissionClient.Environments(f.Spec.Environment.Namespace).Get(f.Spec.Environment.Name) + env, err := gpm.fissionClient.V1().Environments(f.Spec.Environment.Namespace).Get(f.Spec.Environment.Name, metav1.GetOptions{}) if err != nil { return err } @@ -218,14 +218,14 @@ func (gpm *GenericPoolManager) RefreshFuncPods(logger *zap.Logger, f fv1.Functio return err } - funcSvc, err := gp.fsCache.GetByFunction(&f.Metadata) + funcSvc, err := gp.fsCache.GetByFunction(&f.ObjectMeta) if err != nil { return err } gp.fsCache.DeleteEntry(funcSvc) - funcLabels := gp.labelsForFunction(&f.Metadata) + funcLabels := gp.labelsForFunction(&f.ObjectMeta) podList, err := gpm.kubernetesClient.CoreV1().Pods(metav1.NamespaceAll).List(metav1.ListOptions{ LabelSelector: labels.Set(funcLabels).AsSelector().String(), @@ -249,7 +249,7 @@ func (gpm *GenericPoolManager) RefreshFuncPods(logger *zap.Logger, f fv1.Functio } func (gpm *GenericPoolManager) AdoptExistingResources() { - envs, err := gpm.fissionClient.Environments(metav1.NamespaceAll).List(metav1.ListOptions{}) + envs, err := gpm.fissionClient.V1().Environments(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { gpm.logger.Error("error getting environment list", zap.Error(err)) return @@ -273,7 +273,7 @@ func (gpm *GenericPoolManager) AdoptExistingResources() { } // create environment map for later use - key := fmt.Sprintf("%v/%v", env.Metadata.Namespace, env.Metadata.Name) + key := fmt.Sprintf("%v/%v", env.ObjectMeta.Namespace, env.ObjectMeta.Name) envMap[key] = env } @@ -329,7 +329,7 @@ func (gpm *GenericPoolManager) AdoptExistingResources() { if !(ok1 && ok2 && ok3 && ok4 && ok5 && ok6 && ok7 && ok8) { gpm.logger.Warn("failed to adopt pod for function due to lack of necessary information", zap.String("pod", pod.Name), zap.Any("labels", pod.Labels), zap.Any("annotations", pod.Annotations), - zap.String("env", env.Metadata.Name)) + zap.String("env", env.ObjectMeta.Name)) return } @@ -408,7 +408,7 @@ func (gpm *GenericPoolManager) service() { case GET_POOL: // just because they are missing in the cache, we end up creating another duplicate pool. var err error - pool, ok := gpm.pools[crd.CacheKey(&req.env.Metadata)] + pool, ok := gpm.pools[crd.CacheKey(&req.env.ObjectMeta)] if !ok { poolsize := gpm.getEnvPoolsize(req.env) switch req.env.Spec.AllowedFunctionsPerContainer { @@ -419,8 +419,8 @@ func (gpm *GenericPoolManager) service() { // To support backward compatibility, if envs are created in default ns, we go ahead // and create pools in fission-function ns as earlier. ns := gpm.namespace - if req.env.Metadata.Namespace != metav1.NamespaceDefault { - ns = req.env.Metadata.Namespace + if req.env.ObjectMeta.Namespace != metav1.NamespaceDefault { + ns = req.env.ObjectMeta.Namespace } pool, err = MakeGenericPool(gpm.logger, @@ -430,20 +430,20 @@ func (gpm *GenericPoolManager) service() { req.responseChannel <- &response{error: err} continue } - gpm.pools[crd.CacheKey(&req.env.Metadata)] = pool + gpm.pools[crd.CacheKey(&req.env.ObjectMeta)] = pool } req.responseChannel <- &response{pool: pool} case CLEANUP_POOLS: latestEnvPoolsize := make(map[string]int) for _, env := range req.envList { - latestEnvPoolsize[crd.CacheKey(&env.Metadata)] = int(gpm.getEnvPoolsize(&env)) + latestEnvPoolsize[crd.CacheKey(&env.ObjectMeta)] = int(gpm.getEnvPoolsize(&env)) } for key, pool := range gpm.pools { poolsize, ok := latestEnvPoolsize[key] if !ok || poolsize == 0 { // Env no longer exists or pool size changed to zero - gpm.logger.Info("destroying generic pool", zap.Any("environment", pool.env.Metadata)) + gpm.logger.Info("destroying generic pool", zap.Any("environment", pool.env.ObjectMeta)) delete(gpm.pools, key) // and delete the pool asynchronously. @@ -478,20 +478,20 @@ func (gpm *GenericPoolManager) getFunctionEnv(fn *fv1.Function) (*fv1.Environmen // Cached ? // TODO: the cache should be able to search by instead of function metadata. - result, err := gpm.functionEnv.Get(crd.CacheKey(&fn.Metadata)) + result, err := gpm.functionEnv.Get(crd.CacheKey(&fn.ObjectMeta)) if err == nil { env = result.(*fv1.Environment) return env, nil } // Get env from controller - env, err = gpm.fissionClient.Environments(fn.Spec.Environment.Namespace).Get(fn.Spec.Environment.Name) + env, err = gpm.fissionClient.V1().Environments(fn.Spec.Environment.Namespace).Get(fn.Spec.Environment.Name, metav1.GetOptions{}) if err != nil { return nil, err } // cache for future lookups - m := fn.Metadata + m := fn.ObjectMeta gpm.functionEnv.Set(crd.CacheKey(&m), env) return env, nil @@ -501,7 +501,7 @@ func (gpm *GenericPoolManager) eagerPoolCreator() { pollSleep := 2 * time.Second for { // get list of envs from controller - envs, err := gpm.fissionClient.Environments(metav1.NamespaceAll).List(metav1.ListOptions{}) + envs, err := gpm.fissionClient.V1().Environments(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { if utils.IsNetworkError(err) { gpm.logger.Error("encountered network error, retrying", zap.Error(err)) @@ -558,14 +558,14 @@ func (gpm *GenericPoolManager) idleObjectReaper() { for { time.Sleep(pollSleep) - envs, err := gpm.fissionClient.Environments(metav1.NamespaceAll).List(metav1.ListOptions{}) + envs, err := gpm.fissionClient.V1().Environments(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { gpm.logger.Fatal("failed to get environment list", zap.Error(err)) } envList := make(map[k8sTypes.UID]struct{}) for _, env := range envs.Items { - envList[env.Metadata.UID] = struct{}{} + envList[env.ObjectMeta.UID] = struct{}{} } funcSvcs, err := gpm.fsCache.ListOld(gpm.idlePodReapTime) @@ -583,9 +583,9 @@ func (gpm *GenericPoolManager) idleObjectReaper() { // For function with the environment that no longer exists, executor // cleanups the idle pod as usual and prints log to notify user. - if _, ok := envList[fsvc.Environment.Metadata.UID]; !ok { + if _, ok := envList[fsvc.Environment.ObjectMeta.UID]; !ok { gpm.logger.Warn("function environment no longer exists", - zap.String("environment", fsvc.Environment.Metadata.Name), + zap.String("environment", fsvc.Environment.ObjectMeta.Name), zap.String("function", fsvc.Name)) } diff --git a/pkg/executor/executortype/poolmgr/packagewatcher.go b/pkg/executor/executortype/poolmgr/packagewatcher.go index e4c40530ef..db0ab20163 100644 --- a/pkg/executor/executortype/poolmgr/packagewatcher.go +++ b/pkg/executor/executortype/poolmgr/packagewatcher.go @@ -36,14 +36,14 @@ func (gpm *GenericPoolManager) makePkgController(fissionClient *crd.FissionClien kubernetesClient *kubernetes.Clientset, fissionfnNamespace string) (k8sCache.Store, k8sCache.Controller) { resyncPeriod := 30 * time.Second - lw := k8sCache.NewListWatchFromClient(fissionClient.GetCrdClient(), "packages", metav1.NamespaceAll, fields.Everything()) + lw := k8sCache.NewListWatchFromClient(fissionClient.V1().RESTClient(), "packages", metav1.NamespaceAll, fields.Everything()) pkgStore, controller := k8sCache.NewInformer(lw, &fv1.Package{}, resyncPeriod, k8sCache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { pkg := obj.(*fv1.Package) gpm.logger.Debug("list watch for package reported a new package addition", - zap.String("package_name", pkg.Metadata.Name), - zap.String("package_namespace", pkg.Metadata.Namespace)) + zap.String("package_name", pkg.ObjectMeta.Name), + zap.String("package_namespace", pkg.ObjectMeta.Namespace)) // create or update role-binding for fetcher sa in env ns to be able to get the pkg contents from pkg namespace envNs := fissionfnNamespace @@ -53,28 +53,28 @@ func (gpm *GenericPoolManager) makePkgController(fissionClient *crd.FissionClien // here, we return if we hit an error during rolebinding setup. this is because this rolebinding is mandatory for // every function's package to be loaded into its env. without that, there's no point to move forward. - err := utils.SetupRoleBinding(gpm.logger, kubernetesClient, types.PackageGetterRB, pkg.Metadata.Namespace, types.PackageGetterCR, types.ClusterRole, types.FissionFetcherSA, envNs) + err := utils.SetupRoleBinding(gpm.logger, kubernetesClient, types.PackageGetterRB, pkg.ObjectMeta.Namespace, types.PackageGetterCR, types.ClusterRole, types.FissionFetcherSA, envNs) if err != nil { gpm.logger.Error("error creating rolebinding for package", zap.Error(err), zap.String("role_binding", types.PackageGetterRB), - zap.String("package_name", pkg.Metadata.Name), - zap.String("package_namespace", pkg.Metadata.Namespace)) + zap.String("package_name", pkg.ObjectMeta.Name), + zap.String("package_namespace", pkg.ObjectMeta.Namespace)) return } gpm.logger.Debug("successfully set up rolebinding for fetcher service account", zap.String("service_account", types.FissionFetcherSA), zap.String("service_account_namespace", envNs), - zap.String("package_name", pkg.Metadata.Name), - zap.String("package_namespace", pkg.Metadata.Namespace)) + zap.String("package_name", pkg.ObjectMeta.Name), + zap.String("package_namespace", pkg.ObjectMeta.Namespace)) }, UpdateFunc: func(oldObj, newObj interface{}) { oldPkg := oldObj.(*fv1.Package) newPkg := newObj.(*fv1.Package) - if oldPkg.Metadata.ResourceVersion == newPkg.Metadata.ResourceVersion { + if oldPkg.ObjectMeta.ResourceVersion == newPkg.ObjectMeta.ResourceVersion { return } @@ -88,22 +88,22 @@ func (gpm *GenericPoolManager) makePkgController(fissionClient *crd.FissionClien } err := utils.SetupRoleBinding(gpm.logger, kubernetesClient, types.PackageGetterRB, - newPkg.Metadata.Namespace, types.PackageGetterCR, types.ClusterRole, + newPkg.ObjectMeta.Namespace, types.PackageGetterCR, types.ClusterRole, types.FissionFetcherSA, envNs) if err != nil { gpm.logger.Error("error updating rolebinding for package", zap.Error(err), zap.String("role_binding", types.PackageGetterRB), - zap.String("package_name", newPkg.Metadata.Name), - zap.String("package_namespace", newPkg.Metadata.Namespace)) + zap.String("package_name", newPkg.ObjectMeta.Name), + zap.String("package_namespace", newPkg.ObjectMeta.Namespace)) return } gpm.logger.Debug("successfully updated rolebinding for fetcher service account", zap.String("service_account", types.FissionFetcherSA), zap.String("service_account_namespace", envNs), - zap.String("package_name", newPkg.Metadata.Name), - zap.String("package_namespace", newPkg.Metadata.Namespace)) + zap.String("package_name", newPkg.ObjectMeta.Name), + zap.String("package_namespace", newPkg.ObjectMeta.Namespace)) } }, }) diff --git a/pkg/executor/fscache/functionServiceCache_test.go b/pkg/executor/fscache/functionServiceCache_test.go index e0211805c2..385c877411 100644 --- a/pkg/executor/fscache/functionServiceCache_test.go +++ b/pkg/executor/fscache/functionServiceCache_test.go @@ -51,7 +51,7 @@ func TestFunctionServiceCache(t *testing.T) { UID: "1212", }, Environment: &fv1.Environment{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo-env", UID: "2323", }, diff --git a/pkg/executor/reaper/reaper.go b/pkg/executor/reaper/reaper.go index a8f058a576..51e8d7ff93 100644 --- a/pkg/executor/reaper/reaper.go +++ b/pkg/executor/reaper/reaper.go @@ -205,7 +205,7 @@ func CleanupRoleBindings(logger *zap.Logger, client *kubernetes.Clientset, fissi // in order to find out if there are any functions that need this role-binding in role-binding namespace, // we can list the functions once per role-binding. - funcList, err := fissionClient.Functions(roleBinding.Namespace).List(meta_v1.ListOptions{}) + funcList, err := fissionClient.V1().Functions(roleBinding.Namespace).List(meta_v1.ListOptions{}) if err != nil { logger.Error("error fetching function list in namespace", zap.Error(err), zap.String("namespace", roleBinding.Namespace)) continue @@ -252,7 +252,7 @@ func CleanupRoleBindings(logger *zap.Logger, client *kubernetes.Clientset, fissi // else if its a secret-configmap-rb, we have only one SA which is fission-fetcher if roleBinding.Name == types.PackageGetterRB { // check if there is an env obj in saNs - envList, err := fissionClient.Environments(saNs).List(meta_v1.ListOptions{}) + envList, err := fissionClient.V1().Environments(saNs).List(meta_v1.ListOptions{}) if err != nil { logger.Error("error fetching environment list in service account namespace", zap.Error(err), zap.String("namespace", saNs)) continue diff --git a/pkg/fetcher/config/config.go b/pkg/fetcher/config/config.go index 5d239865bb..01360b918c 100644 --- a/pkg/fetcher/config/config.go +++ b/pkg/fetcher/config/config.go @@ -112,7 +112,7 @@ func (cfg *Config) NewSpecializeRequest(fn *fv1.Function, env *fv1.Environment) // path /userfunc/user targetFilename := "user" if env.Spec.Version >= 2 { - targetFilename = string(fn.Metadata.UID) + targetFilename = string(fn.ObjectMeta.UID) } return types.FunctionSpecializeRequest{ @@ -130,7 +130,7 @@ func (cfg *Config) NewSpecializeRequest(fn *fv1.Function, env *fv1.Environment) LoadReq: types.FunctionLoadRequest{ FilePath: filepath.Join(cfg.sharedMountPath, targetFilename), FunctionName: fn.Spec.Package.FunctionName, - FunctionMetadata: &fn.Metadata, + FunctionMetadata: &fn.ObjectMeta, EnvVersion: env.Spec.Version, }, } diff --git a/pkg/fetcher/fetcher.go b/pkg/fetcher/fetcher.go index 2391a24f98..d1049356db 100644 --- a/pkg/fetcher/fetcher.go +++ b/pkg/fetcher/fetcher.go @@ -247,10 +247,10 @@ func (fetcher *Fetcher) Fetch(ctx context.Context, pkg *fv1.Package, req types.F if pkg.Status.BuildStatus != types.BuildStatusSucceeded && pkg.Status.BuildStatus != types.BuildStatusNone { e := fmt.Sprintf("cannot fetch deployment: package build status was not %q", types.BuildStatusSucceeded) fetcher.logger.Error(e, - zap.String("package_name", pkg.Metadata.Name), - zap.String("package_namespace", pkg.Metadata.Namespace), + zap.String("package_name", pkg.ObjectMeta.Name), + zap.String("package_namespace", pkg.ObjectMeta.Namespace), zap.Any("package_build_status", pkg.Status.BuildStatus)) - return http.StatusInternalServerError, errors.New(fmt.Sprintf("%s: pkg %s.%s has a status of %s", e, pkg.Metadata.Name, pkg.Metadata.Namespace, pkg.Status.BuildStatus)) + return http.StatusInternalServerError, errors.New(fmt.Sprintf("%s: pkg %s.%s has a status of %s", e, pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace, pkg.Status.BuildStatus)) } archive = &pkg.Spec.Deployment } else { @@ -551,7 +551,7 @@ func (fetcher *Fetcher) unarchive(src string, dst string) error { func (fetcher *Fetcher) getPkgInformation(req types.FunctionFetchRequest) (pkg *fv1.Package, err error) { maxRetries := 5 for i := 0; i < maxRetries; i++ { - pkg, err = fetcher.fissionClient.Packages(req.Package.Namespace).Get(req.Package.Name) + pkg, err = fetcher.fissionClient.V1().Packages(req.Package.Namespace).Get(req.Package.Name, metav1.GetOptions{}) if err == nil { return pkg, nil } diff --git a/pkg/fission-cli/cmd/canaryconfig/create.go b/pkg/fission-cli/cmd/canaryconfig/create.go index 6a7570fb59..39905868bd 100644 --- a/pkg/fission-cli/cmd/canaryconfig/create.go +++ b/pkg/fission-cli/cmd/canaryconfig/create.go @@ -100,7 +100,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { // finally create canaryCfg in the same namespace as the functions referenced opts.canary = &fv1.CanaryConfig{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: fnNs, }, @@ -127,6 +127,6 @@ func (opts *CreateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "error creating canary config") } - fmt.Printf("canary config '%v' created\n", opts.canary.Metadata.Name) + fmt.Printf("canary config '%v' created\n", opts.canary.ObjectMeta.Name) return nil } diff --git a/pkg/fission-cli/cmd/canaryconfig/get.go b/pkg/fission-cli/cmd/canaryconfig/get.go index a85b7b658d..a54e3610da 100644 --- a/pkg/fission-cli/cmd/canaryconfig/get.go +++ b/pkg/fission-cli/cmd/canaryconfig/get.go @@ -49,7 +49,7 @@ func (opts *GetSubCommand) run(input cli.Input) error { w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0) fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", "NAME", "TRIGGER", "FUNCTION-N", "FUNCTION-N-1", "WEIGHT-INCREMENT", "INTERVAL", "FAILURE-THRESHOLD", "FAILURE-TYPE", "STATUS") fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", - canaryCfg.Metadata.Name, canaryCfg.Spec.Trigger, canaryCfg.Spec.NewFunction, canaryCfg.Spec.OldFunction, canaryCfg.Spec.WeightIncrement, canaryCfg.Spec.WeightIncrementDuration, + canaryCfg.ObjectMeta.Name, canaryCfg.Spec.Trigger, canaryCfg.Spec.NewFunction, canaryCfg.Spec.OldFunction, canaryCfg.Spec.WeightIncrement, canaryCfg.Spec.WeightIncrementDuration, canaryCfg.Spec.FailureThreshold, canaryCfg.Spec.FailureType, canaryCfg.Status.Status) w.Flush() diff --git a/pkg/fission-cli/cmd/canaryconfig/list.go b/pkg/fission-cli/cmd/canaryconfig/list.go index 1b35fe4b7c..2fe1d01b58 100644 --- a/pkg/fission-cli/cmd/canaryconfig/list.go +++ b/pkg/fission-cli/cmd/canaryconfig/list.go @@ -60,7 +60,7 @@ func (opts *ListSubCommand) run(input cli.Input) error { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", "NAME", "TRIGGER", "FUNCTION-N", "FUNCTION-N-1", "WEIGHT-INCREMENT", "INTERVAL", "FAILURE-THRESHOLD", "FAILURE-TYPE", "STATUS") for _, canaryCfg := range canaryCfgs { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", - canaryCfg.Metadata.Name, canaryCfg.Spec.Trigger, canaryCfg.Spec.NewFunction, canaryCfg.Spec.OldFunction, canaryCfg.Spec.WeightIncrement, canaryCfg.Spec.WeightIncrementDuration, + canaryCfg.ObjectMeta.Name, canaryCfg.Spec.Trigger, canaryCfg.Spec.NewFunction, canaryCfg.Spec.OldFunction, canaryCfg.Spec.WeightIncrement, canaryCfg.Spec.WeightIncrementDuration, canaryCfg.Spec.FailureThreshold, canaryCfg.Spec.FailureType, canaryCfg.Status.Status) } diff --git a/pkg/fission-cli/cmd/canaryconfig/update.go b/pkg/fission-cli/cmd/canaryconfig/update.go index eb1e779a58..a80a1219df 100644 --- a/pkg/fission-cli/cmd/canaryconfig/update.go +++ b/pkg/fission-cli/cmd/canaryconfig/update.go @@ -96,6 +96,6 @@ func (opts *UpdateSubCommand) run(input cli.Input) error { if err != nil { return errors.Wrap(err, "error updating canary config") } - fmt.Printf("canary config '%v' updated\n", opts.canary.Metadata.Name) + fmt.Printf("canary config '%v' updated\n", opts.canary.ObjectMeta.Name) return nil } diff --git a/pkg/fission-cli/cmd/environment/create.go b/pkg/fission-cli/cmd/environment/create.go index 0b9dd01fd7..01d061554f 100644 --- a/pkg/fission-cli/cmd/environment/create.go +++ b/pkg/fission-cli/cmd/environment/create.go @@ -63,7 +63,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { // run write the resource to a spec file or create a fission CRD with remote fission server. // It also prints warning/error if necessary. func (opts *CreateSubCommand) run(input cli.Input) error { - m := opts.env.Metadata + m := opts.env.ObjectMeta envList, err := opts.Client().V1().Environment().List(m.Namespace) if err != nil { @@ -145,7 +145,7 @@ func createEnvironmentFromCmd(input cli.Input) (*fv1.Environment, error) { Kind: fv1.CRD_NAME_ENVIRONMENT, APIVersion: fv1.CRD_VERSION, }, - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: envName, Namespace: envNamespace, }, diff --git a/pkg/fission-cli/cmd/environment/get.go b/pkg/fission-cli/cmd/environment/get.go index 31a76ac864..c4a3612d81 100644 --- a/pkg/fission-cli/cmd/environment/get.go +++ b/pkg/fission-cli/cmd/environment/get.go @@ -52,7 +52,7 @@ func (opts *GetSubCommand) do(input cli.Input) error { fmt.Fprintf(w, "%v\t%v\n", "NAME", "IMAGE") fmt.Fprintf(w, "%v\t%v\n", - env.Metadata.Name, env.Spec.Runtime.Image) + env.ObjectMeta.Name, env.Spec.Runtime.Image) w.Flush() return nil diff --git a/pkg/fission-cli/cmd/environment/list.go b/pkg/fission-cli/cmd/environment/list.go index 949e2bbde1..cf98ab1f98 100644 --- a/pkg/fission-cli/cmd/environment/list.go +++ b/pkg/fission-cli/cmd/environment/list.go @@ -46,7 +46,7 @@ func (opts *ListSubCommand) do(input cli.Input) error { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", "NAME", "IMAGE", "BUILDER_IMAGE", "POOLSIZE", "MINCPU", "MAXCPU", "MINMEMORY", "MAXMEMORY", "EXTNET", "GRACETIME") for _, env := range envs { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", - env.Metadata.Name, env.Spec.Runtime.Image, env.Spec.Builder.Image, env.Spec.Poolsize, + env.ObjectMeta.Name, env.Spec.Runtime.Image, env.Spec.Builder.Image, env.Spec.Poolsize, env.Spec.Resources.Requests.Cpu(), env.Spec.Resources.Limits.Cpu(), env.Spec.Resources.Requests.Memory(), env.Spec.Resources.Limits.Memory(), env.Spec.AllowAccessToExternalNetwork, env.Spec.TerminationGracePeriod) diff --git a/pkg/fission-cli/cmd/environment/update.go b/pkg/fission-cli/cmd/environment/update.go index 5709eb904b..67bb8cb0c4 100644 --- a/pkg/fission-cli/cmd/environment/update.go +++ b/pkg/fission-cli/cmd/environment/update.go @@ -71,7 +71,7 @@ func (opts *UpdateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "error updating environment") } - fmt.Printf("environment '%v' updated\n", opts.env.Metadata.Name) + fmt.Printf("environment '%v' updated\n", opts.env.ObjectMeta.Name) return nil } diff --git a/pkg/fission-cli/cmd/function/create.go b/pkg/fission-cli/cmd/function/create.go index 19adfa7767..6dd2f46047 100644 --- a/pkg/fission-cli/cmd/function/create.go +++ b/pkg/fission-cli/cmd/function/create.go @@ -120,7 +120,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { return errors.Wrap(err, fmt.Sprintf("error reading spec in '%v'", specDir)) } obj := fr.SpecExists(&fv1.Package{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: pkgName, Namespace: fnNamespace, }, @@ -129,7 +129,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { return errors.Errorf("please create package %v spec file before referencing it", pkgName) } pkg = obj.(*fv1.Package) - pkgMetadata = &pkg.Metadata + pkgMetadata = &pkg.ObjectMeta } else { // use existing package pkg, err = opts.Client().V1().Package().Get(&metav1.ObjectMeta{ @@ -139,7 +139,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { if err != nil { return errors.Wrap(err, fmt.Sprintf("read package in '%v' in Namespace: %s. Package needs to be present in the same namespace as function", pkgName, fnNamespace)) } - pkgMetadata = &pkg.Metadata + pkgMetadata = &pkg.ObjectMeta } envName = pkg.Spec.Environment.Name @@ -161,7 +161,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { return errors.Wrap(err, fmt.Sprintf("error reading spec in '%v'", specDir)) } exists, err := fr.ExistsInSpecs(fv1.Environment{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: envName, Namespace: envNamespace, }, @@ -269,7 +269,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { } opts.function = &fv1.Function{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: fnName, Namespace: fnNamespace, }, @@ -314,7 +314,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "error creating function") } - fmt.Printf("function '%v' created\n", opts.function.Metadata.Name) + fmt.Printf("function '%v' created\n", opts.function.ObjectMeta.Name) // Allow the user to specify an HTTP trigger while creating a function. triggerUrl := input.String(flagkey.HtUrl) @@ -332,16 +332,16 @@ func (opts *CreateSubCommand) run(input cli.Input) error { triggerName := uuid.NewV4().String() ht := &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: triggerName, - Namespace: opts.function.Metadata.Namespace, + Namespace: opts.function.ObjectMeta.Namespace, }, Spec: fv1.HTTPTriggerSpec{ RelativeURL: triggerUrl, Method: method, FunctionReference: fv1.FunctionReference{ Type: fv1.FunctionReferenceTypeFunctionName, - Name: opts.function.Metadata.Name, + Name: opts.function.ObjectMeta.Name, }, }, } @@ -350,7 +350,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "error creating HTTP trigger") } - fmt.Printf("route created: %v %v -> %v\n", method, triggerUrl, opts.function.Metadata.Name) + fmt.Printf("route created: %v %v -> %v\n", method, triggerUrl, opts.function.ObjectMeta.Name) return nil } diff --git a/pkg/fission-cli/cmd/function/getmeta.go b/pkg/fission-cli/cmd/function/getmeta.go index c1a375c7eb..e0f54d2ee5 100644 --- a/pkg/fission-cli/cmd/function/getmeta.go +++ b/pkg/fission-cli/cmd/function/getmeta.go @@ -48,7 +48,7 @@ func (opts *GetMetaSubCommand) do(input cli.Input) error { w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0) fmt.Fprintf(w, "%v\t%v\n", "NAME", "ENV") - fmt.Fprintf(w, "%v\t%v\n", fn.Metadata.Name, fn.Spec.Environment.Name) + fmt.Fprintf(w, "%v\t%v\n", fn.ObjectMeta.Name, fn.Spec.Environment.Name) w.Flush() return nil diff --git a/pkg/fission-cli/cmd/function/list.go b/pkg/fission-cli/cmd/function/list.go index d394e19e29..b9af9483da 100644 --- a/pkg/fission-cli/cmd/function/list.go +++ b/pkg/fission-cli/cmd/function/list.go @@ -60,7 +60,7 @@ func (opts *ListSubCommand) do(input cli.Input) error { } fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", - f.Metadata.Name, f.Spec.Environment.Name, + f.ObjectMeta.Name, f.Spec.Environment.Name, f.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType, f.Spec.InvokeStrategy.ExecutionStrategy.MinScale, f.Spec.InvokeStrategy.ExecutionStrategy.MaxScale, diff --git a/pkg/fission-cli/cmd/function/log.go b/pkg/fission-cli/cmd/function/log.go index e4625f7d96..da07a015f8 100644 --- a/pkg/fission-cli/cmd/function/log.go +++ b/pkg/fission-cli/cmd/function/log.go @@ -80,8 +80,8 @@ func (opts *LogSubCommand) do(input cli.Input) error { case <-requestChan: logFilter := logdb.LogFilter{ Pod: fnPod, - Function: f.Metadata.Name, - FuncUid: string(f.Metadata.UID), + Function: f.ObjectMeta.Name, + FuncUid: string(f.ObjectMeta.UID), Since: t, Reverse: logReverseQuery, RecordLimit: recordLimit, diff --git a/pkg/fission-cli/cmd/function/update.go b/pkg/fission-cli/cmd/function/update.go index 14384cf498..0b48dcf8a3 100644 --- a/pkg/fission-cli/cmd/function/update.go +++ b/pkg/fission-cli/cmd/function/update.go @@ -177,7 +177,7 @@ func (opts *UpdateSubCommand) complete(input cli.Input) error { forceUpdate := input.Bool(flagkey.PkgForce) - fnList, err := _package.GetFunctionsByPackage(opts.Client(), pkg.Metadata.Name, pkg.Metadata.Namespace) + fnList, err := _package.GetFunctionsByPackage(opts.Client(), pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace) if err != nil { return errors.Wrap(err, "error getting function list") } @@ -194,12 +194,12 @@ func (opts *UpdateSubCommand) complete(input cli.Input) error { // the package resource version of function has been changed, // we need to update function resource version to prevent conflict. // TODO: remove this block when deprecating pkg flags of function command. - if pkg.Metadata.ResourceVersion != newPkgMeta.ResourceVersion { + if pkg.ObjectMeta.ResourceVersion != newPkgMeta.ResourceVersion { var fns []fv1.Function // don't update the package resource version of the function we are currently // updating to prevent update conflict. for _, fn := range fnList { - if fn.Metadata.UID != function.Metadata.UID { + if fn.ObjectMeta.UID != function.ObjectMeta.UID { fns = append(fns, fn) } } @@ -236,6 +236,6 @@ func (opts *UpdateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "error updating function") } - fmt.Printf("Function '%v' updated\n", opts.function.Metadata.Name) + fmt.Printf("Function '%v' updated\n", opts.function.ObjectMeta.Name) return nil } diff --git a/pkg/fission-cli/cmd/httptrigger/create.go b/pkg/fission-cli/cmd/httptrigger/create.go index c4a4991a7f..7f9ba7937b 100644 --- a/pkg/fission-cli/cmd/httptrigger/create.go +++ b/pkg/fission-cli/cmd/httptrigger/create.go @@ -107,7 +107,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { } for _, fn := range functionList { exists, err := fr.ExistsInSpecs(fv1.Function{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: fn, Namespace: fnNamespace, }, @@ -138,7 +138,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { host := input.String(flagkey.HtHost) opts.trigger = &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: triggerName, Namespace: fnNamespace, }, @@ -158,7 +158,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { func (opts *CreateSubCommand) run(input cli.Input) error { // if we're writing a spec, don't call the API if input.Bool(flagkey.SpecSave) { - specFile := fmt.Sprintf("route-%v.yaml", opts.trigger.Metadata.Name) + specFile := fmt.Sprintf("route-%v.yaml", opts.trigger.ObjectMeta.Name) err := spec.SpecSave(*opts.trigger, specFile) if err != nil { return errors.Wrap(err, "error creating HTTP trigger spec") @@ -171,7 +171,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "create HTTP trigger") } - fmt.Printf("trigger '%v' created\n", opts.trigger.Metadata.Name) + fmt.Printf("trigger '%v' created\n", opts.trigger.ObjectMeta.Name) return nil } diff --git a/pkg/fission-cli/cmd/httptrigger/delete.go b/pkg/fission-cli/cmd/httptrigger/delete.go index c44f1ad9a2..a4a5d8574f 100644 --- a/pkg/fission-cli/cmd/httptrigger/delete.go +++ b/pkg/fission-cli/cmd/httptrigger/delete.go @@ -72,7 +72,7 @@ func (opts *DeleteSubCommand) run(input cli.Input) error { for _, trigger := range triggers { // TODO: delete canary http triggers as well. if trigger.Spec.FunctionReference.Name == opts.functionName { - triggersToDelete = append(triggersToDelete, trigger.Metadata.Name) + triggersToDelete = append(triggersToDelete, trigger.ObjectMeta.Name) } } } else { diff --git a/pkg/fission-cli/cmd/httptrigger/get.go b/pkg/fission-cli/cmd/httptrigger/get.go index 2d9bda2dcc..ea63f484f6 100644 --- a/pkg/fission-cli/cmd/httptrigger/get.go +++ b/pkg/fission-cli/cmd/httptrigger/get.go @@ -87,7 +87,7 @@ func printHtSummary(triggers []fv1.HTTPTrigger) { ann := strings.Join(msg, ", ") fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", - trigger.Metadata.Name, trigger.Spec.Method, trigger.Spec.RelativeURL, function, trigger.Spec.CreateIngress, host, path, trigger.Spec.IngressConfig.TLS, ann) + trigger.ObjectMeta.Name, trigger.Spec.Method, trigger.Spec.RelativeURL, function, trigger.Spec.CreateIngress, host, path, trigger.Spec.IngressConfig.TLS, ann) } w.Flush() } diff --git a/pkg/fission-cli/cmd/httptrigger/update.go b/pkg/fission-cli/cmd/httptrigger/update.go index 2cb44fca13..4a6fe985e0 100644 --- a/pkg/fission-cli/cmd/httptrigger/update.go +++ b/pkg/fission-cli/cmd/httptrigger/update.go @@ -117,6 +117,6 @@ func (opts *UpdateSubCommand) run(input cli.Input) error { if err != nil { return errors.Wrap(err, "error updating the HTTP trigger") } - fmt.Printf("trigger '%v' updated\n", opts.trigger.Metadata.Name) + fmt.Printf("trigger '%v' updated\n", opts.trigger.ObjectMeta.Name) return nil } diff --git a/pkg/fission-cli/cmd/kubewatch/create.go b/pkg/fission-cli/cmd/kubewatch/create.go index 04c3939b39..9029685966 100644 --- a/pkg/fission-cli/cmd/kubewatch/create.go +++ b/pkg/fission-cli/cmd/kubewatch/create.go @@ -68,7 +68,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { } exists, err := fr.ExistsInSpecs(fv1.Function{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: fnName, Namespace: fnNamespace, }, @@ -83,7 +83,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { } opts.watcher = &fv1.KubernetesWatchTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: watchName, Namespace: fnNamespace, }, @@ -104,7 +104,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { func (opts *CreateSubCommand) run(input cli.Input) error { // if we're writing a spec, don't call the API if input.Bool(flagkey.SpecSave) { - specFile := fmt.Sprintf("kubewatch-%v.yaml", opts.watcher.Metadata.Name) + specFile := fmt.Sprintf("kubewatch-%v.yaml", opts.watcher.ObjectMeta.Name) err := spec.SpecSave(*opts.watcher, specFile) if err != nil { return errors.Wrap(err, "error creating kubewatch spec") @@ -117,6 +117,6 @@ func (opts *CreateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "error creating kubewatch") } - fmt.Printf("trigger '%v' created\n", opts.watcher.Metadata.Name) + fmt.Printf("trigger '%v' created\n", opts.watcher.ObjectMeta.Name) return nil } diff --git a/pkg/fission-cli/cmd/kubewatch/list.go b/pkg/fission-cli/cmd/kubewatch/list.go index 09f9008638..65b5ed15df 100644 --- a/pkg/fission-cli/cmd/kubewatch/list.go +++ b/pkg/fission-cli/cmd/kubewatch/list.go @@ -62,7 +62,7 @@ func (opts *ListSubCommand) run(input cli.Input) error { "NAME", "NAMESPACE", "OBJTYPE", "LABELS", "FUNCTION_NAME") for _, wa := range ws { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\n", - wa.Metadata.Name, wa.Spec.Namespace, wa.Spec.Type, wa.Spec.LabelSelector, wa.Spec.FunctionReference.Name) + wa.ObjectMeta.Name, wa.Spec.Namespace, wa.Spec.Type, wa.Spec.LabelSelector, wa.Spec.FunctionReference.Name) } w.Flush() diff --git a/pkg/fission-cli/cmd/mqtrigger/create.go b/pkg/fission-cli/cmd/mqtrigger/create.go index 3bb64b6d08..59296ee117 100644 --- a/pkg/fission-cli/cmd/mqtrigger/create.go +++ b/pkg/fission-cli/cmd/mqtrigger/create.go @@ -110,7 +110,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { } exists, err := fr.ExistsInSpecs(fv1.Function{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: fnName, Namespace: fnNamespace, }, @@ -125,7 +125,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { } opts.trigger = &fv1.MessageQueueTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: mqtName, Namespace: fnNamespace, }, @@ -149,7 +149,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { func (opts *CreateSubCommand) run(input cli.Input) error { // if we're writing a spec, don't call the API if input.Bool(flagkey.SpecSave) { - specFile := fmt.Sprintf("mqtrigger-%v.yaml", opts.trigger.Metadata.Name) + specFile := fmt.Sprintf("mqtrigger-%v.yaml", opts.trigger.ObjectMeta.Name) err := spec.SpecSave(*opts.trigger, specFile) if err != nil { return errors.Wrap(err, "error creating message queue trigger spec") @@ -162,7 +162,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "create message queue trigger") } - fmt.Printf("trigger '%s' created\n", opts.trigger.Metadata.Name) + fmt.Printf("trigger '%s' created\n", opts.trigger.ObjectMeta.Name) return nil } diff --git a/pkg/fission-cli/cmd/mqtrigger/list.go b/pkg/fission-cli/cmd/mqtrigger/list.go index 3d361008e8..ec7f68f249 100644 --- a/pkg/fission-cli/cmd/mqtrigger/list.go +++ b/pkg/fission-cli/cmd/mqtrigger/list.go @@ -62,7 +62,7 @@ func (opts *ListSubCommand) run(input cli.Input) error { "NAME", "FUNCTION_NAME", "MESSAGE_QUEUE_TYPE", "TOPIC", "RESPONSE_TOPIC", "ERROR_TOPIC", "MAX_RETRIES", "PUB_MSG_CONTENT_TYPE") for _, mqt := range mqts { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", - mqt.Metadata.Name, mqt.Spec.FunctionReference.Name, mqt.Spec.MessageQueueType, mqt.Spec.Topic, mqt.Spec.ResponseTopic, mqt.Spec.ErrorTopic, mqt.Spec.MaxRetries, mqt.Spec.ContentType) + mqt.ObjectMeta.Name, mqt.Spec.FunctionReference.Name, mqt.Spec.MessageQueueType, mqt.Spec.Topic, mqt.Spec.ResponseTopic, mqt.Spec.ErrorTopic, mqt.Spec.MaxRetries, mqt.Spec.ContentType) } w.Flush() diff --git a/pkg/fission-cli/cmd/mqtrigger/update.go b/pkg/fission-cli/cmd/mqtrigger/update.go index 5bdeb33361..d6d9f44f20 100644 --- a/pkg/fission-cli/cmd/mqtrigger/update.go +++ b/pkg/fission-cli/cmd/mqtrigger/update.go @@ -108,6 +108,6 @@ func (opts *UpdateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "error updating message queue trigger") } - fmt.Printf("message queue trigger '%v' updated\n", opts.trigger.Metadata.Name) + fmt.Printf("message queue trigger '%v' updated\n", opts.trigger.ObjectMeta.Name) return nil } diff --git a/pkg/fission-cli/cmd/package/create.go b/pkg/fission-cli/cmd/package/create.go index 10ab503c81..a76ec683d2 100644 --- a/pkg/fission-cli/cmd/package/create.go +++ b/pkg/fission-cli/cmd/package/create.go @@ -91,7 +91,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error { return errors.Wrap(err, fmt.Sprintf("error reading spec in '%v'", specDir)) } exists, err := fr.ExistsInSpecs(fv1.Environment{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: envName, Namespace: envNamespace, }, @@ -164,14 +164,14 @@ func CreatePackage(input cli.Input, client client.Interface, pkgName string, pkg } pkg := &fv1.Package{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: pkgName, Namespace: pkgNamespace, }, Spec: pkgSpec, Status: fv1.PackageStatus{ BuildStatus: pkgStatus, - LastUpdateTimestamp: time.Now().UTC(), + LastUpdateTimestamp: metav1.Time{Time: time.Now().UTC()}, }, } @@ -185,15 +185,15 @@ func CreatePackage(input cli.Input, client client.Interface, pkgName string, pkg obj := fr.SpecExists(pkg, true, true) if obj != nil { pkg := obj.(*fv1.Package) - fmt.Printf("Re-using previously created package %v\n", pkg.Metadata.Name) - return &pkg.Metadata, nil + fmt.Printf("Re-using previously created package %v\n", pkg.ObjectMeta.Name) + return &pkg.ObjectMeta, nil } err = spec.SpecSave(*pkg, specFile) if err != nil { return nil, errors.Wrap(err, "error saving package spec") } - return &pkg.Metadata, nil + return &pkg.ObjectMeta, nil } else { pkgMetadata, err := client.V1().Package().Create(pkg) if err != nil { diff --git a/pkg/fission-cli/cmd/package/delete.go b/pkg/fission-cli/cmd/package/delete.go index e81a0b73c6..d68910e232 100644 --- a/pkg/fission-cli/cmd/package/delete.go +++ b/pkg/fission-cli/cmd/package/delete.go @@ -106,12 +106,12 @@ func deleteOrphanPkgs(client client.Interface, pkgNamespace string) error { // range through all packages and find out the ones not referenced by any function for _, pkg := range pkgList { - fnList, err := GetFunctionsByPackage(client, pkg.Metadata.Name, pkgNamespace) + fnList, err := GetFunctionsByPackage(client, pkg.ObjectMeta.Name, pkgNamespace) if err != nil { - return errors.Wrap(err, fmt.Sprintf("get functions sharing package %s", pkg.Metadata.Name)) + return errors.Wrap(err, fmt.Sprintf("get functions sharing package %s", pkg.ObjectMeta.Name)) } if len(fnList) == 0 { - err = deletePackage(client, pkg.Metadata.Name, pkgNamespace) + err = deletePackage(client, pkg.ObjectMeta.Name, pkgNamespace) if err != nil { return err } diff --git a/pkg/fission-cli/cmd/package/list.go b/pkg/fission-cli/cmd/package/list.go index 41ee0d4e86..b900bdec68 100644 --- a/pkg/fission-cli/cmd/package/list.go +++ b/pkg/fission-cli/cmd/package/list.go @@ -65,7 +65,7 @@ func (opts *ListSubCommand) run(input cli.Input) error { // sort the package list by lastUpdatedTimestamp sort.Slice(pkgList, func(i, j int) bool { - return pkgList[i].Status.LastUpdateTimestamp.After(pkgList[j].Status.LastUpdateTimestamp) + return pkgList[i].Status.LastUpdateTimestamp.After(pkgList[j].Status.LastUpdateTimestamp.Time) }) w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0) @@ -75,9 +75,9 @@ func (opts *ListSubCommand) run(input cli.Input) error { show := true // TODO improve list speed when --orphan if opts.listOrphans { - fnList, err := GetFunctionsByPackage(opts.Client(), pkg.Metadata.Name, pkg.Metadata.Namespace) + fnList, err := GetFunctionsByPackage(opts.Client(), pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace) if err != nil { - return errors.Wrap(err, fmt.Sprintf("get functions sharing package %s", pkg.Metadata.Name)) + return errors.Wrap(err, fmt.Sprintf("get functions sharing package %s", pkg.ObjectMeta.Name)) } if len(fnList) > 0 { show = false @@ -87,7 +87,7 @@ func (opts *ListSubCommand) run(input cli.Input) error { show = false } if show { - fmt.Fprintf(w, "%v\t%v\t%v\t%v\n", pkg.Metadata.Name, pkg.Status.BuildStatus, pkg.Spec.Environment.Name, pkg.Status.LastUpdateTimestamp.Format(time.RFC822)) + fmt.Fprintf(w, "%v\t%v\t%v\t%v\n", pkg.ObjectMeta.Name, pkg.Status.BuildStatus, pkg.Spec.Environment.Name, pkg.Status.LastUpdateTimestamp.Format(time.RFC822)) } } diff --git a/pkg/fission-cli/cmd/package/rebuild.go b/pkg/fission-cli/cmd/package/rebuild.go index 0e245ff098..6339b8a8da 100644 --- a/pkg/fission-cli/cmd/package/rebuild.go +++ b/pkg/fission-cli/cmd/package/rebuild.go @@ -63,7 +63,7 @@ func (opts *RebuildSubCommand) run(input cli.Input) error { if pkg.Status.BuildStatus != fv1.BuildStatusFailed { return errors.New(fmt.Sprintf("Package %v is not in %v state.", - pkg.Metadata.Name, fv1.BuildStatusFailed)) + pkg.ObjectMeta.Name, fv1.BuildStatusFailed)) } _, err = updatePackageStatus(opts.Client(), pkg, fv1.BuildStatusPending) @@ -71,7 +71,7 @@ func (opts *RebuildSubCommand) run(input cli.Input) error { return errors.Wrap(err, "update package status") } - fmt.Printf("Retrying build for pkg %v. Use \"fission pkg info --name %v\" to view status.\n", pkg.Metadata.Name, pkg.Metadata.Name) + fmt.Printf("Retrying build for pkg %v. Use \"fission pkg info --name %v\" to view status.\n", pkg.ObjectMeta.Name, pkg.ObjectMeta.Name) return nil } diff --git a/pkg/fission-cli/cmd/package/update.go b/pkg/fission-cli/cmd/package/update.go index 306a3d703b..83367b224f 100644 --- a/pkg/fission-cli/cmd/package/update.go +++ b/pkg/fission-cli/cmd/package/update.go @@ -68,7 +68,7 @@ func (opts *UpdateSubCommand) run(input cli.Input) error { forceUpdate := input.Bool(flagkey.PkgForce) - fnList, err := GetFunctionsByPackage(opts.Client(), pkg.Metadata.Name, pkg.Metadata.Namespace) + fnList, err := GetFunctionsByPackage(opts.Client(), pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace) if err != nil { return errors.Wrap(err, "error getting function list") } @@ -82,7 +82,7 @@ func (opts *UpdateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "error updating package") } - if pkg.Metadata.ResourceVersion != newPkgMeta.ResourceVersion { + if pkg.ObjectMeta.ResourceVersion != newPkgMeta.ResourceVersion { err = UpdateFunctionPackageResourceVersion(opts.Client(), newPkgMeta, fnList...) if err != nil { return errors.Wrap(err, "error updating function package reference resource version") @@ -166,7 +166,7 @@ func UpdatePackage(input cli.Input, client client.Interface, pkg *fv1.Package) ( } if !needToUpdate { - return &pkg.Metadata, nil + return &pkg.ObjectMeta, nil } // Set package as pending status when needToBuild is true @@ -174,7 +174,7 @@ func UpdatePackage(input cli.Input, client client.Interface, pkg *fv1.Package) ( // change into pending state to trigger package build pkg.Status = fv1.PackageStatus{ BuildStatus: fv1.BuildStatusPending, - LastUpdateTimestamp: time.Now().UTC(), + LastUpdateTimestamp: metav1.Time{Time: time.Now().UTC()}, } } @@ -196,7 +196,7 @@ func UpdateFunctionPackageResourceVersion(client client.Interface, pkgMeta *meta fn.Spec.Package.PackageRef.ResourceVersion = pkgMeta.ResourceVersion _, err := client.V1().Function().Update(&fn) if err != nil { - errs = multierror.Append(errs, errors.Wrapf(err, "error updating package resource version of function '%v'", fn.Metadata.Name)) + errs = multierror.Append(errs, errors.Wrapf(err, "error updating package resource version of function '%v'", fn.ObjectMeta.Name)) } } @@ -208,7 +208,7 @@ func updatePackageStatus(client client.Interface, pkg *fv1.Package, status fv1.B case fv1.BuildStatusNone, fv1.BuildStatusPending, fv1.BuildStatusRunning, fv1.BuildStatusSucceeded, fv1.CanaryConfigStatusAborted: pkg.Status = fv1.PackageStatus{ BuildStatus: status, - LastUpdateTimestamp: time.Now().UTC(), + LastUpdateTimestamp: metav1.Time{Time: time.Now().UTC()}, } pkg, err := client.V1().Package().Update(pkg) return pkg, err diff --git a/pkg/fission-cli/cmd/package/util/util.go b/pkg/fission-cli/cmd/package/util/util.go index dc211a2d40..d2aefeb053 100644 --- a/pkg/fission-cli/cmd/package/util/util.go +++ b/pkg/fission-cli/cmd/package/util/util.go @@ -182,7 +182,7 @@ func PrintPackageSummary(writer io.Writer, pkg *fv1.Package) { // replace escaped line breaker character buildlog := strings.ReplaceAll(pkg.Status.BuildLog, `\n`, "\n") w := tabwriter.NewWriter(writer, 0, 0, 1, ' ', 0) - fmt.Fprintf(w, "%v\t%v\n", "Name:", pkg.Metadata.Name) + fmt.Fprintf(w, "%v\t%v\n", "Name:", pkg.ObjectMeta.Name) fmt.Fprintf(w, "%v\t%v\n", "Environment:", pkg.Spec.Environment.Name) fmt.Fprintf(w, "%v\t%v\n", "Status:", pkg.Status.BuildStatus) fmt.Fprintf(w, "%v\n%v", "Build Logs:", buildlog) diff --git a/pkg/fission-cli/cmd/package/util/util_test.go b/pkg/fission-cli/cmd/package/util/util_test.go index e7d08f79cc..3d97e2de6b 100644 --- a/pkg/fission-cli/cmd/package/util/util_test.go +++ b/pkg/fission-cli/cmd/package/util/util_test.go @@ -13,7 +13,7 @@ import ( func TestPrintPackageSummary(t *testing.T) { pkg := &fv1.Package{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foobar", Namespace: "dummy", }, diff --git a/pkg/fission-cli/cmd/spec/apply.go b/pkg/fission-cli/cmd/spec/apply.go index eb9a7f36b0..e6cd3e3232 100644 --- a/pkg/fission-cli/cmd/spec/apply.go +++ b/pkg/fission-cli/cmd/spec/apply.go @@ -367,7 +367,7 @@ func applyResources(fclient client.Interface, specDir string, fr *FissionResourc // that as an error, so that we encourage self-contained specs. // Is there a good use case for non-self contained specs? return nil, nil, errors.Errorf("function %v/%v references package %v/%v, which doesn't exist in the specs", - f.Metadata.Namespace, f.Metadata.Name, f.Spec.Package.PackageRef.Namespace, f.Spec.Package.PackageRef.Name) + f.ObjectMeta.Namespace, f.ObjectMeta.Name, f.Spec.Package.PackageRef.Namespace, f.Spec.Package.PackageRef.Name) } fr.Functions[i].Spec.Package.PackageRef.ResourceVersion = m.ResourceVersion } @@ -532,14 +532,14 @@ func waitForPackageBuild(fclient client.Interface, pkg *fv1.Package) (*fv1.Packa return pkg, nil } if time.Since(start) > 5*time.Minute { - return nil, errors.Errorf("package %v has been building for a while, giving up on waiting for it", pkg.Metadata.Name) + return nil, errors.Errorf("package %v has been building for a while, giving up on waiting for it", pkg.ObjectMeta.Name) } // TODO watch instead time.Sleep(time.Second) var err error - pkg, err = fclient.V1().Package().Get(&pkg.Metadata) + pkg, err = fclient.V1().Package().Get(&pkg.ObjectMeta) if err != nil { return nil, err } @@ -556,7 +556,7 @@ func applyPackages(fclient client.Interface, fr *FissionResources, delete bool) // filter objs := make([]fv1.Package, 0) for _, o := range allObjs { - if hasDeploymentConfig(&o.Metadata, fr) { + if hasDeploymentConfig(&o.ObjectMeta, fr) { objs = append(objs, o) } } @@ -564,7 +564,7 @@ func applyPackages(fclient client.Interface, fr *FissionResources, delete bool) // index existent := make(map[string]fv1.Package) for _, obj := range objs { - existent[mapKey(&obj.Metadata)] = obj + existent[mapKey(&obj.ObjectMeta)] = obj } metadataMap := make(map[string]metav1.ObjectMeta) @@ -576,13 +576,13 @@ func applyPackages(fclient client.Interface, fr *FissionResources, delete bool) // create or update desired state for _, o := range fr.Packages { // apply deploymentConfig so we can find our objects on future apply invocations - applyDeploymentConfig(&o.Metadata, fr) + applyDeploymentConfig(&o.ObjectMeta, fr) // index desired state - desired[mapKey(&o.Metadata)] = true + desired[mapKey(&o.ObjectMeta)] = true // exists? - existingObj, ok := existent[mapKey(&o.Metadata)] + existingObj, ok := existent[mapKey(&o.ObjectMeta)] if ok { // ok, a resource with the same name exists, is it the same? keep := false @@ -598,10 +598,10 @@ func applyPackages(fclient client.Interface, fr *FissionResources, delete bool) if keep && existingObj.Status.BuildStatus == fv1.BuildStatusSucceeded { // nothing to do on the server - metadataMap[mapKey(&o.Metadata)] = existingObj.Metadata + metadataMap[mapKey(&o.ObjectMeta)] = existingObj.ObjectMeta } else { // update - o.Metadata.ResourceVersion = existingObj.Metadata.ResourceVersion + o.ObjectMeta.ResourceVersion = existingObj.ObjectMeta.ResourceVersion // We may be racing against the package builder to update the // package (a previous version might have been getting built). So, @@ -609,7 +609,7 @@ func applyPackages(fclient client.Interface, fr *FissionResources, delete bool) pkg, err := waitForPackageBuild(fclient, &o) if err != nil { // log and ignore - console.Warn(fmt.Sprintf("Error waiting for package '%v' build, ignoring", o.Metadata.Name)) + console.Warn(fmt.Sprintf("Error waiting for package '%v' build, ignoring", o.ObjectMeta.Name)) pkg = &o } @@ -625,7 +625,7 @@ func applyPackages(fclient client.Interface, fr *FissionResources, delete bool) } ras.Updated = append(ras.Updated, newmeta) // keep track of metadata in case we need to create a reference to it - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } else { // create @@ -634,7 +634,7 @@ func applyPackages(fclient client.Interface, fr *FissionResources, delete bool) return nil, nil, err } ras.Created = append(ras.Created, newmeta) - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } @@ -642,14 +642,14 @@ func applyPackages(fclient client.Interface, fr *FissionResources, delete bool) if delete { // objs is already filtered with our UID for _, o := range objs { - _, wanted := desired[mapKey(&o.Metadata)] + _, wanted := desired[mapKey(&o.ObjectMeta)] if !wanted { - err := fclient.V1().Package().Delete(&o.Metadata) + err := fclient.V1().Package().Delete(&o.ObjectMeta) if err != nil { return nil, nil, err } - ras.Deleted = append(ras.Deleted, &o.Metadata) - fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.Metadata.Namespace, o.Metadata.Name) + ras.Deleted = append(ras.Deleted, &o.ObjectMeta) + fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.ObjectMeta.Namespace, o.ObjectMeta.Name) } } } @@ -667,7 +667,7 @@ func applyFunctions(fclient client.Interface, fr *FissionResources, delete bool) // filter objs := make([]fv1.Function, 0) for _, o := range allObjs { - if hasDeploymentConfig(&o.Metadata, fr) { + if hasDeploymentConfig(&o.ObjectMeta, fr) { objs = append(objs, o) } } @@ -675,7 +675,7 @@ func applyFunctions(fclient client.Interface, fr *FissionResources, delete bool) // index existent := make(map[string]fv1.Function) for _, obj := range objs { - existent[mapKey(&obj.Metadata)] = obj + existent[mapKey(&obj.ObjectMeta)] = obj } metadataMap := make(map[string]metav1.ObjectMeta) @@ -687,28 +687,28 @@ func applyFunctions(fclient client.Interface, fr *FissionResources, delete bool) // create or update desired state for _, o := range fr.Functions { // apply deploymentConfig so we can find our objects on future apply invocations - applyDeploymentConfig(&o.Metadata, fr) + applyDeploymentConfig(&o.ObjectMeta, fr) // index desired state - desired[mapKey(&o.Metadata)] = true + desired[mapKey(&o.ObjectMeta)] = true // exists? - existingObj, ok := existent[mapKey(&o.Metadata)] + existingObj, ok := existent[mapKey(&o.ObjectMeta)] if ok { // ok, a resource with the same name exists, is it the same? if reflect.DeepEqual(existingObj.Spec, o.Spec) { // nothing to do on the server - metadataMap[mapKey(&o.Metadata)] = existingObj.Metadata + metadataMap[mapKey(&o.ObjectMeta)] = existingObj.ObjectMeta } else { // update - o.Metadata.ResourceVersion = existingObj.Metadata.ResourceVersion + o.ObjectMeta.ResourceVersion = existingObj.ObjectMeta.ResourceVersion newmeta, err := fclient.V1().Function().Update(&o) if err != nil { return nil, nil, err } ras.Updated = append(ras.Updated, newmeta) // keep track of metadata in case we need to create a reference to it - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } else { // create @@ -717,7 +717,7 @@ func applyFunctions(fclient client.Interface, fr *FissionResources, delete bool) return nil, nil, err } ras.Created = append(ras.Created, newmeta) - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } @@ -725,14 +725,14 @@ func applyFunctions(fclient client.Interface, fr *FissionResources, delete bool) if delete { // objs is already filtered with our UID for _, o := range objs { - _, wanted := desired[mapKey(&o.Metadata)] + _, wanted := desired[mapKey(&o.ObjectMeta)] if !wanted { - err := fclient.V1().Function().Delete(&o.Metadata) + err := fclient.V1().Function().Delete(&o.ObjectMeta) if err != nil { return nil, nil, err } - ras.Deleted = append(ras.Deleted, &o.Metadata) - fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.Metadata.Namespace, o.Metadata.Name) + ras.Deleted = append(ras.Deleted, &o.ObjectMeta) + fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.ObjectMeta.Namespace, o.ObjectMeta.Name) } } } @@ -750,7 +750,7 @@ func applyEnvironments(fclient client.Interface, fr *FissionResources, delete bo // filter objs := make([]fv1.Environment, 0) for _, o := range allObjs { - if hasDeploymentConfig(&o.Metadata, fr) { + if hasDeploymentConfig(&o.ObjectMeta, fr) { objs = append(objs, o) } } @@ -758,7 +758,7 @@ func applyEnvironments(fclient client.Interface, fr *FissionResources, delete bo // index existent := make(map[string]fv1.Environment) for _, obj := range objs { - existent[mapKey(&obj.Metadata)] = obj + existent[mapKey(&obj.ObjectMeta)] = obj } metadataMap := make(map[string]metav1.ObjectMeta) @@ -770,28 +770,28 @@ func applyEnvironments(fclient client.Interface, fr *FissionResources, delete bo // create or update desired state for _, o := range fr.Environments { // apply deploymentConfig so we can find our objects on future apply invocations - applyDeploymentConfig(&o.Metadata, fr) + applyDeploymentConfig(&o.ObjectMeta, fr) // index desired state - desired[mapKey(&o.Metadata)] = true + desired[mapKey(&o.ObjectMeta)] = true // exists? - existingObj, ok := existent[mapKey(&o.Metadata)] + existingObj, ok := existent[mapKey(&o.ObjectMeta)] if ok { // ok, a resource with the same name exists, is it the same? if reflect.DeepEqual(existingObj.Spec, o.Spec) { // nothing to do on the server - metadataMap[mapKey(&o.Metadata)] = existingObj.Metadata + metadataMap[mapKey(&o.ObjectMeta)] = existingObj.ObjectMeta } else { // update - o.Metadata.ResourceVersion = existingObj.Metadata.ResourceVersion + o.ObjectMeta.ResourceVersion = existingObj.ObjectMeta.ResourceVersion newmeta, err := fclient.V1().Environment().Update(&o) if err != nil { return nil, nil, err } ras.Updated = append(ras.Updated, newmeta) // keep track of metadata in case we need to create a reference to it - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } else { // create @@ -800,7 +800,7 @@ func applyEnvironments(fclient client.Interface, fr *FissionResources, delete bo return nil, nil, err } ras.Created = append(ras.Created, newmeta) - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } @@ -808,14 +808,14 @@ func applyEnvironments(fclient client.Interface, fr *FissionResources, delete bo if delete { // objs is already filtered with our UID for _, o := range objs { - _, wanted := desired[mapKey(&o.Metadata)] + _, wanted := desired[mapKey(&o.ObjectMeta)] if !wanted { - err := fclient.V1().Environment().Delete(&o.Metadata) + err := fclient.V1().Environment().Delete(&o.ObjectMeta) if err != nil { return nil, nil, err } - ras.Deleted = append(ras.Deleted, &o.Metadata) - fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.Metadata.Namespace, o.Metadata.Name) + ras.Deleted = append(ras.Deleted, &o.ObjectMeta) + fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.ObjectMeta.Namespace, o.ObjectMeta.Name) } } } @@ -833,7 +833,7 @@ func applyHTTPTriggers(fclient client.Interface, fr *FissionResources, delete bo // filter objs := make([]fv1.HTTPTrigger, 0) for _, o := range allObjs { - if hasDeploymentConfig(&o.Metadata, fr) { + if hasDeploymentConfig(&o.ObjectMeta, fr) { objs = append(objs, o) } } @@ -841,7 +841,7 @@ func applyHTTPTriggers(fclient client.Interface, fr *FissionResources, delete bo // index existent := make(map[string]fv1.HTTPTrigger) for _, obj := range objs { - existent[mapKey(&obj.Metadata)] = obj + existent[mapKey(&obj.ObjectMeta)] = obj } metadataMap := make(map[string]metav1.ObjectMeta) @@ -853,28 +853,28 @@ func applyHTTPTriggers(fclient client.Interface, fr *FissionResources, delete bo // create or update desired state for _, o := range fr.HttpTriggers { // apply deploymentConfig so we can find our objects on future apply invocations - applyDeploymentConfig(&o.Metadata, fr) + applyDeploymentConfig(&o.ObjectMeta, fr) // index desired state - desired[mapKey(&o.Metadata)] = true + desired[mapKey(&o.ObjectMeta)] = true // exists? - existingObj, ok := existent[mapKey(&o.Metadata)] + existingObj, ok := existent[mapKey(&o.ObjectMeta)] if ok { // ok, a resource with the same name exists, is it the same? if reflect.DeepEqual(existingObj.Spec, o.Spec) { // nothing to do on the server - metadataMap[mapKey(&o.Metadata)] = existingObj.Metadata + metadataMap[mapKey(&o.ObjectMeta)] = existingObj.ObjectMeta } else { // update - o.Metadata.ResourceVersion = existingObj.Metadata.ResourceVersion + o.ObjectMeta.ResourceVersion = existingObj.ObjectMeta.ResourceVersion newmeta, err := fclient.V1().HTTPTrigger().Update(&o) if err != nil { return nil, nil, err } ras.Updated = append(ras.Updated, newmeta) // keep track of metadata in case we need to create a reference to it - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } else { // create @@ -883,7 +883,7 @@ func applyHTTPTriggers(fclient client.Interface, fr *FissionResources, delete bo return nil, nil, err } ras.Created = append(ras.Created, newmeta) - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } @@ -891,14 +891,14 @@ func applyHTTPTriggers(fclient client.Interface, fr *FissionResources, delete bo if delete { // objs is already filtered with our UID for _, o := range objs { - _, wanted := desired[mapKey(&o.Metadata)] + _, wanted := desired[mapKey(&o.ObjectMeta)] if !wanted { - err := fclient.V1().HTTPTrigger().Delete(&o.Metadata) + err := fclient.V1().HTTPTrigger().Delete(&o.ObjectMeta) if err != nil { return nil, nil, err } - ras.Deleted = append(ras.Deleted, &o.Metadata) - fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.Metadata.Namespace, o.Metadata.Name) + ras.Deleted = append(ras.Deleted, &o.ObjectMeta) + fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.ObjectMeta.Namespace, o.ObjectMeta.Name) } } } @@ -916,7 +916,7 @@ func applyKubernetesWatchTriggers(fclient client.Interface, fr *FissionResources // filter objs := make([]fv1.KubernetesWatchTrigger, 0) for _, o := range allObjs { - if hasDeploymentConfig(&o.Metadata, fr) { + if hasDeploymentConfig(&o.ObjectMeta, fr) { objs = append(objs, o) } } @@ -924,7 +924,7 @@ func applyKubernetesWatchTriggers(fclient client.Interface, fr *FissionResources // index existent := make(map[string]fv1.KubernetesWatchTrigger) for _, obj := range objs { - existent[mapKey(&obj.Metadata)] = obj + existent[mapKey(&obj.ObjectMeta)] = obj } metadataMap := make(map[string]metav1.ObjectMeta) @@ -936,28 +936,28 @@ func applyKubernetesWatchTriggers(fclient client.Interface, fr *FissionResources // create or update desired state for _, o := range fr.KubernetesWatchTriggers { // apply deploymentConfig so we can find our objects on future apply invocations - applyDeploymentConfig(&o.Metadata, fr) + applyDeploymentConfig(&o.ObjectMeta, fr) // index desired state - desired[mapKey(&o.Metadata)] = true + desired[mapKey(&o.ObjectMeta)] = true // exists? - existingObj, ok := existent[mapKey(&o.Metadata)] + existingObj, ok := existent[mapKey(&o.ObjectMeta)] if ok { // ok, a resource with the same name exists, is it the same? if reflect.DeepEqual(existingObj.Spec, o.Spec) { // nothing to do on the server - metadataMap[mapKey(&o.Metadata)] = existingObj.Metadata + metadataMap[mapKey(&o.ObjectMeta)] = existingObj.ObjectMeta } else { // update - o.Metadata.ResourceVersion = existingObj.Metadata.ResourceVersion + o.ObjectMeta.ResourceVersion = existingObj.ObjectMeta.ResourceVersion newmeta, err := fclient.V1().KubeWatcher().Update(&o) if err != nil { return nil, nil, err } ras.Updated = append(ras.Updated, newmeta) // keep track of metadata in case we need to create a reference to it - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } else { // create @@ -966,7 +966,7 @@ func applyKubernetesWatchTriggers(fclient client.Interface, fr *FissionResources return nil, nil, err } ras.Created = append(ras.Created, newmeta) - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } @@ -974,14 +974,14 @@ func applyKubernetesWatchTriggers(fclient client.Interface, fr *FissionResources if delete { // objs is already filtered with our UID for _, o := range objs { - _, wanted := desired[mapKey(&o.Metadata)] + _, wanted := desired[mapKey(&o.ObjectMeta)] if !wanted { - err := fclient.V1().KubeWatcher().Delete(&o.Metadata) + err := fclient.V1().KubeWatcher().Delete(&o.ObjectMeta) if err != nil { return nil, nil, err } - ras.Deleted = append(ras.Deleted, &o.Metadata) - fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.Metadata.Namespace, o.Metadata.Name) + ras.Deleted = append(ras.Deleted, &o.ObjectMeta) + fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.ObjectMeta.Namespace, o.ObjectMeta.Name) } } } @@ -999,7 +999,7 @@ func applyTimeTriggers(fclient client.Interface, fr *FissionResources, delete bo // filter objs := make([]fv1.TimeTrigger, 0) for _, o := range allObjs { - if hasDeploymentConfig(&o.Metadata, fr) { + if hasDeploymentConfig(&o.ObjectMeta, fr) { objs = append(objs, o) } } @@ -1007,7 +1007,7 @@ func applyTimeTriggers(fclient client.Interface, fr *FissionResources, delete bo // index existent := make(map[string]fv1.TimeTrigger) for _, obj := range objs { - existent[mapKey(&obj.Metadata)] = obj + existent[mapKey(&obj.ObjectMeta)] = obj } metadataMap := make(map[string]metav1.ObjectMeta) @@ -1019,28 +1019,28 @@ func applyTimeTriggers(fclient client.Interface, fr *FissionResources, delete bo // create or update desired state for _, o := range fr.TimeTriggers { // apply deploymentConfig so we can find our objects on future apply invocations - applyDeploymentConfig(&o.Metadata, fr) + applyDeploymentConfig(&o.ObjectMeta, fr) // index desired state - desired[mapKey(&o.Metadata)] = true + desired[mapKey(&o.ObjectMeta)] = true // exists? - existingObj, ok := existent[mapKey(&o.Metadata)] + existingObj, ok := existent[mapKey(&o.ObjectMeta)] if ok { // ok, a resource with the same name exists, is it the same? if reflect.DeepEqual(existingObj.Spec, o.Spec) { // nothing to do on the server - metadataMap[mapKey(&o.Metadata)] = existingObj.Metadata + metadataMap[mapKey(&o.ObjectMeta)] = existingObj.ObjectMeta } else { // update - o.Metadata.ResourceVersion = existingObj.Metadata.ResourceVersion + o.ObjectMeta.ResourceVersion = existingObj.ObjectMeta.ResourceVersion newmeta, err := fclient.V1().TimeTrigger().Update(&o) if err != nil { return nil, nil, err } ras.Updated = append(ras.Updated, newmeta) // keep track of metadata in case we need to create a reference to it - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } else { // create @@ -1049,7 +1049,7 @@ func applyTimeTriggers(fclient client.Interface, fr *FissionResources, delete bo return nil, nil, err } ras.Created = append(ras.Created, newmeta) - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } @@ -1057,14 +1057,14 @@ func applyTimeTriggers(fclient client.Interface, fr *FissionResources, delete bo if delete { // objs is already filtered with our UID for _, o := range objs { - _, wanted := desired[mapKey(&o.Metadata)] + _, wanted := desired[mapKey(&o.ObjectMeta)] if !wanted { - err := fclient.V1().TimeTrigger().Delete(&o.Metadata) + err := fclient.V1().TimeTrigger().Delete(&o.ObjectMeta) if err != nil { return nil, nil, err } - ras.Deleted = append(ras.Deleted, &o.Metadata) - fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.Metadata.Namespace, o.Metadata.Name) + ras.Deleted = append(ras.Deleted, &o.ObjectMeta) + fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.ObjectMeta.Namespace, o.ObjectMeta.Name) } } } @@ -1082,7 +1082,7 @@ func applyMessageQueueTriggers(fclient client.Interface, fr *FissionResources, d // filter objs := make([]fv1.MessageQueueTrigger, 0) for _, o := range allObjs { - if hasDeploymentConfig(&o.Metadata, fr) { + if hasDeploymentConfig(&o.ObjectMeta, fr) { objs = append(objs, o) } } @@ -1090,7 +1090,7 @@ func applyMessageQueueTriggers(fclient client.Interface, fr *FissionResources, d // index existent := make(map[string]fv1.MessageQueueTrigger) for _, obj := range objs { - existent[mapKey(&obj.Metadata)] = obj + existent[mapKey(&obj.ObjectMeta)] = obj } metadataMap := make(map[string]metav1.ObjectMeta) @@ -1102,28 +1102,28 @@ func applyMessageQueueTriggers(fclient client.Interface, fr *FissionResources, d // create or update desired state for _, o := range fr.MessageQueueTriggers { // apply deploymentConfig so we can find our objects on future apply invocations - applyDeploymentConfig(&o.Metadata, fr) + applyDeploymentConfig(&o.ObjectMeta, fr) // index desired state - desired[mapKey(&o.Metadata)] = true + desired[mapKey(&o.ObjectMeta)] = true // exists? - existingObj, ok := existent[mapKey(&o.Metadata)] + existingObj, ok := existent[mapKey(&o.ObjectMeta)] if ok { // ok, a resource with the same name exists, is it the same? if reflect.DeepEqual(existingObj.Spec, o.Spec) { // nothing to do on the server - metadataMap[mapKey(&o.Metadata)] = existingObj.Metadata + metadataMap[mapKey(&o.ObjectMeta)] = existingObj.ObjectMeta } else { // update - o.Metadata.ResourceVersion = existingObj.Metadata.ResourceVersion + o.ObjectMeta.ResourceVersion = existingObj.ObjectMeta.ResourceVersion newmeta, err := fclient.V1().MessageQueueTrigger().Update(&o) if err != nil { return nil, nil, err } ras.Updated = append(ras.Updated, newmeta) // keep track of metadata in case we need to create a reference to it - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } else { // create @@ -1132,7 +1132,7 @@ func applyMessageQueueTriggers(fclient client.Interface, fr *FissionResources, d return nil, nil, err } ras.Created = append(ras.Created, newmeta) - metadataMap[mapKey(&o.Metadata)] = *newmeta + metadataMap[mapKey(&o.ObjectMeta)] = *newmeta } } @@ -1140,14 +1140,14 @@ func applyMessageQueueTriggers(fclient client.Interface, fr *FissionResources, d if delete { // objs is already filtered with our UID for _, o := range objs { - _, wanted := desired[mapKey(&o.Metadata)] + _, wanted := desired[mapKey(&o.ObjectMeta)] if !wanted { - err := fclient.V1().MessageQueueTrigger().Delete(&o.Metadata) + err := fclient.V1().MessageQueueTrigger().Delete(&o.ObjectMeta) if err != nil { return nil, nil, err } - ras.Deleted = append(ras.Deleted, &o.Metadata) - fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.Metadata.Namespace, o.Metadata.Name) + ras.Deleted = append(ras.Deleted, &o.ObjectMeta) + fmt.Printf("Deleted %v %v/%v\n", o.TypeMeta.Kind, o.ObjectMeta.Namespace, o.ObjectMeta.Name) } } } diff --git a/pkg/fission-cli/cmd/spec/buildwatch.go b/pkg/fission-cli/cmd/spec/buildwatch.go index a982829035..222b3610a2 100644 --- a/pkg/fission-cli/cmd/spec/buildwatch.go +++ b/pkg/fission-cli/cmd/spec/buildwatch.go @@ -79,7 +79,7 @@ func (w *packageBuildWatcher) watch(ctx context.Context) { keepWaiting := false buildpkgs := make([]fv1.Package, 0) for _, pkg := range pkgs { - _, ok := w.pkgMeta[mapKey(&pkg.Metadata)] + _, ok := w.pkgMeta[mapKey(&pkg.ObjectMeta)] if !ok { continue } @@ -118,5 +118,5 @@ func (w *packageBuildWatcher) watch(ctx context.Context) { func pkgKey(pkg *fv1.Package) string { // packages are mutable so we want to keep track of them by resource version - return fmt.Sprintf("%v:%v:%v", pkg.Metadata.Name, pkg.Metadata.Namespace, pkg.Metadata.ResourceVersion) + return fmt.Sprintf("%v:%v:%v", pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace, pkg.ObjectMeta.ResourceVersion) } diff --git a/pkg/fission-cli/cmd/spec/list.go b/pkg/fission-cli/cmd/spec/list.go index 733d5a4737..c1e3183bdf 100644 --- a/pkg/fission-cli/cmd/spec/list.go +++ b/pkg/fission-cli/cmd/spec/list.go @@ -121,7 +121,7 @@ func getAppliedFunctions(fns []fv1.Function, deployID string) []fv1.Function { var fnlist []fv1.Function if len(fns) > 0 { for _, f := range fns { - if f.Metadata.Annotations["fission-uid"] == deployID { + if f.ObjectMeta.Annotations["fission-uid"] == deployID { fnlist = append(fnlist, f) } } @@ -133,7 +133,7 @@ func getAppliedEnvironments(envs []fv1.Environment, deployID string) []fv1.Envir var envlist []fv1.Environment if len(envs) > 0 { for _, f := range envs { - if f.Metadata.Annotations["fission-uid"] == deployID { + if f.ObjectMeta.Annotations["fission-uid"] == deployID { envlist = append(envlist, f) } } @@ -145,7 +145,7 @@ func getAppliedPackages(pkgs []fv1.Package, deployID string) []fv1.Package { var pkglist []fv1.Package if len(pkgs) > 0 { for _, f := range pkgs { - if f.Metadata.Annotations["fission-uid"] == deployID { + if f.ObjectMeta.Annotations["fission-uid"] == deployID { pkglist = append(pkglist, f) } } @@ -156,7 +156,7 @@ func getAppliedCanaryConfigs(canaryCfgs []fv1.CanaryConfig, deployID string) []f var canaryConfiglist []fv1.CanaryConfig if len(canaryCfgs) > 0 { for _, f := range canaryCfgs { - if f.Metadata.Annotations["fission-uid"] == deployID { + if f.ObjectMeta.Annotations["fission-uid"] == deployID { canaryConfiglist = append(canaryConfiglist, f) } } @@ -168,7 +168,7 @@ func getAppliedHTTPTriggers(hts []fv1.HTTPTrigger, deployID string) []fv1.HTTPTr var httpTriggerlist []fv1.HTTPTrigger if len(hts) > 0 { for _, f := range hts { - if f.Metadata.Annotations["fission-uid"] == deployID { + if f.ObjectMeta.Annotations["fission-uid"] == deployID { httpTriggerlist = append(httpTriggerlist, f) } } @@ -181,7 +181,7 @@ func getAppliedMessageQueueTriggers(mqts []fv1.MessageQueueTrigger, deployID str var mqTriggerlist []fv1.MessageQueueTrigger if len(mqts) > 0 { for _, f := range mqts { - if f.Metadata.Annotations["fission-uid"] == deployID { + if f.ObjectMeta.Annotations["fission-uid"] == deployID { mqTriggerlist = append(mqTriggerlist, f) } } @@ -192,7 +192,7 @@ func getAppliedTimeTriggers(tts []fv1.TimeTrigger, deployID string) []fv1.TimeTr var timeTriggerlist []fv1.TimeTrigger if len(tts) > 0 { for _, f := range tts { - if f.Metadata.Annotations["fission-uid"] == deployID { + if f.ObjectMeta.Annotations["fission-uid"] == deployID { timeTriggerlist = append(timeTriggerlist, f) } } @@ -203,7 +203,7 @@ func getSpecKubeWatchers(ws []fv1.KubernetesWatchTrigger, deployID string) []fv1 var kubeWatchTriggerlist []fv1.KubernetesWatchTrigger if len(ws) > 0 { for _, f := range ws { - if f.Metadata.Annotations["fission-uid"] == deployID { + if f.ObjectMeta.Annotations["fission-uid"] == deployID { kubeWatchTriggerlist = append(kubeWatchTriggerlist, f) } } @@ -230,7 +230,7 @@ func ShowFunctions(fns []fv1.Function) { } fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", - f.Metadata.Name, f.Spec.Environment.Name, + f.ObjectMeta.Name, f.Spec.Environment.Name, f.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType, f.Spec.InvokeStrategy.ExecutionStrategy.MinScale, f.Spec.InvokeStrategy.ExecutionStrategy.MaxScale, @@ -255,7 +255,7 @@ func ShowEnvironments(envs []fv1.Environment) { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", "NAME", "IMAGE", "BUILDER_IMAGE", "POOLSIZE", "MINCPU", "MAXCPU", "MINMEMORY", "MAXMEMORY", "EXTNET", "GRACETIME") for _, env := range envs { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", - env.Metadata.Name, env.Spec.Runtime.Image, env.Spec.Builder.Image, env.Spec.Poolsize, + env.ObjectMeta.Name, env.Spec.Runtime.Image, env.Spec.Builder.Image, env.Spec.Poolsize, env.Spec.Resources.Requests.Cpu(), env.Spec.Resources.Limits.Cpu(), env.Spec.Resources.Requests.Memory(), env.Spec.Resources.Limits.Memory(), env.Spec.AllowAccessToExternalNetwork, env.Spec.TerminationGracePeriod) @@ -272,7 +272,7 @@ func ShowPackages(pkgList []fv1.Package) { fmt.Fprintf(w, "%v\n", "Packages:") fmt.Fprintf(w, "%v\t%v\t%v\t%v\n", "NAME", "BUILD_STATUS", "ENV", "LASTUPDATEDAT") for _, pkg := range pkgList { - fmt.Fprintf(w, "%v\t%v\t%v\t%v\n", pkg.Metadata.Name, pkg.Status.BuildStatus, pkg.Spec.Environment.Name, pkg.Status.LastUpdateTimestamp.Format(time.RFC822)) + fmt.Fprintf(w, "%v\t%v\t%v\t%v\n", pkg.ObjectMeta.Name, pkg.Status.BuildStatus, pkg.Spec.Environment.Name, pkg.Status.LastUpdateTimestamp.Format(time.RFC822)) } fmt.Fprintf(w, "\n") w.Flush() @@ -287,7 +287,7 @@ func ShowCanaryConfigs(canaryCfgs []fv1.CanaryConfig) { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", "NAME", "TRIGGER", "FUNCTION-N", "FUNCTION-N-1", "WEIGHT-INCREMENT", "INTERVAL", "FAILURE-THRESHOLD", "FAILURE-TYPE", "STATUS") for _, canaryCfg := range canaryCfgs { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", - canaryCfg.Metadata.Name, canaryCfg.Spec.Trigger, canaryCfg.Spec.NewFunction, canaryCfg.Spec.OldFunction, canaryCfg.Spec.WeightIncrement, canaryCfg.Spec.WeightIncrementDuration, + canaryCfg.ObjectMeta.Name, canaryCfg.Spec.Trigger, canaryCfg.Spec.NewFunction, canaryCfg.Spec.OldFunction, canaryCfg.Spec.WeightIncrement, canaryCfg.Spec.WeightIncrementDuration, canaryCfg.Spec.FailureThreshold, canaryCfg.Spec.FailureType, canaryCfg.Status.Status) } fmt.Fprintf(w, "\n") @@ -327,7 +327,7 @@ func ShowHTTPTriggers(hts []fv1.HTTPTrigger) { ann := strings.Join(msg, ", ") fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", - trigger.Metadata.Name, trigger.Spec.Method, trigger.Spec.RelativeURL, function, trigger.Spec.CreateIngress, host, path, trigger.Spec.IngressConfig.TLS, ann) + trigger.ObjectMeta.Name, trigger.Spec.Method, trigger.Spec.RelativeURL, function, trigger.Spec.CreateIngress, host, path, trigger.Spec.IngressConfig.TLS, ann) } fmt.Fprintf(w, "\n") w.Flush() @@ -342,7 +342,7 @@ func ShowMQTriggers(mqts []fv1.MessageQueueTrigger) { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", "NAME", "FUNCTION_NAME", "MESSAGE_QUEUE_TYPE", "TOPIC", "RESPONSE_TOPIC", "ERROR_TOPIC", "MAX_RETRIES", "PUB_MSG_CONTENT_TYPE") for _, mqt := range mqts { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\t%v\t%v\n", - mqt.Metadata.Name, mqt.Spec.FunctionReference.Name, mqt.Spec.MessageQueueType, mqt.Spec.Topic, mqt.Spec.ResponseTopic, mqt.Spec.ErrorTopic, mqt.Spec.MaxRetries, mqt.Spec.ContentType) + mqt.ObjectMeta.Name, mqt.Spec.FunctionReference.Name, mqt.Spec.MessageQueueType, mqt.Spec.Topic, mqt.Spec.ResponseTopic, mqt.Spec.ErrorTopic, mqt.Spec.MaxRetries, mqt.Spec.ContentType) } fmt.Fprintf(w, "\n") w.Flush() @@ -358,7 +358,7 @@ func ShowTimeTriggers(tts []fv1.TimeTrigger) { for _, tt := range tts { fmt.Fprintf(w, "%v\t%v\t%v\n", - tt.Metadata.Name, tt.Spec.Cron, tt.Spec.FunctionReference.Name) + tt.ObjectMeta.Name, tt.Spec.Cron, tt.Spec.FunctionReference.Name) } fmt.Fprintf(w, "\n") w.Flush() @@ -374,7 +374,7 @@ func ShowAppliedKubeWatchers(ws []fv1.KubernetesWatchTrigger) { for _, wa := range ws { fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\n", - wa.Metadata.Name, wa.Spec.Namespace, wa.Spec.Type, wa.Spec.LabelSelector, wa.Spec.FunctionReference.Name) + wa.ObjectMeta.Name, wa.Spec.Namespace, wa.Spec.Type, wa.Spec.LabelSelector, wa.Spec.FunctionReference.Name) } fmt.Fprintf(w, "\n") w.Flush() diff --git a/pkg/fission-cli/cmd/spec/spec.go b/pkg/fission-cli/cmd/spec/spec.go index 2918e31cb5..3a70ca44a0 100644 --- a/pkg/fission-cli/cmd/spec/spec.go +++ b/pkg/fission-cli/cmd/spec/spec.go @@ -182,43 +182,43 @@ func SpecSave(resource interface{}, specFile string) error { case fv1.Package: typedres.TypeMeta.APIVersion = fv1.CRD_VERSION typedres.TypeMeta.Kind = "Package" - meta = typedres.Metadata + meta = typedres.ObjectMeta kind = typedres.TypeMeta.Kind data, err = yaml.Marshal(typedres) case fv1.Function: typedres.TypeMeta.APIVersion = fv1.CRD_VERSION typedres.TypeMeta.Kind = "Function" - meta = typedres.Metadata + meta = typedres.ObjectMeta kind = typedres.TypeMeta.Kind data, err = yaml.Marshal(typedres) case fv1.Environment: typedres.TypeMeta.APIVersion = fv1.CRD_VERSION typedres.TypeMeta.Kind = "Environment" - meta = typedres.Metadata + meta = typedres.ObjectMeta kind = typedres.TypeMeta.Kind data, err = yaml.Marshal(typedres) case fv1.HTTPTrigger: typedres.TypeMeta.APIVersion = fv1.CRD_VERSION typedres.TypeMeta.Kind = "HTTPTrigger" - meta = typedres.Metadata + meta = typedres.ObjectMeta kind = typedres.TypeMeta.Kind data, err = yaml.Marshal(typedres) case fv1.KubernetesWatchTrigger: typedres.TypeMeta.APIVersion = fv1.CRD_VERSION typedres.TypeMeta.Kind = "KubernetesWatchTrigger" - meta = typedres.Metadata + meta = typedres.ObjectMeta kind = typedres.TypeMeta.Kind data, err = yaml.Marshal(typedres) case fv1.MessageQueueTrigger: typedres.TypeMeta.APIVersion = fv1.CRD_VERSION typedres.TypeMeta.Kind = "MessageQueueTrigger" - meta = typedres.Metadata + meta = typedres.ObjectMeta kind = typedres.TypeMeta.Kind data, err = yaml.Marshal(typedres) case fv1.TimeTrigger: typedres.TypeMeta.APIVersion = fv1.CRD_VERSION typedres.TypeMeta.Kind = "TimeTrigger" - meta = typedres.Metadata + meta = typedres.ObjectMeta kind = typedres.TypeMeta.Kind data, err = yaml.Marshal(typedres) default: @@ -297,7 +297,7 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) { // index packages, check outgoing refs, mark archives that are referenced packages := make(map[string]bool) for _, p := range fr.Packages { - packages[MapKey(&p.Metadata)] = false + packages[MapKey(&p.ObjectMeta)] = false as := map[string]string{ "source": p.Spec.Source.URL, @@ -311,8 +311,8 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) { if _, ok := archives[aname]; !ok { result = multierror.Append(result, fmt.Errorf( "%v: package '%v' references unknown %v archive '%v%v'", - fr.SourceMap.Locations["Package"][p.Metadata.Namespace][p.Metadata.Name], - p.Metadata.Name, + fr.SourceMap.Locations["Package"][p.ObjectMeta.Namespace][p.ObjectMeta.Name], + p.ObjectMeta.Name, archiveType, ARCHIVE_URL_PREFIX, aname)) @@ -339,7 +339,7 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) { // index functions, check function package refs, mark referenced packages functions := make(map[string]bool) for _, f := range fr.Functions { - functions[MapKey(&f.Metadata)] = false + functions[MapKey(&f.ObjectMeta)] = false pkgMeta := &metav1.ObjectMeta{ Name: f.Spec.Package.PackageRef.Name, @@ -354,21 +354,21 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) { // check that the package referenced by each function is in the same ns as the function packageRefInFuncNs := func(f *fv1.Function) bool { - return f.Spec.Package.PackageRef.Namespace == f.Metadata.Namespace + return f.Spec.Package.PackageRef.Namespace == f.ObjectMeta.Namespace } if !packageRefInFuncNs(&f) { result = multierror.Append(result, fmt.Errorf( "%v: function '%v' references a package outside of its namespace %v/%v", - fr.SourceMap.Locations["Function"][f.Metadata.Namespace][f.Metadata.Name], - f.Metadata.Name, + fr.SourceMap.Locations["Function"][f.ObjectMeta.Namespace][f.ObjectMeta.Name], + f.ObjectMeta.Name, f.Spec.Package.PackageRef.Namespace, f.Spec.Package.PackageRef.Name)) } else if !packageRefExists() { result = multierror.Append(result, fmt.Errorf( "%v: function '%v' references unknown package %v/%v", - fr.SourceMap.Locations["Function"][f.Metadata.Namespace][f.Metadata.Name], - f.Metadata.Name, + fr.SourceMap.Locations["Function"][f.ObjectMeta.Namespace][f.ObjectMeta.Name], + f.ObjectMeta.Name, pkgMeta.Namespace, pkgMeta.Name)) } else { @@ -415,7 +415,7 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) { // check function refs from triggers for _, t := range fr.HttpTriggers { - err := fr.validateFunctionReference(functions, t.Kind, &t.Metadata, t.Spec.FunctionReference) + err := fr.validateFunctionReference(functions, t.Kind, &t.ObjectMeta, t.Spec.FunctionReference) if err != nil { result = multierror.Append(result, err) } @@ -426,21 +426,21 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) { result = multierror.Append(result, t.Validate()) } for _, t := range fr.KubernetesWatchTriggers { - err := fr.validateFunctionReference(functions, t.Kind, &t.Metadata, t.Spec.FunctionReference) + err := fr.validateFunctionReference(functions, t.Kind, &t.ObjectMeta, t.Spec.FunctionReference) if err != nil { result = multierror.Append(result, err) } result = multierror.Append(result, t.Validate()) } for _, t := range fr.TimeTriggers { - err := fr.validateFunctionReference(functions, t.Kind, &t.Metadata, t.Spec.FunctionReference) + err := fr.validateFunctionReference(functions, t.Kind, &t.ObjectMeta, t.Spec.FunctionReference) if err != nil { result = multierror.Append(result, err) } result = multierror.Append(result, t.Validate()) } for _, t := range fr.MessageQueueTriggers { - err := fr.validateFunctionReference(functions, t.Kind, &t.Metadata, t.Spec.FunctionReference) + err := fr.validateFunctionReference(functions, t.Kind, &t.ObjectMeta, t.Spec.FunctionReference) if err != nil { result = multierror.Append(result, err) } @@ -453,7 +453,7 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) { // Index envs, warn on functions referencing an environment for which spes does not exist environments := make(map[string]struct{}) for _, e := range fr.Environments { - environments[fmt.Sprintf("%s:%s", e.Metadata.Name, e.Metadata.Namespace)] = struct{}{} + environments[fmt.Sprintf("%s:%s", e.ObjectMeta.Name, e.ObjectMeta.Namespace)] = struct{}{} if ((e.Spec.Runtime.Container != nil) && (e.Spec.Runtime.PodSpec != nil)) || ((e.Spec.Builder.Container != nil) && (e.Spec.Builder.PodSpec != nil)) { warnings = append(warnings, fmt.Sprintf("You have provided both - container spec and pod spec and while merging the pod spec will take precedence.")) } @@ -466,7 +466,7 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) { for _, f := range fr.Functions { if _, ok := environments[fmt.Sprintf("%s:%s", f.Spec.Environment.Name, f.Spec.Environment.Namespace)]; !ok { - warnings = append(warnings, fmt.Sprintf("Environment %s is referenced in function %s but not declared in specs", f.Spec.Environment.Name, f.Metadata.Name)) + warnings = append(warnings, fmt.Sprintf("Environment %s is referenced in function %s but not declared in specs", f.Spec.Environment.Name, f.ObjectMeta.Name)) } strategy := f.Spec.InvokeStrategy.ExecutionStrategy if strategy.ExecutorType == fv1.ExecutorTypeNewdeploy && strategy.SpecializationTimeout < fv1.DefaultSpecializationTimeOut { @@ -521,7 +521,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error { if err != nil { return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) } - m = &v.Metadata + m = &v.ObjectMeta fr.Packages = append(fr.Packages, v) case "Function": var v fv1.Function @@ -529,7 +529,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error { if err != nil { return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) } - m = &v.Metadata + m = &v.ObjectMeta fr.Functions = append(fr.Functions, v) case "Environment": var v fv1.Environment @@ -537,7 +537,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error { if err != nil { return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) } - m = &v.Metadata + m = &v.ObjectMeta fr.Environments = append(fr.Environments, v) case "HTTPTrigger": var v fv1.HTTPTrigger @@ -551,7 +551,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error { v.Spec.RelativeURL = fmt.Sprintf("/%s", v.Spec.RelativeURL) } - m = &v.Metadata + m = &v.ObjectMeta fr.HttpTriggers = append(fr.HttpTriggers, v) case "KubernetesWatchTrigger": var v fv1.KubernetesWatchTrigger @@ -559,7 +559,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error { if err != nil { return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) } - m = &v.Metadata + m = &v.ObjectMeta fr.KubernetesWatchTriggers = append(fr.KubernetesWatchTriggers, v) case "TimeTrigger": var v fv1.TimeTrigger @@ -567,7 +567,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error { if err != nil { return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) } - m = &v.Metadata + m = &v.ObjectMeta fr.TimeTriggers = append(fr.TimeTriggers, v) case "MessageQueueTrigger": var v fv1.MessageQueueTrigger @@ -575,7 +575,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error { if err != nil { return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) } - m = &v.Metadata + m = &v.ObjectMeta fr.MessageQueueTriggers = append(fr.MessageQueueTriggers, v) // The following are not CRDs @@ -637,7 +637,7 @@ func (fr *FissionResources) SpecExists(resource interface{}, compareMetadata boo return nil case *fv1.Package: for _, p := range fr.Packages { - if compareMetadata && !reflect.DeepEqual(p.Metadata, typedres.Metadata) { + if compareMetadata && !reflect.DeepEqual(p.ObjectMeta, typedres.ObjectMeta) { continue } if compareSpec && !reflect.DeepEqual(p.Spec, typedres.Spec) { @@ -663,50 +663,50 @@ func (fr *FissionResources) ExistsInSpecs(resource interface{}) (bool, error) { } case fv1.Package: for _, obj := range fr.Packages { - if obj.Metadata.Name == typedres.Metadata.Name && - obj.Metadata.Namespace == typedres.Metadata.Namespace { + if obj.ObjectMeta.Name == typedres.ObjectMeta.Name && + obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace { return true, nil } } case fv1.Function: for _, obj := range fr.Functions { - if obj.Metadata.Name == typedres.Metadata.Name && - obj.Metadata.Namespace == typedres.Metadata.Namespace { + if obj.ObjectMeta.Name == typedres.ObjectMeta.Name && + obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace { return true, nil } } case fv1.Environment: for _, obj := range fr.Environments { - if obj.Metadata.Name == typedres.Metadata.Name && - obj.Metadata.Namespace == typedres.Metadata.Namespace { + if obj.ObjectMeta.Name == typedres.ObjectMeta.Name && + obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace { return true, nil } } case fv1.HTTPTrigger: for _, obj := range fr.HttpTriggers { - if obj.Metadata.Name == typedres.Metadata.Name && - obj.Metadata.Namespace == typedres.Metadata.Namespace { + if obj.ObjectMeta.Name == typedres.ObjectMeta.Name && + obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace { return true, nil } } case fv1.KubernetesWatchTrigger: for _, obj := range fr.KubernetesWatchTriggers { - if obj.Metadata.Name == typedres.Metadata.Name && - obj.Metadata.Namespace == typedres.Metadata.Namespace { + if obj.ObjectMeta.Name == typedres.ObjectMeta.Name && + obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace { return true, nil } } case fv1.MessageQueueTrigger: for _, obj := range fr.MessageQueueTriggers { - if obj.Metadata.Name == typedres.Metadata.Name && - obj.Metadata.Namespace == typedres.Metadata.Namespace { + if obj.ObjectMeta.Name == typedres.ObjectMeta.Name && + obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace { return true, nil } } case fv1.TimeTrigger: for _, obj := range fr.TimeTriggers { - if obj.Metadata.Name == typedres.Metadata.Name && - obj.Metadata.Namespace == typedres.Metadata.Namespace { + if obj.ObjectMeta.Name == typedres.ObjectMeta.Name && + obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace { return true, nil } } diff --git a/pkg/fission-cli/cmd/support/resources/crd.go b/pkg/fission-cli/cmd/support/resources/crd.go index 3f3c72cea8..7056f2dc48 100644 --- a/pkg/fission-cli/cmd/support/resources/crd.go +++ b/pkg/fission-cli/cmd/support/resources/crd.go @@ -58,7 +58,7 @@ func (res CrdDumper) Dump(dumpDir string) { } for _, item := range items { - f := getFileName(dumpDir, item.Metadata) + f := getFileName(dumpDir, item.ObjectMeta) writeToFile(f, item) } @@ -70,7 +70,7 @@ func (res CrdDumper) Dump(dumpDir string) { } for _, item := range items { - f := getFileName(dumpDir, item.Metadata) + f := getFileName(dumpDir, item.ObjectMeta) writeToFile(f, item) } @@ -83,7 +83,7 @@ func (res CrdDumper) Dump(dumpDir string) { for _, item := range items { item = pkgClean(item) - f := getFileName(dumpDir, item.Metadata) + f := getFileName(dumpDir, item.ObjectMeta) writeToFile(f, item) } @@ -95,7 +95,7 @@ func (res CrdDumper) Dump(dumpDir string) { } for _, item := range items { - f := getFileName(dumpDir, item.Metadata) + f := getFileName(dumpDir, item.ObjectMeta) writeToFile(f, item) } @@ -107,7 +107,7 @@ func (res CrdDumper) Dump(dumpDir string) { } for _, item := range items { - f := getFileName(dumpDir, item.Metadata) + f := getFileName(dumpDir, item.ObjectMeta) writeToFile(f, item) } @@ -124,7 +124,7 @@ func (res CrdDumper) Dump(dumpDir string) { } for _, item := range triggers { - f := getFileName(dumpDir, item.Metadata) + f := getFileName(dumpDir, item.ObjectMeta) writeToFile(f, item) } @@ -136,7 +136,7 @@ func (res CrdDumper) Dump(dumpDir string) { } for _, item := range items { - f := getFileName(dumpDir, item.Metadata) + f := getFileName(dumpDir, item.ObjectMeta) writeToFile(f, item) } diff --git a/pkg/fission-cli/cmd/timetrigger/create.go b/pkg/fission-cli/cmd/timetrigger/create.go index 9624eb170c..41f4e08a75 100644 --- a/pkg/fission-cli/cmd/timetrigger/create.go +++ b/pkg/fission-cli/cmd/timetrigger/create.go @@ -78,7 +78,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { } exists, err := fr.ExistsInSpecs(fv1.Function{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: fnName, Namespace: fnNamespace, }, @@ -93,7 +93,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { } opts.trigger = &fv1.TimeTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: fnNamespace, }, @@ -112,7 +112,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error { func (opts *CreateSubCommand) run(input cli.Input) error { // if we're writing a spec, don't call the API if input.Bool(flagkey.SpecSave) { - specFile := fmt.Sprintf("timetrigger-%v.yaml", opts.trigger.Metadata.Name) + specFile := fmt.Sprintf("timetrigger-%v.yaml", opts.trigger.ObjectMeta.Name) err := spec.SpecSave(*opts.trigger, specFile) if err != nil { return errors.Wrap(err, "error creating time trigger spec") @@ -125,7 +125,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "error creating Time trigger") } - fmt.Printf("trigger '%v' created\n", opts.trigger.Metadata.Name) + fmt.Printf("trigger '%v' created\n", opts.trigger.ObjectMeta.Name) t, err := getAPITimeInfo(opts.Client()) if err != nil { diff --git a/pkg/fission-cli/cmd/timetrigger/list.go b/pkg/fission-cli/cmd/timetrigger/list.go index db049fa7fb..842fde8cbe 100644 --- a/pkg/fission-cli/cmd/timetrigger/list.go +++ b/pkg/fission-cli/cmd/timetrigger/list.go @@ -48,7 +48,7 @@ func (opts *ListSubCommand) do(input cli.Input) error { fmt.Fprintf(w, "%v\t%v\t%v\n", "NAME", "CRON", "FUNCTION_NAME") for _, tt := range tts { fmt.Fprintf(w, "%v\t%v\t%v\n", - tt.Metadata.Name, tt.Spec.Cron, tt.Spec.FunctionReference.Name) + tt.ObjectMeta.Name, tt.Spec.Cron, tt.Spec.FunctionReference.Name) } w.Flush() diff --git a/pkg/fission-cli/cmd/timetrigger/update.go b/pkg/fission-cli/cmd/timetrigger/update.go index b3009c5f1f..422b1170a3 100644 --- a/pkg/fission-cli/cmd/timetrigger/update.go +++ b/pkg/fission-cli/cmd/timetrigger/update.go @@ -85,7 +85,7 @@ func (opts *UpdateSubCommand) run(input cli.Input) error { return errors.Wrap(err, "error updating Time trigger") } - fmt.Printf("trigger '%v' updated\n", opts.trigger.Metadata.Name) + fmt.Printf("trigger '%v' updated\n", opts.trigger.ObjectMeta.Name) t, err := getAPITimeInfo(opts.Client()) if err != nil { diff --git a/pkg/kubewatcher/kubewatcher.go b/pkg/kubewatcher/kubewatcher.go index bf44db7e34..9cc77fb2c3 100644 --- a/pkg/kubewatcher/kubewatcher.go +++ b/pkg/kubewatcher/kubewatcher.go @@ -106,7 +106,7 @@ func (kw *KubeWatcher) svc() { case SYNC: newWatchUids := make(map[types.UID]bool) for _, w := range req.watches { - newWatchUids[w.Metadata.UID] = true + newWatchUids[w.ObjectMeta.UID] = true } // Remove old watches for uid, ws := range kw.watches { @@ -116,7 +116,7 @@ func (kw *KubeWatcher) svc() { } // Add new watches for _, w := range req.watches { - if _, ok := kw.watches[w.Metadata.UID]; !ok { + if _, ok := kw.watches[w.ObjectMeta.UID]; !ok { kw.addWatch(&w) } } @@ -176,23 +176,23 @@ func createKubernetesWatch(kubeClient *kubernetes.Clientset, w *fv1.KubernetesWa } func (kw *KubeWatcher) addWatch(w *fv1.KubernetesWatchTrigger) error { - kw.logger.Info("adding watch", zap.String("name", w.Metadata.Name), zap.Any("function", w.Spec.FunctionReference)) + kw.logger.Info("adding watch", zap.String("name", w.ObjectMeta.Name), zap.Any("function", w.Spec.FunctionReference)) ws, err := MakeWatchSubscription(kw.logger.Named("watchsubscription"), w, kw.kubernetesClient, kw.publisher) if err != nil { return err } - kw.watches[w.Metadata.UID] = *ws + kw.watches[w.ObjectMeta.UID] = *ws return nil } func (kw *KubeWatcher) removeWatch(w *fv1.KubernetesWatchTrigger) error { - kw.logger.Info("removing watch", zap.String("name", w.Metadata.Name), zap.Any("function", w.Spec.FunctionReference)) - ws, ok := kw.watches[w.Metadata.UID] + kw.logger.Info("removing watch", zap.String("name", w.ObjectMeta.Name), zap.Any("function", w.Spec.FunctionReference)) + ws, ok := kw.watches[w.ObjectMeta.UID] if !ok { return ferror.MakeError(ferror.ErrorNotFound, - fmt.Sprintf("watch doesn't exist: %v", w.Metadata)) + fmt.Sprintf("watch doesn't exist: %v", w.ObjectMeta)) } - delete(kw.watches, w.Metadata.UID) + delete(kw.watches, w.ObjectMeta.UID) ws.stop() return nil } @@ -222,7 +222,7 @@ func (ws *watchSubscription) restartWatch() error { retries := 60 for { ws.logger.Info("(re)starting watch", - zap.Any("watch", ws.watch.Metadata), + zap.Any("watch", ws.watch.ObjectMeta), zap.String("namespace", ws.watch.Spec.Namespace), zap.String("type", ws.watch.Spec.Type), zap.String("last_resource_version", ws.lastResourceVersion)) @@ -250,7 +250,7 @@ func getResourceVersion(obj runtime.Object) (string, error) { } func (ws *watchSubscription) eventDispatchLoop() { - ws.logger.Info("listening to watch", zap.String("name", ws.watch.Metadata.Name)) + ws.logger.Info("listening to watch", zap.String("name", ws.watch.ObjectMeta.Name)) for { // check watchSubscription is stopped or not before waiting for event // comes from the kubeWatch.ResultChan(). This fix the edge case that @@ -263,14 +263,14 @@ func (ws *watchSubscription) eventDispatchLoop() { if !more { if ws.isStopped() { // watch is removed by user. - ws.logger.Warn("watch stopped", zap.String("watch_name", ws.watch.Metadata.Name)) + ws.logger.Warn("watch stopped", zap.String("watch_name", ws.watch.ObjectMeta.Name)) return } else { // watch closed due to timeout, restart it. - ws.logger.Warn("watch timed out - restarting", zap.String("watch_name", ws.watch.Metadata.Name)) + ws.logger.Warn("watch timed out - restarting", zap.String("watch_name", ws.watch.ObjectMeta.Name)) err := ws.restartWatch() if err != nil { - ws.logger.Panic("failed to restart watch", zap.Error(err), zap.String("watch_name", ws.watch.Metadata.Name)) + ws.logger.Panic("failed to restart watch", zap.Error(err), zap.String("watch_name", ws.watch.ObjectMeta.Name)) } continue } @@ -278,19 +278,19 @@ func (ws *watchSubscription) eventDispatchLoop() { if ev.Type == watch.Error { e := errors.FromObject(ev.Object) - ws.logger.Warn("watch error - retrying after one second", zap.Error(e), zap.String("watch_name", ws.watch.Metadata.Name)) + ws.logger.Warn("watch error - retrying after one second", zap.Error(e), zap.String("watch_name", ws.watch.ObjectMeta.Name)) // Start from the beginning to get around "too old resource version" ws.lastResourceVersion = "" time.Sleep(time.Second) err := ws.restartWatch() if err != nil { - ws.logger.Panic("failed to restart watch", zap.Error(err), zap.String("watch_name", ws.watch.Metadata.Name)) + ws.logger.Panic("failed to restart watch", zap.Error(err), zap.String("watch_name", ws.watch.ObjectMeta.Name)) } continue } rv, err := getResourceVersion(ev.Object) if err != nil { - ws.logger.Error("error getting resourceVersion from object", zap.Error(err), zap.String("watch_name", ws.watch.Metadata.Name)) + ws.logger.Error("error getting resourceVersion from object", zap.Error(err), zap.String("watch_name", ws.watch.ObjectMeta.Name)) } else { ws.lastResourceVersion = rv } @@ -299,7 +299,7 @@ func (ws *watchSubscription) eventDispatchLoop() { var buf bytes.Buffer err = printKubernetesObject(ev.Object, &buf) if err != nil { - ws.logger.Error("failed to serialize object", zap.Error(err), zap.String("watch_name", ws.watch.Metadata.Name)) + ws.logger.Error("failed to serialize object", zap.Error(err), zap.String("watch_name", ws.watch.ObjectMeta.Name)) // TODO send a POST request indicating error } @@ -314,14 +314,14 @@ func (ws *watchSubscription) eventDispatchLoop() { if ws.watch.Spec.FunctionReference.Type != fv1.FunctionReferenceTypeFunctionName { ws.logger.Error("unsupported function ref type - cannot publish event", zap.Any("type", ws.watch.Spec.FunctionReference.Type), - zap.String("watch_name", ws.watch.Metadata.Name)) + zap.String("watch_name", ws.watch.ObjectMeta.Name)) continue } // with the addition of multi-tenancy, the users can create functions in any namespace. however, // the triggers can only be created in the same namespace as the function. // so essentially, function namespace = trigger namespace. - url := utils.UrlForFunction(ws.watch.Spec.FunctionReference.Name, ws.watch.Metadata.Namespace) + url := utils.UrlForFunction(ws.watch.Spec.FunctionReference.Name, ws.watch.ObjectMeta.Namespace) ws.publisher.Publish(buf.String(), headers, url) } } diff --git a/pkg/kubewatcher/watchSync.go b/pkg/kubewatcher/watchSync.go index 6d8c8f899f..97b5fb7810 100644 --- a/pkg/kubewatcher/watchSync.go +++ b/pkg/kubewatcher/watchSync.go @@ -46,7 +46,7 @@ func MakeWatchSync(logger *zap.Logger, client *crd.FissionClient, kubeWatcher *K func (ws *WatchSync) syncSvc() { // TODO watch instead of polling for { - watches, err := ws.client.KubernetesWatchTriggers(metav1.NamespaceAll).List(metav1.ListOptions{}) + watches, err := ws.client.V1().KubernetesWatchTriggers(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { ws.logger.Fatal("failed to get Kubernetes watch trigger list", zap.Error(err)) } diff --git a/pkg/mqtrigger/messageQueue/asq.go b/pkg/mqtrigger/messageQueue/asq.go index 19bf4d1daf..3d3c7e481f 100644 --- a/pkg/mqtrigger/messageQueue/asq.go +++ b/pkg/mqtrigger/messageQueue/asq.go @@ -205,7 +205,7 @@ func (asc AzureStorageConnection) subscribe(trigger *fv1.MessageQueueTrigger) (m asc.logger.Info("subscribing to Azure storage queue", zap.String("queue", trigger.Spec.Topic)) if trigger.Spec.FunctionReference.Type != types.FunctionReferenceTypeFunctionName { - return nil, fmt.Errorf("unsupported function reference type (%v) for trigger %q", trigger.Spec.FunctionReference.Type, trigger.Metadata.Name) + return nil, fmt.Errorf("unsupported function reference type (%v) for trigger %q", trigger.Spec.FunctionReference.Type, trigger.ObjectMeta.Name) } subscription := &AzureQueueSubscription{ @@ -215,7 +215,7 @@ func (asc AzureStorageConnection) subscribe(trigger *fv1.MessageQueueTrigger) (m // with the addition of multi-tenancy, the users can create functions in any namespace. however, // the triggers can only be created in the same namespace as the function. // so essentially, function namespace = trigger namespace. - functionURL: asc.routerURL + "/" + strings.TrimPrefix(utils.UrlForFunction(trigger.Spec.FunctionReference.Name, trigger.Metadata.Namespace), "/"), + functionURL: asc.routerURL + "/" + strings.TrimPrefix(utils.UrlForFunction(trigger.Spec.FunctionReference.Name, trigger.ObjectMeta.Namespace), "/"), contentType: trigger.Spec.ContentType, unsubscribe: make(chan bool), done: make(chan bool), diff --git a/pkg/mqtrigger/messageQueue/asq_test.go b/pkg/mqtrigger/messageQueue/asq_test.go index a12d255566..cd4e9901d2 100644 --- a/pkg/mqtrigger/messageQueue/asq_test.go +++ b/pkg/mqtrigger/messageQueue/asq_test.go @@ -303,7 +303,7 @@ func TestAzureStorageQueuePoisonMessage(t *testing.T) { httpClient: httpClient, } subscription, err := connection.subscribe(&fv1.MessageQueueTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: TriggerName, Namespace: metav1.NamespaceDefault, }, @@ -451,7 +451,7 @@ func runAzureStorageQueueTest(t *testing.T, count int, output bool) { httpClient: httpClient, } subscription, err := connection.subscribe(&fv1.MessageQueueTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: TriggerName, Namespace: metav1.NamespaceDefault, }, diff --git a/pkg/mqtrigger/messageQueue/kafka.go b/pkg/mqtrigger/messageQueue/kafka.go index 6f91f79d11..e52adaee82 100644 --- a/pkg/mqtrigger/messageQueue/kafka.go +++ b/pkg/mqtrigger/messageQueue/kafka.go @@ -124,13 +124,13 @@ func (kafka Kafka) subscribe(trigger *fv1.MessageQueueTrigger) (messageQueueSubs consumerConfig.Net.TLS.Config = tlsConfig } - consumer, err := cluster.NewConsumer(kafka.brokers, string(trigger.Metadata.UID), []string{trigger.Spec.Topic}, consumerConfig) + consumer, err := cluster.NewConsumer(kafka.brokers, string(trigger.ObjectMeta.UID), []string{trigger.Spec.Topic}, consumerConfig) kafka.logger.Info("created a new consumer", zap.Strings("brokers", kafka.brokers), zap.String("input topic", trigger.Spec.Topic), zap.String("output topic", trigger.Spec.ResponseTopic), zap.String("error topic", trigger.Spec.ErrorTopic), - zap.String("trigger name", trigger.Metadata.Name), - zap.String("function namespace", trigger.Metadata.Namespace), + zap.String("trigger name", trigger.ObjectMeta.Name), + zap.String("function namespace", trigger.ObjectMeta.Namespace), zap.String("function name", trigger.Spec.FunctionReference.Name)) if err != nil { return nil, err @@ -141,8 +141,8 @@ func (kafka Kafka) subscribe(trigger *fv1.MessageQueueTrigger) (messageQueueSubs zap.String("input topic", trigger.Spec.Topic), zap.String("output topic", trigger.Spec.ResponseTopic), zap.String("error topic", trigger.Spec.ErrorTopic), - zap.String("trigger name", trigger.Metadata.Name), - zap.String("function namespace", trigger.Metadata.Namespace), + zap.String("trigger name", trigger.ObjectMeta.Name), + zap.String("function namespace", trigger.ObjectMeta.Namespace), zap.String("function name", trigger.Spec.FunctionReference.Name)) if err != nil { @@ -205,10 +205,10 @@ func kafkaMsgHandler(kafka *Kafka, producer sarama.SyncProducer, trigger *fv1.Me if trigger.Spec.FunctionReference.Type != types.FunctionReferenceTypeFunctionName { kafka.logger.Fatal("unsupported function reference type for trigger", zap.Any("function_reference_type", trigger.Spec.FunctionReference.Type), - zap.String("trigger", trigger.Metadata.Name)) + zap.String("trigger", trigger.ObjectMeta.Name)) } - url := kafka.routerUrl + "/" + strings.TrimPrefix(utils.UrlForFunction(trigger.Spec.FunctionReference.Name, trigger.Metadata.Namespace), "/") + url := kafka.routerUrl + "/" + strings.TrimPrefix(utils.UrlForFunction(trigger.Spec.FunctionReference.Name, trigger.ObjectMeta.Namespace), "/") kafka.logger.Debug("making HTTP request", zap.String("url", url)) // Generate the Headers @@ -252,7 +252,7 @@ func kafkaMsgHandler(kafka *Kafka, producer sarama.SyncProducer, trigger *fv1.Me kafka.logger.Error("sending function invocation request failed", zap.Error(err), zap.String("function_url", url), - zap.String("trigger", trigger.Metadata.Name)) + zap.String("trigger", trigger.ObjectMeta.Name)) continue } if resp == nil { @@ -267,7 +267,7 @@ func kafkaMsgHandler(kafka *Kafka, producer sarama.SyncProducer, trigger *fv1.Me if resp == nil { kafka.logger.Warn("every function invocation retry failed; final retry gave empty response", zap.String("function_url", url), - zap.String("trigger", trigger.Metadata.Name)) + zap.String("trigger", trigger.ObjectMeta.Name)) return } defer resp.Body.Close() @@ -275,7 +275,7 @@ func kafkaMsgHandler(kafka *Kafka, producer sarama.SyncProducer, trigger *fv1.Me kafka.logger.Debug("got response from function invocation", zap.String("function_url", url), - zap.String("trigger", trigger.Metadata.Name), + zap.String("trigger", trigger.ObjectMeta.Name), zap.String("body", string(body))) if err != nil { @@ -328,12 +328,12 @@ func errorHandler(logger *zap.Logger, trigger *fv1.MessageQueueTrigger, producer if e != nil { logger.Error("failed to publish message to error topic", zap.Error(e), - zap.String("trigger", trigger.Metadata.Name), + zap.String("trigger", trigger.ObjectMeta.Name), zap.String("message", err.Error()), zap.String("topic", trigger.Spec.Topic)) } } else { logger.Error("message received to publish to error topic, but no error topic was set", - zap.String("message", err.Error()), zap.String("trigger", trigger.Metadata.Name), zap.String("function_url", funcUrl)) + zap.String("message", err.Error()), zap.String("trigger", trigger.ObjectMeta.Name), zap.String("function_url", funcUrl)) } } diff --git a/pkg/mqtrigger/messageQueue/messageQueue.go b/pkg/mqtrigger/messageQueue/messageQueue.go index 793034282e..5747b251d8 100644 --- a/pkg/mqtrigger/messageQueue/messageQueue.go +++ b/pkg/mqtrigger/messageQueue/messageQueue.go @@ -111,7 +111,7 @@ func (mqt *MessageQueueTriggerManager) service() { switch req.requestType { case ADD_TRIGGER: var err error - k := crd.CacheKey(&req.triggerSub.trigger.Metadata) + k := crd.CacheKey(&req.triggerSub.trigger.ObjectMeta) if _, ok := mqt.triggers[k]; ok { err = errors.New("trigger already exists") } else { @@ -125,7 +125,7 @@ func (mqt *MessageQueueTriggerManager) service() { } req.respChan <- response{triggers: ©Triggers} case DELETE_TRIGGER: - delete(mqt.triggers, crd.CacheKey(&req.triggerSub.trigger.Metadata)) + delete(mqt.triggers, crd.CacheKey(&req.triggerSub.trigger.ObjectMeta)) } } } @@ -156,7 +156,7 @@ func (mqt *MessageQueueTriggerManager) delTrigger(m *metav1.ObjectMeta) { requestType: DELETE_TRIGGER, triggerSub: &triggerSubscription{ trigger: fv1.MessageQueueTrigger{ - Metadata: *m, + ObjectMeta: *m, }, }, } @@ -165,7 +165,7 @@ func (mqt *MessageQueueTriggerManager) delTrigger(m *metav1.ObjectMeta) { func (mqt *MessageQueueTriggerManager) syncTriggers() { for { // get new set of triggers - newTriggers, err := mqt.fissionClient.MessageQueueTriggers(metav1.NamespaceAll).List(metav1.ListOptions{}) + newTriggers, err := mqt.fissionClient.V1().MessageQueueTriggers(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { if utils.IsNetworkError(err) { mqt.logger.Error("encountered network error, will retry", zap.Error(err)) @@ -177,7 +177,7 @@ func (mqt *MessageQueueTriggerManager) syncTriggers() { newTriggerMap := make(map[string]*fv1.MessageQueueTrigger) for index := range newTriggers.Items { newTrigger := &newTriggers.Items[index] - newTriggerMap[crd.CacheKey(&newTrigger.Metadata)] = newTrigger + newTriggerMap[crd.CacheKey(&newTrigger.ObjectMeta)] = newTrigger } // get current set of triggers @@ -192,7 +192,7 @@ func (mqt *MessageQueueTriggerManager) syncTriggers() { // actually subscribe using the message queue client impl sub, err := mqt.messageQueue.subscribe(trigger) if err != nil { - mqt.logger.Warn("failed to subscribe to message queue trigger", zap.Error(err), zap.String("trigger_name", trigger.Metadata.Name)) + mqt.logger.Warn("failed to subscribe to message queue trigger", zap.Error(err), zap.String("trigger_name", trigger.ObjectMeta.Name)) continue } @@ -204,10 +204,10 @@ func (mqt *MessageQueueTriggerManager) syncTriggers() { // add to our list err = mqt.addTrigger(&triggerSub) if err != nil { - mqt.logger.Fatal("adding message queue trigger failed", zap.Error(err), zap.String("trigger_name", trigger.Metadata.Name)) + mqt.logger.Fatal("adding message queue trigger failed", zap.Error(err), zap.String("trigger_name", trigger.ObjectMeta.Name)) } - mqt.logger.Info("message queue trigger created", zap.String("trigger_name", trigger.Metadata.Name)) + mqt.logger.Info("message queue trigger created", zap.String("trigger_name", trigger.ObjectMeta.Name)) } // remove old triggers @@ -217,11 +217,11 @@ func (mqt *MessageQueueTriggerManager) syncTriggers() { } err := mqt.messageQueue.unsubscribe(triggerSub.subscription) if err != nil { - mqt.logger.Warn("failed to unsubscribe from message queue trigger", zap.Error(err), zap.String("trigger_name", triggerSub.trigger.Metadata.Name)) + mqt.logger.Warn("failed to unsubscribe from message queue trigger", zap.Error(err), zap.String("trigger_name", triggerSub.trigger.ObjectMeta.Name)) continue } - mqt.delTrigger(&triggerSub.trigger.Metadata) - mqt.logger.Info("message queue trigger deleted", zap.String("trigger_name", triggerSub.trigger.Metadata.Name)) + mqt.delTrigger(&triggerSub.trigger.ObjectMeta) + mqt.logger.Info("message queue trigger deleted", zap.String("trigger_name", triggerSub.trigger.ObjectMeta.Name)) } // TODO replace with a watch diff --git a/pkg/mqtrigger/messageQueue/nats.go b/pkg/mqtrigger/messageQueue/nats.go index 8323e72dff..d8ee28a1d3 100644 --- a/pkg/mqtrigger/messageQueue/nats.go +++ b/pkg/mqtrigger/messageQueue/nats.go @@ -79,7 +79,7 @@ func (nats Nats) subscribe(trigger *fv1.MessageQueueTrigger) (messageQueueSubscr opts := []ns.SubscriptionOption{ // Create a durable subscription to nats, so that triggers could retrieve last unack message. // https://github.com/nats-io/go-nats-streaming#durable-subscriptions - ns.DurableName(string(trigger.Metadata.UID)), + ns.DurableName(string(trigger.ObjectMeta.UID)), // Nats-streaming server is auto-ack mode by default. Since we want nats-streaming server to // resend a message if the trigger does not ack it, we need to enable the manual ack mode, so that @@ -109,13 +109,13 @@ func msgHandler(nats *Nats, trigger *fv1.MessageQueueTrigger) func(*ns.Msg) { if trigger.Spec.FunctionReference.Type != types.FunctionReferenceTypeFunctionName { nats.logger.Fatal("unsupported function reference type for trigger", zap.Any("function_reference_type", trigger.Spec.FunctionReference.Type), - zap.String("trigger", trigger.Metadata.Name)) + zap.String("trigger", trigger.ObjectMeta.Name)) } // with the addition of multi-tenancy, the users can create functions in any namespace. however, // the triggers can only be created in the same namespace as the function. // so essentially, function namespace = trigger namespace. - url := nats.routerUrl + "/" + strings.TrimPrefix(utils.UrlForFunction(trigger.Spec.FunctionReference.Name, trigger.Metadata.Namespace), "/") + url := nats.routerUrl + "/" + strings.TrimPrefix(utils.UrlForFunction(trigger.Spec.FunctionReference.Name, trigger.ObjectMeta.Namespace), "/") nats.logger.Debug("making HTTP request", zap.String("url", url)) headers := map[string]string{ @@ -147,7 +147,7 @@ func msgHandler(nats *Nats, trigger *fv1.MessageQueueTrigger) func(*ns.Msg) { nats.logger.Error("sending function invocation request failed", zap.Error(err), zap.String("function_url", url), - zap.String("trigger", trigger.Metadata.Name)) + zap.String("trigger", trigger.ObjectMeta.Name)) continue } if resp == nil { @@ -162,7 +162,7 @@ func msgHandler(nats *Nats, trigger *fv1.MessageQueueTrigger) func(*ns.Msg) { if resp == nil { nats.logger.Warn("every function invocation retry failed; final retry gave empty response", zap.String("function_url", url), - zap.String("trigger", trigger.Metadata.Name)) + zap.String("trigger", trigger.ObjectMeta.Name)) return } @@ -173,7 +173,7 @@ func msgHandler(nats *Nats, trigger *fv1.MessageQueueTrigger) func(*ns.Msg) { nats.logger.Error("error reading function invocation response", zap.Error(err), zap.String("function_url", url), - zap.String("trigger", trigger.Metadata.Name)) + zap.String("trigger", trigger.ObjectMeta.Name)) return } @@ -186,7 +186,7 @@ func msgHandler(nats *Nats, trigger *fv1.MessageQueueTrigger) func(*ns.Msg) { zap.Error(publishErr), zap.String("topic", trigger.Spec.ErrorTopic), zap.String("function_url", url), - zap.String("trigger", trigger.Metadata.Name)) + zap.String("trigger", trigger.ObjectMeta.Name)) // TODO: We will ack this message after max retries to prevent re-processing but // this may cause message loss } @@ -200,7 +200,7 @@ func msgHandler(nats *Nats, trigger *fv1.MessageQueueTrigger) func(*ns.Msg) { nats.logger.Error("failed to ack message after successful function invocation from trigger", zap.Error(err), zap.String("function_url", url), - zap.String("trigger", trigger.Metadata.Name)) + zap.String("trigger", trigger.ObjectMeta.Name)) } if len(trigger.Spec.ResponseTopic) > 0 { @@ -209,7 +209,7 @@ func msgHandler(nats *Nats, trigger *fv1.MessageQueueTrigger) func(*ns.Msg) { nats.logger.Error("failed to publish message with function invocation response to topic", zap.Error(err), zap.String("topic", trigger.Spec.ResponseTopic), - zap.String("trigger", trigger.Metadata.Name)) + zap.String("trigger", trigger.ObjectMeta.Name)) } } } diff --git a/pkg/plugin/plugin.go b/pkg/plugin/plugin.go index 50cfacf90a..db946c67b2 100644 --- a/pkg/plugin/plugin.go +++ b/pkg/plugin/plugin.go @@ -42,7 +42,7 @@ var ( Prefix = "fission-" ) -// Metadata contains the metadata of a plugin. +// ObjectMeta contains the metadata of a plugin. // The only metadata that is guaranteed to be non-empty is the path and Name. All other fields are considered optional. type Metadata struct { Name string `json:"name,omitempty"` diff --git a/pkg/router/functionHandler.go b/pkg/router/functionHandler.go index 62fd162d29..ee32dc1c14 100644 --- a/pkg/router/functionHandler.go +++ b/pkg/router/functionHandler.go @@ -184,7 +184,7 @@ func (roundTripper *RetryingRoundTripper) RoundTrip(req *http.Request) (*http.Re // cache, then retry to get new svc record from executor again. var retryCounter int var err error - var fnMeta = &roundTripper.funcHandler.function.Metadata + var fnMeta = &roundTripper.funcHandler.function.ObjectMeta for i := 0; i < roundTripper.funcHandler.tsRoundTripperParams.maxRetries; i++ { // set service url of target service of request only when @@ -363,7 +363,7 @@ func (fh *functionHandler) tapService(fn *fv1.Function, serviceUrl *url.URL) { if fh.executor == nil { return } - fh.executor.TapService(fn.Metadata, fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType, serviceUrl) + fh.executor.TapService(fn.ObjectMeta, fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType, serviceUrl) } func (fh functionHandler) handler(responseWriter http.ResponseWriter, request *http.Request) { @@ -385,7 +385,7 @@ func (fh functionHandler) handler(responseWriter http.ResponseWriter, request *h setPathInfoToHeader(request) // system params - setFunctionMetadataToHeader(&fh.function.Metadata, request) + setFunctionMetadataToHeader(&fh.function.ObjectMeta, request) director := func(req *http.Request) { if _, ok := req.Header["User-Agent"]; !ok { @@ -394,7 +394,7 @@ func (fh functionHandler) handler(responseWriter http.ResponseWriter, request *h } } - fnTimeout := fh.functionTimeoutMap[fh.function.Metadata.GetUID()] + fnTimeout := fh.functionTimeoutMap[fh.function.ObjectMeta.GetUID()] if fnTimeout == 0 { fnTimeout = fv1.DEFAULT_FUNCTION_TIMEOUT } @@ -523,7 +523,7 @@ func (fh *functionHandler) getServiceEntry() (serviceUrl *url.URL, serviceUrlFro ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - fnMeta := &fh.function.Metadata + fnMeta := &fh.function.ObjectMeta // Use throttle to limit the total amount of requests sent // to the executor to prevent it from overloaded. @@ -580,7 +580,7 @@ func (fh *functionHandler) getServiceEntry() (serviceUrl *url.URL, serviceUrlFro // getServiceEntryFromCache returns service url entry returns from cache func (fh functionHandler) getServiceEntryFromCache() (serviceUrl *url.URL, err error) { // cache lookup to get serviceUrl - serviceUrl, err = fh.fmap.lookup(&fh.function.Metadata) + serviceUrl, err = fh.fmap.lookup(&fh.function.ObjectMeta) if err != nil { var errMsg string @@ -593,7 +593,7 @@ func (fh functionHandler) getServiceEntryFromCache() (serviceUrl *url.URL, err e if e.Code == ferror.ErrorNotFound { return nil, nil } - errMsg = fmt.Sprintf("Error getting function %v;s service entry from cache: %v", fh.function.Metadata.Name, err) + errMsg = fmt.Sprintf("Error getting function %v;s service entry from cache: %v", fh.function.ObjectMeta.Name, err) } return nil, ferror.MakeError(http.StatusInternalServerError, errMsg) } @@ -603,7 +603,7 @@ func (fh functionHandler) getServiceEntryFromCache() (serviceUrl *url.URL, err e // getServiceEntryFromExecutor returns service url entry returns from executor func (fh functionHandler) getServiceEntryFromExecutor(ctx context.Context) (*url.URL, error) { // send a request to executor to specialize a new pod - service, err := fh.executor.GetServiceForFunction(ctx, &fh.function.Metadata) + service, err := fh.executor.GetServiceForFunction(ctx, &fh.function.ObjectMeta) if err != nil { statusCode, errMsg := ferror.GetHTTPError(err) fh.logger.Error("error from GetServiceForFunction", @@ -667,8 +667,8 @@ func (fh functionHandler) collectFunctionMetric(start time.Time, rrt *RetryingRo // Metrics stuff funcMetricLabels := &functionLabels{ - namespace: fh.function.Metadata.Namespace, - name: fh.function.Metadata.Name, + namespace: fh.function.ObjectMeta.Namespace, + name: fh.function.ObjectMeta.Name, } httpMetricLabels := &httpLabels{ method: req.Method, @@ -690,7 +690,7 @@ func (fh functionHandler) collectFunctionMetric(start time.Time, rrt *RetryingRo fh.tapService(fh.function, rrt.serviceUrl) } - fh.logger.Debug("Request complete", zap.String("function", fh.function.Metadata.Name), + fh.logger.Debug("Request complete", zap.String("function", fh.function.ObjectMeta.Name), zap.Int("retry", rrt.totalRetry), zap.Duration("total-time", duration), zap.Int64("content-length", resp.ContentLength)) } diff --git a/pkg/router/functionHandler_test.go b/pkg/router/functionHandler_test.go index 0961085272..57af70a879 100644 --- a/pkg/router/functionHandler_test.go +++ b/pkg/router/functionHandler_test.go @@ -65,7 +65,7 @@ func TestFunctionProxying(t *testing.T) { fmap.assign(&fnMeta, backendURL) httpTrigger := &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "xxx", Namespace: metav1.NamespaceDefault, ResourceVersion: "1234", @@ -81,7 +81,7 @@ func TestFunctionProxying(t *testing.T) { logger: logger, fmap: fmap, function: &fv1.Function{ - Metadata: metav1.ObjectMeta{Name: "foo", Namespace: metav1.NamespaceDefault}, + ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: metav1.NamespaceDefault}, }, tsRoundTripperParams: &tsRoundTripperParams{ timeout: 50 * time.Millisecond, @@ -103,7 +103,7 @@ func TestProxyErrorHandler(t *testing.T) { fh := &functionHandler{ logger: logger, function: &fv1.Function{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "dummy", Namespace: "dummy-bar", }, diff --git a/pkg/router/functionReferenceResolver.go b/pkg/router/functionReferenceResolver.go index eb41913d31..67e2784ea8 100644 --- a/pkg/router/functionReferenceResolver.go +++ b/pkg/router/functionReferenceResolver.go @@ -79,9 +79,9 @@ func makeFunctionReferenceResolver(store k8sCache.Store) *functionReferenceResol // resolve translates a trigger's function reference to a resolveResult. func (frr *functionReferenceResolver) resolve(trigger fv1.HTTPTrigger) (*resolveResult, error) { nfr := namespacedTriggerReference{ - namespace: trigger.Metadata.Namespace, - triggerName: trigger.Metadata.Name, - triggerResourceVersion: trigger.Metadata.ResourceVersion, + namespace: trigger.ObjectMeta.Namespace, + triggerName: trigger.ObjectMeta.Name, + triggerResourceVersion: trigger.ObjectMeta.ResourceVersion, } // check cache @@ -121,7 +121,7 @@ func (frr *functionReferenceResolver) resolve(trigger fv1.HTTPTrigger) (*resolve func (frr *functionReferenceResolver) resolveByName(namespace, name string) (*resolveResult, error) { // get function from cache obj, isExist, err := frr.store.Get(&fv1.Function{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Namespace: namespace, Name: name, }, @@ -135,7 +135,7 @@ func (frr *functionReferenceResolver) resolveByName(namespace, name string) (*re f := obj.(*fv1.Function) functionMap := map[string]*fv1.Function{ - f.Metadata.Name: f, + f.ObjectMeta.Name: f, } rr := resolveResult{ @@ -155,7 +155,7 @@ func (frr *functionReferenceResolver) resolveByFunctionWeights(namespace string, for functionName, functionWeight := range fr.FunctionWeights { // get function from cache obj, isExist, err := frr.store.Get(&fv1.Function{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Namespace: namespace, Name: functionName, }, @@ -168,7 +168,7 @@ func (frr *functionReferenceResolver) resolveByFunctionWeights(namespace string, } f := obj.(*fv1.Function) - functionMap[f.Metadata.Name] = f + functionMap[f.ObjectMeta.Name] = f sumPrefix = sumPrefix + functionWeight fnWtDistrList = append(fnWtDistrList, FunctionWeightDistribution{ name: functionName, diff --git a/pkg/router/httpTriggers.go b/pkg/router/httpTriggers.go index 1d5a7569d0..e4ca8b2b39 100644 --- a/pkg/router/httpTriggers.go +++ b/pkg/router/httpTriggers.go @@ -46,7 +46,7 @@ type HTTPTriggerSet struct { kubeClient *kubernetes.Clientset executor *executorClient.Client resolver *functionReferenceResolver - crdClient *rest.RESTClient + crdClient rest.Interface triggers []fv1.HTTPTrigger triggerStore k8sCache.Store triggerController k8sCache.Controller @@ -60,7 +60,7 @@ type HTTPTriggerSet struct { } func makeHTTPTriggerSet(logger *zap.Logger, fmap *functionServiceMap, fissionClient *crd.FissionClient, - kubeClient *kubernetes.Clientset, executor *executorClient.Client, crdClient *rest.RESTClient, params *tsRoundTripperParams, isDebugEnv bool, actionThrottler *throttler.Throttler) (*HTTPTriggerSet, k8sCache.Store, k8sCache.Store) { + kubeClient *kubernetes.Clientset, executor *executorClient.Client, crdClient rest.Interface, params *tsRoundTripperParams, isDebugEnv bool, actionThrottler *throttler.Throttler) (*HTTPTriggerSet, k8sCache.Store, k8sCache.Store) { httpTriggerSet := &HTTPTriggerSet{ logger: logger.Named("http_trigger_set"), @@ -138,7 +138,7 @@ func (ts *HTTPTriggerSet) getRouter(fnTimeoutMap map[types.UID]int) *mux.Router } fh := &functionHandler{ - logger: ts.logger.Named(trigger.Metadata.Name), + logger: ts.logger.Named(trigger.ObjectMeta.Name), fmap: ts.functionServiceMap, executor: ts.executor, httpTrigger: &trigger, @@ -188,7 +188,7 @@ func (ts *HTTPTriggerSet) getRouter(fnTimeoutMap map[types.UID]int) *mux.Router for i := range ts.functions { fn := ts.functions[i] fh := &functionHandler{ - logger: ts.logger.Named(fn.Metadata.Name), + logger: ts.logger.Named(fn.ObjectMeta.Name), fmap: ts.functionServiceMap, function: &fn, executor: ts.executor, @@ -197,7 +197,7 @@ func (ts *HTTPTriggerSet) getRouter(fnTimeoutMap map[types.UID]int) *mux.Router svcAddrUpdateThrottler: ts.svcAddrUpdateThrottler, functionTimeoutMap: fnTimeoutMap, } - muxRouter.HandleFunc(utils.UrlForFunction(fn.Metadata.Name, fn.Metadata.Namespace), fh.handler) + muxRouter.HandleFunc(utils.UrlForFunction(fn.ObjectMeta.Name, fn.ObjectMeta.Namespace), fh.handler) } // Healthz endpoint for the router. @@ -229,7 +229,7 @@ func (ts *HTTPTriggerSet) initTriggerController() (k8sCache.Store, k8sCache.Cont oldTrigger := oldObj.(*fv1.HTTPTrigger) newTrigger := newObj.(*fv1.HTTPTrigger) - if oldTrigger.Metadata.ResourceVersion == newTrigger.Metadata.ResourceVersion { + if oldTrigger.ObjectMeta.ResourceVersion == newTrigger.ObjectMeta.ResourceVersion { return } @@ -255,15 +255,15 @@ func (ts *HTTPTriggerSet) initFunctionController() (k8sCache.Store, k8sCache.Con oldFn := oldObj.(*fv1.Function) fn := newObj.(*fv1.Function) - if oldFn.Metadata.ResourceVersion == fn.Metadata.ResourceVersion { + if oldFn.ObjectMeta.ResourceVersion == fn.ObjectMeta.ResourceVersion { return } // update resolver function reference cache for key, rr := range ts.resolver.copy() { - if key.namespace == fn.Metadata.Namespace && - rr.functionMap[fn.Metadata.Name] != nil && - rr.functionMap[fn.Metadata.Name].Metadata.ResourceVersion != fn.Metadata.ResourceVersion { + if key.namespace == fn.ObjectMeta.Namespace && + rr.functionMap[fn.ObjectMeta.Name] != nil && + rr.functionMap[fn.ObjectMeta.Name].ObjectMeta.ResourceVersion != fn.ObjectMeta.ResourceVersion { // invalidate resolver cache ts.logger.Debug("invalidating resolver cache") err := ts.resolver.delete(key.namespace, key.triggerName, key.triggerResourceVersion) @@ -305,7 +305,7 @@ func (ts *HTTPTriggerSet) updateRouter() { functions := make([]fv1.Function, len(latestFunctions)) for _, f := range latestFunctions { fn := *f.(*fv1.Function) - functionTimeout[fn.Metadata.UID] = fn.Spec.FunctionTimeout + functionTimeout[fn.ObjectMeta.UID] = fn.Spec.FunctionTimeout functions = append(functions, *f.(*fv1.Function)) } ts.functions = functions diff --git a/pkg/router/ingress.go b/pkg/router/ingress.go index bbd622f2e2..828fddd65d 100644 --- a/pkg/router/ingress.go +++ b/pkg/router/ingress.go @@ -47,7 +47,7 @@ func createIngress(logger *zap.Logger, trigger *fv1.HTTPTrigger, kubeClient *kub logger.Error("failed to create ingress", zap.Error(err)) return } - logger.Debug("created ingress successfully for trigger", zap.String("trigger", trigger.Metadata.Name)) + logger.Debug("created ingress successfully for trigger", zap.String("trigger", trigger.ObjectMeta.Name)) } func deleteIngress(logger *zap.Logger, trigger *fv1.HTTPTrigger, kubeClient *kubernetes.Clientset) { @@ -55,9 +55,9 @@ func deleteIngress(logger *zap.Logger, trigger *fv1.HTTPTrigger, kubeClient *kub return } - ingress, err := kubeClient.ExtensionsV1beta1().Ingresses(podNamespace).Get(trigger.Metadata.Name, v1.GetOptions{}) + ingress, err := kubeClient.ExtensionsV1beta1().Ingresses(podNamespace).Get(trigger.ObjectMeta.Name, v1.GetOptions{}) if err != nil && !k8serrors.IsNotFound(err) { - logger.Error("failed to get ingress when deleting trigger", zap.Error(err), zap.String("trigger", trigger.Metadata.Name)) + logger.Error("failed to get ingress when deleting trigger", zap.Error(err), zap.String("trigger", trigger.ObjectMeta.Name)) return } @@ -66,7 +66,7 @@ func deleteIngress(logger *zap.Logger, trigger *fv1.HTTPTrigger, kubeClient *kub logger.Error("failed to delete ingress for trigger", zap.Error(err), zap.Any("ingress", ingress), - zap.String("trigger", trigger.Metadata.Name)) + zap.String("trigger", trigger.ObjectMeta.Name)) } } @@ -85,14 +85,14 @@ func updateIngress(logger *zap.Logger, oldT *fv1.HTTPTrigger, newT *fv1.HTTPTrig return } - oldIngress, err := kubeClient.ExtensionsV1beta1().Ingresses(podNamespace).Get(oldT.Metadata.Name, v1.GetOptions{}) + oldIngress, err := kubeClient.ExtensionsV1beta1().Ingresses(podNamespace).Get(oldT.ObjectMeta.Name, v1.GetOptions{}) if err != nil { if k8serrors.IsNotFound(err) { createIngress(logger, newT, kubeClient) } logger.Error("failed to get ingress when updating trigger", zap.Error(err), - zap.String("trigger", oldT.Metadata.Name)) + zap.String("trigger", oldT.ObjectMeta.Name)) return } newIngress := util.GetIngressSpec(podNamespace, newT) @@ -124,11 +124,11 @@ func updateIngress(logger *zap.Logger, oldT *fv1.HTTPTrigger, newT *fv1.HTTPTrig if changes { _, err = kubeClient.ExtensionsV1beta1().Ingresses(podNamespace).Update(oldIngress) if err != nil { - logger.Error("failed to update ingress for trigger", zap.Error(err), zap.String("trigger", oldT.Metadata.Name)) + logger.Error("failed to update ingress for trigger", zap.Error(err), zap.String("trigger", oldT.ObjectMeta.Name)) return } logger.Debug("updated ingress successfully for trigger", - zap.String("old_trigger", oldT.Metadata.Name), zap.String("new_trigger", newT.Metadata.Name)) + zap.String("old_trigger", oldT.ObjectMeta.Name), zap.String("new_trigger", newT.ObjectMeta.Name)) } } diff --git a/pkg/router/router.go b/pkg/router/router.go index 1d28b224ad..999f2f92c6 100644 --- a/pkg/router/router.go +++ b/pkg/router/router.go @@ -126,8 +126,6 @@ func Start(logger *zap.Logger, port int, executorUrl string) { logger.Fatal("error waiting for CRDs", zap.Error(err)) } - restClient := fissionClient.GetCrdClient() - executor := executorClient.MakeClient(logger, executorUrl) timeoutStr := os.Getenv("ROUTER_ROUND_TRIP_TIMEOUT") @@ -222,7 +220,7 @@ func Start(logger *zap.Logger, port int, executorUrl string) { zap.Bool("default", displayAccessLog)) } - triggers, _, fnStore := makeHTTPTriggerSet(logger.Named("triggerset"), fmap, fissionClient, kubeClient, executor, restClient, &tsRoundTripperParams{ + triggers, _, fnStore := makeHTTPTriggerSet(logger.Named("triggerset"), fmap, fissionClient, kubeClient, executor, fissionClient.V1().RESTClient(), &tsRoundTripperParams{ timeout: timeout, timeoutExponent: timeoutExponent, disableKeepAlive: disableKeepAlive, diff --git a/pkg/router/router_test.go b/pkg/router/router_test.go index 87889e17c0..06f5635628 100644 --- a/pkg/router/router_test.go +++ b/pkg/router/router_test.go @@ -61,7 +61,7 @@ func TestRouter(t *testing.T) { triggerUrl := "/foo" triggers.triggers = append(triggers.triggers, fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "xxx", Namespace: metav1.NamespaceDefault, ResourceVersion: "1234", @@ -83,7 +83,7 @@ func TestRouter(t *testing.T) { fnMetaMap := make(map[string]*fv1.Function, 1) fnMetaMap[fnMeta.Name] = &fv1.Function{ - Metadata: fnMeta, + ObjectMeta: fnMeta, } rr := resolveResult{ diff --git a/pkg/router/util/util.go b/pkg/router/util/util.go index a06cc935e2..ee591198c3 100644 --- a/pkg/router/util/util.go +++ b/pkg/router/util/util.go @@ -53,7 +53,7 @@ func GetIngressSpec(namespace string, trigger *fv1.HTTPTrigger) *v1beta1.Ingress ing := &v1beta1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Labels: GetDeployLabels(trigger), - Name: trigger.Metadata.Name, + Name: trigger.ObjectMeta.Name, // The Ingress NS MUST be same as Router NS, check long discussion: // https://github.com/kubernetes/kubernetes/issues/17088 // We need to revisit this in future, once Kubernetes supports cross namespace ingress @@ -91,8 +91,8 @@ func GetIngressSpec(namespace string, trigger *fv1.HTTPTrigger) *v1beta1.Ingress func GetDeployLabels(trigger *fv1.HTTPTrigger) map[string]string { // TODO: support function weight return map[string]string{ - "triggerName": trigger.Metadata.Name, + "triggerName": trigger.ObjectMeta.Name, "functionName": trigger.Spec.FunctionReference.Name, - "triggerNamespace": trigger.Metadata.Namespace, + "triggerNamespace": trigger.ObjectMeta.Namespace, } } diff --git a/pkg/router/util/util_test.go b/pkg/router/util/util_test.go index 18f9e5cc35..3bdd1c3d86 100644 --- a/pkg/router/util/util_test.go +++ b/pkg/router/util/util_test.go @@ -42,7 +42,7 @@ func TestGetIngressSpec(t *testing.T) { args: args{ ingressNS: "foobarNS", trigger: &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: "bar", }, @@ -99,7 +99,7 @@ func TestGetIngressSpec(t *testing.T) { args: args{ ingressNS: "foobarNS", trigger: &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: "bar", }, @@ -159,7 +159,7 @@ func TestGetIngressSpec(t *testing.T) { args: args{ ingressNS: "foobarNS", trigger: &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: "bar", }, @@ -217,7 +217,7 @@ func TestGetIngressSpec(t *testing.T) { args: args{ ingressNS: "foobarNS", trigger: &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: "bar", }, @@ -275,7 +275,7 @@ func TestGetIngressSpec(t *testing.T) { args: args{ ingressNS: "foobarNS", trigger: &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: "bar", }, @@ -333,7 +333,7 @@ func TestGetIngressSpec(t *testing.T) { args: args{ ingressNS: "foobarNS", trigger: &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: "bar", }, @@ -392,7 +392,7 @@ func TestGetIngressSpec(t *testing.T) { args: args{ ingressNS: "foobarNS", trigger: &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: "bar", }, @@ -450,7 +450,7 @@ func TestGetIngressSpec(t *testing.T) { args: args{ ingressNS: "foobarNS", trigger: &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: "bar", }, @@ -539,7 +539,7 @@ func TestGetDeployLabels(t *testing.T) { name: "getdeploylabels", args: args{ trigger: &fv1.HTTPTrigger{ - Metadata: metav1.ObjectMeta{ + ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: "bar", }, diff --git a/pkg/storagesvc/archivePruner.go b/pkg/storagesvc/archivePruner.go index c1ec23a3f9..770c19bf62 100644 --- a/pkg/storagesvc/archivePruner.go +++ b/pkg/storagesvc/archivePruner.go @@ -80,7 +80,7 @@ func (pruner *ArchivePruner) getOrphanArchives() { var archiveID string // get all pkgs from kubernetes - pkgList, err := pruner.crdClient.Packages(metav1.NamespaceAll).List(metav1.ListOptions{}) + pkgList, err := pruner.crdClient.V1().Packages(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { pruner.logger.Error("error getting package list from kubernetes", zap.Error(err)) return diff --git a/pkg/timer/timer.go b/pkg/timer/timer.go index b8343d5a0b..5548f3ad97 100644 --- a/pkg/timer/timer.go +++ b/pkg/timer/timer.go @@ -91,8 +91,8 @@ func (timer *Timer) syncCron(triggers []fv1.TimeTrigger) error { // add new triggers or update existing ones triggerMap := make(map[string]bool) for _, t := range triggers { - triggerMap[crd.CacheKey(&t.Metadata)] = true - if item, ok := timer.triggers[crd.CacheKey(&t.Metadata)]; ok { + triggerMap[crd.CacheKey(&t.ObjectMeta)] = true + if item, ok := timer.triggers[crd.CacheKey(&t.ObjectMeta)]; ok { // update cron if the cron spec changed if item.trigger.Spec.Cron != t.Spec.Cron { // if there is an cron running, stop it @@ -104,7 +104,7 @@ func (timer *Timer) syncCron(triggers []fv1.TimeTrigger) error { item.trigger = t } else { - timer.triggers[crd.CacheKey(&t.Metadata)] = &timerTriggerWithCron{ + timer.triggers[crd.CacheKey(&t.ObjectMeta)] = &timerTriggerWithCron{ trigger: t, cron: timer.newCron(t), } @@ -116,7 +116,7 @@ func (timer *Timer) syncCron(triggers []fv1.TimeTrigger) error { if _, found := triggerMap[k]; !found { if v.cron != nil { v.cron.Stop() - timer.logger.Info("cron for time trigger stopped", zap.String("trigger", v.trigger.Metadata.Name)) + timer.logger.Info("cron for time trigger stopped", zap.String("trigger", v.trigger.ObjectMeta.Name)) } delete(timer.triggers, k) } @@ -129,15 +129,15 @@ func (timer *Timer) newCron(t fv1.TimeTrigger) *cron.Cron { c := cron.New() c.AddFunc(t.Spec.Cron, func() { headers := map[string]string{ - "X-Fission-Timer-Name": t.Metadata.Name, + "X-Fission-Timer-Name": t.ObjectMeta.Name, } // with the addition of multi-tenancy, the users can create functions in any namespace. however, // the triggers can only be created in the same namespace as the function. // so essentially, function namespace = trigger namespace. - (*timer.publisher).Publish("", headers, utils.UrlForFunction(t.Spec.FunctionReference.Name, t.Metadata.Namespace)) + (*timer.publisher).Publish("", headers, utils.UrlForFunction(t.Spec.FunctionReference.Name, t.ObjectMeta.Namespace)) }) c.Start() - timer.logger.Info("added new cron for time trigger", zap.String("trigger", t.Metadata.Name)) + timer.logger.Info("added new cron for time trigger", zap.String("trigger", t.ObjectMeta.Name)) return c } diff --git a/pkg/timer/timerSync.go b/pkg/timer/timerSync.go index bfe74ece06..2ff2e4705f 100644 --- a/pkg/timer/timerSync.go +++ b/pkg/timer/timerSync.go @@ -46,7 +46,7 @@ func MakeTimerSync(logger *zap.Logger, fissionClient *crd.FissionClient, timer * func (ws *TimerSync) syncSvc() { for { - triggers, err := ws.fissionClient.TimeTriggers(metav1.NamespaceAll).List(metav1.ListOptions{}) + triggers, err := ws.fissionClient.V1().TimeTriggers(metav1.NamespaceAll).List(metav1.ListOptions{}) if err != nil { if utils.IsNetworkError(err) { ws.logger.Info("encountered a network error - will retry", zap.Error(err)) diff --git a/pkg/v1/types.go b/pkg/v1/types.go index 9db2ef40c5..fbc48599f1 100644 --- a/pkg/v1/types.go +++ b/pkg/v1/types.go @@ -22,7 +22,7 @@ package v1 // type ( - // Metadata is used as the general identifier for all kinds of + // ObjectMeta is used as the general identifier for all kinds of // resources managed by the controller. Metadata struct { Name string `json:"name"`