Use code-generator to generate clientset/informer/lister (#1492)
To reduce maintenance effort and avoid writing duplicate informer code, use code-generator to generate clientset/informer/lister code.
This commit is contained in:
@@ -5,6 +5,7 @@ ignore:
|
|||||||
- "examples"
|
- "examples"
|
||||||
- "test"
|
- "test"
|
||||||
- "tools"
|
- "tools"
|
||||||
|
- "pkg/apis/genclient"
|
||||||
coverage:
|
coverage:
|
||||||
status:
|
status:
|
||||||
project:
|
project:
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ func (client *PreUpgradeTaskClient) VerifyFunctionSpecReferences() {
|
|||||||
var fList *fv1.FunctionList
|
var fList *fv1.FunctionList
|
||||||
|
|
||||||
for i := 0; i < maxRetries; i++ {
|
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 {
|
if err == nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -108,20 +108,20 @@ func (client *PreUpgradeTaskClient) VerifyFunctionSpecReferences() {
|
|||||||
for _, fn := range fList.Items {
|
for _, fn := range fList.Items {
|
||||||
secrets := fn.Spec.Secrets
|
secrets := fn.Spec.Secrets
|
||||||
for _, secret := range secrets {
|
for _, secret := range secrets {
|
||||||
if secret.Namespace != fn.Metadata.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.Metadata.Name, fn.Metadata.Namespace, secret.Name, secret.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
|
configmaps := fn.Spec.ConfigMaps
|
||||||
for _, configmap := range configmaps {
|
for _, configmap := range configmaps {
|
||||||
if configmap.Namespace != fn.Metadata.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.Metadata.Name, fn.Metadata.Namespace, configmap.Name, configmap.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 {
|
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.Metadata.Name, fn.Metadata.Namespace, fn.Spec.Package.PackageRef.Name, fn.Spec.Package.PackageRef.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
|
// 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
|
// for the existing functions to work, we need to give these SAs the right privileges
|
||||||
func (client *PreUpgradeTaskClient) NeedRoleBindings() bool {
|
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 {
|
if err == nil && len(pkgList.Items) > 0 {
|
||||||
return true
|
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 {
|
if err == nil && len(fnList.Items) > 0 {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ require (
|
|||||||
github.com/gogo/protobuf v1.2.1 // indirect
|
github.com/gogo/protobuf v1.2.1 // indirect
|
||||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
||||||
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef // 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/google/gofuzz v1.0.0 // indirect
|
||||||
github.com/googleapis/gnostic v0.3.0 // indirect
|
github.com/googleapis/gnostic v0.3.0 // indirect
|
||||||
github.com/gophercloud/gophercloud v0.2.0 // indirect
|
github.com/gophercloud/gophercloud v0.2.0 // indirect
|
||||||
@@ -63,7 +61,6 @@ require (
|
|||||||
github.com/spf13/pflag v1.0.5
|
github.com/spf13/pflag v1.0.5
|
||||||
github.com/stretchr/testify v1.3.0
|
github.com/stretchr/testify v1.3.0
|
||||||
github.com/ulikunitz/xz v0.0.0-20180703112113-636d36a76670 // indirect
|
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
|
github.com/wcharczuk/go-chart v2.0.1+incompatible
|
||||||
go.etcd.io/bbolt v1.3.2 // indirect
|
go.etcd.io/bbolt v1.3.2 // indirect
|
||||||
go.opencensus.io v0.22.0
|
go.opencensus.io v0.22.0
|
||||||
|
|||||||
@@ -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 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 h1:ohRZ1yEZERGzqaozBgxa3A0lt6c6KF14xhs3IL9ECwg=
|
||||||
github.com/emicklei/go-restful-openapi v1.2.0/go.mod h1:cy7o3Ge8ZWZ5E90mpEY81sJZZFs2pkuYcLvfngYy1l0=
|
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/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 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
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/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 h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w=
|
||||||
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
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-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/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=
|
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/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 h1:HQWT4ta3wW5GZ790GaqLCS+w1dvuA3rMfEQxLi+UOYU=
|
||||||
github.com/ulikunitz/xz v0.0.0-20180703112113-636d36a76670/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
|
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 h1:0pz39ZAycJFF7ju/1mepnk26RLVLBCWz1STcD3doU0A=
|
||||||
github.com/wcharczuk/go-chart v2.0.1+incompatible/go.mod h1:PF5tmL4EIx/7Wf+hEkpCqYi5He4u90sw+0+6FhrryuE=
|
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=
|
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.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
||||||
k8s.io/klog v0.3.3 h1:niceAagH1tzskmaie/icWd7ci1wbG7Bf2c6YGcQv+3c=
|
k8s.io/klog v0.3.3 h1:niceAagH1tzskmaie/icWd7ci1wbG7Bf2c6YGcQv+3c=
|
||||||
k8s.io/klog v0.3.3/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
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/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 h1:ElyM7RPonbKnQqOcw7dG2IK5uvQQn3b/WPHqD5mBvP4=
|
||||||
k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0=
|
k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0=
|
||||||
|
|||||||
@@ -4,4 +4,4 @@ set -o errexit
|
|||||||
set -o nounset
|
set -o nounset
|
||||||
set -o pipefail
|
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")
|
||||||
|
|||||||
@@ -4,4 +4,4 @@ set -o errexit
|
|||||||
set -o nounset
|
set -o nounset
|
||||||
set -o pipefail
|
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 @
|
||||||
|
|||||||
@@ -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/
|
||||||
@@ -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.
|
||||||
|
*/
|
||||||
@@ -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/
|
|
||||||
@@ -17,13 +17,13 @@ limitations under the License.
|
|||||||
// This file tells deepcopy-gen to generate deepcopy methods for all structs in the package.
|
// 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/
|
// 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
|
// +k8s:defaulter-gen=TypeMeta
|
||||||
// +groupName=fission.io
|
// +groupName=fission.io
|
||||||
|
// +groupGoName=V1
|
||||||
package v1
|
package v1
|
||||||
|
|
||||||
const (
|
const (
|
||||||
CRD_VERSION = "fission.io/v1"
|
CRD_VERSION = "fission.io/v1"
|
||||||
|
|
||||||
CRD_NAME_ENVIRONMENT = "Environment"
|
CRD_NAME_ENVIRONMENT = "Environment"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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()
|
|
||||||
}
|
|
||||||
@@ -17,14 +17,10 @@ limitations under the License.
|
|||||||
package v1
|
package v1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
|
||||||
|
|
||||||
apiv1 "k8s.io/api/core/v1"
|
apiv1 "k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/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:
|
// To add a Fission CRD type:
|
||||||
// 1. Create a "spec" type, for everything in the type except metadata
|
// 1. Create a "spec" type, for everything in the type except metadata
|
||||||
@@ -42,11 +38,13 @@ import (
|
|||||||
type (
|
type (
|
||||||
|
|
||||||
// Packages. Think of these as function-level images.
|
// Packages. Think of these as function-level images.
|
||||||
|
// +genclient
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
Package struct {
|
Package struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ObjectMeta `json:"metadata"`
|
metav1.ObjectMeta `json:"metadata"`
|
||||||
Spec PackageSpec `json:"spec"`
|
|
||||||
|
Spec PackageSpec `json:"spec"`
|
||||||
|
|
||||||
// Status indicates the build status of package.
|
// Status indicates the build status of package.
|
||||||
Status PackageStatus `json:"status"`
|
Status PackageStatus `json:"status"`
|
||||||
@@ -56,121 +54,130 @@ type (
|
|||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
PackageList struct {
|
PackageList struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ListMeta `json:"metadata"`
|
metav1.ListMeta `json:"metadata"`
|
||||||
Items []Package `json:"items"`
|
Items []Package `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function is function runs within environment runtime with given package and secrets/configmaps.
|
// Function is function runs within environment runtime with given package and secrets/configmaps.
|
||||||
|
// +genclient
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
Function struct {
|
Function struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ObjectMeta `json:"metadata"`
|
metav1.ObjectMeta `json:"metadata"`
|
||||||
Spec FunctionSpec `json:"spec"`
|
Spec FunctionSpec `json:"spec"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// FunctionList is a list of Functions.
|
// FunctionList is a list of Functions.
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
FunctionList struct {
|
FunctionList struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ListMeta `json:"metadata"`
|
metav1.ListMeta `json:"metadata"`
|
||||||
Items []Function `json:"items"`
|
Items []Function `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Environment is environment for building and running user functions.
|
// Environment is environment for building and running user functions.
|
||||||
|
// +genclient
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
Environment struct {
|
Environment struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ObjectMeta `json:"metadata"`
|
metav1.ObjectMeta `json:"metadata"`
|
||||||
Spec EnvironmentSpec `json:"spec"`
|
Spec EnvironmentSpec `json:"spec"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnvironmentList is a list of Environments.
|
// EnvironmentList is a list of Environments.
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
EnvironmentList struct {
|
EnvironmentList struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ListMeta `json:"metadata"`
|
metav1.ListMeta `json:"metadata"`
|
||||||
Items []Environment `json:"items"`
|
Items []Environment `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTTPTrigger is the trigger invokes user functions when receiving HTTP requests.
|
// HTTPTrigger is the trigger invokes user functions when receiving HTTP requests.
|
||||||
|
// +genclient
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
HTTPTrigger struct {
|
HTTPTrigger struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ObjectMeta `json:"metadata"`
|
metav1.ObjectMeta `json:"metadata"`
|
||||||
Spec HTTPTriggerSpec `json:"spec"`
|
Spec HTTPTriggerSpec `json:"spec"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTTPTriggerList is a list of HTTPTriggers
|
// HTTPTriggerList is a list of HTTPTriggers
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
HTTPTriggerList struct {
|
HTTPTriggerList struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ListMeta `json:"metadata"`
|
metav1.ListMeta `json:"metadata"`
|
||||||
Items []HTTPTrigger `json:"items"`
|
Items []HTTPTrigger `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// KubernetesWatchTrigger watches kubernetes resource events and invokes functions.
|
// KubernetesWatchTrigger watches kubernetes resource events and invokes functions.
|
||||||
|
// +genclient
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
KubernetesWatchTrigger struct {
|
KubernetesWatchTrigger struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ObjectMeta `json:"metadata"`
|
metav1.ObjectMeta `json:"metadata"`
|
||||||
Spec KubernetesWatchTriggerSpec `json:"spec"`
|
Spec KubernetesWatchTriggerSpec `json:"spec"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// KubernetesWatchTriggerList is a list of KubernetesWatchTriggers
|
// KubernetesWatchTriggerList is a list of KubernetesWatchTriggers
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
KubernetesWatchTriggerList struct {
|
KubernetesWatchTriggerList struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ListMeta `json:"metadata"`
|
metav1.ListMeta `json:"metadata"`
|
||||||
Items []KubernetesWatchTrigger `json:"items"`
|
Items []KubernetesWatchTrigger `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TimeTrigger invokes functions based on given cron schedule.
|
// TimeTrigger invokes functions based on given cron schedule.
|
||||||
|
// +genclient
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
TimeTrigger struct {
|
TimeTrigger struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ObjectMeta `json:"metadata"`
|
metav1.ObjectMeta `json:"metadata"`
|
||||||
Spec TimeTriggerSpec `json:"spec"`
|
|
||||||
|
Spec TimeTriggerSpec `json:"spec"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TimeTriggerList is a list of TimeTriggers.
|
// TimeTriggerList is a list of TimeTriggers.
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
TimeTriggerList struct {
|
TimeTriggerList struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ListMeta `json:"metadata"`
|
metav1.ListMeta `json:"metadata"`
|
||||||
|
|
||||||
Items []TimeTrigger `json:"items"`
|
Items []TimeTrigger `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// MessageQueueTrigger invokes functions when messages arrive to certain topic that trigger subscribes to.
|
// MessageQueueTrigger invokes functions when messages arrive to certain topic that trigger subscribes to.
|
||||||
|
// +genclient
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
MessageQueueTrigger struct {
|
MessageQueueTrigger struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ObjectMeta `json:"metadata"`
|
metav1.ObjectMeta `json:"metadata"`
|
||||||
Spec MessageQueueTriggerSpec `json:"spec"`
|
|
||||||
|
Spec MessageQueueTriggerSpec `json:"spec"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// MessageQueueTriggerList is a list of MessageQueueTriggers.
|
// MessageQueueTriggerList is a list of MessageQueueTriggers.
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
MessageQueueTriggerList struct {
|
MessageQueueTriggerList struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ListMeta `json:"metadata"`
|
metav1.ListMeta `json:"metadata"`
|
||||||
Items []MessageQueueTrigger `json:"items"`
|
Items []MessageQueueTrigger `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CanaryConfig is for canary deployment of two functions.
|
// CanaryConfig is for canary deployment of two functions.
|
||||||
|
// +genclient
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
CanaryConfig struct {
|
CanaryConfig struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ObjectMeta `json:"metadata"`
|
metav1.ObjectMeta `json:"metadata"`
|
||||||
Spec CanaryConfigSpec `json:"spec"`
|
Spec CanaryConfigSpec `json:"spec"`
|
||||||
Status CanaryConfigStatus `json:"status"`
|
Status CanaryConfigStatus `json:"status"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CanaryConfigList is a list of CanaryConfigs.
|
// CanaryConfigList is a list of CanaryConfigs.
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
CanaryConfigList struct {
|
CanaryConfigList struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
Metadata metav1.ListMeta `json:"metadata"`
|
metav1.ListMeta `json:"metadata"`
|
||||||
|
|
||||||
Items []CanaryConfig `json:"items"`
|
Items []CanaryConfig `json:"items"`
|
||||||
}
|
}
|
||||||
@@ -267,7 +274,9 @@ type (
|
|||||||
BuildLog string `json:"buildlog,omitempty"` // output of the build (errors etc)
|
BuildLog string `json:"buildlog,omitempty"` // output of the build (errors etc)
|
||||||
|
|
||||||
// LastUpdateTimestamp will store the timestamp the package was last updated
|
// 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.
|
// PackageRef is a reference to the package.
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/hashicorp/go-multierror"
|
"github.com/hashicorp/go-multierror"
|
||||||
nsUtil "github.com/nats-io/nats-streaming-server/util"
|
nsUtil "github.com/nats-io/nats-streaming-server/util"
|
||||||
"github.com/robfig/cron"
|
"github.com/robfig/cron"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/validation"
|
"k8s.io/apimachinery/pkg/util/validation"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -556,3 +557,135 @@ func (spec TimeTriggerSpec) Validate() error {
|
|||||||
|
|
||||||
return result.ErrorOrNil()
|
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()
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// +build !ignore_autogenerated
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright The Fission Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with 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)
|
*out = new(corev1.Container)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
|
if in.PodSpec != nil {
|
||||||
|
in, out := &in.PodSpec, &out.PodSpec
|
||||||
|
*out = new(corev1.PodSpec)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,7 +77,7 @@ func (in *Builder) DeepCopy() *Builder {
|
|||||||
func (in *CanaryConfig) DeepCopyInto(out *CanaryConfig) {
|
func (in *CanaryConfig) DeepCopyInto(out *CanaryConfig) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.Metadata.DeepCopyInto(&out.Metadata)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
out.Spec = in.Spec
|
out.Spec = in.Spec
|
||||||
out.Status = in.Status
|
out.Status = in.Status
|
||||||
return
|
return
|
||||||
@@ -100,7 +105,7 @@ func (in *CanaryConfig) DeepCopyObject() runtime.Object {
|
|||||||
func (in *CanaryConfigList) DeepCopyInto(out *CanaryConfigList) {
|
func (in *CanaryConfigList) DeepCopyInto(out *CanaryConfigList) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
out.Metadata = in.Metadata
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
if in.Items != nil {
|
if in.Items != nil {
|
||||||
in, out := &in.Items, &out.Items
|
in, out := &in.Items, &out.Items
|
||||||
*out = make([]CanaryConfig, len(*in))
|
*out = make([]CanaryConfig, len(*in))
|
||||||
@@ -197,7 +202,7 @@ func (in *ConfigMapReference) DeepCopy() *ConfigMapReference {
|
|||||||
func (in *Environment) DeepCopyInto(out *Environment) {
|
func (in *Environment) DeepCopyInto(out *Environment) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.Metadata.DeepCopyInto(&out.Metadata)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -224,7 +229,7 @@ func (in *Environment) DeepCopyObject() runtime.Object {
|
|||||||
func (in *EnvironmentList) DeepCopyInto(out *EnvironmentList) {
|
func (in *EnvironmentList) DeepCopyInto(out *EnvironmentList) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
out.Metadata = in.Metadata
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
if in.Items != nil {
|
if in.Items != nil {
|
||||||
in, out := &in.Items, &out.Items
|
in, out := &in.Items, &out.Items
|
||||||
*out = make([]Environment, len(*in))
|
*out = make([]Environment, len(*in))
|
||||||
@@ -308,7 +313,7 @@ func (in *ExecutionStrategy) DeepCopy() *ExecutionStrategy {
|
|||||||
func (in *Function) DeepCopyInto(out *Function) {
|
func (in *Function) DeepCopyInto(out *Function) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.Metadata.DeepCopyInto(&out.Metadata)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -335,7 +340,7 @@ func (in *Function) DeepCopyObject() runtime.Object {
|
|||||||
func (in *FunctionList) DeepCopyInto(out *FunctionList) {
|
func (in *FunctionList) DeepCopyInto(out *FunctionList) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
out.Metadata = in.Metadata
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
if in.Items != nil {
|
if in.Items != nil {
|
||||||
in, out := &in.Items, &out.Items
|
in, out := &in.Items, &out.Items
|
||||||
*out = make([]Function, len(*in))
|
*out = make([]Function, len(*in))
|
||||||
@@ -438,7 +443,7 @@ func (in *FunctionSpec) DeepCopy() *FunctionSpec {
|
|||||||
func (in *HTTPTrigger) DeepCopyInto(out *HTTPTrigger) {
|
func (in *HTTPTrigger) DeepCopyInto(out *HTTPTrigger) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.Metadata.DeepCopyInto(&out.Metadata)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -465,7 +470,7 @@ func (in *HTTPTrigger) DeepCopyObject() runtime.Object {
|
|||||||
func (in *HTTPTriggerList) DeepCopyInto(out *HTTPTriggerList) {
|
func (in *HTTPTriggerList) DeepCopyInto(out *HTTPTriggerList) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
out.Metadata = in.Metadata
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
if in.Items != nil {
|
if in.Items != nil {
|
||||||
in, out := &in.Items, &out.Items
|
in, out := &in.Items, &out.Items
|
||||||
*out = make([]HTTPTrigger, len(*in))
|
*out = make([]HTTPTrigger, len(*in))
|
||||||
@@ -498,6 +503,7 @@ func (in *HTTPTriggerList) DeepCopyObject() runtime.Object {
|
|||||||
func (in *HTTPTriggerSpec) DeepCopyInto(out *HTTPTriggerSpec) {
|
func (in *HTTPTriggerSpec) DeepCopyInto(out *HTTPTriggerSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.FunctionReference.DeepCopyInto(&out.FunctionReference)
|
in.FunctionReference.DeepCopyInto(&out.FunctionReference)
|
||||||
|
in.IngressConfig.DeepCopyInto(&out.IngressConfig)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -511,6 +517,29 @@ func (in *HTTPTriggerSpec) DeepCopy() *HTTPTriggerSpec {
|
|||||||
return out
|
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.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *InvokeStrategy) DeepCopyInto(out *InvokeStrategy) {
|
func (in *InvokeStrategy) DeepCopyInto(out *InvokeStrategy) {
|
||||||
*out = *in
|
*out = *in
|
||||||
@@ -532,7 +561,7 @@ func (in *InvokeStrategy) DeepCopy() *InvokeStrategy {
|
|||||||
func (in *KubernetesWatchTrigger) DeepCopyInto(out *KubernetesWatchTrigger) {
|
func (in *KubernetesWatchTrigger) DeepCopyInto(out *KubernetesWatchTrigger) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.Metadata.DeepCopyInto(&out.Metadata)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -559,7 +588,7 @@ func (in *KubernetesWatchTrigger) DeepCopyObject() runtime.Object {
|
|||||||
func (in *KubernetesWatchTriggerList) DeepCopyInto(out *KubernetesWatchTriggerList) {
|
func (in *KubernetesWatchTriggerList) DeepCopyInto(out *KubernetesWatchTriggerList) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
out.Metadata = in.Metadata
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
if in.Items != nil {
|
if in.Items != nil {
|
||||||
in, out := &in.Items, &out.Items
|
in, out := &in.Items, &out.Items
|
||||||
*out = make([]KubernetesWatchTrigger, len(*in))
|
*out = make([]KubernetesWatchTrigger, len(*in))
|
||||||
@@ -616,7 +645,7 @@ func (in *KubernetesWatchTriggerSpec) DeepCopy() *KubernetesWatchTriggerSpec {
|
|||||||
func (in *MessageQueueTrigger) DeepCopyInto(out *MessageQueueTrigger) {
|
func (in *MessageQueueTrigger) DeepCopyInto(out *MessageQueueTrigger) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.Metadata.DeepCopyInto(&out.Metadata)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -643,7 +672,7 @@ func (in *MessageQueueTrigger) DeepCopyObject() runtime.Object {
|
|||||||
func (in *MessageQueueTriggerList) DeepCopyInto(out *MessageQueueTriggerList) {
|
func (in *MessageQueueTriggerList) DeepCopyInto(out *MessageQueueTriggerList) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
out.Metadata = in.Metadata
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
if in.Items != nil {
|
if in.Items != nil {
|
||||||
in, out := &in.Items, &out.Items
|
in, out := &in.Items, &out.Items
|
||||||
*out = make([]MessageQueueTrigger, len(*in))
|
*out = make([]MessageQueueTrigger, len(*in))
|
||||||
@@ -693,9 +722,9 @@ func (in *MessageQueueTriggerSpec) DeepCopy() *MessageQueueTriggerSpec {
|
|||||||
func (in *Package) DeepCopyInto(out *Package) {
|
func (in *Package) DeepCopyInto(out *Package) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.Metadata.DeepCopyInto(&out.Metadata)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
out.Status = in.Status
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -721,7 +750,7 @@ func (in *Package) DeepCopyObject() runtime.Object {
|
|||||||
func (in *PackageList) DeepCopyInto(out *PackageList) {
|
func (in *PackageList) DeepCopyInto(out *PackageList) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
out.Metadata = in.Metadata
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
if in.Items != nil {
|
if in.Items != nil {
|
||||||
in, out := &in.Items, &out.Items
|
in, out := &in.Items, &out.Items
|
||||||
*out = make([]Package, len(*in))
|
*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.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *PackageStatus) DeepCopyInto(out *PackageStatus) {
|
func (in *PackageStatus) DeepCopyInto(out *PackageStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
|
in.LastUpdateTimestamp.DeepCopyInto(&out.LastUpdateTimestamp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -809,6 +839,11 @@ func (in *Runtime) DeepCopyInto(out *Runtime) {
|
|||||||
*out = new(corev1.Container)
|
*out = new(corev1.Container)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
|
if in.PodSpec != nil {
|
||||||
|
in, out := &in.PodSpec, &out.PodSpec
|
||||||
|
*out = new(corev1.PodSpec)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -842,7 +877,7 @@ func (in *SecretReference) DeepCopy() *SecretReference {
|
|||||||
func (in *TimeTrigger) DeepCopyInto(out *TimeTrigger) {
|
func (in *TimeTrigger) DeepCopyInto(out *TimeTrigger) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.Metadata.DeepCopyInto(&out.Metadata)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -869,7 +904,7 @@ func (in *TimeTrigger) DeepCopyObject() runtime.Object {
|
|||||||
func (in *TimeTriggerList) DeepCopyInto(out *TimeTriggerList) {
|
func (in *TimeTriggerList) DeepCopyInto(out *TimeTriggerList) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
out.Metadata = in.Metadata
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
if in.Items != nil {
|
if in.Items != nil {
|
||||||
in, out := &in.Items, &out.Items
|
in, out := &in.Items, &out.Items
|
||||||
*out = make([]TimeTrigger, len(*in))
|
*out = make([]TimeTrigger, len(*in))
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
@@ -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}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
@@ -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))
|
||||||
|
}
|
||||||
@@ -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
|
||||||
@@ -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))
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
+140
@@ -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
|
||||||
|
}
|
||||||
+128
@@ -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
|
||||||
|
}
|
||||||
+68
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
+128
@@ -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
|
||||||
|
}
|
||||||
+128
@@ -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
|
||||||
|
}
|
||||||
+128
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
+128
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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{}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
+174
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
@@ -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())
|
||||||
|
}
|
||||||
@@ -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())
|
||||||
|
}
|
||||||
@@ -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())
|
||||||
|
}
|
||||||
@@ -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())
|
||||||
|
}
|
||||||
@@ -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}
|
||||||
|
}
|
||||||
+89
@@ -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())
|
||||||
|
}
|
||||||
@@ -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())
|
||||||
|
}
|
||||||
@@ -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())
|
||||||
|
}
|
||||||
@@ -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())
|
||||||
|
}
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
+40
@@ -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)
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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{}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -19,6 +19,7 @@ package buildermgr
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@@ -46,7 +47,7 @@ import (
|
|||||||
func buildPackage(ctx context.Context, logger *zap.Logger, fissionClient *crd.FissionClient, envBuilderNamespace string,
|
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) {
|
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 {
|
if err != nil {
|
||||||
e := "error getting environment CRD info"
|
e := "error getting environment CRD info"
|
||||||
logger.Error(e, zap.Error(err))
|
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)
|
return nil, e, ferror.MakeError(http.StatusInternalServerError, e)
|
||||||
}
|
}
|
||||||
|
|
||||||
svcName := fmt.Sprintf("%v-%v.%v", env.Metadata.Name, env.Metadata.ResourceVersion, envBuilderNamespace)
|
svcName := fmt.Sprintf("%v-%v.%v", env.ObjectMeta.Name, env.ObjectMeta.ResourceVersion, envBuilderNamespace)
|
||||||
srcPkgFilename := fmt.Sprintf("%v-%v", pkg.Metadata.Name, strings.ToLower(uniuri.NewLen(6)))
|
srcPkgFilename := fmt.Sprintf("%v-%v", pkg.ObjectMeta.Name, strings.ToLower(uniuri.NewLen(6)))
|
||||||
fetcherC := fetcherClient.MakeClient(logger, fmt.Sprintf("http://%v:8000", svcName))
|
fetcherC := fetcherClient.MakeClient(logger, fmt.Sprintf("http://%v:8000", svcName))
|
||||||
builderC := builderClient.MakeClient(logger, fmt.Sprintf("http://%v:8001", svcName))
|
builderC := builderClient.MakeClient(logger, fmt.Sprintf("http://%v:8001", svcName))
|
||||||
|
|
||||||
fetchReq := &types.FunctionFetchRequest{
|
fetchReq := &types.FunctionFetchRequest{
|
||||||
FetchType: types.FETCH_SOURCE,
|
FetchType: types.FETCH_SOURCE,
|
||||||
Package: pkg.Metadata,
|
Package: pkg.ObjectMeta,
|
||||||
Filename: srcPkgFilename,
|
Filename: srcPkgFilename,
|
||||||
KeepArchive: false,
|
KeepArchive: false,
|
||||||
}
|
}
|
||||||
@@ -127,7 +128,7 @@ func updatePackage(logger *zap.Logger, fissionClient *crd.FissionClient,
|
|||||||
pkg.Status = fv1.PackageStatus{
|
pkg.Status = fv1.PackageStatus{
|
||||||
BuildStatus: status,
|
BuildStatus: status,
|
||||||
BuildLog: buildLogs,
|
BuildLog: buildLogs,
|
||||||
LastUpdateTimestamp: time.Now().UTC(),
|
LastUpdateTimestamp: metav1.Time{Time: time.Now().UTC()},
|
||||||
}
|
}
|
||||||
|
|
||||||
if uploadResp != nil {
|
if uploadResp != nil {
|
||||||
@@ -139,7 +140,7 @@ func updatePackage(logger *zap.Logger, fissionClient *crd.FissionClient,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update package spec
|
// 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 {
|
if err != nil {
|
||||||
e := "error updating package"
|
e := "error updating package"
|
||||||
logger.Error(e, zap.Error(err))
|
logger.Error(e, zap.Error(err))
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ func (envw *environmentWatcher) getLabels(envName string, envNamespace string, e
|
|||||||
func (envw *environmentWatcher) watchEnvironments() {
|
func (envw *environmentWatcher) watchEnvironments() {
|
||||||
rv := ""
|
rv := ""
|
||||||
for {
|
for {
|
||||||
wi, err := envw.fissionClient.Environments(metav1.NamespaceAll).Watch(metav1.ListOptions{
|
wi, err := envw.fissionClient.V1().Environments(metav1.NamespaceAll).Watch(metav1.ListOptions{
|
||||||
ResourceVersion: rv,
|
ResourceVersion: rv,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -173,7 +173,7 @@ func (envw *environmentWatcher) watchEnvironments() {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
env := ev.Object.(*fv1.Environment)
|
env := ev.Object.(*fv1.Environment)
|
||||||
rv = env.Metadata.ResourceVersion
|
rv = env.ObjectMeta.ResourceVersion
|
||||||
envw.sync()
|
envw.sync()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -182,7 +182,7 @@ func (envw *environmentWatcher) watchEnvironments() {
|
|||||||
func (envw *environmentWatcher) sync() {
|
func (envw *environmentWatcher) sync() {
|
||||||
maxRetries := 10
|
maxRetries := 10
|
||||||
for i := 0; i < maxRetries; i++ {
|
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 err != nil {
|
||||||
if utils.IsNetworkError(err) {
|
if utils.IsNetworkError(err) {
|
||||||
envw.logger.Error("error syncing environment CRD resources due to network error, retrying later", zap.Error(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)
|
_, err := envw.getEnvBuilder(&env)
|
||||||
if err != nil {
|
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,
|
// 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
|
// the pods will be created in fission-builder namespace
|
||||||
ns := envw.builderNamespace
|
ns := envw.builderNamespace
|
||||||
if req.env.Metadata.Namespace != metav1.NamespaceDefault {
|
if req.env.ObjectMeta.Namespace != metav1.NamespaceDefault {
|
||||||
ns = req.env.Metadata.Namespace
|
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]
|
builderInfo, ok := envw.cache[key]
|
||||||
if !ok {
|
if !ok {
|
||||||
builderInfo, err := envw.createBuilder(req.env, ns)
|
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
|
// In order to support backward compatibility, for all builder images created in default
|
||||||
// env, the pods are created in fission-builder namespace
|
// env, the pods are created in fission-builder namespace
|
||||||
ns := envw.builderNamespace
|
ns := envw.builderNamespace
|
||||||
if env.Metadata.Namespace != metav1.NamespaceDefault {
|
if env.ObjectMeta.Namespace != metav1.NamespaceDefault {
|
||||||
ns = env.Metadata.Namespace
|
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
|
latestEnvList[key] = &env
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,7 +321,7 @@ func (envw *environmentWatcher) createBuilder(env *fv1.Environment, ns string) (
|
|||||||
var svc *apiv1.Service
|
var svc *apiv1.Service
|
||||||
var deploy *appsv1.Deployment
|
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)
|
svcList, err := envw.getBuilderServiceList(sel, ns)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -336,7 +336,7 @@ func (envw *environmentWatcher) createBuilder(env *fv1.Environment, ns string) (
|
|||||||
} else if len(svcList) == 1 {
|
} else if len(svcList) == 1 {
|
||||||
svc = &svcList[0]
|
svc = &svcList[0]
|
||||||
} else {
|
} 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)
|
deployList, err := envw.getBuilderDeploymentList(sel, ns)
|
||||||
@@ -358,11 +358,11 @@ func (envw *environmentWatcher) createBuilder(env *fv1.Environment, ns string) (
|
|||||||
} else if len(deployList) == 1 {
|
} else if len(deployList) == 1 {
|
||||||
deploy = &deployList[0]
|
deploy = &deployList[0]
|
||||||
} else {
|
} 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{
|
return &builderInfo{
|
||||||
envMetadata: &env.Metadata,
|
envMetadata: &env.ObjectMeta,
|
||||||
service: svc,
|
service: svc,
|
||||||
deployment: deploy,
|
deployment: deploy,
|
||||||
}, nil
|
}, 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) {
|
func (envw *environmentWatcher) createBuilderService(env *fv1.Environment, ns string) (*apiv1.Service, error) {
|
||||||
name := fmt.Sprintf("%v-%v", env.Metadata.Name, env.Metadata.ResourceVersion)
|
name := fmt.Sprintf("%v-%v", env.ObjectMeta.Name, env.ObjectMeta.ResourceVersion)
|
||||||
sel := envw.getLabels(env.Metadata.Name, ns, env.Metadata.ResourceVersion)
|
sel := envw.getLabels(env.ObjectMeta.Name, ns, env.ObjectMeta.ResourceVersion)
|
||||||
service := apiv1.Service{
|
service := apiv1.Service{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Namespace: ns,
|
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) {
|
func (envw *environmentWatcher) createBuilderDeployment(env *fv1.Environment, ns string) (*appsv1.Deployment, error) {
|
||||||
name := fmt.Sprintf("%v-%v", env.Metadata.Name, env.Metadata.ResourceVersion)
|
name := fmt.Sprintf("%v-%v", env.ObjectMeta.Name, env.ObjectMeta.ResourceVersion)
|
||||||
sel := envw.getLabels(env.Metadata.Name, ns, env.Metadata.ResourceVersion)
|
sel := envw.getLabels(env.ObjectMeta.Name, ns, env.ObjectMeta.ResourceVersion)
|
||||||
var replicas int32 = 1
|
var replicas int32 = 1
|
||||||
|
|
||||||
podAnnotations := env.Metadata.Annotations
|
podAnnotations := env.ObjectMeta.Annotations
|
||||||
if podAnnotations == nil {
|
if podAnnotations == nil {
|
||||||
podAnnotations = make(map[string]string)
|
podAnnotations = make(map[string]string)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,14 +83,14 @@ func (pkgw *packageWatcher) build(buildCache *cache.Cache, srcpkg *fv1.Package)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Ignore duplicate build requests
|
// 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)
|
_, err := buildCache.Set(key, srcpkg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer buildCache.Delete(key)
|
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)
|
pkg, err := updatePackage(pkgw.logger, pkgw.fissionClient, srcpkg, fv1.BuildStatusRunning, "", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -98,7 +98,7 @@ func (pkgw *packageWatcher) build(buildCache *cache.Cache, srcpkg *fv1.Package)
|
|||||||
return
|
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) {
|
if k8serrors.IsNotFound(err) {
|
||||||
e := "environment does not exist"
|
e := "environment does not exist"
|
||||||
pkgw.logger.Error(e, zap.String("environment", pkg.Spec.Environment.Name))
|
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.
|
// iterate all available environment builders.
|
||||||
items := pkgw.podStore.List()
|
items := pkgw.podStore.List()
|
||||||
if err != nil {
|
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
|
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,
|
// In order to support backward compatibility, for all builder images created in default env,
|
||||||
// the pods will be created in fission-builder namespace
|
// the pods will be created in fission-builder namespace
|
||||||
builderNs := pkgw.builderNamespace
|
builderNs := pkgw.builderNamespace
|
||||||
if env.Metadata.Namespace != metav1.NamespaceDefault {
|
if env.ObjectMeta.Namespace != metav1.NamespaceDefault {
|
||||||
builderNs = env.Metadata.Namespace
|
builderNs = env.ObjectMeta.Namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filter non-matching pods
|
// 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_NAMESPACE] != builderNs ||
|
||||||
pod.ObjectMeta.Labels[LABEL_ENV_RESOURCEVERSION] != env.Metadata.ResourceVersion {
|
pod.ObjectMeta.Labels[LABEL_ENV_RESOURCEVERSION] != env.ObjectMeta.ResourceVersion {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,31 +157,31 @@ func (pkgw *packageWatcher) build(buildCache *cache.Cache, srcpkg *fv1.Package)
|
|||||||
// Add the package getter rolebinding to builder sa
|
// 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
|
// 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
|
// 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 {
|
if err != nil {
|
||||||
pkgw.logger.Error("error setting up role binding for package",
|
pkgw.logger.Error("error setting up role binding for package",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("role_binding", types.PackageGetterRB),
|
zap.String("role_binding", types.PackageGetterRB),
|
||||||
zap.String("package_name", pkg.Metadata.Name),
|
zap.String("package_name", pkg.ObjectMeta.Name),
|
||||||
zap.String("package_namespace", pkg.Metadata.Namespace))
|
zap.String("package_namespace", pkg.ObjectMeta.Namespace))
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
pkgw.logger.Info("setup rolebinding for sa package",
|
pkgw.logger.Info("setup rolebinding for sa package",
|
||||||
zap.String("sa", fmt.Sprintf("%s.%s", types.FissionBuilderSA, builderNs)),
|
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()
|
ctx := context.Background()
|
||||||
uploadResp, buildLogs, err := buildPackage(ctx, pkgw.logger, pkgw.fissionClient, builderNs, pkgw.storageSvcUrl, pkg)
|
uploadResp, buildLogs, err := buildPackage(ctx, pkgw.logger, pkgw.fissionClient, builderNs, pkgw.storageSvcUrl, pkg)
|
||||||
if err != nil {
|
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)
|
updatePackage(pkgw.logger, pkgw.fissionClient, pkg, types.BuildStatusFailed, buildLogs, nil)
|
||||||
return
|
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{})
|
Functions(metav1.NamespaceAll).List(metav1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e := "error getting function list"
|
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
|
// A package may be used by multiple functions. Update
|
||||||
// functions with old package resource version
|
// functions with old package resource version
|
||||||
for _, fn := range fnList.Items {
|
for _, fn := range fnList.Items {
|
||||||
if fn.Spec.Package.PackageRef.Name == pkg.Metadata.Name &&
|
if fn.Spec.Package.PackageRef.Name == pkg.ObjectMeta.Name &&
|
||||||
fn.Spec.Package.PackageRef.Namespace == pkg.Metadata.Namespace &&
|
fn.Spec.Package.PackageRef.Namespace == pkg.ObjectMeta.Namespace &&
|
||||||
fn.Spec.Package.PackageRef.ResourceVersion != pkg.Metadata.ResourceVersion {
|
fn.Spec.Package.PackageRef.ResourceVersion != pkg.ObjectMeta.ResourceVersion {
|
||||||
fn.Spec.Package.PackageRef.ResourceVersion = pkg.Metadata.ResourceVersion
|
fn.Spec.Package.PackageRef.ResourceVersion = pkg.ObjectMeta.ResourceVersion
|
||||||
// update CRD
|
// update CRD
|
||||||
_, err = pkgw.fissionClient.Functions(fn.Metadata.Namespace).Update(&fn)
|
_, err = pkgw.fissionClient.V1().Functions(fn.ObjectMeta.Namespace).Update(&fn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e := "error updating function package resource version"
|
e := "error updating function package resource version"
|
||||||
pkgw.logger.Error(e, zap.Error(err))
|
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,
|
_, err = updatePackage(pkgw.logger, pkgw.fissionClient, pkg,
|
||||||
types.BuildStatusSucceeded, buildLogs, uploadResp)
|
types.BuildStatusSucceeded, buildLogs, uploadResp)
|
||||||
if err != nil {
|
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)
|
updatePackage(pkgw.logger, pkgw.fissionClient, pkg, types.BuildStatusFailed, buildLogs, nil)
|
||||||
return
|
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
|
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)
|
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",
|
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,
|
func (pkgw *packageWatcher) watchPackages(fissionClient *crd.FissionClient,
|
||||||
kubernetesClient *kubernetes.Clientset, builderNamespace string) {
|
kubernetesClient *kubernetes.Clientset, builderNamespace string) {
|
||||||
buildCache := cache.MakeCache(0, 0)
|
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{
|
pkgStore, controller := k8sCache.NewInformer(lw, &fv1.Package{}, 60*time.Second, k8sCache.ResourceEventHandlerFuncs{
|
||||||
AddFunc: func(obj interface{}) {
|
AddFunc: func(obj interface{}) {
|
||||||
pkg := obj.(*fv1.Package)
|
pkg := obj.(*fv1.Package)
|
||||||
|
|||||||
@@ -49,11 +49,11 @@ type canaryConfigMgr struct {
|
|||||||
canaryConfigStore k8sCache.Store
|
canaryConfigStore k8sCache.Store
|
||||||
canaryConfigController k8sCache.Controller
|
canaryConfigController k8sCache.Controller
|
||||||
promClient *PrometheusApiClient
|
promClient *PrometheusApiClient
|
||||||
crdClient *rest.RESTClient
|
crdClient rest.Interface
|
||||||
canaryCfgCancelFuncMap *canaryConfigCancelFuncMap
|
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 == "" {
|
if prometheusSvc == "" {
|
||||||
logger.Info("try to retrieve prometheus server information from environment variables")
|
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{}) {
|
UpdateFunc: func(oldObj interface{}, newObj interface{}) {
|
||||||
oldConfig := oldObj.(*fv1.CanaryConfig)
|
oldConfig := oldObj.(*fv1.CanaryConfig)
|
||||||
newConfig := newObj.(*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 {
|
newConfig.Status.Status == types.CanaryConfigStatusPending {
|
||||||
canaryCfgMgr.logger.Info("update canary config invoked",
|
canaryCfgMgr.logger.Info("update canary config invoked",
|
||||||
zap.String("name", newConfig.Metadata.Name),
|
zap.String("name", newConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", newConfig.Metadata.Namespace),
|
zap.String("namespace", newConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", newConfig.Metadata.ResourceVersion))
|
zap.String("version", newConfig.ObjectMeta.ResourceVersion))
|
||||||
go canaryCfgMgr.updateCanaryConfig(oldConfig, newConfig)
|
go canaryCfgMgr.updateCanaryConfig(oldConfig, newConfig)
|
||||||
}
|
}
|
||||||
go canaryCfgMgr.reSyncCanaryConfigs()
|
go canaryCfgMgr.reSyncCanaryConfigs()
|
||||||
@@ -145,7 +145,7 @@ func (canaryCfgMgr *canaryConfigMgr) Run(ctx context.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (canaryCfgMgr *canaryConfigMgr) addCanaryConfig(canaryConfig *fv1.CanaryConfig) {
|
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
|
// for each canary config, create a ticker with increment interval
|
||||||
interval, err := time.ParseDuration(canaryConfig.Spec.WeightIncrementDuration)
|
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",
|
canaryCfgMgr.logger.Error("error parsing duration - cant proceed with this canaryConfig",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("duration", canaryConfig.Spec.WeightIncrementDuration),
|
zap.String("duration", canaryConfig.Spec.WeightIncrementDuration),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ticker := time.NewTicker(interval)
|
ticker := time.NewTicker(interval)
|
||||||
@@ -168,13 +168,13 @@ func (canaryCfgMgr *canaryConfigMgr) addCanaryConfig(canaryConfig *fv1.CanaryCon
|
|||||||
CancelFunc: &cancel,
|
CancelFunc: &cancel,
|
||||||
Ticker: ticker,
|
Ticker: ticker,
|
||||||
}
|
}
|
||||||
err = canaryCfgMgr.canaryCfgCancelFuncMap.assign(&canaryConfig.Metadata, cacheValue)
|
err = canaryCfgMgr.canaryCfgCancelFuncMap.assign(&canaryConfig.ObjectMeta, cacheValue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
canaryCfgMgr.logger.Error("error caching canary config",
|
canaryCfgMgr.logger.Error("error caching canary config",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
canaryCfgMgr.processCanaryConfig(&ctx, canaryConfig, ticker)
|
canaryCfgMgr.processCanaryConfig(&ctx, canaryConfig, ticker)
|
||||||
@@ -188,16 +188,16 @@ func (canaryCfgMgr *canaryConfigMgr) processCanaryConfig(ctx *context.Context, c
|
|||||||
case <-(*ctx).Done():
|
case <-(*ctx).Done():
|
||||||
// this case when someone deleted their canary config in the middle of it being processed
|
// this case when someone deleted their canary config in the middle of it being processed
|
||||||
canaryCfgMgr.logger.Info("cancel func called for canary config",
|
canaryCfgMgr.logger.Info("cancel func called for canary config",
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&canaryConfig.Metadata)
|
err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&canaryConfig.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
canaryCfgMgr.logger.Error("error removing canary config",
|
canaryCfgMgr.logger.Error("error removing canary config",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -206,25 +206,25 @@ func (canaryCfgMgr *canaryConfigMgr) processCanaryConfig(ctx *context.Context, c
|
|||||||
// if yes, rollback.
|
// if yes, rollback.
|
||||||
// else, increment the weight of new function and decrement old function by `weightIncrement`
|
// else, increment the weight of new function and decrement old function by `weightIncrement`
|
||||||
canaryCfgMgr.logger.Info("processing canary config",
|
canaryCfgMgr.logger.Info("processing canary config",
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
canaryCfgMgr.RollForwardOrBack(canaryConfig, quit, ticker)
|
canaryCfgMgr.RollForwardOrBack(canaryConfig, quit, ticker)
|
||||||
|
|
||||||
case <-quit:
|
case <-quit:
|
||||||
// we're done processing this canary config either because the new function receives 100% of the traffic
|
// 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
|
// or we rolled back to send all 100% traffic to old function
|
||||||
canaryCfgMgr.logger.Info("quit processing canaryConfig",
|
canaryCfgMgr.logger.Info("quit processing canaryConfig",
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&canaryConfig.Metadata)
|
err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&canaryConfig.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
canaryCfgMgr.logger.Error("error removing canary config from map",
|
canaryCfgMgr.logger.Error("error removing canary config from map",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
}
|
}
|
||||||
return
|
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) {
|
func (canaryCfgMgr *canaryConfigMgr) RollForwardOrBack(canaryConfig *fv1.CanaryConfig, quit chan struct{}, ticker *time.Ticker) {
|
||||||
// handle race between delete event and notification on ticker.C
|
// 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 {
|
if err != nil {
|
||||||
canaryCfgMgr.logger.Info("no need of processing the config, not in cache anymore",
|
canaryCfgMgr.logger.Info("no need of processing the config, not in cache anymore",
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// get the http trigger object associated with this canary config
|
// 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 err != nil {
|
||||||
// if the http trigger is not found, then give up processing this config.
|
// if the http trigger is not found, then give up processing this config.
|
||||||
if k8serrors.IsNotFound(err) {
|
if k8serrors.IsNotFound(err) {
|
||||||
canaryCfgMgr.logger.Error("http trigger object for canary config missing",
|
canaryCfgMgr.logger.Error("http trigger object for canary config missing",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("trigger", canaryConfig.Spec.Trigger),
|
zap.String("trigger", canaryConfig.Spec.Trigger),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
close(quit)
|
close(quit)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -260,41 +260,41 @@ func (canaryCfgMgr *canaryConfigMgr) RollForwardOrBack(canaryConfig *fv1.CanaryC
|
|||||||
// just silently ignore. wait for next window to increment weight
|
// just silently ignore. wait for next window to increment weight
|
||||||
canaryCfgMgr.logger.Error("error fetching http trigger object for config",
|
canaryCfgMgr.logger.Error("error fetching http trigger object for config",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle a race between ticker.Stop and receiving a notification on ticker.C
|
// handle a race between ticker.Stop and receiving a notification on ticker.C
|
||||||
if canaryConfig.Status.Status != types.CanaryConfigStatusPending {
|
if canaryConfig.Status.Status != types.CanaryConfigStatusPending {
|
||||||
canaryCfgMgr.logger.Info("no need of processing the config, not pending anymore",
|
canaryCfgMgr.logger.Info("no need of processing the config, not pending anymore",
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if triggerObj.Spec.FunctionReference.Type == types.FunctionReferenceTypeFunctionWeights &&
|
if triggerObj.Spec.FunctionReference.Type == types.FunctionReferenceTypeFunctionWeights &&
|
||||||
triggerObj.Spec.FunctionReference.FunctionWeights[canaryConfig.Spec.NewFunction] != 0 {
|
triggerObj.Spec.FunctionReference.FunctionWeights[canaryConfig.Spec.NewFunction] != 0 {
|
||||||
failurePercent, err := canaryCfgMgr.promClient.GetFunctionFailurePercentage(triggerObj.Spec.RelativeURL, triggerObj.Spec.Method,
|
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 {
|
if err != nil {
|
||||||
// silently ignore. wait for next window to increment weight
|
// silently ignore. wait for next window to increment weight
|
||||||
canaryCfgMgr.logger.Error("error calculating failure percentage",
|
canaryCfgMgr.logger.Error("error calculating failure percentage",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
canaryCfgMgr.logger.Info("failure percentage calculated for canaryConfig",
|
canaryCfgMgr.logger.Info("failure percentage calculated for canaryConfig",
|
||||||
zap.Float64("failure_percent", failurePercent),
|
zap.Float64("failure_percent", failurePercent),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
|
|
||||||
if failurePercent == -1 {
|
if failurePercent == -1 {
|
||||||
// this means there were no requests triggered to this url during this window. return here and check back
|
// 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",
|
canaryCfgMgr.logger.Error("failure percent crossed the threshold, so rolling back",
|
||||||
zap.Float64("failure_percent", failurePercent),
|
zap.Float64("failure_percent", failurePercent),
|
||||||
zap.Int("threshold", canaryConfig.Spec.FailureThreshold),
|
zap.Int("threshold", canaryConfig.Spec.FailureThreshold),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
ticker.Stop()
|
ticker.Stop()
|
||||||
err := canaryCfgMgr.rollback(canaryConfig, triggerObj)
|
err := canaryCfgMgr.rollback(canaryConfig, triggerObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
canaryCfgMgr.logger.Error("error rolling back canary config",
|
canaryCfgMgr.logger.Error("error rolling back canary config",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
}
|
}
|
||||||
close(quit)
|
close(quit)
|
||||||
return
|
return
|
||||||
@@ -329,10 +329,10 @@ func (canaryCfgMgr *canaryConfigMgr) RollForwardOrBack(canaryConfig *fv1.CanaryC
|
|||||||
// just log the error and hope that next iteration will succeed
|
// just log the error and hope that next iteration will succeed
|
||||||
canaryCfgMgr.logger.Error("error incrementing weights for trigger",
|
canaryCfgMgr.logger.Error("error incrementing weights for trigger",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("trigger", triggerObj.Metadata.Name),
|
zap.String("trigger", triggerObj.ObjectMeta.Name),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -340,21 +340,21 @@ func (canaryCfgMgr *canaryConfigMgr) RollForwardOrBack(canaryConfig *fv1.CanaryC
|
|||||||
ticker.Stop()
|
ticker.Stop()
|
||||||
// update the status of canary config as done processing, we dont care if we arent able to update because
|
// 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
|
// 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)
|
types.CanaryConfigStatusSucceeded)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// cant do much after max retries other than logging it.
|
// cant do much after max retries other than logging it.
|
||||||
canaryCfgMgr.logger.Error("error updating canary config after max retries",
|
canaryCfgMgr.logger.Error("error updating canary config after max retries",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
}
|
}
|
||||||
|
|
||||||
canaryCfgMgr.logger.Info("done processing canary config - the new function is receiving all the traffic",
|
canaryCfgMgr.logger.Info("done processing canary config - the new function is receiving all the traffic",
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
close(quit)
|
close(quit)
|
||||||
return
|
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) {
|
func (canaryCfgMgr *canaryConfigMgr) updateHttpTriggerWithRetries(triggerName, triggerNamespace string, fnWeights map[string]int) (err error) {
|
||||||
for i := 0; i < maxRetries; i++ {
|
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 {
|
if err != nil {
|
||||||
e := "error getting http trigger object"
|
e := "error getting http trigger object"
|
||||||
canaryCfgMgr.logger.Error(e, zap.Error(err), zap.String("trigger_name", triggerName), zap.String("trigger_namespace", triggerNamespace))
|
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
|
triggerObj.Spec.FunctionReference.FunctionWeights = fnWeights
|
||||||
|
|
||||||
_, err = canaryCfgMgr.fissionClient.HTTPTriggers(triggerNamespace).Update(triggerObj)
|
_, err = canaryCfgMgr.fissionClient.V1().HTTPTriggers(triggerNamespace).Update(triggerObj)
|
||||||
switch {
|
switch {
|
||||||
case err == nil:
|
case err == nil:
|
||||||
canaryCfgMgr.logger.Debug("updated http trigger", zap.String("trigger_name", triggerName), zap.String("trigger_namespace", triggerNamespace))
|
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) {
|
func (canaryCfgMgr *canaryConfigMgr) updateCanaryConfigStatusWithRetries(cfgName, cfgNamespace string, status string) (err error) {
|
||||||
for i := 0; i < maxRetries; i++ {
|
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 {
|
if err != nil {
|
||||||
e := "error getting http canary config object"
|
e := "error getting http canary config object"
|
||||||
canaryCfgMgr.logger.Error(e,
|
canaryCfgMgr.logger.Error(e,
|
||||||
@@ -415,7 +415,7 @@ func (canaryCfgMgr *canaryConfigMgr) updateCanaryConfigStatusWithRetries(cfgName
|
|||||||
|
|
||||||
canaryCfgObj.Status.Status = status
|
canaryCfgObj.Status.Status = status
|
||||||
|
|
||||||
_, err = canaryCfgMgr.fissionClient.CanaryConfigs(cfgNamespace).Update(canaryCfgObj)
|
_, err = canaryCfgMgr.fissionClient.V1().CanaryConfigs(cfgNamespace).Update(canaryCfgObj)
|
||||||
switch {
|
switch {
|
||||||
case err == nil:
|
case err == nil:
|
||||||
canaryCfgMgr.logger.Info("updated canary config",
|
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.NewFunction] = 0
|
||||||
functionWeights[canaryConfig.Spec.OldFunction] = 100
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = canaryCfgMgr.updateCanaryConfigStatusWithRetries(canaryConfig.Metadata.Name, canaryConfig.Metadata.Namespace,
|
err = canaryCfgMgr.updateCanaryConfigStatusWithRetries(canaryConfig.ObjectMeta.Name, canaryConfig.ObjectMeta.Namespace,
|
||||||
types.CanaryConfigStatusFailed)
|
types.CanaryConfigStatusFailed)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
@@ -475,23 +475,23 @@ func (canaryCfgMgr *canaryConfigMgr) rollForward(canaryConfig *fv1.CanaryConfig,
|
|||||||
}
|
}
|
||||||
|
|
||||||
canaryCfgMgr.logger.Info("incremented functionWeights",
|
canaryCfgMgr.logger.Info("incremented functionWeights",
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.Any("function_weights", functionWeights))
|
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
|
return doneProcessingCanaryConfig, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (canaryCfgMgr *canaryConfigMgr) reSyncCanaryConfigs() {
|
func (canaryCfgMgr *canaryConfigMgr) reSyncCanaryConfigs() {
|
||||||
for _, obj := range canaryCfgMgr.canaryConfigStore.List() {
|
for _, obj := range canaryCfgMgr.canaryConfigStore.List() {
|
||||||
canaryConfig := obj.(*fv1.CanaryConfig)
|
canaryConfig := obj.(*fv1.CanaryConfig)
|
||||||
_, err := canaryCfgMgr.canaryCfgCancelFuncMap.lookup(&canaryConfig.Metadata)
|
_, err := canaryCfgMgr.canaryCfgCancelFuncMap.lookup(&canaryConfig.ObjectMeta)
|
||||||
if err != nil && canaryConfig.Status.Status == types.CanaryConfigStatusPending {
|
if err != nil && canaryConfig.Status.Status == types.CanaryConfigStatusPending {
|
||||||
canaryCfgMgr.logger.Debug("adding canary config from resync loop",
|
canaryCfgMgr.logger.Debug("adding canary config from resync loop",
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
|
|
||||||
// new canaryConfig detected, add it to our cache and start processing it
|
// new canaryConfig detected, add it to our cache and start processing it
|
||||||
go canaryCfgMgr.addCanaryConfig(canaryConfig)
|
go canaryCfgMgr.addCanaryConfig(canaryConfig)
|
||||||
@@ -501,16 +501,16 @@ func (canaryCfgMgr *canaryConfigMgr) reSyncCanaryConfigs() {
|
|||||||
|
|
||||||
func (canaryCfgMgr *canaryConfigMgr) deleteCanaryConfig(canaryConfig *fv1.CanaryConfig) {
|
func (canaryCfgMgr *canaryConfigMgr) deleteCanaryConfig(canaryConfig *fv1.CanaryConfig) {
|
||||||
canaryCfgMgr.logger.Debug("delete event received for canary config",
|
canaryCfgMgr.logger.Debug("delete event received for canary config",
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
canaryProcessingInfo, err := canaryCfgMgr.canaryCfgCancelFuncMap.lookup(&canaryConfig.Metadata)
|
canaryProcessingInfo, err := canaryCfgMgr.canaryCfgCancelFuncMap.lookup(&canaryConfig.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
canaryCfgMgr.logger.Error("lookup of canary config for deletion failed",
|
canaryCfgMgr.logger.Error("lookup of canary config for deletion failed",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("name", canaryConfig.Metadata.Name),
|
zap.String("name", canaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", canaryConfig.Metadata.Namespace),
|
zap.String("namespace", canaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", canaryConfig.Metadata.ResourceVersion))
|
zap.String("version", canaryConfig.ObjectMeta.ResourceVersion))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// first stop the ticker
|
// 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
|
// before removing the object from cache, we need to get it's cancel func and cancel it
|
||||||
canaryCfgMgr.deleteCanaryConfig(oldCanaryConfig)
|
canaryCfgMgr.deleteCanaryConfig(oldCanaryConfig)
|
||||||
|
|
||||||
err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&oldCanaryConfig.Metadata)
|
err := canaryCfgMgr.canaryCfgCancelFuncMap.remove(&oldCanaryConfig.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
canaryCfgMgr.logger.Error("error removing canary config from map",
|
canaryCfgMgr.logger.Error("error removing canary config from map",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.String("name", oldCanaryConfig.Metadata.Name),
|
zap.String("name", oldCanaryConfig.ObjectMeta.Name),
|
||||||
zap.String("namespace", oldCanaryConfig.Metadata.Namespace),
|
zap.String("namespace", oldCanaryConfig.ObjectMeta.Namespace),
|
||||||
zap.String("version", oldCanaryConfig.Metadata.ResourceVersion))
|
zap.String("version", oldCanaryConfig.ObjectMeta.ResourceVersion))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
canaryCfgMgr.addCanaryConfig(newCanaryConfig)
|
canaryCfgMgr.addCanaryConfig(newCanaryConfig)
|
||||||
|
|||||||
+23
-23
@@ -79,7 +79,7 @@ func assertCronSpecFails(err error) {
|
|||||||
|
|
||||||
func TestFunctionApi(t *testing.T) {
|
func TestFunctionApi(t *testing.T) {
|
||||||
testFunc := &fv1.Function{
|
testFunc := &fv1.Function{
|
||||||
Metadata: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "foo",
|
Name: "foo",
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
},
|
},
|
||||||
@@ -99,7 +99,7 @@ func TestFunctionApi(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
_, err := g.Client().V1().Function().Get(&metav1.ObjectMeta{
|
_, err := g.Client().V1().Function().Get(&metav1.ObjectMeta{
|
||||||
Name: testFunc.Metadata.Name,
|
Name: testFunc.ObjectMeta.Name,
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
})
|
})
|
||||||
assertNotFoundFailure(err, "function")
|
assertNotFoundFailure(err, "function")
|
||||||
@@ -114,13 +114,13 @@ func TestFunctionApi(t *testing.T) {
|
|||||||
_, err = g.Client().V1().Function().Create(testFunc)
|
_, err = g.Client().V1().Function().Create(testFunc)
|
||||||
assertNameReuseFailure(err, "function")
|
assertNameReuseFailure(err, "function")
|
||||||
|
|
||||||
testFunc.Metadata.ResourceVersion = m.ResourceVersion
|
testFunc.ObjectMeta.ResourceVersion = m.ResourceVersion
|
||||||
testFunc.Spec.Package.FunctionName = "yyy"
|
testFunc.Spec.Package.FunctionName = "yyy"
|
||||||
_, err = g.Client().V1().Function().Update(testFunc)
|
_, err = g.Client().V1().Function().Update(testFunc)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
testFunc.Metadata.ResourceVersion = ""
|
testFunc.ObjectMeta.ResourceVersion = ""
|
||||||
testFunc.Metadata.Name = "bar"
|
testFunc.ObjectMeta.Name = "bar"
|
||||||
m2, err := g.Client().V1().Function().Create(testFunc)
|
m2, err := g.Client().V1().Function().Create(testFunc)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
defer g.Client().V1().Function().Delete(m2)
|
defer g.Client().V1().Function().Delete(m2)
|
||||||
@@ -146,7 +146,7 @@ func TestFunctionApi(t *testing.T) {
|
|||||||
|
|
||||||
func TestHTTPTriggerApi(t *testing.T) {
|
func TestHTTPTriggerApi(t *testing.T) {
|
||||||
testTrigger := &fv1.HTTPTrigger{
|
testTrigger := &fv1.HTTPTrigger{
|
||||||
Metadata: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "foo",
|
Name: "foo",
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
},
|
},
|
||||||
@@ -160,7 +160,7 @@ func TestHTTPTriggerApi(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
_, err := g.Client().V1().HTTPTrigger().Get(&metav1.ObjectMeta{
|
_, err := g.Client().V1().HTTPTrigger().Get(&metav1.ObjectMeta{
|
||||||
Name: testTrigger.Metadata.Name,
|
Name: testTrigger.ObjectMeta.Name,
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
})
|
})
|
||||||
assertNotFoundFailure(err, "httptrigger")
|
assertNotFoundFailure(err, "httptrigger")
|
||||||
@@ -179,13 +179,13 @@ func TestHTTPTriggerApi(t *testing.T) {
|
|||||||
testTrigger.Spec.FunctionReference.Type == tr.Spec.FunctionReference.Type &&
|
testTrigger.Spec.FunctionReference.Type == tr.Spec.FunctionReference.Type &&
|
||||||
testTrigger.Spec.FunctionReference.Name == tr.Spec.FunctionReference.Name, "trigger should match after reading")
|
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"
|
testTrigger.Spec.RelativeURL = "/hi"
|
||||||
_, err = g.Client().V1().HTTPTrigger().Update(testTrigger)
|
_, err = g.Client().V1().HTTPTrigger().Update(testTrigger)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
testTrigger.Metadata.ResourceVersion = ""
|
testTrigger.ObjectMeta.ResourceVersion = ""
|
||||||
testTrigger.Metadata.Name = "yyy"
|
testTrigger.ObjectMeta.Name = "yyy"
|
||||||
_, err = g.Client().V1().HTTPTrigger().Create(testTrigger)
|
_, err = g.Client().V1().HTTPTrigger().Create(testTrigger)
|
||||||
assert(err != nil, "duplicate trigger should not be allowed")
|
assert(err != nil, "duplicate trigger should not be allowed")
|
||||||
|
|
||||||
@@ -202,7 +202,7 @@ func TestHTTPTriggerApi(t *testing.T) {
|
|||||||
func TestEnvironmentApi(t *testing.T) {
|
func TestEnvironmentApi(t *testing.T) {
|
||||||
|
|
||||||
testEnv := &fv1.Environment{
|
testEnv := &fv1.Environment{
|
||||||
Metadata: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "foo",
|
Name: "foo",
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
},
|
},
|
||||||
@@ -215,7 +215,7 @@ func TestEnvironmentApi(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
_, err := g.Client().V1().Environment().Get(&metav1.ObjectMeta{
|
_, err := g.Client().V1().Environment().Get(&metav1.ObjectMeta{
|
||||||
Name: testEnv.Metadata.Name,
|
Name: testEnv.ObjectMeta.Name,
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
})
|
})
|
||||||
assertNotFoundFailure(err, "environment")
|
assertNotFoundFailure(err, "environment")
|
||||||
@@ -231,13 +231,13 @@ func TestEnvironmentApi(t *testing.T) {
|
|||||||
panicIf(err)
|
panicIf(err)
|
||||||
assert(reflect.DeepEqual(testEnv.Spec, e.Spec), "env should match after reading")
|
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"
|
testEnv.Spec.Runtime.Image = "another-img"
|
||||||
_, err = g.Client().V1().Environment().Update(testEnv)
|
_, err = g.Client().V1().Environment().Update(testEnv)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
testEnv.Metadata.ResourceVersion = ""
|
testEnv.ObjectMeta.ResourceVersion = ""
|
||||||
testEnv.Metadata.Name = "bar"
|
testEnv.ObjectMeta.Name = "bar"
|
||||||
|
|
||||||
m2, err := g.Client().V1().Environment().Create(testEnv)
|
m2, err := g.Client().V1().Environment().Create(testEnv)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
@@ -250,7 +250,7 @@ func TestEnvironmentApi(t *testing.T) {
|
|||||||
|
|
||||||
func TestWatchApi(t *testing.T) {
|
func TestWatchApi(t *testing.T) {
|
||||||
testWatch := &fv1.KubernetesWatchTrigger{
|
testWatch := &fv1.KubernetesWatchTrigger{
|
||||||
Metadata: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "xxx",
|
Name: "xxx",
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
},
|
},
|
||||||
@@ -264,7 +264,7 @@ func TestWatchApi(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
_, err := g.Client().V1().KubeWatcher().Get(&metav1.ObjectMeta{
|
_, err := g.Client().V1().KubeWatcher().Get(&metav1.ObjectMeta{
|
||||||
Name: testWatch.Metadata.Name,
|
Name: testWatch.ObjectMeta.Name,
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
})
|
})
|
||||||
assertNotFoundFailure(err, "watch")
|
assertNotFoundFailure(err, "watch")
|
||||||
@@ -283,7 +283,7 @@ func TestWatchApi(t *testing.T) {
|
|||||||
testWatch.Spec.FunctionReference.Type == w.Spec.FunctionReference.Type &&
|
testWatch.Spec.FunctionReference.Type == w.Spec.FunctionReference.Type &&
|
||||||
testWatch.Spec.FunctionReference.Name == w.Spec.FunctionReference.Name, "watch should match after reading")
|
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)
|
m2, err := g.Client().V1().KubeWatcher().Create(testWatch)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
defer g.Client().V1().KubeWatcher().Delete(m2)
|
defer g.Client().V1().KubeWatcher().Delete(m2)
|
||||||
@@ -295,7 +295,7 @@ func TestWatchApi(t *testing.T) {
|
|||||||
|
|
||||||
func TestTimeTriggerApi(t *testing.T) {
|
func TestTimeTriggerApi(t *testing.T) {
|
||||||
testTrigger := &fv1.TimeTrigger{
|
testTrigger := &fv1.TimeTrigger{
|
||||||
Metadata: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "xxx",
|
Name: "xxx",
|
||||||
Namespace: metav1.NamespaceDefault,
|
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")
|
assertNotFoundFailure(err, "trigger")
|
||||||
|
|
||||||
m, err := g.Client().V1().TimeTrigger().Create(testTrigger)
|
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.Type == tr.Spec.FunctionReference.Type &&
|
||||||
testTrigger.Spec.FunctionReference.Name == tr.Spec.FunctionReference.Name, "trigger should match after reading")
|
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"
|
testTrigger.Spec.Cron = "@hourly"
|
||||||
_, err = g.Client().V1().TimeTrigger().Update(testTrigger)
|
_, err = g.Client().V1().TimeTrigger().Update(testTrigger)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
testTrigger.Metadata.ResourceVersion = ""
|
testTrigger.ObjectMeta.ResourceVersion = ""
|
||||||
testTrigger.Metadata.Name = "yyy"
|
testTrigger.ObjectMeta.Name = "yyy"
|
||||||
testTrigger.Spec.Cron = "Not valid cron spec"
|
testTrigger.Spec.Cron = "Not valid cron spec"
|
||||||
_, err = g.Client().V1().TimeTrigger().Create(testTrigger)
|
_, err = g.Client().V1().TimeTrigger().Create(testTrigger)
|
||||||
assertCronSpecFails(err)
|
assertCronSpecFails(err)
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ func RegisterCanaryConfigRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.CanaryConfig{}).
|
Reads(fv1.CanaryConfig{}).
|
||||||
Writes(metav1.ObjectMeta{}).
|
Writes(metav1.ObjectMeta{}).
|
||||||
Returns(http.StatusCreated, "Metadata of created canaryConfig", metav1.ObjectMeta{}))
|
Returns(http.StatusCreated, "ObjectMeta of created canaryConfig", metav1.ObjectMeta{}))
|
||||||
|
|
||||||
ws.Route(
|
ws.Route(
|
||||||
ws.GET("/v2/canaryconfigs/{canaryConfig}").
|
ws.GET("/v2/canaryconfigs/{canaryConfig}").
|
||||||
@@ -86,7 +86,7 @@ func RegisterCanaryConfigRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.CanaryConfig{}).
|
Reads(fv1.CanaryConfig{}).
|
||||||
Writes(metav1.ObjectMeta{}). // on the response
|
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.Route(
|
||||||
ws.DELETE("/v2/canaryconfigs/{canaryConfig}").
|
ws.DELETE("/v2/canaryconfigs/{canaryConfig}").
|
||||||
@@ -122,13 +122,13 @@ func (a *API) CanaryConfigApiCreate(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(canaryCfgNew.Metadata)
|
resp, err := json.Marshal(canaryCfgNew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -153,7 +153,7 @@ func (a *API) CanaryConfigApiGet(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -180,7 +180,7 @@ func (a *API) CanaryConfigApiList(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -215,13 +215,13 @@ func (a *API) CanaryConfigApiUpdate(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(canayCfgNew.Metadata)
|
resp, err := json.Marshal(canayCfgNew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -244,7 +244,7 @@ func (a *API) CanaryConfigApiDelete(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ func (c *CanaryConfig) Update(canaryConf *fv1.CanaryConfig) (*metav1.ObjectMeta,
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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)
|
resp, err := c.client.Put(relativeUrl, "application/json", reqbody)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ func (c *Environment) Update(env *fv1.Environment) (*metav1.ObjectMeta, error) {
|
|||||||
return nil, err
|
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)
|
resp, err := c.client.Put(relativeUrl, "application/json", data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ func (c *Function) Update(f *fv1.Function) (*metav1.ObjectMeta, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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)
|
resp, err := c.client.Put(relativeUrl, "application/json", reqbody)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ func (c *HTTPTrigger) Update(t *fv1.HTTPTrigger) (*metav1.ObjectMeta, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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)
|
resp, err := c.client.Put(relativeUrl, "application/json", reqbody)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ func (c *MessageQueueTrigger) Update(mqTrigger *fv1.MessageQueueTrigger) (*metav
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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)
|
resp, err := c.client.Put(relativeUrl, "application/json", reqbody)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ func (c *Package) Update(f *fv1.Package) (*metav1.ObjectMeta, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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)
|
resp, err := c.client.Put(relativeUrl, "application/json", reqbody)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ func (c *TimeTrigger) Update(t *fv1.TimeTrigger) (*metav1.ObjectMeta, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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)
|
resp, err := c.client.Put(relativeUrl, "application/json", reqbody)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -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 {
|
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
|
// start the appropriate controller
|
||||||
if featureConfig.CanaryConfig.IsEnabled {
|
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)
|
featureConfig.CanaryConfig.PrometheusSvc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
featureStatus[config.CanaryFeature] = err.Error()
|
featureStatus[config.CanaryFeature] = err.Error()
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ func RegisterEnvironmentRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.Environment{}).
|
Reads(fv1.Environment{}).
|
||||||
Writes(metav1.ObjectMeta{}).
|
Writes(metav1.ObjectMeta{}).
|
||||||
Returns(http.StatusCreated, "Metadata of created environment", metav1.ObjectMeta{}))
|
Returns(http.StatusCreated, "ObjectMeta of created environment", metav1.ObjectMeta{}))
|
||||||
|
|
||||||
ws.Route(
|
ws.Route(
|
||||||
ws.GET("/v2/environments/{environment}").
|
ws.GET("/v2/environments/{environment}").
|
||||||
@@ -84,7 +84,7 @@ func RegisterEnvironmentRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.Environment{}).
|
Reads(fv1.Environment{}).
|
||||||
Writes(metav1.ObjectMeta{}). // on the response
|
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.Route(
|
||||||
ws.DELETE("/v2/environments/{environment}").
|
ws.DELETE("/v2/environments/{environment}").
|
||||||
@@ -105,7 +105,7 @@ func (a *API) EnvironmentApiList(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceAll
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -136,19 +136,19 @@ func (a *API) EnvironmentApiCreate(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if namespace exists, if not create it.
|
// check if namespace exists, if not create it.
|
||||||
err = a.createNsIfNotExists(env.Metadata.Namespace)
|
err = a.createNsIfNotExists(env.ObjectMeta.Namespace)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(enew.Metadata)
|
resp, err := json.Marshal(enew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -167,7 +167,7 @@ func (a *API) EnvironmentApiGet(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -199,19 +199,19 @@ func (a *API) EnvironmentApiUpdate(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if name != env.Metadata.Name {
|
if name != env.ObjectMeta.Name {
|
||||||
err = ferror.MakeError(ferror.ErrorInvalidArgument, "Environment name doesn't match URL")
|
err = ferror.MakeError(ferror.ErrorInvalidArgument, "Environment name doesn't match URL")
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(enew.Metadata)
|
resp, err := json.Marshal(enew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -229,7 +229,7 @@ func (a *API) EnvironmentApiDelete(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ func RegisterFunctionRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.Function{}).
|
Reads(fv1.Function{}).
|
||||||
Writes(metav1.ObjectMeta{}).
|
Writes(metav1.ObjectMeta{}).
|
||||||
Returns(http.StatusOK, "Metadata of created function", metav1.ObjectMeta{}))
|
Returns(http.StatusOK, "ObjectMeta of created function", metav1.ObjectMeta{}))
|
||||||
|
|
||||||
ws.Route(
|
ws.Route(
|
||||||
ws.GET("/v2/functions/{function}").
|
ws.GET("/v2/functions/{function}").
|
||||||
@@ -96,7 +96,7 @@ func RegisterFunctionRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.Function{}).
|
Reads(fv1.Function{}).
|
||||||
Writes(metav1.ObjectMeta{}). // on the response
|
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.Route(
|
||||||
ws.DELETE("/v2/functions/{function}").
|
ws.DELETE("/v2/functions/{function}").
|
||||||
@@ -117,7 +117,7 @@ func (a *API) FunctionApiList(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceAll
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -147,19 +147,19 @@ func (a *API) FunctionApiCreate(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if namespace exists, if not create it.
|
// check if namespace exists, if not create it.
|
||||||
err = a.createNsIfNotExists(f.Metadata.Namespace)
|
err = a.createNsIfNotExists(f.ObjectMeta.Namespace)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(fnew.Metadata)
|
resp, err := json.Marshal(fnew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -177,7 +177,7 @@ func (a *API) FunctionApiGet(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -208,19 +208,19 @@ func (a *API) FunctionApiUpdate(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if name != f.Metadata.Name {
|
if name != f.ObjectMeta.Name {
|
||||||
err = ferror.MakeError(ferror.ErrorInvalidArgument, "Function name doesn't match URL")
|
err = ferror.MakeError(ferror.ErrorInvalidArgument, "Function name doesn't match URL")
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(fnew.Metadata)
|
resp, err := json.Marshal(fnew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -236,7 +236,7 @@ func (a *API) FunctionApiDelete(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -299,7 +299,7 @@ func (a *API) FunctionPodLogs(w http.ResponseWriter, r *http.Request) {
|
|||||||
podNs = ns
|
podNs = ns
|
||||||
}
|
}
|
||||||
|
|
||||||
f, err := a.fissionClient.Functions(ns).Get(fnName)
|
f, err := a.fissionClient.V1().Functions(ns).Get(fnName, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -307,7 +307,7 @@ func (a *API) FunctionPodLogs(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
// Get function Pods first
|
// Get function Pods first
|
||||||
selector := map[string]string{
|
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_NAME: f.Spec.Environment.Name,
|
||||||
types.ENVIRONMENT_NAMESPACE: f.Spec.Environment.Namespace,
|
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,
|
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))
|
w.Write([]byte(msg))
|
||||||
|
|
||||||
_, err = io.Copy(w, podLogs)
|
_, err = io.Copy(w, podLogs)
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ func RegisterHTTPTriggerRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.HTTPTrigger{}).
|
Reads(fv1.HTTPTrigger{}).
|
||||||
Writes(metav1.ObjectMeta{}).
|
Writes(metav1.ObjectMeta{}).
|
||||||
Returns(http.StatusCreated, "Metadata of created httpTrigger", metav1.ObjectMeta{}))
|
Returns(http.StatusCreated, "ObjectMeta of created httpTrigger", metav1.ObjectMeta{}))
|
||||||
|
|
||||||
ws.Route(
|
ws.Route(
|
||||||
ws.GET("/v2/triggers/http/{httpTrigger}").
|
ws.GET("/v2/triggers/http/{httpTrigger}").
|
||||||
@@ -84,7 +84,7 @@ func RegisterHTTPTriggerRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.HTTPTrigger{}).
|
Reads(fv1.HTTPTrigger{}).
|
||||||
Writes(metav1.ObjectMeta{}). // on the response
|
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.Route(
|
||||||
ws.DELETE("/v2/triggers/http/{httpTrigger}").
|
ws.DELETE("/v2/triggers/http/{httpTrigger}").
|
||||||
@@ -105,7 +105,7 @@ func (a *API) HTTPTriggerApiList(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceAll
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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.
|
// checkHTTPTriggerDuplicates checks whether the tuple (Method, Host, URL) is duplicate or not.
|
||||||
func (a *API) checkHTTPTriggerDuplicates(t *fv1.HTTPTrigger) error {
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for _, ht := range triggers.Items {
|
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.
|
// Same resource. No need to check.
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if ht.Spec.RelativeURL == t.Spec.RelativeURL && ht.Spec.Method == t.Spec.Method && ht.Spec.Host == t.Spec.Host {
|
if ht.Spec.RelativeURL == t.Spec.RelativeURL && ht.Spec.Method == t.Spec.Method && ht.Spec.Host == t.Spec.Host {
|
||||||
return ferror.MakeError(ferror.ErrorNameExists,
|
return ferror.MakeError(ferror.ErrorNameExists,
|
||||||
fmt.Sprintf("HTTPTrigger with same Host, URL & method already exists (%v)",
|
fmt.Sprintf("HTTPTrigger with same Host, URL & method already exists (%v)",
|
||||||
ht.Metadata.Name))
|
ht.ObjectMeta.Name))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@@ -162,19 +162,19 @@ func (a *API) HTTPTriggerApiCreate(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if namespace exists, if not create it.
|
// check if namespace exists, if not create it.
|
||||||
err = a.createNsIfNotExists(t.Metadata.Namespace)
|
err = a.createNsIfNotExists(t.ObjectMeta.Namespace)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(tnew.Metadata)
|
resp, err := json.Marshal(tnew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -192,7 +192,7 @@ func (a *API) HTTPTriggerApiGet(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -224,7 +224,7 @@ func (a *API) HTTPTriggerApiUpdate(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if name != t.Metadata.Name {
|
if name != t.ObjectMeta.Name {
|
||||||
err = ferror.MakeError(ferror.ErrorInvalidArgument, "HTTPTrigger name doesn't match URL")
|
err = ferror.MakeError(ferror.ErrorInvalidArgument, "HTTPTrigger name doesn't match URL")
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -236,13 +236,13 @@ func (a *API) HTTPTriggerApiUpdate(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(tnew.Metadata)
|
resp, err := json.Marshal(tnew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -258,7 +258,7 @@ func (a *API) HTTPTriggerApiDelete(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ func RegisterMessageQueueTriggerRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.MessageQueueTrigger{}).
|
Reads(fv1.MessageQueueTrigger{}).
|
||||||
Writes(metav1.ObjectMeta{}).
|
Writes(metav1.ObjectMeta{}).
|
||||||
Returns(http.StatusCreated, "Metadata of created messageQueueTrigger", metav1.ObjectMeta{}))
|
Returns(http.StatusCreated, "ObjectMeta of created messageQueueTrigger", metav1.ObjectMeta{}))
|
||||||
|
|
||||||
ws.Route(
|
ws.Route(
|
||||||
ws.GET("/v2/triggers/messagequeue/{mqTrigger}").
|
ws.GET("/v2/triggers/messagequeue/{mqTrigger}").
|
||||||
@@ -83,7 +83,7 @@ func RegisterMessageQueueTriggerRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.MessageQueueTrigger{}).
|
Reads(fv1.MessageQueueTrigger{}).
|
||||||
Writes(metav1.ObjectMeta{}). // on the response
|
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.Route(
|
||||||
ws.DELETE("/v2/triggers/messagequeue/{mqTrigger}").
|
ws.DELETE("/v2/triggers/messagequeue/{mqTrigger}").
|
||||||
@@ -105,7 +105,7 @@ func (a *API) MessageQueueTriggerApiList(w http.ResponseWriter, r *http.Request)
|
|||||||
ns = metav1.NamespaceAll
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -133,19 +133,19 @@ func (a *API) MessageQueueTriggerApiCreate(w http.ResponseWriter, r *http.Reques
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if namespace exists, if not create it.
|
// check if namespace exists, if not create it.
|
||||||
err = a.createNsIfNotExists(mqTrigger.Metadata.Namespace)
|
err = a.createNsIfNotExists(mqTrigger.ObjectMeta.Namespace)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(tnew.Metadata)
|
resp, err := json.Marshal(tnew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -162,7 +162,7 @@ func (a *API) MessageQueueTriggerApiGet(w http.ResponseWriter, r *http.Request)
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -192,19 +192,19 @@ func (a *API) MessageQueueTriggerApiUpdate(w http.ResponseWriter, r *http.Reques
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if name != mqTrigger.Metadata.Name {
|
if name != mqTrigger.ObjectMeta.Name {
|
||||||
err = ferror.MakeError(ferror.ErrorInvalidArgument, "Message queue trigger name doesn't match URL")
|
err = ferror.MakeError(ferror.ErrorInvalidArgument, "Message queue trigger name doesn't match URL")
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(tnew.Metadata)
|
resp, err := json.Marshal(tnew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -220,7 +220,7 @@ func (a *API) MessageQueueTriggerApiDelete(w http.ResponseWriter, r *http.Reques
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ func enrichSwaggerObject(swo *spec.Swagger) {
|
|||||||
|
|
||||||
var openapiDescription = `
|
var openapiDescription = `
|
||||||
OpenAPI 2.0 document for fission controller
|
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.
|
* Following semantic errors are known issues and won't affect the API accessibility.
|
||||||
- Operations must have unique operationIds.
|
- Operations must have unique operationIds.
|
||||||
- All scale semantic errors. (Due to go-restful exposes inner fields of k8s struct).
|
- All scale semantic errors. (Due to go-restful exposes inner fields of k8s struct).
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ func RegisterPackageRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.Package{}).
|
Reads(fv1.Package{}).
|
||||||
Writes(metav1.ObjectMeta{}).
|
Writes(metav1.ObjectMeta{}).
|
||||||
Returns(http.StatusCreated, "Metadata of created package", metav1.ObjectMeta{}))
|
Returns(http.StatusCreated, "ObjectMeta of created package", metav1.ObjectMeta{}))
|
||||||
|
|
||||||
ws.Route(
|
ws.Route(
|
||||||
ws.GET("/v2/packages/{package}").
|
ws.GET("/v2/packages/{package}").
|
||||||
@@ -86,7 +86,7 @@ func RegisterPackageRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.Package{}).
|
Reads(fv1.Package{}).
|
||||||
Writes(metav1.ObjectMeta{}). // on the response
|
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.Route(
|
||||||
ws.DELETE("/v2/packages/{package}").
|
ws.DELETE("/v2/packages/{package}").
|
||||||
@@ -106,7 +106,7 @@ func (a *API) PackageApiList(w http.ResponseWriter, r *http.Request) {
|
|||||||
if len(ns) == 0 {
|
if len(ns) == 0 {
|
||||||
ns = metav1.NamespaceAll
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -150,19 +150,19 @@ func (a *API) PackageApiCreate(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if namespace exists, if not create it.
|
// check if namespace exists, if not create it.
|
||||||
err = a.createNsIfNotExists(f.Metadata.Namespace)
|
err = a.createNsIfNotExists(f.ObjectMeta.Namespace)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(fnew.Metadata)
|
resp, err := json.Marshal(fnew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -181,7 +181,7 @@ func (a *API) PackageApiGet(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
raw := r.FormValue("raw") // just the deployment pkg
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -217,19 +217,19 @@ func (a *API) PackageApiUpdate(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if name != f.Metadata.Name {
|
if name != f.ObjectMeta.Name {
|
||||||
err = ferror.MakeError(ferror.ErrorInvalidArgument, "Package name doesn't match URL")
|
err = ferror.MakeError(ferror.ErrorInvalidArgument, "Package name doesn't match URL")
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(fnew.Metadata)
|
resp, err := json.Marshal(fnew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -245,7 +245,7 @@ func (a *API) PackageApiDelete(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ func RegisterTimeTriggerRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.TimeTrigger{}).
|
Reads(fv1.TimeTrigger{}).
|
||||||
Writes(metav1.ObjectMeta{}).
|
Writes(metav1.ObjectMeta{}).
|
||||||
Returns(http.StatusCreated, "Metadata of created timeTrigger", metav1.ObjectMeta{}))
|
Returns(http.StatusCreated, "ObjectMeta of created timeTrigger", metav1.ObjectMeta{}))
|
||||||
|
|
||||||
ws.Route(
|
ws.Route(
|
||||||
ws.GET("/v2/triggers/time/{timeTrigger}").
|
ws.GET("/v2/triggers/time/{timeTrigger}").
|
||||||
@@ -84,7 +84,7 @@ func RegisterTimeTriggerRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.TimeTrigger{}).
|
Reads(fv1.TimeTrigger{}).
|
||||||
Writes(metav1.ObjectMeta{}). // on the response
|
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.Route(
|
||||||
ws.DELETE("/v2/triggers/time/{timeTrigger}").
|
ws.DELETE("/v2/triggers/time/{timeTrigger}").
|
||||||
@@ -105,7 +105,7 @@ func (a *API) TimeTriggerApiList(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceAll
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -143,19 +143,19 @@ func (a *API) TimeTriggerApiCreate(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if namespace exists, if not create it.
|
// check if namespace exists, if not create it.
|
||||||
err = a.createNsIfNotExists(t.Metadata.Namespace)
|
err = a.createNsIfNotExists(t.ObjectMeta.Namespace)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(tnew.Metadata)
|
resp, err := json.Marshal(tnew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -173,7 +173,7 @@ func (a *API) TimeTriggerApiGet(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -205,7 +205,7 @@ func (a *API) TimeTriggerApiUpdate(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if name != t.Metadata.Name {
|
if name != t.ObjectMeta.Name {
|
||||||
err = ferror.MakeError(ferror.ErrorInvalidArgument, "TimeTrigger name doesn't match URL")
|
err = ferror.MakeError(ferror.ErrorInvalidArgument, "TimeTrigger name doesn't match URL")
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -218,13 +218,13 @@ func (a *API) TimeTriggerApiUpdate(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(tnew.Metadata)
|
resp, err := json.Marshal(tnew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -240,7 +240,7 @@ func (a *API) TimeTriggerApiDelete(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ func RegisterWatchRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.KubernetesWatchTrigger{}).
|
Reads(fv1.KubernetesWatchTrigger{}).
|
||||||
Writes(metav1.ObjectMeta{}).
|
Writes(metav1.ObjectMeta{}).
|
||||||
Returns(http.StatusCreated, "Metadata of created kubernetesWatch", metav1.ObjectMeta{}))
|
Returns(http.StatusCreated, "ObjectMeta of created kubernetesWatch", metav1.ObjectMeta{}))
|
||||||
|
|
||||||
ws.Route(
|
ws.Route(
|
||||||
ws.GET("/v2/watches/{watch}").
|
ws.GET("/v2/watches/{watch}").
|
||||||
@@ -83,7 +83,7 @@ func RegisterWatchRoute(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON).
|
Produces(restful.MIME_JSON).
|
||||||
Reads(fv1.KubernetesWatchTrigger{}).
|
Reads(fv1.KubernetesWatchTrigger{}).
|
||||||
Writes(metav1.ObjectMeta{}). // on the response
|
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.Route(
|
||||||
ws.DELETE("/v2/watches/{watch}").
|
ws.DELETE("/v2/watches/{watch}").
|
||||||
@@ -104,7 +104,7 @@ func (a *API) WatchApiList(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceAll
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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
|
||||||
// TODO check for duplicate watches -> we probably wont need it?
|
// TODO check for duplicate watches -> we probably wont need it?
|
||||||
// check if namespace exists, if not create it.
|
// check if namespace exists, if not create it.
|
||||||
err = a.createNsIfNotExists(watch.Metadata.Namespace)
|
err = a.createNsIfNotExists(watch.ObjectMeta.Namespace)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := json.Marshal(wnew.Metadata)
|
resp, err := json.Marshal(wnew.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -166,7 +166,7 @@ func (a *API) WatchApiGet(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
@@ -194,7 +194,7 @@ func (a *API) WatchApiDelete(w http.ResponseWriter, r *http.Request) {
|
|||||||
ns = metav1.NamespaceDefault
|
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 {
|
if err != nil {
|
||||||
a.respondWithError(w, err)
|
a.respondWithError(w, err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -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()
|
|
||||||
}
|
|
||||||
+26
-140
@@ -23,21 +23,18 @@ import (
|
|||||||
|
|
||||||
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
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"
|
||||||
"k8s.io/client-go/kubernetes/scheme"
|
|
||||||
_ "k8s.io/client-go/plugin/pkg/client/auth"
|
_ "k8s.io/client-go/plugin/pkg/client/auth"
|
||||||
"k8s.io/client-go/rest"
|
"k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/tools/clientcmd"
|
"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 (
|
type (
|
||||||
FissionClient struct {
|
FissionClient struct {
|
||||||
crdClient *rest.RESTClient
|
crdClient clientset.Interface
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -77,100 +74,35 @@ func GetKubernetesClient() (*rest.Config, *kubernetes.Clientset, *apiextensionsc
|
|||||||
return config, clientset, apiExtClientset, nil
|
return config, clientset, apiExtClientset, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCrdClient gets a CRD client config
|
func MakeFissionClient() (*FissionClient, *kubernetes.Clientset, *apiextensionsclient.Clientset, error) {
|
||||||
func GetCrdClient(config *rest.Config) (*rest.RESTClient, error) {
|
config, kubeClient, apiExtClient, err := GetKubernetesClient()
|
||||||
// mutate config to add our types
|
if err != nil {
|
||||||
configureClient(config)
|
return nil, nil, nil, err
|
||||||
|
|
||||||
// make a REST client with that config
|
|
||||||
return rest.RESTClientFor(config)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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",
|
|
||||||
}
|
}
|
||||||
config.GroupVersion = &groupversion
|
|
||||||
config.APIPath = "/apis"
|
|
||||||
config.ContentType = runtime.ContentTypeJSON
|
|
||||||
config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs}
|
|
||||||
|
|
||||||
schemeBuilder := runtime.NewSchemeBuilder(
|
// make a CRD REST client with the config
|
||||||
func(scheme *runtime.Scheme) error {
|
crdClient, err := clientset.NewForConfig(config)
|
||||||
scheme.AddKnownTypes(
|
if err != nil {
|
||||||
groupversion,
|
return nil, nil, nil, err
|
||||||
&fv1.Function{},
|
}
|
||||||
&fv1.FunctionList{},
|
|
||||||
&metav1.ListOptions{},
|
fc := &FissionClient{
|
||||||
&metav1.DeleteOptions{},
|
crdClient: crdClient,
|
||||||
)
|
}
|
||||||
scheme.AddKnownTypes(
|
return fc, kubeClient, apiExtClient, nil
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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()
|
start := time.Now()
|
||||||
for {
|
for {
|
||||||
fi := MakeFunctionInterface(crdClient, metav1.NamespaceDefault)
|
fi := fc.crdClient.V1V1().Functions(metav1.NamespaceDefault)
|
||||||
_, err := fi.List(metav1.ListOptions{})
|
_, err := fi.List(metav1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
time.Sleep(100 * time.Millisecond)
|
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
|
|
||||||
}
|
|
||||||
|
|||||||
+55
-58
@@ -24,9 +24,9 @@ import (
|
|||||||
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/client-go/rest"
|
|
||||||
|
|
||||||
fv1 "github.com/fission/fission/pkg/apis/fission.io/v1"
|
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) {
|
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
|
// sample function object
|
||||||
function := &fv1.Function{
|
function := &fv1.Function{
|
||||||
TypeMeta: metav1.TypeMeta{
|
TypeMeta: metav1.TypeMeta{
|
||||||
Kind: "Function",
|
Kind: "Function",
|
||||||
APIVersion: "fission.io/v1",
|
APIVersion: "fission.io/v1",
|
||||||
},
|
},
|
||||||
Metadata: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "hello",
|
Name: "hello",
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
},
|
},
|
||||||
@@ -61,34 +61,34 @@ func functionTests(crdClient *rest.RESTClient) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Test function CRUD
|
// Test function CRUD
|
||||||
fi := MakeFunctionInterface(crdClient, metav1.NamespaceDefault)
|
fi := crdClient.Functions(metav1.NamespaceDefault)
|
||||||
|
|
||||||
// cleanup from old crashed tests, ignore errors
|
// cleanup from old crashed tests, ignore errors
|
||||||
fi.Delete(function.Metadata.Name, nil)
|
fi.Delete(function.ObjectMeta.Name, nil)
|
||||||
|
|
||||||
// create
|
// create
|
||||||
f, err := fi.Create(function)
|
f, err := fi.Create(function)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
if f.Metadata.Name != function.Metadata.Name {
|
if f.ObjectMeta.Name != function.ObjectMeta.Name {
|
||||||
log.Panicf("Bad result from create: %v", f)
|
log.Panicf("Bad result from create: %v", f)
|
||||||
}
|
}
|
||||||
|
|
||||||
// read
|
// read
|
||||||
f, err = fi.Get(function.Metadata.Name)
|
f, err = fi.Get(function.ObjectMeta.Name, metav1.GetOptions{})
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
if f.Spec.Environment.Name != function.Spec.Environment.Name {
|
if f.Spec.Environment.Name != function.Spec.Environment.Name {
|
||||||
log.Panicf("Bad result from Get: %v", f)
|
log.Panicf("Bad result from Get: %v", f)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("f.Metadata = %#v", f.Metadata)
|
log.Printf("f.ObjectMeta = %#v", f.ObjectMeta)
|
||||||
|
|
||||||
// update
|
// update
|
||||||
function.Metadata.ResourceVersion = f.Metadata.ResourceVersion
|
function.ObjectMeta.ResourceVersion = f.ObjectMeta.ResourceVersion
|
||||||
function.Spec.Environment.Name = "yyy"
|
function.Spec.Environment.Name = "yyy"
|
||||||
f, err = fi.Update(function)
|
f, err = fi.Update(function)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
log.Printf("f.Metadata = %#v", f.Metadata)
|
log.Printf("f.ObjectMeta = %#v", f.ObjectMeta)
|
||||||
|
|
||||||
// list
|
// list
|
||||||
fl, err := fi.List(metav1.ListOptions{})
|
fl, err := fi.List(metav1.ListOptions{})
|
||||||
@@ -101,7 +101,7 @@ func functionTests(crdClient *rest.RESTClient) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// delete
|
// delete
|
||||||
err = fi.Delete(f.Metadata.Name, nil)
|
err = fi.Delete(f.ObjectMeta.Name, nil)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
// start a watch
|
// start a watch
|
||||||
@@ -109,10 +109,10 @@ func functionTests(crdClient *rest.RESTClient) {
|
|||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
function.Metadata.ResourceVersion = ""
|
function.ObjectMeta.ResourceVersion = ""
|
||||||
f, err = fi.Create(function)
|
f, err = fi.Create(function)
|
||||||
panicIf(err)
|
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
|
// assert that we get a watch event for the new function
|
||||||
recvd := false
|
recvd := false
|
||||||
@@ -135,14 +135,14 @@ func functionTests(crdClient *rest.RESTClient) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func environmentTests(crdClient *rest.RESTClient) {
|
func environmentTests(crdClient genv1.V1V1Interface) {
|
||||||
// sample environment object
|
// sample environment object
|
||||||
environment := &fv1.Environment{
|
environment := &fv1.Environment{
|
||||||
TypeMeta: metav1.TypeMeta{
|
TypeMeta: metav1.TypeMeta{
|
||||||
Kind: "Environment",
|
Kind: "Environment",
|
||||||
APIVersion: "fission.io/v1",
|
APIVersion: "fission.io/v1",
|
||||||
},
|
},
|
||||||
Metadata: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "hello",
|
Name: "hello",
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
},
|
},
|
||||||
@@ -159,27 +159,27 @@ func environmentTests(crdClient *rest.RESTClient) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Test environment CRUD
|
// Test environment CRUD
|
||||||
ei := MakeEnvironmentInterface(crdClient, metav1.NamespaceDefault)
|
ei := crdClient.Environments(metav1.NamespaceDefault)
|
||||||
|
|
||||||
// cleanup from old crashed tests, ignore errors
|
// cleanup from old crashed tests, ignore errors
|
||||||
ei.Delete(environment.Metadata.Name, nil)
|
ei.Delete(environment.ObjectMeta.Name, nil)
|
||||||
|
|
||||||
// create
|
// create
|
||||||
e, err := ei.Create(environment)
|
e, err := ei.Create(environment)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
if e.Metadata.Name != environment.Metadata.Name {
|
if e.ObjectMeta.Name != environment.ObjectMeta.Name {
|
||||||
log.Panicf("Bad result from create: %v", e)
|
log.Panicf("Bad result from create: %v", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
// read
|
// read
|
||||||
e, err = ei.Get(environment.Metadata.Name)
|
e, err = ei.Get(environment.ObjectMeta.Name, metav1.GetOptions{})
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
if len(e.Spec.Runtime.Image) != len(environment.Spec.Runtime.Image) {
|
if len(e.Spec.Runtime.Image) != len(environment.Spec.Runtime.Image) {
|
||||||
log.Panicf("Bad result from Get: %#v", e)
|
log.Panicf("Bad result from Get: %#v", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
// update
|
// update
|
||||||
environment.Metadata.ResourceVersion = e.Metadata.ResourceVersion
|
environment.ObjectMeta.ResourceVersion = e.ObjectMeta.ResourceVersion
|
||||||
environment.Spec.Runtime.Image = "www"
|
environment.Spec.Runtime.Image = "www"
|
||||||
e, err = ei.Update(environment)
|
e, err = ei.Update(environment)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
@@ -195,7 +195,7 @@ func environmentTests(crdClient *rest.RESTClient) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// delete
|
// delete
|
||||||
err = ei.Delete(e.Metadata.Name, nil)
|
err = ei.Delete(e.ObjectMeta.Name, nil)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
// start a watch
|
// start a watch
|
||||||
@@ -203,10 +203,10 @@ func environmentTests(crdClient *rest.RESTClient) {
|
|||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
environment.Metadata.ResourceVersion = ""
|
environment.ObjectMeta.ResourceVersion = ""
|
||||||
e, err = ei.Create(environment)
|
e, err = ei.Create(environment)
|
||||||
panicIf(err)
|
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
|
// assert that we get a watch event for the new environment
|
||||||
recvd := false
|
recvd := false
|
||||||
@@ -229,14 +229,14 @@ func environmentTests(crdClient *rest.RESTClient) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func httpTriggerTests(crdClient *rest.RESTClient) {
|
func httpTriggerTests(crdClient genv1.V1V1Interface) {
|
||||||
// sample httpTrigger object
|
// sample httpTrigger object
|
||||||
httpTrigger := &fv1.HTTPTrigger{
|
httpTrigger := &fv1.HTTPTrigger{
|
||||||
TypeMeta: metav1.TypeMeta{
|
TypeMeta: metav1.TypeMeta{
|
||||||
Kind: "HTTPTrigger",
|
Kind: "HTTPTrigger",
|
||||||
APIVersion: "fission.io/v1",
|
APIVersion: "fission.io/v1",
|
||||||
},
|
},
|
||||||
Metadata: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "hello",
|
Name: "hello",
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
},
|
},
|
||||||
@@ -251,27 +251,27 @@ func httpTriggerTests(crdClient *rest.RESTClient) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Test httpTrigger CRUD
|
// Test httpTrigger CRUD
|
||||||
ei := MakeHTTPTriggerInterface(crdClient, metav1.NamespaceDefault)
|
ei := crdClient.HTTPTriggers(metav1.NamespaceDefault)
|
||||||
|
|
||||||
// cleanup from old crashed tests, ignore errors
|
// cleanup from old crashed tests, ignore errors
|
||||||
ei.Delete(httpTrigger.Metadata.Name, nil)
|
ei.Delete(httpTrigger.ObjectMeta.Name, nil)
|
||||||
|
|
||||||
// create
|
// create
|
||||||
e, err := ei.Create(httpTrigger)
|
e, err := ei.Create(httpTrigger)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
if e.Metadata.Name != httpTrigger.Metadata.Name {
|
if e.ObjectMeta.Name != httpTrigger.ObjectMeta.Name {
|
||||||
log.Panicf("Bad result from create: %v", e)
|
log.Panicf("Bad result from create: %v", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
// read
|
// read
|
||||||
e, err = ei.Get(httpTrigger.Metadata.Name)
|
e, err = ei.Get(httpTrigger.ObjectMeta.Name, metav1.GetOptions{})
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
if len(e.Spec.Method) != len(httpTrigger.Spec.Method) {
|
if len(e.Spec.Method) != len(httpTrigger.Spec.Method) {
|
||||||
log.Panicf("Bad result from Get: %#v", e)
|
log.Panicf("Bad result from Get: %#v", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
// update
|
// update
|
||||||
httpTrigger.Metadata.ResourceVersion = e.Metadata.ResourceVersion
|
httpTrigger.ObjectMeta.ResourceVersion = e.ObjectMeta.ResourceVersion
|
||||||
httpTrigger.Spec.Method = "POST"
|
httpTrigger.Spec.Method = "POST"
|
||||||
e, err = ei.Update(httpTrigger)
|
e, err = ei.Update(httpTrigger)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
@@ -287,7 +287,7 @@ func httpTriggerTests(crdClient *rest.RESTClient) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// delete
|
// delete
|
||||||
err = ei.Delete(e.Metadata.Name, nil)
|
err = ei.Delete(e.ObjectMeta.Name, nil)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
// start a watch
|
// start a watch
|
||||||
@@ -295,10 +295,10 @@ func httpTriggerTests(crdClient *rest.RESTClient) {
|
|||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
httpTrigger.Metadata.ResourceVersion = ""
|
httpTrigger.ObjectMeta.ResourceVersion = ""
|
||||||
e, err = ei.Create(httpTrigger)
|
e, err = ei.Create(httpTrigger)
|
||||||
panicIf(err)
|
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
|
// assert that we get a watch event for the new httpTrigger
|
||||||
recvd := false
|
recvd := false
|
||||||
@@ -321,14 +321,14 @@ func httpTriggerTests(crdClient *rest.RESTClient) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func kubernetesWatchTriggerTests(crdClient *rest.RESTClient) {
|
func kubernetesWatchTriggerTests(crdClient genv1.V1V1Interface) {
|
||||||
// sample kubernetesWatchTrigger object
|
// sample kubernetesWatchTrigger object
|
||||||
kubernetesWatchTrigger := &fv1.KubernetesWatchTrigger{
|
kubernetesWatchTrigger := &fv1.KubernetesWatchTrigger{
|
||||||
TypeMeta: metav1.TypeMeta{
|
TypeMeta: metav1.TypeMeta{
|
||||||
Kind: "KubernetesWatchTrigger",
|
Kind: "KubernetesWatchTrigger",
|
||||||
APIVersion: "fission.io/v1",
|
APIVersion: "fission.io/v1",
|
||||||
},
|
},
|
||||||
Metadata: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "hello",
|
Name: "hello",
|
||||||
Namespace: metav1.NamespaceDefault,
|
Namespace: metav1.NamespaceDefault,
|
||||||
},
|
},
|
||||||
@@ -346,27 +346,27 @@ func kubernetesWatchTriggerTests(crdClient *rest.RESTClient) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Test kubernetesWatchTrigger CRUD
|
// Test kubernetesWatchTrigger CRUD
|
||||||
ei := MakeKubernetesWatchTriggerInterface(crdClient, metav1.NamespaceDefault)
|
ei := crdClient.KubernetesWatchTriggers(metav1.NamespaceDefault)
|
||||||
|
|
||||||
// cleanup from old crashed tests, ignore errors
|
// cleanup from old crashed tests, ignore errors
|
||||||
ei.Delete(kubernetesWatchTrigger.Metadata.Name, nil)
|
ei.Delete(kubernetesWatchTrigger.ObjectMeta.Name, nil)
|
||||||
|
|
||||||
// create
|
// create
|
||||||
e, err := ei.Create(kubernetesWatchTrigger)
|
e, err := ei.Create(kubernetesWatchTrigger)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
if e.Metadata.Name != kubernetesWatchTrigger.Metadata.Name {
|
if e.ObjectMeta.Name != kubernetesWatchTrigger.ObjectMeta.Name {
|
||||||
log.Panicf("Bad result from create: %v", e)
|
log.Panicf("Bad result from create: %v", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
// read
|
// read
|
||||||
e, err = ei.Get(kubernetesWatchTrigger.Metadata.Name)
|
e, err = ei.Get(kubernetesWatchTrigger.ObjectMeta.Name, metav1.GetOptions{})
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
if e.Spec.Type != kubernetesWatchTrigger.Spec.Type {
|
if e.Spec.Type != kubernetesWatchTrigger.Spec.Type {
|
||||||
log.Panicf("Bad result from Get: %#v", e)
|
log.Panicf("Bad result from Get: %#v", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
// update
|
// update
|
||||||
kubernetesWatchTrigger.Metadata.ResourceVersion = e.Metadata.ResourceVersion
|
kubernetesWatchTrigger.ObjectMeta.ResourceVersion = e.ObjectMeta.ResourceVersion
|
||||||
kubernetesWatchTrigger.Spec.Type = "service"
|
kubernetesWatchTrigger.Spec.Type = "service"
|
||||||
e, err = ei.Update(kubernetesWatchTrigger)
|
e, err = ei.Update(kubernetesWatchTrigger)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
@@ -382,7 +382,7 @@ func kubernetesWatchTriggerTests(crdClient *rest.RESTClient) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// delete
|
// delete
|
||||||
err = ei.Delete(e.Metadata.Name, nil)
|
err = ei.Delete(e.ObjectMeta.Name, nil)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
// start a watch
|
// start a watch
|
||||||
@@ -390,10 +390,10 @@ func kubernetesWatchTriggerTests(crdClient *rest.RESTClient) {
|
|||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
kubernetesWatchTrigger.Metadata.ResourceVersion = ""
|
kubernetesWatchTrigger.ObjectMeta.ResourceVersion = ""
|
||||||
e, err = ei.Create(kubernetesWatchTrigger)
|
e, err = ei.Create(kubernetesWatchTrigger)
|
||||||
panicIf(err)
|
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
|
// assert that we get a watch event for the new kubernetesWatchTrigger
|
||||||
recvd := false
|
recvd := false
|
||||||
@@ -424,27 +424,24 @@ func TestCrd(t *testing.T) {
|
|||||||
return
|
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()
|
logger, err := zap.NewDevelopment()
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
|
fc, _, apiExtClient, err := MakeFissionClient()
|
||||||
|
if err != nil {
|
||||||
|
panicIf(err)
|
||||||
|
}
|
||||||
|
|
||||||
// init our types
|
// init our types
|
||||||
err = EnsureFissionCRDs(logger, apiExtClient)
|
err = EnsureFissionCRDs(logger, apiExtClient)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
|
|
||||||
|
err = fc.WaitForCRDs()
|
||||||
|
panicIf(err)
|
||||||
|
|
||||||
// rest client with knowledge about our crd types
|
// rest client with knowledge about our crd types
|
||||||
crdClient, err := GetCrdClient(config)
|
functionTests(fc.crdClient.V1V1())
|
||||||
panicIf(err)
|
environmentTests(fc.crdClient.V1V1())
|
||||||
|
httpTriggerTests(fc.crdClient.V1V1())
|
||||||
err = waitForCRDs(crdClient)
|
kubernetesWatchTriggerTests(fc.crdClient.V1V1())
|
||||||
panicIf(err)
|
|
||||||
|
|
||||||
functionTests(crdClient)
|
|
||||||
environmentTests(crdClient)
|
|
||||||
httpTriggerTests(crdClient)
|
|
||||||
kubernetesWatchTriggerTests(crdClient)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()
|
|
||||||
}
|
|
||||||
@@ -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()
|
|
||||||
}
|
|
||||||
@@ -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()
|
|
||||||
}
|
|
||||||
@@ -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()
|
|
||||||
}
|
|
||||||
@@ -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()
|
|
||||||
}
|
|
||||||
@@ -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()
|
|
||||||
}
|
|
||||||
@@ -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()
|
|
||||||
}
|
|
||||||
+5
-5
@@ -51,7 +51,7 @@ func (executor *Executor) getServiceForFunctionApi(w http.ResponseWriter, r *htt
|
|||||||
return
|
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 err != nil {
|
||||||
if k8serrors.IsNotFound(err) {
|
if k8serrors.IsNotFound(err) {
|
||||||
http.Error(w, "Failed to find function", http.StatusNotFound)
|
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) {
|
func (executor *Executor) getServiceForFunction(fn *fv1.Function) (string, error) {
|
||||||
// Check function -> svc cache
|
// Check function -> svc cache
|
||||||
executor.logger.Debug("checking for cached function service",
|
executor.logger.Debug("checking for cached function service",
|
||||||
zap.String("function_name", fn.Metadata.Name),
|
zap.String("function_name", fn.ObjectMeta.Name),
|
||||||
zap.String("function_namespace", fn.Metadata.Namespace))
|
zap.String("function_namespace", fn.ObjectMeta.Namespace))
|
||||||
|
|
||||||
t := fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType
|
t := fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType
|
||||||
et, exists := executor.executorTypes[t]
|
et, exists := executor.executorTypes[t]
|
||||||
@@ -103,8 +103,8 @@ func (executor *Executor) getServiceForFunction(fn *fv1.Function) (string, error
|
|||||||
return fsvc.Address, nil
|
return fsvc.Address, nil
|
||||||
} else {
|
} else {
|
||||||
executor.logger.Debug("deleting cache entry for invalid address",
|
executor.logger.Debug("deleting cache entry for invalid address",
|
||||||
zap.String("function_name", fn.Metadata.Name),
|
zap.String("function_name", fn.ObjectMeta.Name),
|
||||||
zap.String("function_namespace", fn.Metadata.Namespace),
|
zap.String("function_namespace", fn.ObjectMeta.Namespace),
|
||||||
zap.String("address", fsvc.Address))
|
zap.String("address", fsvc.Address))
|
||||||
et.DeleteFuncSvcFromCache(fsvc)
|
et.DeleteFuncSvcFromCache(fsvc)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) {
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
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) {
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ func MakeExecutor(logger *zap.Logger, cms *cms.ConfigSecretController,
|
|||||||
func (executor *Executor) serveCreateFuncServices() {
|
func (executor *Executor) serveCreateFuncServices() {
|
||||||
for {
|
for {
|
||||||
req := <-executor.requestChan
|
req := <-executor.requestChan
|
||||||
fnMetadata := &req.function.Metadata
|
fnMetadata := &req.function.ObjectMeta
|
||||||
|
|
||||||
// Cache miss -- is this first one to request the func?
|
// Cache miss -- is this first one to request the func?
|
||||||
wg, found := executor.fsCreateWg[crd.CacheKey(fnMetadata)]
|
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) {
|
func (executor *Executor) createServiceForFunction(ctx context.Context, fn *fv1.Function) (*fscache.FuncSvc, error) {
|
||||||
executor.logger.Debug("no cached function service found, creating one",
|
executor.logger.Debug("no cached function service found, creating one",
|
||||||
zap.String("function_name", fn.Metadata.Name),
|
zap.String("function_name", fn.ObjectMeta.Name),
|
||||||
zap.String("function_namespace", fn.Metadata.Namespace))
|
zap.String("function_namespace", fn.ObjectMeta.Namespace))
|
||||||
|
|
||||||
t := fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType
|
t := fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType
|
||||||
e, ok := executor.executorTypes[t]
|
e, ok := executor.executorTypes[t]
|
||||||
@@ -181,9 +181,9 @@ func (executor *Executor) createServiceForFunction(ctx context.Context, fn *fv1.
|
|||||||
e := "error creating service for function"
|
e := "error creating service for function"
|
||||||
executor.logger.Error(e,
|
executor.logger.Error(e,
|
||||||
zap.Error(fsvcErr),
|
zap.Error(fsvcErr),
|
||||||
zap.String("function_name", fn.Metadata.Name),
|
zap.String("function_name", fn.ObjectMeta.Name),
|
||||||
zap.String("function_namespace", fn.Metadata.Namespace))
|
zap.String("function_namespace", fn.ObjectMeta.Namespace))
|
||||||
fsvcErr = errors.Wrap(fsvcErr, fmt.Sprintf("[%s] %s", fn.Metadata.Name, e))
|
fsvcErr = errors.Wrap(fsvcErr, fmt.Sprintf("[%s] %s", fn.ObjectMeta.Name, e))
|
||||||
}
|
}
|
||||||
|
|
||||||
return fsvc, fsvcErr
|
return fsvc, fsvcErr
|
||||||
@@ -225,7 +225,6 @@ func StartExecutor(logger *zap.Logger, functionNamespace string, envBuilderNames
|
|||||||
return errors.Wrap(err, "Error making fetcher config")
|
return errors.Wrap(err, "Error making fetcher config")
|
||||||
}
|
}
|
||||||
|
|
||||||
restClient := fissionClient.GetCrdClient()
|
|
||||||
executorInstanceID := strings.ToLower(uniuri.NewLen(8))
|
executorInstanceID := strings.ToLower(uniuri.NewLen(8))
|
||||||
|
|
||||||
logger.Info("Starting executor", zap.String("instanceID", executorInstanceID))
|
logger.Info("Starting executor", zap.String("instanceID", executorInstanceID))
|
||||||
@@ -237,7 +236,7 @@ func StartExecutor(logger *zap.Logger, functionNamespace string, envBuilderNames
|
|||||||
|
|
||||||
ndm := newdeploy.MakeNewDeploy(
|
ndm := newdeploy.MakeNewDeploy(
|
||||||
logger,
|
logger,
|
||||||
fissionClient, kubernetesClient, restClient,
|
fissionClient, kubernetesClient, fissionClient.V1().RESTClient(),
|
||||||
functionNamespace, fetcherConfig, executorInstanceID)
|
functionNamespace, fetcherConfig, executorInstanceID)
|
||||||
|
|
||||||
executorTypes := make(map[fv1.ExecutorType]executortype.ExecutorType)
|
executorTypes := make(map[fv1.ExecutorType]executortype.ExecutorType)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user