mirror of
https://github.com/argoproj/argo-cd.git
synced 2026-02-20 09:38:49 +01:00
Compare commits
21 Commits
commit-ser
...
v0.10.6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0dfcd2f7d8 | ||
|
|
7e49cff7e9 | ||
|
|
5d185b6584 | ||
|
|
7bfa374b40 | ||
|
|
6c20e0f7d7 | ||
|
|
93d2dd7ed0 | ||
|
|
89ece31762 | ||
|
|
d565a0a119 | ||
|
|
1e2b554f01 | ||
|
|
8cb2f5d7e4 | ||
|
|
c5814d5946 | ||
|
|
a4a81d1de9 | ||
|
|
cb27cec021 | ||
|
|
e13e13e7ae | ||
|
|
88d41f8efa | ||
|
|
dbe09104a1 | ||
|
|
6a18870ec1 | ||
|
|
ca9f992fc2 | ||
|
|
063ff34f00 | ||
|
|
a9980c3025 | ||
|
|
3f5967c83e |
@@ -55,13 +55,13 @@ RUN wget https://github.com/ksonnet/ksonnet/releases/download/v${KSONNET_VERSION
|
||||
mv /tmp/ks_${KSONNET_VERSION}_linux_amd64/ks /usr/local/bin/ks
|
||||
|
||||
# Install helm
|
||||
ENV HELM_VERSION=2.9.1
|
||||
ENV HELM_VERSION=2.11.0
|
||||
RUN wget https://storage.googleapis.com/kubernetes-helm/helm-v${HELM_VERSION}-linux-amd64.tar.gz && \
|
||||
tar -C /tmp/ -xf helm-v${HELM_VERSION}-linux-amd64.tar.gz && \
|
||||
mv /tmp/linux-amd64/helm /usr/local/bin/helm
|
||||
|
||||
# Install kustomize
|
||||
ENV KUSTOMIZE_VERSION=1.0.8
|
||||
ENV KUSTOMIZE_VERSION=1.0.10
|
||||
RUN curl -L -o /usr/local/bin/kustomize https://github.com/kubernetes-sigs/kustomize/releases/download/v${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_amd64 && \
|
||||
chmod +x /usr/local/bin/kustomize
|
||||
|
||||
|
||||
130
Gopkg.lock
generated
130
Gopkg.lock
generated
@@ -33,15 +33,15 @@
|
||||
revision = "de5bf2ad457846296e2031421a34e2568e304e35"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:0c024ed5f8ee58bb5bcafcc1d55678cbaec13884a9798eaadfe6ca0d16ef9392"
|
||||
branch = "master"
|
||||
digest = "1:0caf9208419fa5db5a0ca7112affaa9550c54291dda8e2abac0c0e76181c959e"
|
||||
name = "github.com/argoproj/argo"
|
||||
packages = [
|
||||
"pkg/apis/workflow",
|
||||
"pkg/apis/workflow/v1alpha1",
|
||||
]
|
||||
pruneopts = ""
|
||||
revision = "af636ddd8455660f307d835814d3112b90815dfd"
|
||||
version = "v2.2.0"
|
||||
revision = "7ef1cea68c94f7f0e1e2f8bd75bedc5a7df8af90"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
@@ -354,6 +354,14 @@
|
||||
revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5"
|
||||
version = "v1.2.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:1e5b1e14524ed08301977b7b8e10c719ed853cbf3f24ecb66fae783a46f207a6"
|
||||
name = "github.com/google/btree"
|
||||
packages = ["."]
|
||||
pruneopts = ""
|
||||
revision = "4030bb1f1f0c35b30ca7009e9ebd06849dd45306"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:14d826ee25139b4674e9768ac287a135f4e7c14e1134a5b15e4e152edfd49f41"
|
||||
name = "github.com/google/go-jsonnet"
|
||||
@@ -385,6 +393,17 @@
|
||||
revision = "ee43cbb60db7bd22502942cccbc39059117352ab"
|
||||
version = "v0.1.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:009a1928b8c096338b68b5822d838a72b4d8520715c1463614476359f3282ec8"
|
||||
name = "github.com/gregjones/httpcache"
|
||||
packages = [
|
||||
".",
|
||||
"diskcache",
|
||||
]
|
||||
pruneopts = ""
|
||||
revision = "9cad4c3443a7200dd6400aef47183728de563a38"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:9dca8c981b8aed7448d94e78bc68a76784867a38b3036d5aabc0b32d92ffd1f4"
|
||||
@@ -433,14 +452,6 @@
|
||||
pruneopts = ""
|
||||
revision = "0fb14efe8c47ae851c0034ed7a448854d3d34cf3"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:f81c8d7354cc0c6340f2f7a48724ee6c2b3db3e918ecd441c985b4d2d97dd3e7"
|
||||
name = "github.com/howeyc/gopass"
|
||||
packages = ["."]
|
||||
pruneopts = ""
|
||||
revision = "bf9dde6d0d2c004a008c27aaee91170c786f6db8"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:23bc0b496ba341c6e3ba24d6358ff4a40a704d9eb5f9a3bd8e8fbd57ad869013"
|
||||
name = "github.com/imdario/mergo"
|
||||
@@ -466,12 +477,11 @@
|
||||
revision = "d14ea06fba99483203c19d92cfcd13ebe73135f4"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:dd5cdbd84daf24b2a009364f3c24859b1e4de1eab87c451fb3bce09935d909fc"
|
||||
digest = "1:31c6f3c4f1e15fcc24fcfc9f5f24603ff3963c56d6fa162116493b4025fb6acc"
|
||||
name = "github.com/json-iterator/go"
|
||||
packages = ["."]
|
||||
pruneopts = ""
|
||||
revision = "e7c7f3b33712573affdcc7a107218e7926b9a05b"
|
||||
version = "1.0.6"
|
||||
revision = "f2b4162afba35581b6d4a50d3b8f34e33c144682"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:41e0bed5df4f9fd04c418bf9b6b7179b3671e416ad6175332601ca1c8dc74606"
|
||||
@@ -525,6 +535,22 @@
|
||||
pruneopts = ""
|
||||
revision = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:0c0ff2a89c1bb0d01887e1dac043ad7efbf3ec77482ef058ac423d13497e16fd"
|
||||
name = "github.com/modern-go/concurrent"
|
||||
packages = ["."]
|
||||
pruneopts = ""
|
||||
revision = "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94"
|
||||
version = "1.0.3"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:e32bdbdb7c377a07a9a46378290059822efdce5c8d96fe71940d87cb4f918855"
|
||||
name = "github.com/modern-go/reflect2"
|
||||
packages = ["."]
|
||||
pruneopts = ""
|
||||
revision = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd"
|
||||
version = "1.0.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:4c0404dc03d974acd5fcd8b8d3ce687b13bd169db032b89275e8b9d77b98ce8c"
|
||||
name = "github.com/patrickmn/go-cache"
|
||||
@@ -541,6 +567,22 @@
|
||||
revision = "c37440a7cf42ac63b919c752ca73a85067e05992"
|
||||
version = "v0.2.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:c24598ffeadd2762552269271b3b1510df2d83ee6696c1e543a0ff653af494bc"
|
||||
name = "github.com/petar/GoLLRB"
|
||||
packages = ["llrb"]
|
||||
pruneopts = ""
|
||||
revision = "53be0d36a84c2a886ca057d34b6aa4468df9ccb4"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:b46305723171710475f2dd37547edd57b67b9de9f2a6267cafdd98331fd6897f"
|
||||
name = "github.com/peterbourgon/diskv"
|
||||
packages = ["."]
|
||||
pruneopts = ""
|
||||
revision = "5f041e8faa004a95c88a202771f4cc3e991971e6"
|
||||
version = "v2.0.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:7365acd48986e205ccb8652cc746f09c8b7876030d53710ea6ef7d0bd0dcd7ca"
|
||||
name = "github.com/pkg/errors"
|
||||
@@ -1047,8 +1089,8 @@
|
||||
revision = "eb3733d160e74a9c7e442f435eb3bea458e1d19f"
|
||||
|
||||
[[projects]]
|
||||
branch = "release-1.10"
|
||||
digest = "1:5beb32094452970c0d73a2bdacd79aa9cfaa4947a774d521c1bed4b4c2705f15"
|
||||
branch = "release-1.12"
|
||||
digest = "1:ed04c5203ecbf6358fb6a774b0ecd40ea992d6dcc42adc1d3b7cf9eceb66b6c8"
|
||||
name = "k8s.io/api"
|
||||
packages = [
|
||||
"admission/v1beta1",
|
||||
@@ -1063,10 +1105,12 @@
|
||||
"authorization/v1beta1",
|
||||
"autoscaling/v1",
|
||||
"autoscaling/v2beta1",
|
||||
"autoscaling/v2beta2",
|
||||
"batch/v1",
|
||||
"batch/v1beta1",
|
||||
"batch/v2alpha1",
|
||||
"certificates/v1beta1",
|
||||
"coordination/v1beta1",
|
||||
"core/v1",
|
||||
"events/v1beta1",
|
||||
"extensions/v1beta1",
|
||||
@@ -1077,17 +1121,18 @@
|
||||
"rbac/v1alpha1",
|
||||
"rbac/v1beta1",
|
||||
"scheduling/v1alpha1",
|
||||
"scheduling/v1beta1",
|
||||
"settings/v1alpha1",
|
||||
"storage/v1",
|
||||
"storage/v1alpha1",
|
||||
"storage/v1beta1",
|
||||
]
|
||||
pruneopts = ""
|
||||
revision = "8b7507fac302640dd5f1efbf9643199952cc58db"
|
||||
revision = "475331a8afff5587f47d0470a93f79c60c573c03"
|
||||
|
||||
[[projects]]
|
||||
branch = "release-1.10"
|
||||
digest = "1:7cb811fe9560718bd0ada29f2091acab5c4b4380ed23ef2824f64ce7038d899e"
|
||||
branch = "release-1.12"
|
||||
digest = "1:39be82077450762b5e14b5268e679a14ac0e9c7d3286e2fcface437556a29e4c"
|
||||
name = "k8s.io/apiextensions-apiserver"
|
||||
packages = [
|
||||
"pkg/apis/apiextensions",
|
||||
@@ -1097,20 +1142,17 @@
|
||||
"pkg/client/clientset/clientset/typed/apiextensions/v1beta1",
|
||||
]
|
||||
pruneopts = ""
|
||||
revision = "b13a681559816a9c14f93086bbeeed1c7baf2bcb"
|
||||
revision = "ca1024863b48cf0701229109df75ac5f0bb4907e"
|
||||
|
||||
[[projects]]
|
||||
branch = "release-1.10"
|
||||
digest = "1:b9c6e8e91bab6a419c58a63377532782a9f5616552164c38a9527f91c9309bbe"
|
||||
branch = "release-1.12"
|
||||
digest = "1:5899da40e41bcc8c1df101b72954096bba9d85b763bc17efc846062ccc111c7b"
|
||||
name = "k8s.io/apimachinery"
|
||||
packages = [
|
||||
"pkg/api/equality",
|
||||
"pkg/api/errors",
|
||||
"pkg/api/meta",
|
||||
"pkg/api/resource",
|
||||
"pkg/apimachinery",
|
||||
"pkg/apimachinery/announced",
|
||||
"pkg/apimachinery/registered",
|
||||
"pkg/apis/meta/internalversion",
|
||||
"pkg/apis/meta/v1",
|
||||
"pkg/apis/meta/v1/unstructured",
|
||||
@@ -1137,6 +1179,7 @@
|
||||
"pkg/util/intstr",
|
||||
"pkg/util/json",
|
||||
"pkg/util/mergepatch",
|
||||
"pkg/util/naming",
|
||||
"pkg/util/net",
|
||||
"pkg/util/runtime",
|
||||
"pkg/util/sets",
|
||||
@@ -1151,11 +1194,11 @@
|
||||
"third_party/forked/golang/reflect",
|
||||
]
|
||||
pruneopts = ""
|
||||
revision = "f6313580a4d36c7c74a3d845dda6e116642c4f90"
|
||||
revision = "f71dbbc36e126f5a371b85f6cca96bc8c57db2b6"
|
||||
|
||||
[[projects]]
|
||||
branch = "release-7.0"
|
||||
digest = "1:3a45889089f89cc371fb45b3f8a478248b755e4af17a8cf592e49bdf3481a0b3"
|
||||
branch = "release-9.0"
|
||||
digest = "1:77bf3d9f18ec82e08ac6c4c7e2d9d1a2ef8d16b25d3ff72fcefcf9256d751573"
|
||||
name = "k8s.io/client-go"
|
||||
packages = [
|
||||
"discovery",
|
||||
@@ -1173,12 +1216,15 @@
|
||||
"informers/autoscaling",
|
||||
"informers/autoscaling/v1",
|
||||
"informers/autoscaling/v2beta1",
|
||||
"informers/autoscaling/v2beta2",
|
||||
"informers/batch",
|
||||
"informers/batch/v1",
|
||||
"informers/batch/v1beta1",
|
||||
"informers/batch/v2alpha1",
|
||||
"informers/certificates",
|
||||
"informers/certificates/v1beta1",
|
||||
"informers/coordination",
|
||||
"informers/coordination/v1beta1",
|
||||
"informers/core",
|
||||
"informers/core/v1",
|
||||
"informers/events",
|
||||
@@ -1196,6 +1242,7 @@
|
||||
"informers/rbac/v1beta1",
|
||||
"informers/scheduling",
|
||||
"informers/scheduling/v1alpha1",
|
||||
"informers/scheduling/v1beta1",
|
||||
"informers/settings",
|
||||
"informers/settings/v1alpha1",
|
||||
"informers/storage",
|
||||
@@ -1227,6 +1274,8 @@
|
||||
"kubernetes/typed/autoscaling/v1/fake",
|
||||
"kubernetes/typed/autoscaling/v2beta1",
|
||||
"kubernetes/typed/autoscaling/v2beta1/fake",
|
||||
"kubernetes/typed/autoscaling/v2beta2",
|
||||
"kubernetes/typed/autoscaling/v2beta2/fake",
|
||||
"kubernetes/typed/batch/v1",
|
||||
"kubernetes/typed/batch/v1/fake",
|
||||
"kubernetes/typed/batch/v1beta1",
|
||||
@@ -1235,6 +1284,8 @@
|
||||
"kubernetes/typed/batch/v2alpha1/fake",
|
||||
"kubernetes/typed/certificates/v1beta1",
|
||||
"kubernetes/typed/certificates/v1beta1/fake",
|
||||
"kubernetes/typed/coordination/v1beta1",
|
||||
"kubernetes/typed/coordination/v1beta1/fake",
|
||||
"kubernetes/typed/core/v1",
|
||||
"kubernetes/typed/core/v1/fake",
|
||||
"kubernetes/typed/events/v1beta1",
|
||||
@@ -1253,6 +1304,8 @@
|
||||
"kubernetes/typed/rbac/v1beta1/fake",
|
||||
"kubernetes/typed/scheduling/v1alpha1",
|
||||
"kubernetes/typed/scheduling/v1alpha1/fake",
|
||||
"kubernetes/typed/scheduling/v1beta1",
|
||||
"kubernetes/typed/scheduling/v1beta1/fake",
|
||||
"kubernetes/typed/settings/v1alpha1",
|
||||
"kubernetes/typed/settings/v1alpha1/fake",
|
||||
"kubernetes/typed/storage/v1",
|
||||
@@ -1268,10 +1321,12 @@
|
||||
"listers/apps/v1beta2",
|
||||
"listers/autoscaling/v1",
|
||||
"listers/autoscaling/v2beta1",
|
||||
"listers/autoscaling/v2beta2",
|
||||
"listers/batch/v1",
|
||||
"listers/batch/v1beta1",
|
||||
"listers/batch/v2alpha1",
|
||||
"listers/certificates/v1beta1",
|
||||
"listers/coordination/v1beta1",
|
||||
"listers/core/v1",
|
||||
"listers/events/v1beta1",
|
||||
"listers/extensions/v1beta1",
|
||||
@@ -1281,12 +1336,14 @@
|
||||
"listers/rbac/v1alpha1",
|
||||
"listers/rbac/v1beta1",
|
||||
"listers/scheduling/v1alpha1",
|
||||
"listers/scheduling/v1beta1",
|
||||
"listers/settings/v1alpha1",
|
||||
"listers/storage/v1",
|
||||
"listers/storage/v1alpha1",
|
||||
"listers/storage/v1beta1",
|
||||
"pkg/apis/clientauthentication",
|
||||
"pkg/apis/clientauthentication/v1alpha1",
|
||||
"pkg/apis/clientauthentication/v1beta1",
|
||||
"pkg/version",
|
||||
"plugin/pkg/client/auth/exec",
|
||||
"plugin/pkg/client/auth/gcp",
|
||||
@@ -1307,6 +1364,7 @@
|
||||
"transport",
|
||||
"util/buffer",
|
||||
"util/cert",
|
||||
"util/connrotation",
|
||||
"util/flowcontrol",
|
||||
"util/homedir",
|
||||
"util/integer",
|
||||
@@ -1315,11 +1373,11 @@
|
||||
"util/workqueue",
|
||||
]
|
||||
pruneopts = ""
|
||||
revision = "26a26f55b28aa1b338fbaf6fbbe0bcd76aed05e0"
|
||||
revision = "13596e875accbd333e0b5bd5fd9462185acd9958"
|
||||
|
||||
[[projects]]
|
||||
branch = "release-1.10"
|
||||
digest = "1:34b0b3400ffdc2533ed4ea23721956638c2776ba49ca4c5def71dddcf0cdfd9b"
|
||||
branch = "release-1.12"
|
||||
digest = "1:e6fffdf0dfeb0d189a7c6d735e76e7564685d3b6513f8b19d3651191cb6b084b"
|
||||
name = "k8s.io/code-generator"
|
||||
packages = [
|
||||
"cmd/go-to-protobuf",
|
||||
@@ -1328,7 +1386,7 @@
|
||||
"third_party/forked/golang/reflect",
|
||||
]
|
||||
pruneopts = ""
|
||||
revision = "9de8e796a74d16d2a285165727d04c185ebca6dc"
|
||||
revision = "3dcf91f64f638563e5106f21f50c31fa361c918d"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
@@ -1356,7 +1414,7 @@
|
||||
revision = "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:ad247ab9725165a7f289779d46747da832e33a4efe8ae264461afc571f65dac8"
|
||||
digest = "1:6061aa42761235df375f20fa4a1aa6d1845cba3687575f3adb2ef3f3bc540af5"
|
||||
name = "k8s.io/kubernetes"
|
||||
packages = [
|
||||
"pkg/apis/apps",
|
||||
@@ -1365,11 +1423,12 @@
|
||||
"pkg/apis/core",
|
||||
"pkg/apis/extensions",
|
||||
"pkg/apis/networking",
|
||||
"pkg/apis/policy",
|
||||
"pkg/kubectl/scheme",
|
||||
]
|
||||
pruneopts = ""
|
||||
revision = "81753b10df112992bf51bbc2c2f85208aad78335"
|
||||
version = "v1.10.2"
|
||||
revision = "17c77c7898218073f14c8d573582e8d2313dc740"
|
||||
version = "v1.12.2"
|
||||
|
||||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
@@ -1394,7 +1453,6 @@
|
||||
"github.com/gogo/protobuf/proto",
|
||||
"github.com/gogo/protobuf/protoc-gen-gofast",
|
||||
"github.com/gogo/protobuf/protoc-gen-gogofast",
|
||||
"github.com/golang/glog",
|
||||
"github.com/golang/protobuf/proto",
|
||||
"github.com/golang/protobuf/protoc-gen-go",
|
||||
"github.com/golang/protobuf/ptypes/empty",
|
||||
|
||||
@@ -35,19 +35,19 @@ required = [
|
||||
revision = "7858729281ec582767b20e0d696b6041d995d5e0"
|
||||
|
||||
[[constraint]]
|
||||
branch = "release-1.10"
|
||||
branch = "release-1.12"
|
||||
name = "k8s.io/api"
|
||||
|
||||
[[constraint]]
|
||||
name = "k8s.io/apiextensions-apiserver"
|
||||
branch = "release-1.10"
|
||||
branch = "release-1.12"
|
||||
|
||||
[[constraint]]
|
||||
branch = "release-1.10"
|
||||
branch = "release-1.12"
|
||||
name = "k8s.io/code-generator"
|
||||
|
||||
[[constraint]]
|
||||
branch = "release-7.0"
|
||||
branch = "release-9.0"
|
||||
name = "k8s.io/client-go"
|
||||
|
||||
[[constraint]]
|
||||
|
||||
@@ -330,7 +330,7 @@ func (ctrl *ApplicationController) finalizeApplicationDeletion(app *appv1.Applic
|
||||
|
||||
if err == nil {
|
||||
config := clst.RESTConfig()
|
||||
err = kube.DeleteResourceWithLabel(config, app.Spec.Destination.Namespace, common.LabelApplicationName, app.Name)
|
||||
err = kube.DeleteResourcesWithLabel(config, app.Spec.Destination.Namespace, common.LabelApplicationName, app.Name)
|
||||
if err == nil {
|
||||
app.SetCascadedDeletion(false)
|
||||
var patch []byte
|
||||
|
||||
@@ -171,7 +171,10 @@ func (s *appStateManager) getLiveObjs(app *v1alpha1.Application, targetObjs []*u
|
||||
controlledLiveObj := make([]*unstructured.Unstructured, len(targetObjs))
|
||||
|
||||
// Move live resources which have corresponding target object to controlledLiveObj
|
||||
dynClientPool := dynamic.NewDynamicClientPool(restConfig)
|
||||
dynamicIf, err := dynamic.NewForConfig(restConfig)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
disco, err := discovery.NewDiscoveryClientForConfig(restConfig)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
@@ -185,10 +188,6 @@ func (s *appStateManager) getLiveObjs(app *v1alpha1.Application, targetObjs []*u
|
||||
// of ArgoCD. In order to determine that it is truly missing, we fall back to perform a
|
||||
// direct lookup of the resource by name. See issue #141
|
||||
gvk := targetObj.GroupVersionKind()
|
||||
dclient, err := dynClientPool.ClientForGroupVersionKind(gvk)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
apiResource, err := kubeutil.ServerResourceForGroupVersionKind(disco, gvk)
|
||||
if err != nil {
|
||||
if !apierr.IsNotFound(err) {
|
||||
@@ -196,7 +195,7 @@ func (s *appStateManager) getLiveObjs(app *v1alpha1.Application, targetObjs []*u
|
||||
}
|
||||
// If we get here, the app is comprised of a custom resource which has yet to be registered
|
||||
} else {
|
||||
liveObj, err = kubeutil.GetLiveResource(dclient, targetObj, apiResource, app.Spec.Destination.Namespace)
|
||||
liveObj, err = kubeutil.GetLiveResource(dynamicIf, targetObj, apiResource, app.Spec.Destination.Namespace)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ type syncContext struct {
|
||||
proj *appv1.AppProject
|
||||
comparison *appv1.ComparisonResult
|
||||
config *rest.Config
|
||||
dynClientPool dynamic.ClientPool
|
||||
dynamicIf dynamic.Interface
|
||||
disco discovery.DiscoveryInterface
|
||||
kubectl kube.Kubectl
|
||||
namespace string
|
||||
@@ -112,13 +112,18 @@ func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.Oper
|
||||
}
|
||||
|
||||
restConfig := clst.RESTConfig()
|
||||
dynClientPool := dynamic.NewDynamicClientPool(restConfig)
|
||||
disco, err := discovery.NewDiscoveryClientForConfig(restConfig)
|
||||
dynamicIf, err := dynamic.NewForConfig(restConfig)
|
||||
if err != nil {
|
||||
state.Phase = appv1.OperationError
|
||||
state.Message = fmt.Sprintf("Failed to initialize dynamic client: %v", err)
|
||||
return
|
||||
}
|
||||
disco, err := discovery.NewDiscoveryClientForConfig(restConfig)
|
||||
if err != nil {
|
||||
state.Phase = appv1.OperationError
|
||||
state.Message = fmt.Sprintf("Failed to initialize discovery client: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
proj, err := argo.GetAppProject(&app.Spec, s.appclientset, s.namespace)
|
||||
if err != nil {
|
||||
@@ -132,7 +137,7 @@ func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.Oper
|
||||
proj: proj,
|
||||
comparison: comparison,
|
||||
config: restConfig,
|
||||
dynClientPool: dynClientPool,
|
||||
dynamicIf: dynamicIf,
|
||||
disco: disco,
|
||||
kubectl: s.kubectl,
|
||||
namespace: app.Spec.Destination.Namespace,
|
||||
@@ -627,15 +632,12 @@ func (sc *syncContext) runHook(hook *unstructured.Unstructured, hookType appv1.H
|
||||
}
|
||||
|
||||
gvk := hook.GroupVersionKind()
|
||||
dclient, err := sc.dynClientPool.ClientForGroupVersionKind(gvk)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
apiResource, err := kube.ServerResourceForGroupVersionKind(sc.disco, gvk)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
resIf := dclient.Resource(apiResource, sc.namespace)
|
||||
resource := kube.ToGroupVersionResource(gvk.GroupVersion().String(), apiResource)
|
||||
resIf := kube.ToResourceInterface(sc.dynamicIf, apiResource, resource, sc.namespace)
|
||||
|
||||
var liveObj *unstructured.Unstructured
|
||||
existing, err := resIf.Get(hook.GetName(), metav1.GetOptions{})
|
||||
@@ -938,15 +940,12 @@ func (sc *syncContext) deleteHook(name, kind, apiVersion string) error {
|
||||
Version: groupVersion[1],
|
||||
Kind: kind,
|
||||
}
|
||||
dclient, err := sc.dynClientPool.ClientForGroupVersionKind(gvk)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
apiResource, err := kube.ServerResourceForGroupVersionKind(sc.disco, gvk)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
resIf := dclient.Resource(apiResource, sc.namespace)
|
||||
resource := kube.ToGroupVersionResource(gvk.GroupVersion().String(), apiResource)
|
||||
resIf := kube.ToResourceInterface(sc.dynamicIf, apiResource, resource, sc.namespace)
|
||||
return resIf.Delete(name, &metav1.DeleteOptions{})
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,14 @@ spec:
|
||||
app: application-controller
|
||||
spec:
|
||||
containers:
|
||||
- command: [/argocd-application-controller, --repo-server, 'argocd-repo-server:8081']
|
||||
- command:
|
||||
- /argocd-application-controller
|
||||
- --repo-server
|
||||
- argocd-repo-server:8081
|
||||
- --status-processors
|
||||
- "20"
|
||||
- --operation-processors
|
||||
- "10"
|
||||
image: argoproj/argocd-application-controller:latest
|
||||
name: application-controller
|
||||
serviceAccountName: application-controller
|
||||
|
||||
@@ -24,10 +24,10 @@ resources:
|
||||
|
||||
imageTags:
|
||||
- name: argoproj/argocd-server
|
||||
newTag: latest
|
||||
newTag: v0.10.3
|
||||
- name: argoproj/argocd-ui
|
||||
newTag: latest
|
||||
newTag: v0.10.3
|
||||
- name: argoproj/argocd-repo-server
|
||||
newTag: latest
|
||||
newTag: v0.10.3
|
||||
- name: argoproj/argocd-application-controller
|
||||
newTag: latest
|
||||
newTag: v0.10.3
|
||||
|
||||
@@ -15,3 +15,10 @@ rules:
|
||||
- events
|
||||
verbs:
|
||||
- list
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
- pods/log
|
||||
verbs:
|
||||
- get
|
||||
@@ -166,6 +166,13 @@ rules:
|
||||
- events
|
||||
verbs:
|
||||
- list
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
- pods/log
|
||||
verbs:
|
||||
- get
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
@@ -321,7 +328,11 @@ spec:
|
||||
- /argocd-application-controller
|
||||
- --repo-server
|
||||
- argocd-repo-server:8081
|
||||
image: argoproj/argocd-application-controller:latest
|
||||
- --status-processors
|
||||
- "20"
|
||||
- --operation-processors
|
||||
- "10"
|
||||
image: argoproj/argocd-application-controller:v0.10.6
|
||||
name: application-controller
|
||||
serviceAccountName: application-controller
|
||||
---
|
||||
@@ -342,7 +353,7 @@ spec:
|
||||
containers:
|
||||
- command:
|
||||
- /argocd-repo-server
|
||||
image: argoproj/argocd-repo-server:latest
|
||||
image: argoproj/argocd-repo-server:v0.10.6
|
||||
name: argocd-repo-server
|
||||
ports:
|
||||
- containerPort: 8081
|
||||
@@ -372,7 +383,7 @@ spec:
|
||||
- /shared/app
|
||||
- --repo-server
|
||||
- argocd-repo-server:8081
|
||||
image: argoproj/argocd-server:latest
|
||||
image: argoproj/argocd-server:v0.10.6
|
||||
name: argocd-server
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
@@ -389,7 +400,7 @@ spec:
|
||||
- -r
|
||||
- /app
|
||||
- /shared
|
||||
image: argoproj/argocd-ui:latest
|
||||
image: argoproj/argocd-ui:v0.10.6
|
||||
name: ui
|
||||
volumeMounts:
|
||||
- mountPath: /shared
|
||||
@@ -429,7 +440,7 @@ spec:
|
||||
- cp
|
||||
- /argocd-util
|
||||
- /shared
|
||||
image: argoproj/argocd-server:latest
|
||||
image: argoproj/argocd-server:v0.10.6
|
||||
name: copyutil
|
||||
volumeMounts:
|
||||
- mountPath: /shared
|
||||
|
||||
@@ -261,7 +261,11 @@ spec:
|
||||
- /argocd-application-controller
|
||||
- --repo-server
|
||||
- argocd-repo-server:8081
|
||||
image: argoproj/argocd-application-controller:latest
|
||||
- --status-processors
|
||||
- "20"
|
||||
- --operation-processors
|
||||
- "10"
|
||||
image: argoproj/argocd-application-controller:v0.10.6
|
||||
name: application-controller
|
||||
serviceAccountName: application-controller
|
||||
---
|
||||
@@ -282,7 +286,7 @@ spec:
|
||||
containers:
|
||||
- command:
|
||||
- /argocd-repo-server
|
||||
image: argoproj/argocd-repo-server:latest
|
||||
image: argoproj/argocd-repo-server:v0.10.6
|
||||
name: argocd-repo-server
|
||||
ports:
|
||||
- containerPort: 8081
|
||||
@@ -312,7 +316,7 @@ spec:
|
||||
- /shared/app
|
||||
- --repo-server
|
||||
- argocd-repo-server:8081
|
||||
image: argoproj/argocd-server:latest
|
||||
image: argoproj/argocd-server:v0.10.6
|
||||
name: argocd-server
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
@@ -329,7 +333,7 @@ spec:
|
||||
- -r
|
||||
- /app
|
||||
- /shared
|
||||
image: argoproj/argocd-ui:latest
|
||||
image: argoproj/argocd-ui:v0.10.6
|
||||
name: ui
|
||||
volumeMounts:
|
||||
- mountPath: /shared
|
||||
@@ -369,7 +373,7 @@ spec:
|
||||
- cp
|
||||
- /argocd-util
|
||||
- /shared
|
||||
image: argoproj/argocd-server:latest
|
||||
image: argoproj/argocd-server:v0.10.6
|
||||
name: copyutil
|
||||
volumeMounts:
|
||||
- mountPath: /shared
|
||||
|
||||
@@ -30,7 +30,7 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
|
||||
func (m *AWSAuthConfig) Reset() { *m = AWSAuthConfig{} }
|
||||
func (*AWSAuthConfig) ProtoMessage() {}
|
||||
func (*AWSAuthConfig) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{0}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{0}
|
||||
}
|
||||
func (m *AWSAuthConfig) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -58,7 +58,7 @@ var xxx_messageInfo_AWSAuthConfig proto.InternalMessageInfo
|
||||
func (m *AppProject) Reset() { *m = AppProject{} }
|
||||
func (*AppProject) ProtoMessage() {}
|
||||
func (*AppProject) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{1}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{1}
|
||||
}
|
||||
func (m *AppProject) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -86,7 +86,7 @@ var xxx_messageInfo_AppProject proto.InternalMessageInfo
|
||||
func (m *AppProjectList) Reset() { *m = AppProjectList{} }
|
||||
func (*AppProjectList) ProtoMessage() {}
|
||||
func (*AppProjectList) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{2}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{2}
|
||||
}
|
||||
func (m *AppProjectList) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -114,7 +114,7 @@ var xxx_messageInfo_AppProjectList proto.InternalMessageInfo
|
||||
func (m *AppProjectSpec) Reset() { *m = AppProjectSpec{} }
|
||||
func (*AppProjectSpec) ProtoMessage() {}
|
||||
func (*AppProjectSpec) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{3}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{3}
|
||||
}
|
||||
func (m *AppProjectSpec) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -142,7 +142,7 @@ var xxx_messageInfo_AppProjectSpec proto.InternalMessageInfo
|
||||
func (m *Application) Reset() { *m = Application{} }
|
||||
func (*Application) ProtoMessage() {}
|
||||
func (*Application) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{4}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{4}
|
||||
}
|
||||
func (m *Application) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -170,7 +170,7 @@ var xxx_messageInfo_Application proto.InternalMessageInfo
|
||||
func (m *ApplicationCondition) Reset() { *m = ApplicationCondition{} }
|
||||
func (*ApplicationCondition) ProtoMessage() {}
|
||||
func (*ApplicationCondition) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{5}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{5}
|
||||
}
|
||||
func (m *ApplicationCondition) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -198,7 +198,7 @@ var xxx_messageInfo_ApplicationCondition proto.InternalMessageInfo
|
||||
func (m *ApplicationDestination) Reset() { *m = ApplicationDestination{} }
|
||||
func (*ApplicationDestination) ProtoMessage() {}
|
||||
func (*ApplicationDestination) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{6}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{6}
|
||||
}
|
||||
func (m *ApplicationDestination) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -226,7 +226,7 @@ var xxx_messageInfo_ApplicationDestination proto.InternalMessageInfo
|
||||
func (m *ApplicationList) Reset() { *m = ApplicationList{} }
|
||||
func (*ApplicationList) ProtoMessage() {}
|
||||
func (*ApplicationList) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{7}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{7}
|
||||
}
|
||||
func (m *ApplicationList) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -254,7 +254,7 @@ var xxx_messageInfo_ApplicationList proto.InternalMessageInfo
|
||||
func (m *ApplicationSource) Reset() { *m = ApplicationSource{} }
|
||||
func (*ApplicationSource) ProtoMessage() {}
|
||||
func (*ApplicationSource) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{8}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{8}
|
||||
}
|
||||
func (m *ApplicationSource) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -282,7 +282,7 @@ var xxx_messageInfo_ApplicationSource proto.InternalMessageInfo
|
||||
func (m *ApplicationSpec) Reset() { *m = ApplicationSpec{} }
|
||||
func (*ApplicationSpec) ProtoMessage() {}
|
||||
func (*ApplicationSpec) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{9}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{9}
|
||||
}
|
||||
func (m *ApplicationSpec) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -310,7 +310,7 @@ var xxx_messageInfo_ApplicationSpec proto.InternalMessageInfo
|
||||
func (m *ApplicationStatus) Reset() { *m = ApplicationStatus{} }
|
||||
func (*ApplicationStatus) ProtoMessage() {}
|
||||
func (*ApplicationStatus) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{10}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{10}
|
||||
}
|
||||
func (m *ApplicationStatus) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -338,7 +338,7 @@ var xxx_messageInfo_ApplicationStatus proto.InternalMessageInfo
|
||||
func (m *ApplicationWatchEvent) Reset() { *m = ApplicationWatchEvent{} }
|
||||
func (*ApplicationWatchEvent) ProtoMessage() {}
|
||||
func (*ApplicationWatchEvent) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{11}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{11}
|
||||
}
|
||||
func (m *ApplicationWatchEvent) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -366,7 +366,7 @@ var xxx_messageInfo_ApplicationWatchEvent proto.InternalMessageInfo
|
||||
func (m *Cluster) Reset() { *m = Cluster{} }
|
||||
func (*Cluster) ProtoMessage() {}
|
||||
func (*Cluster) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{12}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{12}
|
||||
}
|
||||
func (m *Cluster) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -394,7 +394,7 @@ var xxx_messageInfo_Cluster proto.InternalMessageInfo
|
||||
func (m *ClusterConfig) Reset() { *m = ClusterConfig{} }
|
||||
func (*ClusterConfig) ProtoMessage() {}
|
||||
func (*ClusterConfig) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{13}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{13}
|
||||
}
|
||||
func (m *ClusterConfig) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -422,7 +422,7 @@ var xxx_messageInfo_ClusterConfig proto.InternalMessageInfo
|
||||
func (m *ClusterList) Reset() { *m = ClusterList{} }
|
||||
func (*ClusterList) ProtoMessage() {}
|
||||
func (*ClusterList) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{14}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{14}
|
||||
}
|
||||
func (m *ClusterList) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -450,7 +450,7 @@ var xxx_messageInfo_ClusterList proto.InternalMessageInfo
|
||||
func (m *ComparisonResult) Reset() { *m = ComparisonResult{} }
|
||||
func (*ComparisonResult) ProtoMessage() {}
|
||||
func (*ComparisonResult) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{15}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{15}
|
||||
}
|
||||
func (m *ComparisonResult) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -478,7 +478,7 @@ var xxx_messageInfo_ComparisonResult proto.InternalMessageInfo
|
||||
func (m *ComponentParameter) Reset() { *m = ComponentParameter{} }
|
||||
func (*ComponentParameter) ProtoMessage() {}
|
||||
func (*ComponentParameter) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{16}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{16}
|
||||
}
|
||||
func (m *ComponentParameter) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -506,7 +506,7 @@ var xxx_messageInfo_ComponentParameter proto.InternalMessageInfo
|
||||
func (m *ConnectionState) Reset() { *m = ConnectionState{} }
|
||||
func (*ConnectionState) ProtoMessage() {}
|
||||
func (*ConnectionState) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{17}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{17}
|
||||
}
|
||||
func (m *ConnectionState) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -534,7 +534,7 @@ var xxx_messageInfo_ConnectionState proto.InternalMessageInfo
|
||||
func (m *DeploymentInfo) Reset() { *m = DeploymentInfo{} }
|
||||
func (*DeploymentInfo) ProtoMessage() {}
|
||||
func (*DeploymentInfo) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{18}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{18}
|
||||
}
|
||||
func (m *DeploymentInfo) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -562,7 +562,7 @@ var xxx_messageInfo_DeploymentInfo proto.InternalMessageInfo
|
||||
func (m *HealthStatus) Reset() { *m = HealthStatus{} }
|
||||
func (*HealthStatus) ProtoMessage() {}
|
||||
func (*HealthStatus) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{19}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{19}
|
||||
}
|
||||
func (m *HealthStatus) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -590,7 +590,7 @@ var xxx_messageInfo_HealthStatus proto.InternalMessageInfo
|
||||
func (m *HookStatus) Reset() { *m = HookStatus{} }
|
||||
func (*HookStatus) ProtoMessage() {}
|
||||
func (*HookStatus) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{20}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{20}
|
||||
}
|
||||
func (m *HookStatus) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -618,7 +618,7 @@ var xxx_messageInfo_HookStatus proto.InternalMessageInfo
|
||||
func (m *JWTToken) Reset() { *m = JWTToken{} }
|
||||
func (*JWTToken) ProtoMessage() {}
|
||||
func (*JWTToken) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{21}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{21}
|
||||
}
|
||||
func (m *JWTToken) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -646,7 +646,7 @@ var xxx_messageInfo_JWTToken proto.InternalMessageInfo
|
||||
func (m *Operation) Reset() { *m = Operation{} }
|
||||
func (*Operation) ProtoMessage() {}
|
||||
func (*Operation) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{22}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{22}
|
||||
}
|
||||
func (m *Operation) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -674,7 +674,7 @@ var xxx_messageInfo_Operation proto.InternalMessageInfo
|
||||
func (m *OperationState) Reset() { *m = OperationState{} }
|
||||
func (*OperationState) ProtoMessage() {}
|
||||
func (*OperationState) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{23}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{23}
|
||||
}
|
||||
func (m *OperationState) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -702,7 +702,7 @@ var xxx_messageInfo_OperationState proto.InternalMessageInfo
|
||||
func (m *ParameterOverrides) Reset() { *m = ParameterOverrides{} }
|
||||
func (*ParameterOverrides) ProtoMessage() {}
|
||||
func (*ParameterOverrides) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{24}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{24}
|
||||
}
|
||||
func (m *ParameterOverrides) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -730,7 +730,7 @@ var xxx_messageInfo_ParameterOverrides proto.InternalMessageInfo
|
||||
func (m *ProjectRole) Reset() { *m = ProjectRole{} }
|
||||
func (*ProjectRole) ProtoMessage() {}
|
||||
func (*ProjectRole) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{25}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{25}
|
||||
}
|
||||
func (m *ProjectRole) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -758,7 +758,7 @@ var xxx_messageInfo_ProjectRole proto.InternalMessageInfo
|
||||
func (m *Repository) Reset() { *m = Repository{} }
|
||||
func (*Repository) ProtoMessage() {}
|
||||
func (*Repository) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{26}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{26}
|
||||
}
|
||||
func (m *Repository) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -786,7 +786,7 @@ var xxx_messageInfo_Repository proto.InternalMessageInfo
|
||||
func (m *RepositoryList) Reset() { *m = RepositoryList{} }
|
||||
func (*RepositoryList) ProtoMessage() {}
|
||||
func (*RepositoryList) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{27}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{27}
|
||||
}
|
||||
func (m *RepositoryList) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -814,7 +814,7 @@ var xxx_messageInfo_RepositoryList proto.InternalMessageInfo
|
||||
func (m *ResourceDetails) Reset() { *m = ResourceDetails{} }
|
||||
func (*ResourceDetails) ProtoMessage() {}
|
||||
func (*ResourceDetails) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{28}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{28}
|
||||
}
|
||||
func (m *ResourceDetails) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -842,7 +842,7 @@ var xxx_messageInfo_ResourceDetails proto.InternalMessageInfo
|
||||
func (m *ResourceNode) Reset() { *m = ResourceNode{} }
|
||||
func (*ResourceNode) ProtoMessage() {}
|
||||
func (*ResourceNode) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{29}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{29}
|
||||
}
|
||||
func (m *ResourceNode) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -870,7 +870,7 @@ var xxx_messageInfo_ResourceNode proto.InternalMessageInfo
|
||||
func (m *ResourceState) Reset() { *m = ResourceState{} }
|
||||
func (*ResourceState) ProtoMessage() {}
|
||||
func (*ResourceState) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{30}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{30}
|
||||
}
|
||||
func (m *ResourceState) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -898,7 +898,7 @@ var xxx_messageInfo_ResourceState proto.InternalMessageInfo
|
||||
func (m *SyncOperation) Reset() { *m = SyncOperation{} }
|
||||
func (*SyncOperation) ProtoMessage() {}
|
||||
func (*SyncOperation) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{31}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{31}
|
||||
}
|
||||
func (m *SyncOperation) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -926,7 +926,7 @@ var xxx_messageInfo_SyncOperation proto.InternalMessageInfo
|
||||
func (m *SyncOperationResource) Reset() { *m = SyncOperationResource{} }
|
||||
func (*SyncOperationResource) ProtoMessage() {}
|
||||
func (*SyncOperationResource) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{32}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{32}
|
||||
}
|
||||
func (m *SyncOperationResource) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -954,7 +954,7 @@ var xxx_messageInfo_SyncOperationResource proto.InternalMessageInfo
|
||||
func (m *SyncOperationResult) Reset() { *m = SyncOperationResult{} }
|
||||
func (*SyncOperationResult) ProtoMessage() {}
|
||||
func (*SyncOperationResult) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{33}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{33}
|
||||
}
|
||||
func (m *SyncOperationResult) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -982,7 +982,7 @@ var xxx_messageInfo_SyncOperationResult proto.InternalMessageInfo
|
||||
func (m *SyncPolicy) Reset() { *m = SyncPolicy{} }
|
||||
func (*SyncPolicy) ProtoMessage() {}
|
||||
func (*SyncPolicy) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{34}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{34}
|
||||
}
|
||||
func (m *SyncPolicy) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -1010,7 +1010,7 @@ var xxx_messageInfo_SyncPolicy proto.InternalMessageInfo
|
||||
func (m *SyncPolicyAutomated) Reset() { *m = SyncPolicyAutomated{} }
|
||||
func (*SyncPolicyAutomated) ProtoMessage() {}
|
||||
func (*SyncPolicyAutomated) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{35}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{35}
|
||||
}
|
||||
func (m *SyncPolicyAutomated) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -1038,7 +1038,7 @@ var xxx_messageInfo_SyncPolicyAutomated proto.InternalMessageInfo
|
||||
func (m *SyncStrategy) Reset() { *m = SyncStrategy{} }
|
||||
func (*SyncStrategy) ProtoMessage() {}
|
||||
func (*SyncStrategy) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{36}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{36}
|
||||
}
|
||||
func (m *SyncStrategy) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -1066,7 +1066,7 @@ var xxx_messageInfo_SyncStrategy proto.InternalMessageInfo
|
||||
func (m *SyncStrategyApply) Reset() { *m = SyncStrategyApply{} }
|
||||
func (*SyncStrategyApply) ProtoMessage() {}
|
||||
func (*SyncStrategyApply) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{37}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{37}
|
||||
}
|
||||
func (m *SyncStrategyApply) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -1094,7 +1094,7 @@ var xxx_messageInfo_SyncStrategyApply proto.InternalMessageInfo
|
||||
func (m *SyncStrategyHook) Reset() { *m = SyncStrategyHook{} }
|
||||
func (*SyncStrategyHook) ProtoMessage() {}
|
||||
func (*SyncStrategyHook) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{38}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{38}
|
||||
}
|
||||
func (m *SyncStrategyHook) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -1122,7 +1122,7 @@ var xxx_messageInfo_SyncStrategyHook proto.InternalMessageInfo
|
||||
func (m *TLSClientConfig) Reset() { *m = TLSClientConfig{} }
|
||||
func (*TLSClientConfig) ProtoMessage() {}
|
||||
func (*TLSClientConfig) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_generated_d72d4a667dcfda25, []int{39}
|
||||
return fileDescriptor_generated_eab4c1f625372278, []int{39}
|
||||
}
|
||||
func (m *TLSClientConfig) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -9887,185 +9887,184 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
proto.RegisterFile("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1/generated.proto", fileDescriptor_generated_d72d4a667dcfda25)
|
||||
proto.RegisterFile("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1/generated.proto", fileDescriptor_generated_eab4c1f625372278)
|
||||
}
|
||||
|
||||
var fileDescriptor_generated_d72d4a667dcfda25 = []byte{
|
||||
// 2801 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4d, 0x8c, 0x1c, 0x47,
|
||||
0xf5, 0xdf, 0x9e, 0x8f, 0xfd, 0x78, 0xfb, 0x61, 0xbb, 0xf2, 0xf1, 0x9f, 0xff, 0x46, 0xda, 0x5d,
|
||||
0xb5, 0xf9, 0x08, 0x28, 0x99, 0xc1, 0x86, 0x40, 0x08, 0x08, 0x69, 0x7b, 0xd6, 0x8e, 0x37, 0x6b,
|
||||
0xaf, 0x97, 0x9a, 0x4d, 0x2c, 0x85, 0x28, 0xd0, 0xee, 0xa9, 0x9d, 0x69, 0xcf, 0x4c, 0x77, 0xa7,
|
||||
0xab, 0x66, 0x9d, 0x11, 0x0a, 0x72, 0x84, 0x40, 0x20, 0x40, 0x02, 0x22, 0x04, 0x12, 0x97, 0x08,
|
||||
0xc1, 0x85, 0x73, 0xc4, 0x81, 0x1b, 0x1c, 0x50, 0x8e, 0x39, 0x80, 0x88, 0x42, 0x64, 0x91, 0xcd,
|
||||
0x85, 0x1b, 0xe2, 0x9a, 0x13, 0xaa, 0x8f, 0xee, 0xaa, 0xee, 0x99, 0xf1, 0xae, 0x3d, 0x63, 0x03,
|
||||
0xb7, 0xe9, 0x7a, 0xaf, 0xdf, 0xef, 0xf5, 0xab, 0x57, 0xef, 0xab, 0x06, 0xb6, 0x5b, 0x3e, 0x6b,
|
||||
0xf7, 0xaf, 0x57, 0xbd, 0xb0, 0x57, 0x73, 0xe3, 0x56, 0x18, 0xc5, 0xe1, 0x0d, 0xf1, 0xe3, 0x49,
|
||||
0xaf, 0x59, 0x8b, 0x3a, 0xad, 0x9a, 0x1b, 0xf9, 0xb4, 0xe6, 0x46, 0x51, 0xd7, 0xf7, 0x5c, 0xe6,
|
||||
0x87, 0x41, 0xed, 0xf0, 0x9c, 0xdb, 0x8d, 0xda, 0xee, 0xb9, 0x5a, 0x8b, 0x04, 0x24, 0x76, 0x19,
|
||||
0x69, 0x56, 0xa3, 0x38, 0x64, 0x21, 0xfa, 0xa2, 0x16, 0x55, 0x4d, 0x44, 0x89, 0x1f, 0x5f, 0xf7,
|
||||
0x9a, 0xd5, 0xa8, 0xd3, 0xaa, 0x72, 0x51, 0x55, 0x43, 0x54, 0x35, 0x11, 0xb5, 0xfa, 0xa4, 0xa1,
|
||||
0x45, 0x2b, 0x6c, 0x85, 0x35, 0x21, 0xf1, 0x7a, 0xff, 0x40, 0x3c, 0x89, 0x07, 0xf1, 0x4b, 0x22,
|
||||
0xad, 0x7e, 0xae, 0xf3, 0x34, 0xad, 0xfa, 0x21, 0xd7, 0xad, 0xe7, 0x7a, 0x6d, 0x3f, 0x20, 0xf1,
|
||||
0x40, 0x2b, 0xdb, 0x23, 0xcc, 0xad, 0x1d, 0x0e, 0xe9, 0xb7, 0x5a, 0x1b, 0xf7, 0x56, 0xdc, 0x0f,
|
||||
0x98, 0xdf, 0x23, 0x43, 0x2f, 0x7c, 0xfe, 0xb8, 0x17, 0xa8, 0xd7, 0x26, 0x3d, 0x77, 0xe8, 0xbd,
|
||||
0xcf, 0x8e, 0x7b, 0xaf, 0xcf, 0xfc, 0x6e, 0xcd, 0x0f, 0x18, 0x65, 0x71, 0xfe, 0x25, 0xfb, 0x15,
|
||||
0x58, 0xde, 0xbc, 0xd6, 0xd8, 0xec, 0xb3, 0x76, 0x3d, 0x0c, 0x0e, 0xfc, 0x16, 0x7a, 0x0a, 0x16,
|
||||
0xbd, 0x6e, 0x9f, 0x32, 0x12, 0xef, 0xba, 0x3d, 0x52, 0xb1, 0x36, 0xac, 0xc7, 0x17, 0x9c, 0x87,
|
||||
0xde, 0xbe, 0xbd, 0x3e, 0x73, 0x74, 0x7b, 0x7d, 0xb1, 0xae, 0x49, 0xd8, 0xe4, 0x43, 0x9f, 0x82,
|
||||
0xb9, 0x38, 0xec, 0x92, 0x4d, 0xbc, 0x5b, 0x29, 0x88, 0x57, 0x4e, 0xa9, 0x57, 0xe6, 0xb0, 0x5c,
|
||||
0xc6, 0x09, 0xdd, 0xfe, 0x9b, 0x05, 0xb0, 0x19, 0x45, 0x7b, 0x71, 0x78, 0x83, 0x78, 0x0c, 0x7d,
|
||||
0x03, 0xe6, 0xb9, 0xe9, 0x9a, 0x2e, 0x73, 0x05, 0xda, 0xe2, 0xf9, 0xcf, 0x54, 0xe5, 0x97, 0x54,
|
||||
0xcd, 0x2f, 0xd1, 0x5b, 0xc9, 0xb9, 0xab, 0x87, 0xe7, 0xaa, 0x57, 0xaf, 0xf3, 0xf7, 0xaf, 0x10,
|
||||
0xe6, 0x3a, 0x48, 0x81, 0x81, 0x5e, 0xc3, 0xa9, 0x54, 0xd4, 0x81, 0x12, 0x8d, 0x88, 0x27, 0x14,
|
||||
0x5b, 0x3c, 0xbf, 0x5d, 0xbd, 0x67, 0x87, 0xa9, 0x6a, 0xb5, 0x1b, 0x11, 0xf1, 0x9c, 0x25, 0x05,
|
||||
0x5b, 0xe2, 0x4f, 0x58, 0x80, 0xd8, 0xef, 0x59, 0xb0, 0xa2, 0xd9, 0x2e, 0xfb, 0x94, 0xa1, 0x97,
|
||||
0x86, 0xbe, 0xb0, 0x7a, 0xb2, 0x2f, 0xe4, 0x6f, 0x8b, 0xef, 0x3b, 0xad, 0x80, 0xe6, 0x93, 0x15,
|
||||
0xe3, 0xeb, 0x6e, 0x40, 0xd9, 0x67, 0xa4, 0x47, 0x2b, 0x85, 0x8d, 0xe2, 0xe3, 0x8b, 0xe7, 0x2f,
|
||||
0x4c, 0xe5, 0xf3, 0x9c, 0x65, 0x85, 0x58, 0xde, 0xe6, 0xb2, 0xb1, 0x84, 0xb0, 0x7f, 0x59, 0x36,
|
||||
0x3f, 0x8e, 0x7f, 0x35, 0x3a, 0x07, 0x8b, 0x34, 0xec, 0xc7, 0x1e, 0xc1, 0x24, 0x0a, 0x69, 0xc5,
|
||||
0xda, 0x28, 0xf2, 0xcd, 0xe7, 0xbe, 0xd2, 0xd0, 0xcb, 0xd8, 0xe4, 0x41, 0x3f, 0xb0, 0x60, 0xa9,
|
||||
0x49, 0x28, 0xf3, 0x03, 0x81, 0x9f, 0x68, 0xfe, 0xd5, 0xc9, 0x34, 0x4f, 0x16, 0xb7, 0xb4, 0x64,
|
||||
0xe7, 0x61, 0xf5, 0x15, 0x4b, 0xc6, 0x22, 0xc5, 0x19, 0x70, 0xee, 0xf0, 0x4d, 0x42, 0xbd, 0xd8,
|
||||
0x8f, 0xf8, 0x73, 0xa5, 0x98, 0x75, 0xf8, 0x2d, 0x4d, 0xc2, 0x26, 0x1f, 0xea, 0x40, 0x99, 0x3b,
|
||||
0x34, 0xad, 0x94, 0x84, 0xf2, 0x17, 0x27, 0x50, 0x5e, 0x99, 0x93, 0x1f, 0x14, 0x6d, 0x77, 0xfe,
|
||||
0x44, 0xb1, 0xc4, 0x40, 0x3f, 0xb2, 0xa0, 0xa2, 0x4e, 0x1b, 0x26, 0xd2, 0x94, 0xd7, 0xda, 0x3e,
|
||||
0x23, 0x5d, 0x9f, 0xb2, 0x4a, 0x59, 0x28, 0x50, 0x3b, 0x99, 0x4b, 0x3d, 0x1b, 0x87, 0xfd, 0x68,
|
||||
0xc7, 0x0f, 0x9a, 0xce, 0x86, 0x42, 0xaa, 0xd4, 0xc7, 0x08, 0xc6, 0x63, 0x21, 0xd1, 0x1b, 0x16,
|
||||
0xac, 0x06, 0x6e, 0x8f, 0xd0, 0xc8, 0xe5, 0x9b, 0x2a, 0xc9, 0x4e, 0xd7, 0xf5, 0x3a, 0x42, 0xa3,
|
||||
0xd9, 0x7b, 0xd3, 0xc8, 0x56, 0x1a, 0xad, 0xee, 0x8e, 0x15, 0x8d, 0xef, 0x00, 0x6b, 0xff, 0xa9,
|
||||
0x08, 0x8b, 0x86, 0x23, 0x3c, 0x80, 0xc8, 0xd2, 0xcd, 0x44, 0x96, 0xe7, 0xa6, 0xe3, 0xc0, 0xe3,
|
||||
0x42, 0x0b, 0x62, 0x30, 0x4b, 0x99, 0xcb, 0xfa, 0x54, 0x38, 0xe9, 0xe2, 0xf9, 0xcb, 0x53, 0xc2,
|
||||
0x13, 0x32, 0x9d, 0x15, 0x85, 0x38, 0x2b, 0x9f, 0xb1, 0xc2, 0x42, 0xaf, 0xc0, 0x42, 0x18, 0xf1,
|
||||
0x9c, 0xc1, 0x4f, 0x47, 0x49, 0x00, 0x6f, 0x4d, 0x00, 0x7c, 0x35, 0x91, 0xe5, 0x2c, 0x1f, 0xdd,
|
||||
0x5e, 0x5f, 0x48, 0x1f, 0xb1, 0x46, 0xb1, 0x3d, 0x78, 0xd8, 0xd0, 0xaf, 0x1e, 0x06, 0x4d, 0x5f,
|
||||
0x6c, 0xe8, 0x06, 0x94, 0xd8, 0x20, 0x4a, 0x92, 0x52, 0x6a, 0xa2, 0xfd, 0x41, 0x44, 0xb0, 0xa0,
|
||||
0xf0, 0x34, 0xd4, 0x23, 0x94, 0xba, 0x2d, 0x92, 0x4f, 0x43, 0x57, 0xe4, 0x32, 0x4e, 0xe8, 0xf6,
|
||||
0x2b, 0xf0, 0xe8, 0xe8, 0xa8, 0x81, 0x3e, 0x01, 0xb3, 0x94, 0xc4, 0x87, 0x24, 0x56, 0x40, 0xda,
|
||||
0x32, 0x62, 0x15, 0x2b, 0x2a, 0xaa, 0xc1, 0x42, 0xea, 0x8d, 0x0a, 0xee, 0x8c, 0x62, 0x5d, 0xd0,
|
||||
0x2e, 0xac, 0x79, 0xec, 0xf7, 0x2d, 0x38, 0x65, 0x60, 0x3e, 0x80, 0xe4, 0xd0, 0xc9, 0x26, 0x87,
|
||||
0x8b, 0xd3, 0xf1, 0x98, 0x31, 0xd9, 0xe1, 0x0f, 0x45, 0x38, 0x63, 0xfa, 0x95, 0x38, 0x9e, 0xa2,
|
||||
0x32, 0x20, 0x51, 0xf8, 0x3c, 0xbe, 0xac, 0xcc, 0xa9, 0x2b, 0x03, 0xb9, 0x8c, 0x13, 0x3a, 0xdf,
|
||||
0xdf, 0xc8, 0x65, 0x6d, 0x65, 0xcb, 0x74, 0x7f, 0xf7, 0x5c, 0xd6, 0xc6, 0x82, 0xc2, 0x83, 0x35,
|
||||
0x09, 0x0e, 0xfd, 0x38, 0x0c, 0x7a, 0x24, 0x60, 0xf9, 0x60, 0x7d, 0x41, 0x93, 0xb0, 0xc9, 0x87,
|
||||
0xbe, 0x02, 0x2b, 0xcc, 0x8d, 0x5b, 0x84, 0x61, 0x72, 0xe8, 0xd3, 0xc4, 0x91, 0x17, 0x9c, 0x47,
|
||||
0xd5, 0x9b, 0x2b, 0xfb, 0x19, 0x2a, 0xce, 0x71, 0xa3, 0xb7, 0x2c, 0x78, 0xcc, 0x0b, 0x7b, 0x51,
|
||||
0x18, 0x90, 0x80, 0xed, 0xb9, 0xb1, 0xdb, 0x23, 0x8c, 0xc4, 0x57, 0x0f, 0x49, 0x1c, 0xfb, 0x4d,
|
||||
0x42, 0x55, 0x08, 0xbe, 0x32, 0x81, 0x75, 0xeb, 0x43, 0xd2, 0x9d, 0xb3, 0x4a, 0xb9, 0xc7, 0xea,
|
||||
0xe3, 0x91, 0xf1, 0x9d, 0xd4, 0xe2, 0xb9, 0xf9, 0xd0, 0xed, 0xf6, 0x09, 0xbd, 0xe8, 0xf3, 0x4c,
|
||||
0x35, 0xab, 0x73, 0xf3, 0x0b, 0x7a, 0x19, 0x9b, 0x3c, 0xf6, 0x5b, 0xc5, 0x8c, 0x8b, 0x36, 0x92,
|
||||
0xb8, 0x23, 0xf6, 0x52, 0x39, 0xe8, 0xb4, 0xe2, 0x8e, 0x0c, 0xdf, 0xfa, 0x74, 0xc9, 0x12, 0x41,
|
||||
0x61, 0xa1, 0xef, 0x59, 0x22, 0x31, 0x27, 0xa7, 0x52, 0xc5, 0xd8, 0xfb, 0x50, 0x24, 0x98, 0xb9,
|
||||
0x3e, 0x59, 0xc4, 0x26, 0x34, 0x77, 0xe1, 0x48, 0xe6, 0x68, 0xe5, 0x71, 0xa9, 0x0b, 0x27, 0xa9,
|
||||
0x3b, 0xa1, 0xa3, 0x3e, 0x00, 0x1d, 0x04, 0xde, 0x5e, 0xd8, 0xf5, 0xbd, 0x81, 0x0a, 0x97, 0x93,
|
||||
0x94, 0x64, 0x8d, 0x54, 0x98, 0xb3, 0xc2, 0xd3, 0x90, 0x7e, 0xc6, 0x06, 0x90, 0xfd, 0xe6, 0x6c,
|
||||
0xf6, 0xe8, 0xc9, 0xd0, 0xfd, 0x13, 0x0b, 0x4e, 0x73, 0xff, 0x70, 0x63, 0x9f, 0x86, 0x01, 0x26,
|
||||
0xb4, 0xdf, 0x65, 0x6a, 0x0f, 0x77, 0x26, 0xf4, 0x55, 0x53, 0xa4, 0x53, 0x51, 0xe6, 0x38, 0x9d,
|
||||
0xa7, 0xe0, 0x21, 0x78, 0xc4, 0x60, 0xae, 0xed, 0x53, 0x16, 0xc6, 0x03, 0x15, 0x93, 0x26, 0xa9,
|
||||
0xc7, 0xb7, 0x48, 0xd4, 0x0d, 0x07, 0xfc, 0x88, 0x6f, 0x07, 0x07, 0xa1, 0xde, 0x96, 0x4b, 0x12,
|
||||
0x01, 0x27, 0x50, 0xe8, 0x75, 0x0b, 0x20, 0x4a, 0x0e, 0x08, 0xcf, 0x9f, 0xf7, 0xe1, 0xbc, 0xa6,
|
||||
0xa5, 0x42, 0xba, 0x44, 0xb1, 0x01, 0x8a, 0x42, 0x98, 0x6d, 0x13, 0xb7, 0xcb, 0xda, 0xca, 0x2d,
|
||||
0x9e, 0x9d, 0x00, 0xfe, 0x92, 0x10, 0x94, 0xcf, 0xdc, 0x72, 0x15, 0x2b, 0x18, 0xf4, 0x1d, 0x0b,
|
||||
0x56, 0xd2, 0xa4, 0xca, 0x79, 0x49, 0xa5, 0x3c, 0x71, 0x0b, 0x74, 0x35, 0x23, 0xd0, 0x41, 0x3c,
|
||||
0x7a, 0x66, 0xd7, 0x70, 0x0e, 0x14, 0x7d, 0xdb, 0x02, 0xf0, 0x92, 0x24, 0x4e, 0x55, 0x75, 0x78,
|
||||
0x75, 0x3a, 0x07, 0x39, 0x2d, 0x0e, 0xb4, 0xf9, 0xd3, 0x25, 0x8a, 0x0d, 0x58, 0xfb, 0x43, 0x0b,
|
||||
0x1e, 0x31, 0x5e, 0xbc, 0xe6, 0x32, 0xaf, 0x7d, 0xe1, 0x90, 0x67, 0x87, 0x9d, 0x4c, 0x59, 0xf1,
|
||||
0x05, 0xb3, 0xac, 0xf8, 0xe8, 0xf6, 0xfa, 0x27, 0xc7, 0xb5, 0xd5, 0x37, 0xb9, 0x84, 0xaa, 0x10,
|
||||
0x61, 0x54, 0x20, 0xaf, 0xc1, 0xa2, 0xa1, 0xb3, 0x8a, 0x5a, 0xd3, 0xca, 0xbb, 0x69, 0xa8, 0x32,
|
||||
0x16, 0xb1, 0x89, 0x67, 0xff, 0xa5, 0x00, 0x73, 0xaa, 0xa0, 0x3f, 0x71, 0x1d, 0xb3, 0x01, 0x25,
|
||||
0x5e, 0xa3, 0xe4, 0xd3, 0xae, 0x68, 0xf2, 0x05, 0x05, 0x45, 0x30, 0xeb, 0x89, 0xf1, 0x80, 0xaa,
|
||||
0x3c, 0x2f, 0x4d, 0x72, 0x72, 0xa4, 0x76, 0x72, 0xdc, 0xa0, 0x75, 0x92, 0xcf, 0x58, 0xe1, 0xf0,
|
||||
0x8e, 0xe7, 0x94, 0x17, 0x06, 0x01, 0xf1, 0xb4, 0xf3, 0x96, 0x26, 0xae, 0xb2, 0xeb, 0x59, 0x89,
|
||||
0xce, 0xff, 0x29, 0xf4, 0x53, 0x39, 0x02, 0xce, 0x63, 0xdb, 0xbf, 0x2b, 0xc2, 0x72, 0x46, 0x73,
|
||||
0xf4, 0x04, 0xcc, 0xf7, 0x29, 0x89, 0x03, 0x3d, 0x25, 0x49, 0x0b, 0xb1, 0xe7, 0xd5, 0x3a, 0x4e,
|
||||
0x39, 0x38, 0x77, 0xe4, 0x52, 0x7a, 0x33, 0x8c, 0x9b, 0xca, 0xce, 0x29, 0xf7, 0x9e, 0x5a, 0xc7,
|
||||
0x29, 0x07, 0x2f, 0x73, 0xae, 0x13, 0x37, 0x26, 0xf1, 0x7e, 0xd8, 0x21, 0x43, 0x3d, 0xa9, 0xa3,
|
||||
0x49, 0xd8, 0xe4, 0x13, 0x46, 0x63, 0x5d, 0x5a, 0xef, 0xfa, 0x24, 0x60, 0x52, 0xcd, 0x29, 0x18,
|
||||
0x6d, 0xff, 0x72, 0xc3, 0x94, 0xa8, 0x8d, 0x96, 0x23, 0xe0, 0x3c, 0x36, 0x8f, 0xba, 0xcb, 0xee,
|
||||
0x4d, 0xaa, 0xa7, 0x4b, 0x2a, 0xfe, 0x4c, 0xe2, 0x3e, 0x99, 0x69, 0x95, 0x73, 0xe6, 0xe8, 0xf6,
|
||||
0x7a, 0x76, 0x80, 0x85, 0xb3, 0x88, 0xf6, 0x9f, 0x2d, 0x48, 0xa6, 0x56, 0x0f, 0xa0, 0xde, 0x6e,
|
||||
0x65, 0xeb, 0x6d, 0x67, 0xf2, 0x73, 0x32, 0xa6, 0xd6, 0x7e, 0xaf, 0x08, 0x43, 0xd9, 0x16, 0xbd,
|
||||
0xcc, 0xe3, 0x2c, 0x5f, 0x23, 0xcd, 0xcd, 0x24, 0xd1, 0x7f, 0xfa, 0x64, 0x5f, 0xb7, 0xef, 0xf7,
|
||||
0x88, 0x19, 0x42, 0x13, 0x29, 0xd8, 0x90, 0x88, 0x6e, 0x59, 0x1a, 0x60, 0x3f, 0x54, 0xb1, 0x6d,
|
||||
0xba, 0xd5, 0xe0, 0x90, 0x0a, 0xfb, 0x21, 0x36, 0x30, 0xd1, 0x33, 0x69, 0x0f, 0x5c, 0x16, 0x87,
|
||||
0xc2, 0xce, 0x76, 0xad, 0x1f, 0x65, 0x8a, 0x90, 0x5c, 0x27, 0x3b, 0x80, 0x85, 0x58, 0x0d, 0x0d,
|
||||
0x92, 0x2c, 0x34, 0x89, 0x27, 0x26, 0x03, 0x08, 0x19, 0x4a, 0xd2, 0xce, 0x2f, 0x59, 0xa6, 0x58,
|
||||
0xa3, 0xf1, 0xe3, 0x1f, 0x27, 0xad, 0xc7, 0x5c, 0xf6, 0xf8, 0xa7, 0x4d, 0x47, 0xca, 0x61, 0xff,
|
||||
0xd0, 0x02, 0x34, 0x5c, 0x60, 0xf0, 0x7e, 0x33, 0xad, 0xf6, 0x55, 0xc8, 0x49, 0x51, 0x53, 0x76,
|
||||
0xac, 0x79, 0x4e, 0x10, 0xd8, 0xcf, 0x42, 0x59, 0x54, 0xff, 0x2a, 0xc4, 0xa4, 0xbe, 0x26, 0xfa,
|
||||
0x03, 0x2c, 0x69, 0xf6, 0x1f, 0x2d, 0xc8, 0x07, 0x48, 0x91, 0x5b, 0xe4, 0x3e, 0xe4, 0x73, 0x4b,
|
||||
0xd6, 0xe6, 0x27, 0x6f, 0xc8, 0xd1, 0x4b, 0xb0, 0xe8, 0x32, 0x46, 0x7a, 0x11, 0x13, 0xee, 0x5b,
|
||||
0xbc, 0x6b, 0xf7, 0x15, 0x05, 0xf2, 0x95, 0xb0, 0xe9, 0x1f, 0xf8, 0xc2, 0x75, 0x4d, 0x71, 0xf6,
|
||||
0xbf, 0x0a, 0xb0, 0x92, 0x2d, 0x17, 0x33, 0x9b, 0x52, 0x38, 0x6e, 0x53, 0x8e, 0xed, 0x01, 0x8b,
|
||||
0xff, 0x9d, 0x3d, 0xe0, 0xcb, 0x00, 0x4d, 0xf1, 0xd9, 0xc2, 0xa8, 0xa5, 0x7b, 0x8f, 0x09, 0x5b,
|
||||
0xa9, 0x14, 0x6c, 0x48, 0x44, 0xab, 0x50, 0xf0, 0x9b, 0xe2, 0x30, 0x16, 0x1d, 0x50, 0xbc, 0x85,
|
||||
0xed, 0x2d, 0x5c, 0xf0, 0x9b, 0x36, 0x85, 0x25, 0xb3, 0x50, 0x3d, 0xb1, 0xd3, 0x7c, 0x09, 0x96,
|
||||
0xe5, 0xaf, 0x2d, 0xc2, 0x5c, 0xbf, 0x4b, 0xd5, 0xee, 0x3c, 0xa2, 0xd8, 0x97, 0x1b, 0x26, 0x11,
|
||||
0x67, 0x79, 0xed, 0x9f, 0x17, 0x00, 0x2e, 0x85, 0x61, 0x47, 0x61, 0x26, 0x67, 0xc0, 0x1a, 0x7b,
|
||||
0x06, 0x36, 0xa0, 0xd4, 0xf1, 0x83, 0x66, 0xfe, 0x94, 0xec, 0xf8, 0x41, 0x13, 0x0b, 0x0a, 0x3a,
|
||||
0x0f, 0xe0, 0x46, 0xfe, 0x0b, 0x24, 0xa6, 0x7a, 0x42, 0x9c, 0xda, 0x65, 0x73, 0x6f, 0x5b, 0x51,
|
||||
0xb0, 0xc1, 0x85, 0x9e, 0x50, 0x45, 0xa5, 0x1c, 0x34, 0x54, 0x72, 0x45, 0xe5, 0x3c, 0xd7, 0xd0,
|
||||
0xa8, 0x1a, 0x9f, 0xce, 0x85, 0xb5, 0x8d, 0xa1, 0xb0, 0xa6, 0x8b, 0xec, 0xbd, 0xb6, 0x4b, 0xc9,
|
||||
0xa8, 0x03, 0x36, 0x7b, 0xcc, 0xc4, 0xab, 0x01, 0xf3, 0xcf, 0x5d, 0xdb, 0x97, 0xa5, 0x82, 0x0d,
|
||||
0x45, 0xdf, 0x95, 0x51, 0xa4, 0xa8, 0xdd, 0x7e, 0x9b, 0xd2, 0xbe, 0xd8, 0x61, 0x4e, 0x44, 0x67,
|
||||
0xa1, 0x48, 0x5e, 0x8d, 0x84, 0x5d, 0x8a, 0x3a, 0xd2, 0x5c, 0x78, 0x35, 0xf2, 0x63, 0x42, 0x39,
|
||||
0x13, 0x79, 0x35, 0xb2, 0x29, 0xe8, 0x19, 0x1e, 0x3a, 0x80, 0x12, 0x6f, 0x4a, 0x55, 0xea, 0xb9,
|
||||
0x34, 0x61, 0xdf, 0xab, 0x47, 0x85, 0xf3, 0x62, 0x12, 0x3a, 0x08, 0x3c, 0x2c, 0xe4, 0xdb, 0xbf,
|
||||
0x2a, 0x41, 0xae, 0xe9, 0x40, 0x7d, 0x73, 0x4c, 0x69, 0x4d, 0x71, 0x4c, 0x99, 0x7e, 0xf8, 0xa8,
|
||||
0x51, 0x25, 0x7a, 0x0a, 0xca, 0x11, 0xdf, 0x0f, 0xe5, 0x3d, 0xeb, 0x49, 0x00, 0x15, 0x9b, 0x34,
|
||||
0x62, 0xdb, 0x24, 0xb7, 0xb9, 0x6b, 0xc5, 0x63, 0xc2, 0xe2, 0xb7, 0xe4, 0x44, 0x41, 0x75, 0xef,
|
||||
0xf2, 0x00, 0xef, 0x4e, 0xcb, 0xb2, 0xaa, 0x81, 0x4f, 0x47, 0x0b, 0xaa, 0x6d, 0x37, 0x10, 0xd1,
|
||||
0xd7, 0x60, 0x81, 0x32, 0x37, 0x96, 0x41, 0x79, 0xf6, 0xae, 0xe3, 0x47, 0x6a, 0xbe, 0x46, 0x22,
|
||||
0x04, 0x6b, 0x79, 0xe8, 0x45, 0x80, 0x03, 0x3f, 0xf0, 0x69, 0x5b, 0x48, 0x9f, 0xbb, 0xb7, 0x90,
|
||||
0x7f, 0x31, 0x95, 0x80, 0x0d, 0x69, 0xf6, 0x4f, 0x2d, 0x40, 0x23, 0x02, 0x62, 0x9c, 0x94, 0x68,
|
||||
0xd6, 0xfd, 0x08, 0xd8, 0x23, 0xab, 0xb5, 0x67, 0xe6, 0x7f, 0xf1, 0xe6, 0xfa, 0xcc, 0xad, 0xf7,
|
||||
0x37, 0x66, 0xec, 0xef, 0x16, 0x60, 0xd1, 0xb8, 0xef, 0x39, 0x41, 0x78, 0xca, 0xdd, 0x4f, 0x15,
|
||||
0x4e, 0x78, 0x3f, 0xf5, 0x38, 0xcc, 0x47, 0x61, 0xd7, 0xf7, 0x7c, 0x95, 0x9a, 0x16, 0x9c, 0x25,
|
||||
0xd1, 0x6c, 0xa8, 0x35, 0x9c, 0x52, 0x11, 0x83, 0x85, 0x1b, 0x37, 0x99, 0x08, 0x0b, 0xc9, 0x6d,
|
||||
0x56, 0x7d, 0x02, 0xa3, 0x24, 0x21, 0x46, 0xef, 0x7c, 0xb2, 0x42, 0xb1, 0x06, 0xb2, 0xff, 0x5a,
|
||||
0x00, 0x10, 0xd7, 0x81, 0xbe, 0x18, 0xd0, 0x6c, 0x40, 0x29, 0x26, 0x51, 0x98, 0xb7, 0x03, 0xe7,
|
||||
0xc0, 0x82, 0x92, 0xe9, 0xb7, 0x0a, 0x77, 0xd5, 0x6f, 0x15, 0x8f, 0xed, 0xb7, 0x78, 0xc2, 0xa1,
|
||||
0xed, 0xbd, 0xd8, 0x3f, 0x74, 0x19, 0xd9, 0x21, 0x03, 0x15, 0xb5, 0x75, 0xc2, 0x69, 0x5c, 0xd2,
|
||||
0x44, 0x9c, 0xe5, 0x1d, 0xd9, 0xaa, 0x96, 0xff, 0x83, 0xad, 0xea, 0x7b, 0x16, 0xac, 0x68, 0xcb,
|
||||
0xfe, 0x6f, 0xdd, 0x40, 0x6b, 0xbd, 0xc7, 0xf4, 0x3d, 0xff, 0xb4, 0xe0, 0x54, 0x52, 0x61, 0xab,
|
||||
0x8c, 0x3f, 0x95, 0x14, 0x9f, 0xb9, 0xcb, 0x29, 0x1e, 0x7f, 0x97, 0x63, 0x46, 0xf0, 0xd2, 0x31,
|
||||
0x11, 0xfc, 0xcb, 0xb9, 0xe4, 0xfe, 0xb1, 0xa1, 0xe4, 0x8e, 0xd2, 0x5e, 0x62, 0x10, 0x78, 0xd9,
|
||||
0x62, 0xc8, 0xfe, 0xad, 0x05, 0x4b, 0x09, 0x79, 0x37, 0x6c, 0x8a, 0x9a, 0x9d, 0x0a, 0x27, 0xb3,
|
||||
0xb2, 0x35, 0xbb, 0x74, 0x07, 0x49, 0x43, 0x7d, 0x98, 0xf7, 0xda, 0x7e, 0xb7, 0x19, 0x93, 0x40,
|
||||
0x6d, 0xcb, 0xb3, 0x53, 0x68, 0x75, 0x38, 0xbe, 0x76, 0x85, 0xba, 0x02, 0xc0, 0x29, 0x94, 0xfd,
|
||||
0xfb, 0x22, 0x2c, 0x67, 0xfa, 0x22, 0x1e, 0xbe, 0xe4, 0x65, 0x4a, 0xc3, 0xd0, 0x39, 0x0d, 0x5f,
|
||||
0xfb, 0x9a, 0x84, 0x4d, 0x3e, 0xbe, 0x1f, 0x5d, 0xff, 0x50, 0xca, 0xc8, 0xdf, 0xad, 0x5d, 0x4e,
|
||||
0x08, 0x58, 0xf3, 0x18, 0x8d, 0x61, 0xf1, 0xae, 0x1b, 0xc3, 0x37, 0x2c, 0x40, 0xe2, 0x13, 0xb8,
|
||||
0xe4, 0xb4, 0x7f, 0x53, 0xb1, 0x70, 0x6a, 0x76, 0x5b, 0x55, 0x1a, 0xa1, 0xfa, 0x10, 0x14, 0x1e,
|
||||
0x01, 0x6f, 0xcc, 0x8b, 0xcb, 0x0f, 0x64, 0x5e, 0x6c, 0xff, 0xa6, 0x04, 0xcb, 0x99, 0xea, 0x20,
|
||||
0xd3, 0x21, 0x59, 0xc7, 0x76, 0x48, 0x67, 0xa1, 0x1c, 0xc5, 0xfd, 0x40, 0xee, 0xd7, 0xbc, 0x76,
|
||||
0xcc, 0x3d, 0xbe, 0x88, 0x25, 0x8d, 0xf7, 0x00, 0xcd, 0x78, 0x80, 0xfb, 0xb2, 0x8e, 0x9e, 0xd7,
|
||||
0xca, 0x6c, 0x89, 0x55, 0xac, 0xa8, 0xe8, 0x35, 0x58, 0xa2, 0xe2, 0x30, 0xc4, 0x2e, 0x23, 0xad,
|
||||
0xc1, 0x14, 0x66, 0xe6, 0x0d, 0x43, 0x9c, 0x73, 0xfa, 0xe8, 0xf6, 0xfa, 0x92, 0xb9, 0x82, 0x33,
|
||||
0x70, 0xe8, 0x67, 0x16, 0xa0, 0x68, 0xd4, 0x45, 0x9f, 0x35, 0x61, 0xcd, 0x30, 0x5c, 0x91, 0x38,
|
||||
0x8f, 0x72, 0xa7, 0x18, 0xd1, 0xd7, 0x8d, 0x50, 0x00, 0xbd, 0x6e, 0x0d, 0x0f, 0x31, 0xf6, 0xa6,
|
||||
0x58, 0x0d, 0xca, 0x29, 0xcc, 0x1d, 0x87, 0x19, 0xf6, 0x2d, 0x0b, 0x1e, 0x19, 0xf9, 0x1e, 0xf7,
|
||||
0x80, 0x56, 0x1c, 0xf6, 0xa3, 0x7c, 0x68, 0x12, 0xff, 0xf1, 0xc0, 0x92, 0x76, 0x82, 0x60, 0x9c,
|
||||
0x04, 0xf4, 0xe2, 0xb8, 0x80, 0x6e, 0xff, 0xba, 0x00, 0x0f, 0x8d, 0x28, 0x64, 0xd1, 0x4d, 0xd3,
|
||||
0x3a, 0xb2, 0xc0, 0x7b, 0x6e, 0x0a, 0xe7, 0x57, 0x65, 0x1a, 0xf9, 0x97, 0x85, 0x63, 0x07, 0x3c,
|
||||
0xc7, 0xcf, 0x12, 0x0e, 0xa0, 0xdc, 0x0e, 0xc3, 0x4e, 0x32, 0x34, 0x98, 0x24, 0x63, 0xea, 0x56,
|
||||
0xd7, 0x59, 0xe0, 0xa6, 0xe6, 0xcf, 0x14, 0x4b, 0xf1, 0xf6, 0xf7, 0x2d, 0x30, 0x6e, 0x0c, 0xd1,
|
||||
0x37, 0x61, 0xc1, 0xed, 0xb3, 0xb0, 0xe7, 0x32, 0xd2, 0x54, 0x75, 0xc0, 0xee, 0x54, 0xee, 0x26,
|
||||
0x37, 0x13, 0xa9, 0xd2, 0x42, 0xe9, 0x23, 0xd6, 0x78, 0xf6, 0x33, 0x72, 0xc7, 0x72, 0x2f, 0xe8,
|
||||
0xa0, 0x61, 0x8d, 0x0f, 0x1a, 0xf6, 0x3f, 0x2c, 0xc8, 0x1c, 0x56, 0xd4, 0x83, 0x32, 0x57, 0x69,
|
||||
0x30, 0x85, 0x1b, 0x69, 0x53, 0xee, 0x26, 0x97, 0x29, 0xed, 0x28, 0x7e, 0x62, 0x89, 0x82, 0x7c,
|
||||
0x28, 0x71, 0x83, 0xaa, 0x89, 0xe7, 0xce, 0x94, 0xd0, 0xf8, 0x56, 0xc9, 0xd6, 0x96, 0xff, 0xc2,
|
||||
0x02, 0xc2, 0x7e, 0x1a, 0xce, 0x0c, 0x69, 0xc4, 0x8d, 0x74, 0x10, 0x26, 0x17, 0xf0, 0x86, 0x91,
|
||||
0x2e, 0xf2, 0x45, 0x2c, 0x69, 0xbc, 0x50, 0x38, 0x9d, 0x17, 0xcf, 0xe3, 0xd8, 0x19, 0x9a, 0x97,
|
||||
0x77, 0x5f, 0xac, 0xf6, 0xff, 0x4a, 0xa9, 0x61, 0xf5, 0xf1, 0xb0, 0x06, 0x7c, 0x47, 0xf3, 0xf7,
|
||||
0x07, 0xfc, 0x0c, 0xf9, 0x01, 0x25, 0x5e, 0x3f, 0x4e, 0x3e, 0x54, 0x0f, 0x26, 0xd4, 0x3a, 0x4e,
|
||||
0x39, 0xd0, 0x79, 0x00, 0x79, 0x7f, 0xb5, 0xab, 0x3b, 0x82, 0x74, 0x28, 0xd3, 0x48, 0x29, 0xd8,
|
||||
0xe0, 0xe2, 0x4d, 0x91, 0x47, 0x62, 0xb6, 0xc5, 0xeb, 0x60, 0x1e, 0x5c, 0x96, 0x64, 0x53, 0x54,
|
||||
0x57, 0x6b, 0x38, 0xa5, 0xa2, 0x8f, 0xc3, 0x5c, 0x87, 0x0c, 0x04, 0x63, 0x49, 0x30, 0x2e, 0xf2,
|
||||
0xd2, 0x6e, 0x47, 0x2e, 0xe1, 0x84, 0x86, 0x6c, 0x98, 0xf5, 0x5c, 0xc1, 0x55, 0x16, 0x5c, 0x20,
|
||||
0xae, 0xb2, 0x36, 0x05, 0x93, 0xa2, 0x38, 0xd5, 0xb7, 0x3f, 0x58, 0x9b, 0x79, 0xe7, 0x83, 0xb5,
|
||||
0x99, 0x77, 0x3f, 0x58, 0x9b, 0xb9, 0x75, 0xb4, 0x66, 0xbd, 0x7d, 0xb4, 0x66, 0xbd, 0x73, 0xb4,
|
||||
0x66, 0xbd, 0x7b, 0xb4, 0x66, 0xfd, 0xfd, 0x68, 0xcd, 0xfa, 0xf1, 0x87, 0x6b, 0x33, 0x2f, 0xce,
|
||||
0x27, 0xa6, 0xfd, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xc5, 0xe3, 0x12, 0x1c, 0x2d, 0x00,
|
||||
var fileDescriptor_generated_eab4c1f625372278 = []byte{
|
||||
// 2785 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4d, 0x6c, 0x24, 0x47,
|
||||
0x15, 0x76, 0xcf, 0x8f, 0x3d, 0xf3, 0xc6, 0xf6, 0xee, 0x56, 0x7e, 0x18, 0x1c, 0xc9, 0xb6, 0x7a,
|
||||
0xf9, 0x09, 0x28, 0x19, 0xb3, 0x16, 0x81, 0x10, 0x10, 0x92, 0x7b, 0xbc, 0x1b, 0x3b, 0xde, 0xf5,
|
||||
0x9a, 0x1a, 0x27, 0x2b, 0x85, 0x28, 0xd0, 0xdb, 0x53, 0x9e, 0xe9, 0x9d, 0x99, 0xee, 0x4e, 0x57,
|
||||
0x8f, 0x37, 0x23, 0x14, 0xb4, 0x11, 0x02, 0x81, 0x00, 0x09, 0x88, 0x10, 0x48, 0x5c, 0x22, 0x04,
|
||||
0x17, 0xce, 0x11, 0x07, 0x6e, 0x70, 0x40, 0x39, 0xe6, 0x00, 0x22, 0x5a, 0x22, 0x8b, 0x75, 0x2e,
|
||||
0xdc, 0x10, 0xd7, 0x9c, 0x50, 0xfd, 0x74, 0x57, 0x75, 0xcf, 0xcc, 0xda, 0xbb, 0x33, 0xbb, 0xc0,
|
||||
0x6d, 0xba, 0xde, 0xeb, 0xf7, 0xbd, 0x7e, 0xf5, 0xea, 0xfd, 0xd5, 0xc0, 0x76, 0xcb, 0x8d, 0xda,
|
||||
0xfd, 0xeb, 0x35, 0xc7, 0xef, 0xad, 0xd9, 0x61, 0xcb, 0x0f, 0x42, 0xff, 0x06, 0xff, 0xf1, 0xb4,
|
||||
0xd3, 0x5c, 0x0b, 0x3a, 0xad, 0x35, 0x3b, 0x70, 0xe9, 0x9a, 0x1d, 0x04, 0x5d, 0xd7, 0xb1, 0x23,
|
||||
0xd7, 0xf7, 0xd6, 0x0e, 0x2f, 0xd8, 0xdd, 0xa0, 0x6d, 0x5f, 0x58, 0x6b, 0x11, 0x8f, 0x84, 0x76,
|
||||
0x44, 0x9a, 0xb5, 0x20, 0xf4, 0x23, 0x1f, 0x7d, 0x49, 0x89, 0xaa, 0xc5, 0xa2, 0xf8, 0x8f, 0x6f,
|
||||
0x38, 0xcd, 0x5a, 0xd0, 0x69, 0xd5, 0x98, 0xa8, 0x9a, 0x26, 0xaa, 0x16, 0x8b, 0x5a, 0x7a, 0x5a,
|
||||
0xd3, 0xa2, 0xe5, 0xb7, 0xfc, 0x35, 0x2e, 0xf1, 0x7a, 0xff, 0x80, 0x3f, 0xf1, 0x07, 0xfe, 0x4b,
|
||||
0x20, 0x2d, 0x7d, 0xbe, 0xf3, 0x2c, 0xad, 0xb9, 0x3e, 0xd3, 0xad, 0x67, 0x3b, 0x6d, 0xd7, 0x23,
|
||||
0xe1, 0x40, 0x29, 0xdb, 0x23, 0x91, 0xbd, 0x76, 0x38, 0xa4, 0xdf, 0xd2, 0xda, 0xb8, 0xb7, 0xc2,
|
||||
0xbe, 0x17, 0xb9, 0x3d, 0x32, 0xf4, 0xc2, 0x17, 0x4e, 0x7a, 0x81, 0x3a, 0x6d, 0xd2, 0xb3, 0xb3,
|
||||
0xef, 0x99, 0xaf, 0xc1, 0xc2, 0xc6, 0xb5, 0xc6, 0x46, 0x3f, 0x6a, 0xd7, 0x7d, 0xef, 0xc0, 0x6d,
|
||||
0xa1, 0x67, 0xa0, 0xe2, 0x74, 0xfb, 0x34, 0x22, 0xe1, 0xae, 0xdd, 0x23, 0x55, 0x63, 0xd5, 0x78,
|
||||
0xb2, 0x6c, 0x3d, 0xf2, 0xee, 0xd1, 0xca, 0xcc, 0xf1, 0xd1, 0x4a, 0xa5, 0xae, 0x48, 0x58, 0xe7,
|
||||
0x43, 0x9f, 0x81, 0xb9, 0xd0, 0xef, 0x92, 0x0d, 0xbc, 0x5b, 0xcd, 0xf1, 0x57, 0xce, 0xc8, 0x57,
|
||||
0xe6, 0xb0, 0x58, 0xc6, 0x31, 0xdd, 0xfc, 0xbb, 0x01, 0xb0, 0x11, 0x04, 0x7b, 0xa1, 0x7f, 0x83,
|
||||
0x38, 0x11, 0xfa, 0x26, 0x94, 0x98, 0x15, 0x9a, 0x76, 0x64, 0x73, 0xb4, 0xca, 0xfa, 0xe7, 0x6a,
|
||||
0xe2, 0x63, 0x6a, 0xfa, 0xc7, 0xa8, 0x5d, 0x61, 0xdc, 0xb5, 0xc3, 0x0b, 0xb5, 0xab, 0xd7, 0xd9,
|
||||
0xfb, 0x57, 0x48, 0x64, 0x5b, 0x48, 0x82, 0x81, 0x5a, 0xc3, 0x89, 0x54, 0xd4, 0x81, 0x02, 0x0d,
|
||||
0x88, 0xc3, 0x15, 0xab, 0xac, 0x6f, 0xd7, 0xee, 0x7b, 0xef, 0x6b, 0x4a, 0xed, 0x46, 0x40, 0x1c,
|
||||
0x6b, 0x5e, 0xc2, 0x16, 0xd8, 0x13, 0xe6, 0x20, 0xe6, 0x6d, 0x03, 0x16, 0x15, 0xdb, 0x65, 0x97,
|
||||
0x46, 0xe8, 0x95, 0xa1, 0x2f, 0xac, 0x9d, 0xee, 0x0b, 0xd9, 0xdb, 0xfc, 0xfb, 0xce, 0x4a, 0xa0,
|
||||
0x52, 0xbc, 0xa2, 0x7d, 0xdd, 0x0d, 0x28, 0xba, 0x11, 0xe9, 0xd1, 0x6a, 0x6e, 0x35, 0xff, 0x64,
|
||||
0x65, 0xfd, 0xe2, 0x54, 0x3e, 0xcf, 0x5a, 0x90, 0x88, 0xc5, 0x6d, 0x26, 0x1b, 0x0b, 0x08, 0xf3,
|
||||
0x57, 0x45, 0xfd, 0xe3, 0xd8, 0x57, 0xa3, 0x0b, 0x50, 0xa1, 0x7e, 0x3f, 0x74, 0x08, 0x26, 0x81,
|
||||
0x4f, 0xab, 0xc6, 0x6a, 0x9e, 0x6d, 0x3e, 0xf3, 0x95, 0x86, 0x5a, 0xc6, 0x3a, 0x0f, 0xfa, 0xa1,
|
||||
0x01, 0xf3, 0x4d, 0x42, 0x23, 0xd7, 0xe3, 0xf8, 0xb1, 0xe6, 0x5f, 0x9b, 0x4c, 0xf3, 0x78, 0x71,
|
||||
0x53, 0x49, 0xb6, 0x1e, 0x95, 0x5f, 0x31, 0xaf, 0x2d, 0x52, 0x9c, 0x02, 0x67, 0x0e, 0xdf, 0x24,
|
||||
0xd4, 0x09, 0xdd, 0x80, 0x3d, 0x57, 0xf3, 0x69, 0x87, 0xdf, 0x54, 0x24, 0xac, 0xf3, 0xa1, 0x0e,
|
||||
0x14, 0x99, 0x43, 0xd3, 0x6a, 0x81, 0x2b, 0x7f, 0x69, 0x02, 0xe5, 0xa5, 0x39, 0xd9, 0x41, 0x51,
|
||||
0x76, 0x67, 0x4f, 0x14, 0x0b, 0x0c, 0xf4, 0x63, 0x03, 0xaa, 0xf2, 0xb4, 0x61, 0x22, 0x4c, 0x79,
|
||||
0xad, 0xed, 0x46, 0xa4, 0xeb, 0xd2, 0xa8, 0x5a, 0xe4, 0x0a, 0xac, 0x9d, 0xce, 0xa5, 0x9e, 0x0f,
|
||||
0xfd, 0x7e, 0xb0, 0xe3, 0x7a, 0x4d, 0x6b, 0x55, 0x22, 0x55, 0xeb, 0x63, 0x04, 0xe3, 0xb1, 0x90,
|
||||
0xe8, 0x2d, 0x03, 0x96, 0x3c, 0xbb, 0x47, 0x68, 0x60, 0xb3, 0x4d, 0x15, 0x64, 0xab, 0x6b, 0x3b,
|
||||
0x1d, 0xae, 0xd1, 0xec, 0xfd, 0x69, 0x64, 0x4a, 0x8d, 0x96, 0x76, 0xc7, 0x8a, 0xc6, 0x77, 0x81,
|
||||
0x35, 0xff, 0x9c, 0x87, 0x8a, 0xe6, 0x08, 0x0f, 0x21, 0xb2, 0x74, 0x53, 0x91, 0xe5, 0x85, 0xe9,
|
||||
0x38, 0xf0, 0xb8, 0xd0, 0x82, 0x22, 0x98, 0xa5, 0x91, 0x1d, 0xf5, 0x29, 0x77, 0xd2, 0xca, 0xfa,
|
||||
0xe5, 0x29, 0xe1, 0x71, 0x99, 0xd6, 0xa2, 0x44, 0x9c, 0x15, 0xcf, 0x58, 0x62, 0xa1, 0xd7, 0xa0,
|
||||
0xec, 0x07, 0x2c, 0x67, 0xb0, 0xd3, 0x51, 0xe0, 0xc0, 0x9b, 0x13, 0x00, 0x5f, 0x8d, 0x65, 0x59,
|
||||
0x0b, 0xc7, 0x47, 0x2b, 0xe5, 0xe4, 0x11, 0x2b, 0x14, 0xd3, 0x81, 0x47, 0x35, 0xfd, 0xea, 0xbe,
|
||||
0xd7, 0x74, 0xf9, 0x86, 0xae, 0x42, 0x21, 0x1a, 0x04, 0x71, 0x52, 0x4a, 0x4c, 0xb4, 0x3f, 0x08,
|
||||
0x08, 0xe6, 0x14, 0x96, 0x86, 0x7a, 0x84, 0x52, 0xbb, 0x45, 0xb2, 0x69, 0xe8, 0x8a, 0x58, 0xc6,
|
||||
0x31, 0xdd, 0x7c, 0x0d, 0x1e, 0x1f, 0x1d, 0x35, 0xd0, 0xa7, 0x60, 0x96, 0x92, 0xf0, 0x90, 0x84,
|
||||
0x12, 0x48, 0x59, 0x86, 0xaf, 0x62, 0x49, 0x45, 0x6b, 0x50, 0x4e, 0xbc, 0x51, 0xc2, 0x9d, 0x93,
|
||||
0xac, 0x65, 0xe5, 0xc2, 0x8a, 0xc7, 0xfc, 0xc0, 0x80, 0x33, 0x1a, 0xe6, 0x43, 0x48, 0x0e, 0x9d,
|
||||
0x74, 0x72, 0xb8, 0x34, 0x1d, 0x8f, 0x19, 0x93, 0x1d, 0xfe, 0x98, 0x87, 0x73, 0xba, 0x5f, 0xf1,
|
||||
0xe3, 0xc9, 0x2b, 0x03, 0x12, 0xf8, 0x2f, 0xe2, 0xcb, 0xd2, 0x9c, 0xaa, 0x32, 0x10, 0xcb, 0x38,
|
||||
0xa6, 0xb3, 0xfd, 0x0d, 0xec, 0xa8, 0x2d, 0x6d, 0x99, 0xec, 0xef, 0x9e, 0x1d, 0xb5, 0x31, 0xa7,
|
||||
0xb0, 0x60, 0x4d, 0xbc, 0x43, 0x37, 0xf4, 0xbd, 0x1e, 0xf1, 0xa2, 0x6c, 0xb0, 0xbe, 0xa8, 0x48,
|
||||
0x58, 0xe7, 0x43, 0x5f, 0x85, 0xc5, 0xc8, 0x0e, 0x5b, 0x24, 0xc2, 0xe4, 0xd0, 0xa5, 0xb1, 0x23,
|
||||
0x97, 0xad, 0xc7, 0xe5, 0x9b, 0x8b, 0xfb, 0x29, 0x2a, 0xce, 0x70, 0xa3, 0x77, 0x0c, 0x78, 0xc2,
|
||||
0xf1, 0x7b, 0x81, 0xef, 0x11, 0x2f, 0xda, 0xb3, 0x43, 0xbb, 0x47, 0x22, 0x12, 0x5e, 0x3d, 0x24,
|
||||
0x61, 0xe8, 0x36, 0x09, 0x95, 0x21, 0xf8, 0xca, 0x04, 0xd6, 0xad, 0x0f, 0x49, 0xb7, 0xce, 0x4b,
|
||||
0xe5, 0x9e, 0xa8, 0x8f, 0x47, 0xc6, 0x77, 0x53, 0x8b, 0xe5, 0xe6, 0x43, 0xbb, 0xdb, 0x27, 0xf4,
|
||||
0x92, 0xcb, 0x32, 0xd5, 0xac, 0xca, 0xcd, 0x2f, 0xa9, 0x65, 0xac, 0xf3, 0x98, 0xef, 0xe4, 0x53,
|
||||
0x2e, 0xda, 0x88, 0xe3, 0x0e, 0xdf, 0x4b, 0xe9, 0xa0, 0xd3, 0x8a, 0x3b, 0x22, 0x7c, 0xab, 0xd3,
|
||||
0x25, 0x4a, 0x04, 0x89, 0x85, 0xbe, 0x6f, 0xf0, 0xc4, 0x1c, 0x9f, 0x4a, 0x19, 0x63, 0x1f, 0x40,
|
||||
0x91, 0xa0, 0xe7, 0xfa, 0x78, 0x11, 0xeb, 0xd0, 0xcc, 0x85, 0x03, 0x91, 0xa3, 0xa5, 0xc7, 0x25,
|
||||
0x2e, 0x1c, 0xa7, 0xee, 0x98, 0x8e, 0xfa, 0x00, 0x74, 0xe0, 0x39, 0x7b, 0x7e, 0xd7, 0x75, 0x06,
|
||||
0x32, 0x5c, 0x4e, 0x52, 0x92, 0x35, 0x12, 0x61, 0xd6, 0x22, 0x4b, 0x43, 0xea, 0x19, 0x6b, 0x40,
|
||||
0xe6, 0xdb, 0xb3, 0xe9, 0xa3, 0x27, 0x42, 0xf7, 0x4f, 0x0d, 0x38, 0xcb, 0xfc, 0xc3, 0x0e, 0x5d,
|
||||
0xea, 0x7b, 0x98, 0xd0, 0x7e, 0x37, 0x92, 0x7b, 0xb8, 0x33, 0xa1, 0xaf, 0xea, 0x22, 0xad, 0xaa,
|
||||
0x34, 0xc7, 0xd9, 0x2c, 0x05, 0x0f, 0xc1, 0xa3, 0x08, 0xe6, 0xda, 0x2e, 0x8d, 0xfc, 0x70, 0x20,
|
||||
0x63, 0xd2, 0x24, 0xf5, 0xf8, 0x26, 0x09, 0xba, 0xfe, 0x80, 0x1d, 0xf1, 0x6d, 0xef, 0xc0, 0x57,
|
||||
0xdb, 0xb2, 0x25, 0x10, 0x70, 0x0c, 0x85, 0xde, 0x34, 0x00, 0x82, 0xf8, 0x80, 0xb0, 0xfc, 0xf9,
|
||||
0x00, 0xce, 0x6b, 0x52, 0x2a, 0x24, 0x4b, 0x14, 0x6b, 0xa0, 0xc8, 0x87, 0xd9, 0x36, 0xb1, 0xbb,
|
||||
0x51, 0x5b, 0xba, 0xc5, 0xf3, 0x13, 0xc0, 0x6f, 0x71, 0x41, 0xd9, 0xcc, 0x2d, 0x56, 0xb1, 0x84,
|
||||
0x41, 0xdf, 0x35, 0x60, 0x31, 0x49, 0xaa, 0x8c, 0x97, 0x54, 0x8b, 0x13, 0xb7, 0x40, 0x57, 0x53,
|
||||
0x02, 0x2d, 0xc4, 0xa2, 0x67, 0x7a, 0x0d, 0x67, 0x40, 0xd1, 0x77, 0x0c, 0x00, 0x27, 0x4e, 0xe2,
|
||||
0x54, 0x56, 0x87, 0x57, 0xa7, 0x73, 0x90, 0x93, 0xe2, 0x40, 0x99, 0x3f, 0x59, 0xa2, 0x58, 0x83,
|
||||
0x35, 0x3f, 0x34, 0xe0, 0x31, 0xed, 0xc5, 0x6b, 0x76, 0xe4, 0xb4, 0x2f, 0x1e, 0xb2, 0xec, 0xb0,
|
||||
0x93, 0x2a, 0x2b, 0xbe, 0xa8, 0x97, 0x15, 0x1f, 0x1d, 0xad, 0x7c, 0x7a, 0x5c, 0x67, 0x7d, 0x93,
|
||||
0x49, 0xa8, 0x71, 0x11, 0x5a, 0x05, 0xf2, 0x06, 0x54, 0x34, 0x9d, 0x65, 0xd4, 0x9a, 0x56, 0xde,
|
||||
0x4d, 0x42, 0x95, 0xb6, 0x88, 0x75, 0x3c, 0xf3, 0xaf, 0x39, 0x98, 0x93, 0x05, 0xfd, 0xa9, 0xeb,
|
||||
0x98, 0x55, 0x28, 0xb0, 0x1a, 0x25, 0x9b, 0x76, 0x79, 0x93, 0xcf, 0x29, 0x28, 0x80, 0x59, 0x87,
|
||||
0x8f, 0x07, 0x64, 0xe5, 0xb9, 0x35, 0xc9, 0xc9, 0x11, 0xda, 0x89, 0x71, 0x83, 0xd2, 0x49, 0x3c,
|
||||
0x63, 0x89, 0xc3, 0x3a, 0x9e, 0x33, 0x8e, 0xef, 0x79, 0xc4, 0x51, 0xce, 0x5b, 0x98, 0xb8, 0xca,
|
||||
0xae, 0xa7, 0x25, 0x5a, 0x1f, 0x93, 0xe8, 0x67, 0x32, 0x04, 0x9c, 0xc5, 0x36, 0x7f, 0x9f, 0x87,
|
||||
0x85, 0x94, 0xe6, 0xe8, 0x29, 0x28, 0xf5, 0x29, 0x09, 0x3d, 0x35, 0x25, 0x49, 0x0a, 0xb1, 0x17,
|
||||
0xe5, 0x3a, 0x4e, 0x38, 0x18, 0x77, 0x60, 0x53, 0x7a, 0xd3, 0x0f, 0x9b, 0xd2, 0xce, 0x09, 0xf7,
|
||||
0x9e, 0x5c, 0xc7, 0x09, 0x07, 0x2b, 0x73, 0xae, 0x13, 0x3b, 0x24, 0xe1, 0xbe, 0xdf, 0x21, 0x43,
|
||||
0x3d, 0xa9, 0xa5, 0x48, 0x58, 0xe7, 0xe3, 0x46, 0x8b, 0xba, 0xb4, 0xde, 0x75, 0x89, 0x17, 0x09,
|
||||
0x35, 0xa7, 0x60, 0xb4, 0xfd, 0xcb, 0x0d, 0x5d, 0xa2, 0x32, 0x5a, 0x86, 0x80, 0xb3, 0xd8, 0x2c,
|
||||
0xea, 0x2e, 0xd8, 0x37, 0xa9, 0x9a, 0x2e, 0xc9, 0xf8, 0x33, 0x89, 0xfb, 0xa4, 0xa6, 0x55, 0xd6,
|
||||
0xb9, 0xe3, 0xa3, 0x95, 0xf4, 0x00, 0x0b, 0xa7, 0x11, 0xcd, 0xbf, 0x18, 0x10, 0x4f, 0xad, 0x1e,
|
||||
0x42, 0xbd, 0xdd, 0x4a, 0xd7, 0xdb, 0xd6, 0xe4, 0xe7, 0x64, 0x4c, 0xad, 0x7d, 0x3b, 0x0f, 0x43,
|
||||
0xd9, 0x16, 0xbd, 0xca, 0xe2, 0x2c, 0x5b, 0x23, 0xcd, 0x8d, 0x38, 0xd1, 0x7f, 0xf6, 0x74, 0x5f,
|
||||
0xb7, 0xef, 0xf6, 0x88, 0x1e, 0x42, 0x63, 0x29, 0x58, 0x93, 0x88, 0x6e, 0x19, 0x0a, 0x60, 0xdf,
|
||||
0x97, 0xb1, 0x6d, 0xba, 0xd5, 0xe0, 0x90, 0x0a, 0xfb, 0x3e, 0xd6, 0x30, 0xd1, 0x73, 0x49, 0x0f,
|
||||
0x5c, 0xe4, 0x87, 0xc2, 0x4c, 0x77, 0xad, 0x1f, 0xa5, 0x8a, 0x90, 0x4c, 0x27, 0x3b, 0x80, 0x72,
|
||||
0x28, 0x87, 0x06, 0x71, 0x16, 0x9a, 0xc4, 0x13, 0xe3, 0x01, 0x84, 0x08, 0x25, 0x49, 0xe7, 0x17,
|
||||
0x2f, 0x53, 0xac, 0xd0, 0xd8, 0xf1, 0x0f, 0xe3, 0xd6, 0x63, 0x2e, 0x7d, 0xfc, 0x93, 0xa6, 0x23,
|
||||
0xe1, 0x30, 0x7f, 0x64, 0x00, 0x1a, 0x2e, 0x30, 0x58, 0xbf, 0x99, 0x54, 0xfb, 0x32, 0xe4, 0x24,
|
||||
0xa8, 0x09, 0x3b, 0x56, 0x3c, 0xa7, 0x08, 0xec, 0xe7, 0xa1, 0xc8, 0xab, 0x7f, 0x19, 0x62, 0x12,
|
||||
0x5f, 0xe3, 0xfd, 0x01, 0x16, 0x34, 0xf3, 0x4f, 0x06, 0x64, 0x03, 0x24, 0xcf, 0x2d, 0x62, 0x1f,
|
||||
0xb2, 0xb9, 0x25, 0x6d, 0xf3, 0xd3, 0x37, 0xe4, 0xe8, 0x15, 0xa8, 0xd8, 0x51, 0x44, 0x7a, 0x41,
|
||||
0xc4, 0xdd, 0x37, 0x7f, 0xcf, 0xee, 0xcb, 0x0b, 0xe4, 0x2b, 0x7e, 0xd3, 0x3d, 0x70, 0xb9, 0xeb,
|
||||
0xea, 0xe2, 0xcc, 0x7f, 0xe7, 0x60, 0x31, 0x5d, 0x2e, 0xa6, 0x36, 0x25, 0x77, 0xd2, 0xa6, 0x9c,
|
||||
0xd8, 0x03, 0xe6, 0xff, 0x37, 0x7b, 0xc0, 0x57, 0x01, 0x9a, 0xfc, 0xb3, 0xb9, 0x51, 0x0b, 0xf7,
|
||||
0x1f, 0x13, 0x36, 0x13, 0x29, 0x58, 0x93, 0x88, 0x96, 0x20, 0xe7, 0x36, 0xf9, 0x61, 0xcc, 0x5b,
|
||||
0x20, 0x79, 0x73, 0xdb, 0x9b, 0x38, 0xe7, 0x36, 0x4d, 0x0a, 0xf3, 0x7a, 0xa1, 0x7a, 0x6a, 0xa7,
|
||||
0xf9, 0x32, 0x2c, 0x88, 0x5f, 0x9b, 0x24, 0xb2, 0xdd, 0x2e, 0x95, 0xbb, 0xf3, 0x98, 0x64, 0x5f,
|
||||
0x68, 0xe8, 0x44, 0x9c, 0xe6, 0x35, 0x7f, 0x91, 0x03, 0xd8, 0xf2, 0xfd, 0x8e, 0xc4, 0x8c, 0xcf,
|
||||
0x80, 0x31, 0xf6, 0x0c, 0xac, 0x42, 0xa1, 0xe3, 0x7a, 0xcd, 0xec, 0x29, 0xd9, 0x71, 0xbd, 0x26,
|
||||
0xe6, 0x14, 0xb4, 0x0e, 0x60, 0x07, 0xee, 0x4b, 0x24, 0xa4, 0x6a, 0x42, 0x9c, 0xd8, 0x65, 0x63,
|
||||
0x6f, 0x5b, 0x52, 0xb0, 0xc6, 0x85, 0x9e, 0x92, 0x45, 0xa5, 0x18, 0x34, 0x54, 0x33, 0x45, 0x65,
|
||||
0x89, 0x69, 0xa8, 0x55, 0x8d, 0xcf, 0x66, 0xc2, 0xda, 0xea, 0x50, 0x58, 0x53, 0x45, 0xf6, 0x5e,
|
||||
0xdb, 0xa6, 0x64, 0xd4, 0x01, 0x9b, 0x3d, 0x61, 0xe2, 0xd5, 0x80, 0xd2, 0x0b, 0xd7, 0xf6, 0x45,
|
||||
0xa9, 0x60, 0x42, 0xde, 0xb5, 0x45, 0x14, 0xc9, 0x2b, 0xb7, 0xdf, 0xa6, 0xb4, 0xcf, 0x77, 0x98,
|
||||
0x11, 0xd1, 0x79, 0xc8, 0x93, 0xd7, 0x03, 0x6e, 0x97, 0xbc, 0x8a, 0x34, 0x17, 0x5f, 0x0f, 0xdc,
|
||||
0x90, 0x50, 0xc6, 0x44, 0x5e, 0x0f, 0x4c, 0x0a, 0x6a, 0x86, 0x87, 0x0e, 0xa0, 0xc0, 0x9a, 0x52,
|
||||
0x99, 0x7a, 0xb6, 0x26, 0xec, 0x7b, 0xd5, 0xa8, 0xb0, 0xc4, 0x27, 0xa1, 0x03, 0xcf, 0xc1, 0x5c,
|
||||
0xbe, 0xf9, 0xeb, 0x02, 0x64, 0x9a, 0x0e, 0xd4, 0xd7, 0xc7, 0x94, 0xc6, 0x14, 0xc7, 0x94, 0xc9,
|
||||
0x87, 0x8f, 0x1a, 0x55, 0xa2, 0x67, 0xa0, 0x18, 0xb0, 0xfd, 0x90, 0xde, 0xb3, 0x12, 0x07, 0x50,
|
||||
0xbe, 0x49, 0x23, 0xb6, 0x4d, 0x70, 0xeb, 0xbb, 0x96, 0x3f, 0x21, 0x2c, 0x7e, 0x5b, 0x4c, 0x14,
|
||||
0x64, 0xf7, 0x2e, 0x0e, 0xf0, 0xee, 0xb4, 0x2c, 0x2b, 0x1b, 0xf8, 0x64, 0xb4, 0x20, 0xdb, 0x76,
|
||||
0x0d, 0x11, 0x7d, 0x1d, 0xca, 0x34, 0xb2, 0x43, 0x11, 0x94, 0x67, 0xef, 0x39, 0x7e, 0x24, 0xe6,
|
||||
0x6b, 0xc4, 0x42, 0xb0, 0x92, 0x87, 0x5e, 0x06, 0x38, 0x70, 0x3d, 0x97, 0xb6, 0xb9, 0xf4, 0xb9,
|
||||
0xfb, 0x0b, 0xf9, 0x97, 0x12, 0x09, 0x58, 0x93, 0x66, 0xfe, 0xcc, 0x00, 0x34, 0x22, 0x20, 0x86,
|
||||
0x71, 0x89, 0x66, 0x3c, 0x88, 0x80, 0x3d, 0xb2, 0x5a, 0x7b, 0xae, 0xf4, 0xcb, 0xb7, 0x57, 0x66,
|
||||
0x6e, 0x7d, 0xb0, 0x3a, 0x63, 0x7e, 0x2f, 0x07, 0x15, 0xed, 0xbe, 0xe7, 0x14, 0xe1, 0x29, 0x73,
|
||||
0x3f, 0x95, 0x3b, 0xe5, 0xfd, 0xd4, 0x93, 0x50, 0x0a, 0xfc, 0xae, 0xeb, 0xb8, 0x32, 0x35, 0x95,
|
||||
0xad, 0x79, 0xde, 0x6c, 0xc8, 0x35, 0x9c, 0x50, 0x51, 0x04, 0xe5, 0x1b, 0x37, 0x23, 0x1e, 0x16,
|
||||
0xe2, 0xdb, 0xac, 0xfa, 0x04, 0x46, 0x89, 0x43, 0x8c, 0xda, 0xf9, 0x78, 0x85, 0x62, 0x05, 0x64,
|
||||
0xfe, 0x2d, 0x07, 0xc0, 0xaf, 0x03, 0x5d, 0x3e, 0xa0, 0x59, 0x85, 0x42, 0x48, 0x02, 0x3f, 0x6b,
|
||||
0x07, 0xc6, 0x81, 0x39, 0x25, 0xd5, 0x6f, 0xe5, 0xee, 0xa9, 0xdf, 0xca, 0x9f, 0xd8, 0x6f, 0xb1,
|
||||
0x84, 0x43, 0xdb, 0x7b, 0xa1, 0x7b, 0x68, 0x47, 0x64, 0x87, 0x0c, 0x64, 0xd4, 0x56, 0x09, 0xa7,
|
||||
0xb1, 0xa5, 0x88, 0x38, 0xcd, 0x3b, 0xb2, 0x55, 0x2d, 0xfe, 0x17, 0x5b, 0xd5, 0xdb, 0x06, 0x2c,
|
||||
0x2a, 0xcb, 0xfe, 0x7f, 0xdd, 0x40, 0x2b, 0xbd, 0xc7, 0xf4, 0x3d, 0xff, 0x32, 0xe0, 0x4c, 0x5c,
|
||||
0x61, 0xcb, 0x8c, 0x3f, 0x95, 0x14, 0x9f, 0xba, 0xcb, 0xc9, 0x9f, 0x7c, 0x97, 0xa3, 0x47, 0xf0,
|
||||
0xc2, 0x09, 0x11, 0xfc, 0x2b, 0x99, 0xe4, 0xfe, 0x89, 0xa1, 0xe4, 0x8e, 0x92, 0x5e, 0x62, 0xe0,
|
||||
0x39, 0xe9, 0x62, 0xc8, 0xfc, 0x9d, 0x01, 0xf3, 0x31, 0x79, 0xd7, 0x6f, 0xf2, 0x9a, 0x9d, 0x72,
|
||||
0x27, 0x33, 0xd2, 0x35, 0xbb, 0x70, 0x07, 0x41, 0x43, 0x7d, 0x28, 0x39, 0x6d, 0xb7, 0xdb, 0x0c,
|
||||
0x89, 0x27, 0xb7, 0xe5, 0xf9, 0x29, 0xb4, 0x3a, 0x0c, 0x5f, 0xb9, 0x42, 0x5d, 0x02, 0xe0, 0x04,
|
||||
0xca, 0xfc, 0x43, 0x1e, 0x16, 0x52, 0x7d, 0x11, 0x0b, 0x5f, 0xe2, 0x32, 0xa5, 0xa1, 0xe9, 0x9c,
|
||||
0x84, 0xaf, 0x7d, 0x45, 0xc2, 0x3a, 0x1f, 0xdb, 0x8f, 0xae, 0x7b, 0x28, 0x64, 0x64, 0xef, 0xd6,
|
||||
0x2e, 0xc7, 0x04, 0xac, 0x78, 0xb4, 0xc6, 0x30, 0x7f, 0xcf, 0x8d, 0xe1, 0x5b, 0x06, 0x20, 0xfe,
|
||||
0x09, 0x4c, 0x72, 0xd2, 0xbf, 0xc9, 0x58, 0x38, 0x35, 0xbb, 0x2d, 0x49, 0x8d, 0x50, 0x7d, 0x08,
|
||||
0x0a, 0x8f, 0x80, 0xd7, 0xe6, 0xc5, 0xc5, 0x87, 0x32, 0x2f, 0x36, 0x7f, 0x5b, 0x80, 0x85, 0x54,
|
||||
0x75, 0x90, 0xea, 0x90, 0x8c, 0x13, 0x3b, 0xa4, 0xf3, 0x50, 0x0c, 0xc2, 0xbe, 0x27, 0xf6, 0xab,
|
||||
0xa4, 0x1c, 0x73, 0x8f, 0x2d, 0x62, 0x41, 0x63, 0x3d, 0x40, 0x33, 0x1c, 0xe0, 0xbe, 0xa8, 0xa3,
|
||||
0x4b, 0x4a, 0x99, 0x4d, 0xbe, 0x8a, 0x25, 0x15, 0xbd, 0x01, 0xf3, 0x94, 0x1f, 0x86, 0xd0, 0x8e,
|
||||
0x48, 0x6b, 0x30, 0x85, 0x99, 0x79, 0x43, 0x13, 0x67, 0x9d, 0x3d, 0x3e, 0x5a, 0x99, 0xd7, 0x57,
|
||||
0x70, 0x0a, 0x0e, 0xfd, 0xdc, 0x00, 0x14, 0x8c, 0xba, 0xe8, 0x33, 0x26, 0xac, 0x19, 0x86, 0x2b,
|
||||
0x12, 0xeb, 0x71, 0xe6, 0x14, 0x23, 0xfa, 0xba, 0x11, 0x0a, 0xa0, 0x37, 0x8d, 0xe1, 0x21, 0xc6,
|
||||
0xde, 0x14, 0xab, 0x41, 0x31, 0x85, 0xb9, 0xeb, 0x30, 0xc3, 0xbc, 0x65, 0xc0, 0x63, 0x23, 0xdf,
|
||||
0x63, 0x1e, 0xd0, 0x0a, 0xfd, 0x7e, 0x90, 0x0d, 0x4d, 0xfc, 0x3f, 0x1e, 0x58, 0xd0, 0x4e, 0x11,
|
||||
0x8c, 0xe3, 0x80, 0x9e, 0x1f, 0x17, 0xd0, 0xcd, 0xdf, 0xe4, 0xe0, 0x91, 0x11, 0x85, 0x2c, 0xba,
|
||||
0xa9, 0x5b, 0x47, 0x14, 0x78, 0x2f, 0x4c, 0xe1, 0xfc, 0xca, 0x4c, 0x23, 0xfe, 0xb2, 0x70, 0xe2,
|
||||
0x80, 0xe7, 0xe4, 0x59, 0xc2, 0x01, 0x14, 0xdb, 0xbe, 0xdf, 0x89, 0x87, 0x06, 0x93, 0x64, 0x4c,
|
||||
0xd5, 0xea, 0x5a, 0x65, 0x66, 0x6a, 0xf6, 0x4c, 0xb1, 0x10, 0x6f, 0xfe, 0xc0, 0x00, 0xed, 0xc6,
|
||||
0x10, 0x7d, 0x0b, 0xca, 0x76, 0x3f, 0xf2, 0x7b, 0x76, 0x44, 0x9a, 0xb2, 0x0e, 0xd8, 0x9d, 0xca,
|
||||
0xdd, 0xe4, 0x46, 0x2c, 0x55, 0x58, 0x28, 0x79, 0xc4, 0x0a, 0xcf, 0x7c, 0x4e, 0xec, 0x58, 0xe6,
|
||||
0x05, 0x15, 0x34, 0x8c, 0xf1, 0x41, 0xc3, 0xfc, 0xa7, 0x01, 0xa9, 0xc3, 0x8a, 0x7a, 0x50, 0x64,
|
||||
0x2a, 0x0d, 0xa6, 0x70, 0x23, 0xad, 0xcb, 0xdd, 0x60, 0x32, 0x85, 0x1d, 0xf9, 0x4f, 0x2c, 0x50,
|
||||
0x90, 0x0b, 0x05, 0x66, 0x50, 0x39, 0xf1, 0xdc, 0x99, 0x12, 0x1a, 0xdb, 0x2a, 0xd1, 0xda, 0xb2,
|
||||
0x5f, 0x98, 0x43, 0x98, 0xcf, 0xc2, 0xb9, 0x21, 0x8d, 0x98, 0x91, 0x0e, 0xfc, 0xf8, 0x02, 0x5e,
|
||||
0x33, 0xd2, 0x25, 0xb6, 0x88, 0x05, 0x8d, 0x15, 0x0a, 0x67, 0xb3, 0xe2, 0x59, 0x1c, 0x3b, 0x47,
|
||||
0xb3, 0xf2, 0x1e, 0x88, 0xd5, 0x3e, 0x2e, 0x95, 0x1a, 0x56, 0x1f, 0x0f, 0x6b, 0xc0, 0x76, 0x34,
|
||||
0x7b, 0x7f, 0xc0, 0xce, 0x90, 0xeb, 0x51, 0xe2, 0xf4, 0xc3, 0xf8, 0x43, 0xd5, 0x60, 0x42, 0xae,
|
||||
0xe3, 0x84, 0x03, 0xad, 0x03, 0x88, 0xfb, 0xab, 0x5d, 0xd5, 0x11, 0x24, 0x43, 0x99, 0x46, 0x42,
|
||||
0xc1, 0x1a, 0x17, 0x6b, 0x8a, 0x1c, 0x12, 0x46, 0x9b, 0xac, 0x0e, 0x66, 0xc1, 0x65, 0x5e, 0x34,
|
||||
0x45, 0x75, 0xb9, 0x86, 0x13, 0x2a, 0xfa, 0x24, 0xcc, 0x75, 0xc8, 0x80, 0x33, 0x16, 0x38, 0x63,
|
||||
0x85, 0x95, 0x76, 0x3b, 0x62, 0x09, 0xc7, 0x34, 0x64, 0xc2, 0xac, 0x63, 0x73, 0xae, 0x22, 0xe7,
|
||||
0x02, 0x7e, 0x95, 0xb5, 0xc1, 0x99, 0x24, 0xc5, 0xaa, 0xbd, 0x7b, 0x67, 0x79, 0xe6, 0xbd, 0x3b,
|
||||
0xcb, 0x33, 0xef, 0xdf, 0x59, 0x9e, 0xb9, 0x75, 0xbc, 0x6c, 0xbc, 0x7b, 0xbc, 0x6c, 0xbc, 0x77,
|
||||
0xbc, 0x6c, 0xbc, 0x7f, 0xbc, 0x6c, 0xfc, 0xe3, 0x78, 0xd9, 0xf8, 0xc9, 0x87, 0xcb, 0x33, 0x2f,
|
||||
0x97, 0x62, 0xd3, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0x2f, 0x22, 0x16, 0x8c, 0xe7, 0x2c, 0x00,
|
||||
0x00,
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ package github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1;
|
||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
|
||||
|
||||
// Package-wide variables from generator "generated".
|
||||
option go_package = "v1alpha1";
|
||||
|
||||
@@ -2,7 +2,6 @@ package versioned
|
||||
|
||||
import (
|
||||
argoprojv1alpha1 "github.com/argoproj/argo-cd/pkg/client/clientset/versioned/typed/application/v1alpha1"
|
||||
glog "github.com/golang/glog"
|
||||
discovery "k8s.io/client-go/discovery"
|
||||
rest "k8s.io/client-go/rest"
|
||||
flowcontrol "k8s.io/client-go/util/flowcontrol"
|
||||
@@ -56,7 +55,6 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
|
||||
|
||||
cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy)
|
||||
if err != nil {
|
||||
glog.Errorf("failed to create the DiscoveryClient: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
return &cs, nil
|
||||
|
||||
@@ -23,9 +23,10 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
|
||||
}
|
||||
}
|
||||
|
||||
fakePtr := testing.Fake{}
|
||||
fakePtr.AddReactor("*", "*", testing.ObjectReaction(o))
|
||||
fakePtr.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
|
||||
cs := &Clientset{}
|
||||
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)
|
||||
@@ -35,7 +36,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
|
||||
return true, watch, nil
|
||||
})
|
||||
|
||||
return &Clientset{fakePtr, &fakediscovery.FakeDiscovery{Fake: &fakePtr}}
|
||||
return cs
|
||||
}
|
||||
|
||||
// Clientset implements clientset.Interface. Meant to be embedded into a
|
||||
|
||||
@@ -6,15 +6,14 @@ import (
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
||||
util_runtime "k8s.io/apimachinery/pkg/util/runtime"
|
||||
)
|
||||
|
||||
var scheme = runtime.NewScheme()
|
||||
var codecs = serializer.NewCodecFactory(scheme)
|
||||
var parameterCodec = runtime.NewParameterCodec(scheme)
|
||||
|
||||
func init() {
|
||||
v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"})
|
||||
AddToScheme(scheme)
|
||||
var localSchemeBuilder = runtime.SchemeBuilder{
|
||||
argoprojv1alpha1.AddToScheme,
|
||||
}
|
||||
|
||||
// AddToScheme adds all types of this clientset into the given scheme. This allows composition
|
||||
@@ -27,10 +26,13 @@ func init() {
|
||||
// )
|
||||
//
|
||||
// kclientset, _ := kubernetes.NewForConfig(c)
|
||||
// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
|
||||
// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
|
||||
//
|
||||
// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
|
||||
// correctly.
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
argoprojv1alpha1.AddToScheme(scheme)
|
||||
var AddToScheme = localSchemeBuilder.AddToScheme
|
||||
|
||||
func init() {
|
||||
v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"})
|
||||
util_runtime.Must(AddToScheme(scheme))
|
||||
}
|
||||
|
||||
@@ -6,15 +6,14 @@ import (
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
||||
util_runtime "k8s.io/apimachinery/pkg/util/runtime"
|
||||
)
|
||||
|
||||
var Scheme = runtime.NewScheme()
|
||||
var Codecs = serializer.NewCodecFactory(Scheme)
|
||||
var ParameterCodec = runtime.NewParameterCodec(Scheme)
|
||||
|
||||
func init() {
|
||||
v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})
|
||||
AddToScheme(Scheme)
|
||||
var localSchemeBuilder = runtime.SchemeBuilder{
|
||||
argoprojv1alpha1.AddToScheme,
|
||||
}
|
||||
|
||||
// AddToScheme adds all types of this clientset into the given scheme. This allows composition
|
||||
@@ -27,10 +26,13 @@ func init() {
|
||||
// )
|
||||
//
|
||||
// kclientset, _ := kubernetes.NewForConfig(c)
|
||||
// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
|
||||
// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
|
||||
//
|
||||
// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
|
||||
// correctly.
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
argoprojv1alpha1.AddToScheme(scheme)
|
||||
var AddToScheme = localSchemeBuilder.AddToScheme
|
||||
|
||||
func init() {
|
||||
v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})
|
||||
util_runtime.Must(AddToScheme(Scheme))
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ func (c *FakeApplications) List(opts v1.ListOptions) (result *v1alpha1.Applicati
|
||||
if label == nil {
|
||||
label = labels.Everything()
|
||||
}
|
||||
list := &v1alpha1.ApplicationList{}
|
||||
list := &v1alpha1.ApplicationList{ListMeta: obj.(*v1alpha1.ApplicationList).ListMeta}
|
||||
for _, item := range obj.(*v1alpha1.ApplicationList).Items {
|
||||
if label.Matches(labels.Set(item.Labels)) {
|
||||
list.Items = append(list.Items, item)
|
||||
|
||||
@@ -44,7 +44,7 @@ func (c *FakeAppProjects) List(opts v1.ListOptions) (result *v1alpha1.AppProject
|
||||
if label == nil {
|
||||
label = labels.Everything()
|
||||
}
|
||||
list := &v1alpha1.AppProjectList{}
|
||||
list := &v1alpha1.AppProjectList{ListMeta: obj.(*v1alpha1.AppProjectList).ListMeta}
|
||||
for _, item := range obj.(*v1alpha1.AppProjectList).Items {
|
||||
if label.Matches(labels.Set(item.Labels)) {
|
||||
list.Items = append(list.Items, item)
|
||||
|
||||
@@ -14,12 +14,16 @@ import (
|
||||
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.
|
||||
@@ -27,23 +31,62 @@ type sharedInformerFactory struct {
|
||||
startedInformers map[reflect.Type]bool
|
||||
}
|
||||
|
||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
|
||||
// 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 NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
|
||||
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 &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: namespace,
|
||||
tweakListOptions: tweakListOptions,
|
||||
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.
|
||||
@@ -92,7 +135,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
|
||||
if exists {
|
||||
return informer
|
||||
}
|
||||
informer = newFunc(f.client, f.defaultResync)
|
||||
|
||||
resyncPeriod, exists := f.customResync[informerType]
|
||||
if !exists {
|
||||
resyncPeriod = f.defaultResync
|
||||
}
|
||||
|
||||
informer = newFunc(f.client, resyncPeriod)
|
||||
f.informers[informerType] = informer
|
||||
|
||||
return informer
|
||||
|
||||
@@ -46,7 +46,7 @@ func (m *ManifestRequest) Reset() { *m = ManifestRequest{} }
|
||||
func (m *ManifestRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ManifestRequest) ProtoMessage() {}
|
||||
func (*ManifestRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_e1170ea85be6baa9, []int{0}
|
||||
return fileDescriptor_repository_49651600e73b0b40, []int{0}
|
||||
}
|
||||
func (m *ManifestRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -146,7 +146,7 @@ func (m *ManifestResponse) Reset() { *m = ManifestResponse{} }
|
||||
func (m *ManifestResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*ManifestResponse) ProtoMessage() {}
|
||||
func (*ManifestResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_e1170ea85be6baa9, []int{1}
|
||||
return fileDescriptor_repository_49651600e73b0b40, []int{1}
|
||||
}
|
||||
func (m *ManifestResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -224,7 +224,7 @@ func (m *ListDirRequest) Reset() { *m = ListDirRequest{} }
|
||||
func (m *ListDirRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ListDirRequest) ProtoMessage() {}
|
||||
func (*ListDirRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_e1170ea85be6baa9, []int{2}
|
||||
return fileDescriptor_repository_49651600e73b0b40, []int{2}
|
||||
}
|
||||
func (m *ListDirRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -286,7 +286,7 @@ func (m *FileList) Reset() { *m = FileList{} }
|
||||
func (m *FileList) String() string { return proto.CompactTextString(m) }
|
||||
func (*FileList) ProtoMessage() {}
|
||||
func (*FileList) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_e1170ea85be6baa9, []int{3}
|
||||
return fileDescriptor_repository_49651600e73b0b40, []int{3}
|
||||
}
|
||||
func (m *FileList) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -336,7 +336,7 @@ func (m *GetFileRequest) Reset() { *m = GetFileRequest{} }
|
||||
func (m *GetFileRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetFileRequest) ProtoMessage() {}
|
||||
func (*GetFileRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_e1170ea85be6baa9, []int{4}
|
||||
return fileDescriptor_repository_49651600e73b0b40, []int{4}
|
||||
}
|
||||
func (m *GetFileRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -398,7 +398,7 @@ func (m *GetFileResponse) Reset() { *m = GetFileResponse{} }
|
||||
func (m *GetFileResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetFileResponse) ProtoMessage() {}
|
||||
func (*GetFileResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_e1170ea85be6baa9, []int{5}
|
||||
return fileDescriptor_repository_49651600e73b0b40, []int{5}
|
||||
}
|
||||
func (m *GetFileResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -2099,10 +2099,10 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
proto.RegisterFile("reposerver/repository/repository.proto", fileDescriptor_repository_e1170ea85be6baa9)
|
||||
proto.RegisterFile("reposerver/repository/repository.proto", fileDescriptor_repository_49651600e73b0b40)
|
||||
}
|
||||
|
||||
var fileDescriptor_repository_e1170ea85be6baa9 = []byte{
|
||||
var fileDescriptor_repository_49651600e73b0b40 = []byte{
|
||||
// 584 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0xdd, 0x8a, 0xd3, 0x40,
|
||||
0x14, 0xde, 0x6c, 0xbb, 0xdd, 0x76, 0x2a, 0xee, 0x3a, 0x14, 0x09, 0x69, 0x29, 0x21, 0xa0, 0xf4,
|
||||
|
||||
@@ -37,7 +37,7 @@ func (m *UpdatePasswordRequest) Reset() { *m = UpdatePasswordRequest{} }
|
||||
func (m *UpdatePasswordRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*UpdatePasswordRequest) ProtoMessage() {}
|
||||
func (*UpdatePasswordRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_account_c227670d8e34bf5f, []int{0}
|
||||
return fileDescriptor_account_d27ff2bbd0f6944b, []int{0}
|
||||
}
|
||||
func (m *UpdatePasswordRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -90,7 +90,7 @@ func (m *UpdatePasswordResponse) Reset() { *m = UpdatePasswordResponse{}
|
||||
func (m *UpdatePasswordResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*UpdatePasswordResponse) ProtoMessage() {}
|
||||
func (*UpdatePasswordResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_account_c227670d8e34bf5f, []int{1}
|
||||
return fileDescriptor_account_d27ff2bbd0f6944b, []int{1}
|
||||
}
|
||||
func (m *UpdatePasswordResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -566,10 +566,10 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
proto.RegisterFile("server/account/account.proto", fileDescriptor_account_c227670d8e34bf5f)
|
||||
proto.RegisterFile("server/account/account.proto", fileDescriptor_account_d27ff2bbd0f6944b)
|
||||
}
|
||||
|
||||
var fileDescriptor_account_c227670d8e34bf5f = []byte{
|
||||
var fileDescriptor_account_d27ff2bbd0f6944b = []byte{
|
||||
// 268 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x29, 0x4e, 0x2d, 0x2a,
|
||||
0x4b, 0x2d, 0xd2, 0x4f, 0x4c, 0x4e, 0xce, 0x2f, 0xcd, 0x2b, 0x81, 0xd1, 0x7a, 0x05, 0x45, 0xf9,
|
||||
|
||||
@@ -51,7 +51,7 @@ func (m *ApplicationQuery) Reset() { *m = ApplicationQuery{} }
|
||||
func (m *ApplicationQuery) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationQuery) ProtoMessage() {}
|
||||
func (*ApplicationQuery) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{0}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{0}
|
||||
}
|
||||
func (m *ApplicationQuery) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -115,7 +115,7 @@ func (m *ApplicationResourceEventsQuery) Reset() { *m = ApplicationResou
|
||||
func (m *ApplicationResourceEventsQuery) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationResourceEventsQuery) ProtoMessage() {}
|
||||
func (*ApplicationResourceEventsQuery) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{1}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{1}
|
||||
}
|
||||
func (m *ApplicationResourceEventsQuery) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -178,7 +178,7 @@ func (m *ApplicationManifestQuery) Reset() { *m = ApplicationManifestQue
|
||||
func (m *ApplicationManifestQuery) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationManifestQuery) ProtoMessage() {}
|
||||
func (*ApplicationManifestQuery) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{2}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{2}
|
||||
}
|
||||
func (m *ApplicationManifestQuery) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -231,7 +231,7 @@ func (m *ApplicationResponse) Reset() { *m = ApplicationResponse{} }
|
||||
func (m *ApplicationResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationResponse) ProtoMessage() {}
|
||||
func (*ApplicationResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{3}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{3}
|
||||
}
|
||||
func (m *ApplicationResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -272,7 +272,7 @@ func (m *ApplicationCreateRequest) Reset() { *m = ApplicationCreateReque
|
||||
func (m *ApplicationCreateRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationCreateRequest) ProtoMessage() {}
|
||||
func (*ApplicationCreateRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{4}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{4}
|
||||
}
|
||||
func (m *ApplicationCreateRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -326,7 +326,7 @@ func (m *ApplicationUpdateRequest) Reset() { *m = ApplicationUpdateReque
|
||||
func (m *ApplicationUpdateRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationUpdateRequest) ProtoMessage() {}
|
||||
func (*ApplicationUpdateRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{5}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{5}
|
||||
}
|
||||
func (m *ApplicationUpdateRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -374,7 +374,7 @@ func (m *ApplicationDeleteRequest) Reset() { *m = ApplicationDeleteReque
|
||||
func (m *ApplicationDeleteRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationDeleteRequest) ProtoMessage() {}
|
||||
func (*ApplicationDeleteRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{6}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{6}
|
||||
}
|
||||
func (m *ApplicationDeleteRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -435,7 +435,7 @@ func (m *ApplicationSyncRequest) Reset() { *m = ApplicationSyncRequest{}
|
||||
func (m *ApplicationSyncRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationSyncRequest) ProtoMessage() {}
|
||||
func (*ApplicationSyncRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{7}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{7}
|
||||
}
|
||||
func (m *ApplicationSyncRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -526,7 +526,7 @@ func (m *ParameterOverrides) Reset() { *m = ParameterOverrides{} }
|
||||
func (m *ParameterOverrides) String() string { return proto.CompactTextString(m) }
|
||||
func (*ParameterOverrides) ProtoMessage() {}
|
||||
func (*ParameterOverrides) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{8}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{8}
|
||||
}
|
||||
func (m *ParameterOverrides) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -575,7 +575,7 @@ func (m *Parameter) Reset() { *m = Parameter{} }
|
||||
func (m *Parameter) String() string { return proto.CompactTextString(m) }
|
||||
func (*Parameter) ProtoMessage() {}
|
||||
func (*Parameter) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{9}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{9}
|
||||
}
|
||||
func (m *Parameter) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -638,7 +638,7 @@ func (m *ApplicationUpdateSpecRequest) Reset() { *m = ApplicationUpdateS
|
||||
func (m *ApplicationUpdateSpecRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationUpdateSpecRequest) ProtoMessage() {}
|
||||
func (*ApplicationUpdateSpecRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{10}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{10}
|
||||
}
|
||||
func (m *ApplicationUpdateSpecRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -695,7 +695,7 @@ func (m *ApplicationRollbackRequest) Reset() { *m = ApplicationRollbackR
|
||||
func (m *ApplicationRollbackRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationRollbackRequest) ProtoMessage() {}
|
||||
func (*ApplicationRollbackRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{11}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{11}
|
||||
}
|
||||
func (m *ApplicationRollbackRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -766,7 +766,7 @@ func (m *ApplicationDeleteResourceRequest) Reset() { *m = ApplicationDel
|
||||
func (m *ApplicationDeleteResourceRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationDeleteResourceRequest) ProtoMessage() {}
|
||||
func (*ApplicationDeleteResourceRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{12}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{12}
|
||||
}
|
||||
func (m *ApplicationDeleteResourceRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -840,7 +840,7 @@ func (m *ApplicationPodLogsQuery) Reset() { *m = ApplicationPodLogsQuery
|
||||
func (m *ApplicationPodLogsQuery) String() string { return proto.CompactTextString(m) }
|
||||
func (*ApplicationPodLogsQuery) ProtoMessage() {}
|
||||
func (*ApplicationPodLogsQuery) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{13}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{13}
|
||||
}
|
||||
func (m *ApplicationPodLogsQuery) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -930,7 +930,7 @@ func (m *LogEntry) Reset() { *m = LogEntry{} }
|
||||
func (m *LogEntry) String() string { return proto.CompactTextString(m) }
|
||||
func (*LogEntry) ProtoMessage() {}
|
||||
func (*LogEntry) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{14}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{14}
|
||||
}
|
||||
func (m *LogEntry) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -984,7 +984,7 @@ func (m *OperationTerminateRequest) Reset() { *m = OperationTerminateReq
|
||||
func (m *OperationTerminateRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*OperationTerminateRequest) ProtoMessage() {}
|
||||
func (*OperationTerminateRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{15}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{15}
|
||||
}
|
||||
func (m *OperationTerminateRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -1030,7 +1030,7 @@ func (m *OperationTerminateResponse) Reset() { *m = OperationTerminateRe
|
||||
func (m *OperationTerminateResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*OperationTerminateResponse) ProtoMessage() {}
|
||||
func (*OperationTerminateResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_application_29e2d383e1dc72bd, []int{16}
|
||||
return fileDescriptor_application_a0bd93d5f02bc9d6, []int{16}
|
||||
}
|
||||
func (m *OperationTerminateResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -4934,10 +4934,10 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
proto.RegisterFile("server/application/application.proto", fileDescriptor_application_29e2d383e1dc72bd)
|
||||
proto.RegisterFile("server/application/application.proto", fileDescriptor_application_a0bd93d5f02bc9d6)
|
||||
}
|
||||
|
||||
var fileDescriptor_application_29e2d383e1dc72bd = []byte{
|
||||
var fileDescriptor_application_a0bd93d5f02bc9d6 = []byte{
|
||||
// 1427 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcf, 0x6f, 0x1b, 0x45,
|
||||
0x14, 0x66, 0xec, 0xc4, 0x8e, 0x5f, 0x2a, 0x04, 0x43, 0x1b, 0x96, 0x25, 0x4d, 0xac, 0x6d, 0x9a,
|
||||
|
||||
@@ -45,7 +45,7 @@ func (m *ClusterQuery) Reset() { *m = ClusterQuery{} }
|
||||
func (m *ClusterQuery) String() string { return proto.CompactTextString(m) }
|
||||
func (*ClusterQuery) ProtoMessage() {}
|
||||
func (*ClusterQuery) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cluster_bf8d7367dfc95a3e, []int{0}
|
||||
return fileDescriptor_cluster_0875510a34378ea0, []int{0}
|
||||
}
|
||||
func (m *ClusterQuery) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -91,7 +91,7 @@ func (m *ClusterResponse) Reset() { *m = ClusterResponse{} }
|
||||
func (m *ClusterResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*ClusterResponse) ProtoMessage() {}
|
||||
func (*ClusterResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cluster_bf8d7367dfc95a3e, []int{1}
|
||||
return fileDescriptor_cluster_0875510a34378ea0, []int{1}
|
||||
}
|
||||
func (m *ClusterResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -132,7 +132,7 @@ func (m *ClusterCreateRequest) Reset() { *m = ClusterCreateRequest{} }
|
||||
func (m *ClusterCreateRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ClusterCreateRequest) ProtoMessage() {}
|
||||
func (*ClusterCreateRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cluster_bf8d7367dfc95a3e, []int{2}
|
||||
return fileDescriptor_cluster_0875510a34378ea0, []int{2}
|
||||
}
|
||||
func (m *ClusterCreateRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -189,7 +189,7 @@ func (m *ClusterCreateFromKubeConfigRequest) Reset() { *m = ClusterCreat
|
||||
func (m *ClusterCreateFromKubeConfigRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ClusterCreateFromKubeConfigRequest) ProtoMessage() {}
|
||||
func (*ClusterCreateFromKubeConfigRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cluster_bf8d7367dfc95a3e, []int{3}
|
||||
return fileDescriptor_cluster_0875510a34378ea0, []int{3}
|
||||
}
|
||||
func (m *ClusterCreateFromKubeConfigRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -257,7 +257,7 @@ func (m *ClusterUpdateRequest) Reset() { *m = ClusterUpdateRequest{} }
|
||||
func (m *ClusterUpdateRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ClusterUpdateRequest) ProtoMessage() {}
|
||||
func (*ClusterUpdateRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cluster_bf8d7367dfc95a3e, []int{4}
|
||||
return fileDescriptor_cluster_0875510a34378ea0, []int{4}
|
||||
}
|
||||
func (m *ClusterUpdateRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -1393,10 +1393,10 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
proto.RegisterFile("server/cluster/cluster.proto", fileDescriptor_cluster_bf8d7367dfc95a3e)
|
||||
proto.RegisterFile("server/cluster/cluster.proto", fileDescriptor_cluster_0875510a34378ea0)
|
||||
}
|
||||
|
||||
var fileDescriptor_cluster_bf8d7367dfc95a3e = []byte{
|
||||
var fileDescriptor_cluster_0875510a34378ea0 = []byte{
|
||||
// 564 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0xcd, 0x6e, 0x13, 0x31,
|
||||
0x10, 0xc7, 0xe5, 0xb6, 0xda, 0x12, 0x83, 0xf8, 0xb0, 0x0a, 0x5a, 0xd2, 0x10, 0xa5, 0x3e, 0x54,
|
||||
|
||||
@@ -46,7 +46,7 @@ func (m *ProjectCreateRequest) Reset() { *m = ProjectCreateRequest{} }
|
||||
func (m *ProjectCreateRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ProjectCreateRequest) ProtoMessage() {}
|
||||
func (*ProjectCreateRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_project_8d94583ca767d5b3, []int{0}
|
||||
return fileDescriptor_project_082822b5d17b8c4e, []int{0}
|
||||
}
|
||||
func (m *ProjectCreateRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -96,7 +96,7 @@ func (m *ProjectTokenDeleteRequest) Reset() { *m = ProjectTokenDeleteReq
|
||||
func (m *ProjectTokenDeleteRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ProjectTokenDeleteRequest) ProtoMessage() {}
|
||||
func (*ProjectTokenDeleteRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_project_8d94583ca767d5b3, []int{1}
|
||||
return fileDescriptor_project_082822b5d17b8c4e, []int{1}
|
||||
}
|
||||
func (m *ProjectTokenDeleteRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -162,7 +162,7 @@ func (m *ProjectTokenCreateRequest) Reset() { *m = ProjectTokenCreateReq
|
||||
func (m *ProjectTokenCreateRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ProjectTokenCreateRequest) ProtoMessage() {}
|
||||
func (*ProjectTokenCreateRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_project_8d94583ca767d5b3, []int{2}
|
||||
return fileDescriptor_project_082822b5d17b8c4e, []int{2}
|
||||
}
|
||||
func (m *ProjectTokenCreateRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -231,7 +231,7 @@ func (m *ProjectTokenResponse) Reset() { *m = ProjectTokenResponse{} }
|
||||
func (m *ProjectTokenResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*ProjectTokenResponse) ProtoMessage() {}
|
||||
func (*ProjectTokenResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_project_8d94583ca767d5b3, []int{3}
|
||||
return fileDescriptor_project_082822b5d17b8c4e, []int{3}
|
||||
}
|
||||
func (m *ProjectTokenResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -279,7 +279,7 @@ func (m *ProjectQuery) Reset() { *m = ProjectQuery{} }
|
||||
func (m *ProjectQuery) String() string { return proto.CompactTextString(m) }
|
||||
func (*ProjectQuery) ProtoMessage() {}
|
||||
func (*ProjectQuery) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_project_8d94583ca767d5b3, []int{4}
|
||||
return fileDescriptor_project_082822b5d17b8c4e, []int{4}
|
||||
}
|
||||
func (m *ProjectQuery) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -326,7 +326,7 @@ func (m *ProjectUpdateRequest) Reset() { *m = ProjectUpdateRequest{} }
|
||||
func (m *ProjectUpdateRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ProjectUpdateRequest) ProtoMessage() {}
|
||||
func (*ProjectUpdateRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_project_8d94583ca767d5b3, []int{5}
|
||||
return fileDescriptor_project_082822b5d17b8c4e, []int{5}
|
||||
}
|
||||
func (m *ProjectUpdateRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -372,7 +372,7 @@ func (m *EmptyResponse) Reset() { *m = EmptyResponse{} }
|
||||
func (m *EmptyResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*EmptyResponse) ProtoMessage() {}
|
||||
func (*EmptyResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_project_8d94583ca767d5b3, []int{6}
|
||||
return fileDescriptor_project_082822b5d17b8c4e, []int{6}
|
||||
}
|
||||
func (m *EmptyResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -1846,10 +1846,10 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
proto.RegisterFile("server/project/project.proto", fileDescriptor_project_8d94583ca767d5b3)
|
||||
proto.RegisterFile("server/project/project.proto", fileDescriptor_project_082822b5d17b8c4e)
|
||||
}
|
||||
|
||||
var fileDescriptor_project_8d94583ca767d5b3 = []byte{
|
||||
var fileDescriptor_project_082822b5d17b8c4e = []byte{
|
||||
// 697 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x5d, 0x6b, 0x13, 0x4d,
|
||||
0x14, 0x66, 0x9a, 0xbe, 0x79, 0xdf, 0x4e, 0x5e, 0xb5, 0x0c, 0xad, 0xa6, 0xb1, 0x8d, 0x61, 0x2e,
|
||||
|
||||
@@ -46,7 +46,7 @@ func (m *RepoAppsQuery) Reset() { *m = RepoAppsQuery{} }
|
||||
func (m *RepoAppsQuery) String() string { return proto.CompactTextString(m) }
|
||||
func (*RepoAppsQuery) ProtoMessage() {}
|
||||
func (*RepoAppsQuery) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{0}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{0}
|
||||
}
|
||||
func (m *RepoAppsQuery) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -102,7 +102,7 @@ func (m *AppInfo) Reset() { *m = AppInfo{} }
|
||||
func (m *AppInfo) String() string { return proto.CompactTextString(m) }
|
||||
func (*AppInfo) ProtoMessage() {}
|
||||
func (*AppInfo) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{1}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{1}
|
||||
}
|
||||
func (m *AppInfo) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -159,7 +159,7 @@ func (m *RepoAppDetailsQuery) Reset() { *m = RepoAppDetailsQuery{} }
|
||||
func (m *RepoAppDetailsQuery) String() string { return proto.CompactTextString(m) }
|
||||
func (*RepoAppDetailsQuery) ProtoMessage() {}
|
||||
func (*RepoAppDetailsQuery) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{2}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{2}
|
||||
}
|
||||
func (m *RepoAppDetailsQuery) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -224,7 +224,7 @@ func (m *RepoAppDetailsResponse) Reset() { *m = RepoAppDetailsResponse{}
|
||||
func (m *RepoAppDetailsResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*RepoAppDetailsResponse) ProtoMessage() {}
|
||||
func (*RepoAppDetailsResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{3}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{3}
|
||||
}
|
||||
func (m *RepoAppDetailsResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -293,7 +293,7 @@ func (m *RepoAppsResponse) Reset() { *m = RepoAppsResponse{} }
|
||||
func (m *RepoAppsResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*RepoAppsResponse) ProtoMessage() {}
|
||||
func (*RepoAppsResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{4}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{4}
|
||||
}
|
||||
func (m *RepoAppsResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -344,7 +344,7 @@ func (m *KsonnetAppSpec) Reset() { *m = KsonnetAppSpec{} }
|
||||
func (m *KsonnetAppSpec) String() string { return proto.CompactTextString(m) }
|
||||
func (*KsonnetAppSpec) ProtoMessage() {}
|
||||
func (*KsonnetAppSpec) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{5}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{5}
|
||||
}
|
||||
func (m *KsonnetAppSpec) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -408,7 +408,7 @@ func (m *HelmAppSpec) Reset() { *m = HelmAppSpec{} }
|
||||
func (m *HelmAppSpec) String() string { return proto.CompactTextString(m) }
|
||||
func (*HelmAppSpec) ProtoMessage() {}
|
||||
func (*HelmAppSpec) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{6}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{6}
|
||||
}
|
||||
func (m *HelmAppSpec) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -470,7 +470,7 @@ func (m *KustomizeAppSpec) Reset() { *m = KustomizeAppSpec{} }
|
||||
func (m *KustomizeAppSpec) String() string { return proto.CompactTextString(m) }
|
||||
func (*KustomizeAppSpec) ProtoMessage() {}
|
||||
func (*KustomizeAppSpec) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{7}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{7}
|
||||
}
|
||||
func (m *KustomizeAppSpec) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -524,7 +524,7 @@ func (m *KsonnetEnvironment) Reset() { *m = KsonnetEnvironment{} }
|
||||
func (m *KsonnetEnvironment) String() string { return proto.CompactTextString(m) }
|
||||
func (*KsonnetEnvironment) ProtoMessage() {}
|
||||
func (*KsonnetEnvironment) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{8}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{8}
|
||||
}
|
||||
func (m *KsonnetEnvironment) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -595,7 +595,7 @@ func (m *KsonnetEnvironmentDestination) Reset() { *m = KsonnetEnvironmen
|
||||
func (m *KsonnetEnvironmentDestination) String() string { return proto.CompactTextString(m) }
|
||||
func (*KsonnetEnvironmentDestination) ProtoMessage() {}
|
||||
func (*KsonnetEnvironmentDestination) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{9}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{9}
|
||||
}
|
||||
func (m *KsonnetEnvironmentDestination) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -650,7 +650,7 @@ func (m *RepoQuery) Reset() { *m = RepoQuery{} }
|
||||
func (m *RepoQuery) String() string { return proto.CompactTextString(m) }
|
||||
func (*RepoQuery) ProtoMessage() {}
|
||||
func (*RepoQuery) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{10}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{10}
|
||||
}
|
||||
func (m *RepoQuery) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -696,7 +696,7 @@ func (m *RepoResponse) Reset() { *m = RepoResponse{} }
|
||||
func (m *RepoResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*RepoResponse) ProtoMessage() {}
|
||||
func (*RepoResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{11}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{11}
|
||||
}
|
||||
func (m *RepoResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -737,7 +737,7 @@ func (m *RepoCreateRequest) Reset() { *m = RepoCreateRequest{} }
|
||||
func (m *RepoCreateRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*RepoCreateRequest) ProtoMessage() {}
|
||||
func (*RepoCreateRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{12}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{12}
|
||||
}
|
||||
func (m *RepoCreateRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -791,7 +791,7 @@ func (m *RepoUpdateRequest) Reset() { *m = RepoUpdateRequest{} }
|
||||
func (m *RepoUpdateRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*RepoUpdateRequest) ProtoMessage() {}
|
||||
func (*RepoUpdateRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_repository_6cfdcc280f230e64, []int{13}
|
||||
return fileDescriptor_repository_31d36efd186d2b01, []int{13}
|
||||
}
|
||||
func (m *RepoUpdateRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -3710,10 +3710,10 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
proto.RegisterFile("server/repository/repository.proto", fileDescriptor_repository_6cfdcc280f230e64)
|
||||
proto.RegisterFile("server/repository/repository.proto", fileDescriptor_repository_31d36efd186d2b01)
|
||||
}
|
||||
|
||||
var fileDescriptor_repository_6cfdcc280f230e64 = []byte{
|
||||
var fileDescriptor_repository_31d36efd186d2b01 = []byte{
|
||||
// 911 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0x5b, 0x45,
|
||||
0x10, 0xd7, 0xc6, 0xa9, 0x13, 0x8f, 0xdb, 0x2a, 0xdd, 0x96, 0x60, 0x1e, 0x8e, 0x1b, 0x2d, 0x12,
|
||||
|
||||
@@ -243,6 +243,7 @@ func (a *ArgoCDServer) Run(ctx context.Context, port int) {
|
||||
tlsConfig := tls.Config{
|
||||
Certificates: []tls.Certificate{*a.settings.Certificate},
|
||||
}
|
||||
a.TLSConfigCustomizer(&tlsConfig)
|
||||
tlsl = tls.NewListener(tlsl, &tlsConfig)
|
||||
|
||||
// Now, we build another mux recursively to match HTTPS and gRPC.
|
||||
|
||||
@@ -47,7 +47,7 @@ func (m *SessionCreateRequest) Reset() { *m = SessionCreateRequest{} }
|
||||
func (m *SessionCreateRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*SessionCreateRequest) ProtoMessage() {}
|
||||
func (*SessionCreateRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_session_217b926c109d1cc2, []int{0}
|
||||
return fileDescriptor_session_8e535ce77fc5e082, []int{0}
|
||||
}
|
||||
func (m *SessionCreateRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -108,7 +108,7 @@ func (m *SessionDeleteRequest) Reset() { *m = SessionDeleteRequest{} }
|
||||
func (m *SessionDeleteRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*SessionDeleteRequest) ProtoMessage() {}
|
||||
func (*SessionDeleteRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_session_217b926c109d1cc2, []int{1}
|
||||
return fileDescriptor_session_8e535ce77fc5e082, []int{1}
|
||||
}
|
||||
func (m *SessionDeleteRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -149,7 +149,7 @@ func (m *SessionResponse) Reset() { *m = SessionResponse{} }
|
||||
func (m *SessionResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*SessionResponse) ProtoMessage() {}
|
||||
func (*SessionResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_session_217b926c109d1cc2, []int{2}
|
||||
return fileDescriptor_session_8e535ce77fc5e082, []int{2}
|
||||
}
|
||||
func (m *SessionResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -827,10 +827,10 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
proto.RegisterFile("server/session/session.proto", fileDescriptor_session_217b926c109d1cc2)
|
||||
proto.RegisterFile("server/session/session.proto", fileDescriptor_session_8e535ce77fc5e082)
|
||||
}
|
||||
|
||||
var fileDescriptor_session_217b926c109d1cc2 = []byte{
|
||||
var fileDescriptor_session_8e535ce77fc5e082 = []byte{
|
||||
// 356 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xb1, 0x4e, 0xeb, 0x30,
|
||||
0x14, 0x86, 0xe5, 0x5e, 0xdd, 0xde, 0x7b, 0x3d, 0xdc, 0x8a, 0x28, 0x82, 0x28, 0x2a, 0x15, 0xca,
|
||||
|
||||
@@ -42,7 +42,7 @@ func (m *SettingsQuery) Reset() { *m = SettingsQuery{} }
|
||||
func (m *SettingsQuery) String() string { return proto.CompactTextString(m) }
|
||||
func (*SettingsQuery) ProtoMessage() {}
|
||||
func (*SettingsQuery) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_settings_0a30d430c5f54e91, []int{0}
|
||||
return fileDescriptor_settings_71506a99e4ff7448, []int{0}
|
||||
}
|
||||
func (m *SettingsQuery) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -83,7 +83,7 @@ func (m *Settings) Reset() { *m = Settings{} }
|
||||
func (m *Settings) String() string { return proto.CompactTextString(m) }
|
||||
func (*Settings) ProtoMessage() {}
|
||||
func (*Settings) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_settings_0a30d430c5f54e91, []int{1}
|
||||
return fileDescriptor_settings_71506a99e4ff7448, []int{1}
|
||||
}
|
||||
func (m *Settings) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -137,7 +137,7 @@ func (m *DexConfig) Reset() { *m = DexConfig{} }
|
||||
func (m *DexConfig) String() string { return proto.CompactTextString(m) }
|
||||
func (*DexConfig) ProtoMessage() {}
|
||||
func (*DexConfig) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_settings_0a30d430c5f54e91, []int{2}
|
||||
return fileDescriptor_settings_71506a99e4ff7448, []int{2}
|
||||
}
|
||||
func (m *DexConfig) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -185,7 +185,7 @@ func (m *Connector) Reset() { *m = Connector{} }
|
||||
func (m *Connector) String() string { return proto.CompactTextString(m) }
|
||||
func (*Connector) ProtoMessage() {}
|
||||
func (*Connector) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_settings_0a30d430c5f54e91, []int{3}
|
||||
return fileDescriptor_settings_71506a99e4ff7448, []int{3}
|
||||
}
|
||||
func (m *Connector) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -974,10 +974,10 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
proto.RegisterFile("server/settings/settings.proto", fileDescriptor_settings_0a30d430c5f54e91)
|
||||
proto.RegisterFile("server/settings/settings.proto", fileDescriptor_settings_71506a99e4ff7448)
|
||||
}
|
||||
|
||||
var fileDescriptor_settings_0a30d430c5f54e91 = []byte{
|
||||
var fileDescriptor_settings_71506a99e4ff7448 = []byte{
|
||||
// 322 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x41, 0x4b, 0xc3, 0x40,
|
||||
0x10, 0x85, 0xd9, 0x46, 0xac, 0x19, 0x91, 0xea, 0x22, 0x12, 0x8b, 0xc4, 0x92, 0x53, 0x41, 0x4c,
|
||||
|
||||
@@ -1198,87 +1198,6 @@
|
||||
"accountUpdatePasswordResponse": {
|
||||
"type": "object"
|
||||
},
|
||||
"apismetav1ObjectMeta": {
|
||||
"description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects\nusers must create.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"annotations": {
|
||||
"type": "object",
|
||||
"title": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations\n+optional",
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"clusterName": {
|
||||
"type": "string",
|
||||
"title": "The name of the cluster which the object belongs to.\nThis is used to distinguish resources with same name and namespace in different clusters.\nThis field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.\n+optional"
|
||||
},
|
||||
"creationTimestamp": {
|
||||
"$ref": "#/definitions/v1Time"
|
||||
},
|
||||
"deletionGracePeriodSeconds": {
|
||||
"type": "string",
|
||||
"format": "int64",
|
||||
"title": "Number of seconds allowed for this object to gracefully terminate before\nit will be removed from the system. Only set when deletionTimestamp is also set.\nMay only be shortened.\nRead-only.\n+optional"
|
||||
},
|
||||
"deletionTimestamp": {
|
||||
"$ref": "#/definitions/v1Time"
|
||||
},
|
||||
"finalizers": {
|
||||
"type": "array",
|
||||
"title": "Must be empty before the object is deleted from the registry. Each entry\nis an identifier for the responsible component that will remove the entry\nfrom the list. If the deletionTimestamp of the object is non-nil, entries\nin this list can only be removed.\n+optional\n+patchStrategy=merge",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"generateName": {
|
||||
"description": "GenerateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\nshould retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency\n+optional",
|
||||
"type": "string"
|
||||
},
|
||||
"generation": {
|
||||
"type": "string",
|
||||
"format": "int64",
|
||||
"title": "A sequence number representing a specific generation of the desired state.\nPopulated by the system. Read-only.\n+optional"
|
||||
},
|
||||
"initializers": {
|
||||
"$ref": "#/definitions/v1Initializers"
|
||||
},
|
||||
"labels": {
|
||||
"type": "object",
|
||||
"title": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.\nMore info: http://kubernetes.io/docs/user-guide/labels\n+optional",
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"title": "Name must be unique within a namespace. Is required when creating resources, although\nsome resources may allow a client to request the generation of an appropriate name\nautomatically. Name is primarily intended for creation idempotence and configuration\ndefinition.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\n+optional"
|
||||
},
|
||||
"namespace": {
|
||||
"description": "Namespace defines the space within each name must be unique. An empty namespace is\nequivalent to the \"default\" namespace, but \"default\" is the canonical representation.\nNot all objects are required to be scoped to a namespace - the value of this field for\nthose objects will be empty.\n\nMust be a DNS_LABEL.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/namespaces\n+optional",
|
||||
"type": "string"
|
||||
},
|
||||
"ownerReferences": {
|
||||
"type": "array",
|
||||
"title": "List of objects depended by this object. If ALL objects in the list have\nbeen deleted, this object will be garbage collected. If this object is managed by a controller,\nthen an entry in this list will point to this controller, with the controller field set to true.\nThere cannot be more than one managing controller.\n+optional\n+patchMergeKey=uid\n+patchStrategy=merge",
|
||||
"items": {
|
||||
"$ref": "#/definitions/v1OwnerReference"
|
||||
}
|
||||
},
|
||||
"resourceVersion": {
|
||||
"description": "An opaque value that represents the internal version of this object that can\nbe used by clients to determine when objects have changed. May be used for optimistic\nconcurrency, change detection, and the watch operation on a resource or set of resources.\nClients must treat these values as opaque and passed unmodified back to the server.\nThey may only be valid for a particular resource or set of resources.\n\nPopulated by the system.\nRead-only.\nValue must be treated as opaque by clients and .\nMore info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency\n+optional",
|
||||
"type": "string"
|
||||
},
|
||||
"selfLink": {
|
||||
"type": "string",
|
||||
"title": "SelfLink is a URL representing this object.\nPopulated by the system.\nRead-only.\n+optional"
|
||||
},
|
||||
"uid": {
|
||||
"description": "UID is the unique in time and space value for this object. It is typically generated by\nthe server on successful creation of a resource and is not allowed to change on PUT\noperations.\n\nPopulated by the system.\nRead-only.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#uids\n+optional",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"applicationApplicationResponse": {
|
||||
"type": "object"
|
||||
},
|
||||
@@ -1693,7 +1612,7 @@
|
||||
"title": "A human-readable description of the status of this operation.\nTODO: decide on maximum length.\n+optional"
|
||||
},
|
||||
"metadata": {
|
||||
"$ref": "#/definitions/apismetav1ObjectMeta"
|
||||
"$ref": "#/definitions/v1ObjectMeta"
|
||||
},
|
||||
"reason": {
|
||||
"type": "string",
|
||||
@@ -1814,7 +1733,7 @@
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"continue": {
|
||||
"description": "continue may be set if the user set a limit on the number of items returned, and indicates that\nthe server has more data available. The value is opaque and may be used to issue another request\nto the endpoint that served this list to retrieve the next set of available objects. Continuing a\nlist may not be possible if the server configuration has changed or more than a few minutes have\npassed. The resourceVersion field returned when using this continue value will be identical to\nthe value in the first response.",
|
||||
"description": "continue may be set if the user set a limit on the number of items returned, and indicates that\nthe server has more data available. The value is opaque and may be used to issue another request\nto the endpoint that served this list to retrieve the next set of available objects. Continuing a\nconsistent list may not be possible if the server configuration has changed or more than a few\nminutes have passed. The resourceVersion field returned when using this continue value will be\nidentical to the value in the first response, unless you have received this token from an error\nmessage.",
|
||||
"type": "string"
|
||||
},
|
||||
"resourceVersion": {
|
||||
@@ -1843,6 +1762,87 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"v1ObjectMeta": {
|
||||
"description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects\nusers must create.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"annotations": {
|
||||
"type": "object",
|
||||
"title": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations\n+optional",
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"clusterName": {
|
||||
"type": "string",
|
||||
"title": "The name of the cluster which the object belongs to.\nThis is used to distinguish resources with same name and namespace in different clusters.\nThis field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.\n+optional"
|
||||
},
|
||||
"creationTimestamp": {
|
||||
"$ref": "#/definitions/v1Time"
|
||||
},
|
||||
"deletionGracePeriodSeconds": {
|
||||
"type": "string",
|
||||
"format": "int64",
|
||||
"title": "Number of seconds allowed for this object to gracefully terminate before\nit will be removed from the system. Only set when deletionTimestamp is also set.\nMay only be shortened.\nRead-only.\n+optional"
|
||||
},
|
||||
"deletionTimestamp": {
|
||||
"$ref": "#/definitions/v1Time"
|
||||
},
|
||||
"finalizers": {
|
||||
"type": "array",
|
||||
"title": "Must be empty before the object is deleted from the registry. Each entry\nis an identifier for the responsible component that will remove the entry\nfrom the list. If the deletionTimestamp of the object is non-nil, entries\nin this list can only be removed.\n+optional\n+patchStrategy=merge",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"generateName": {
|
||||
"description": "GenerateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\nshould retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency\n+optional",
|
||||
"type": "string"
|
||||
},
|
||||
"generation": {
|
||||
"type": "string",
|
||||
"format": "int64",
|
||||
"title": "A sequence number representing a specific generation of the desired state.\nPopulated by the system. Read-only.\n+optional"
|
||||
},
|
||||
"initializers": {
|
||||
"$ref": "#/definitions/v1Initializers"
|
||||
},
|
||||
"labels": {
|
||||
"type": "object",
|
||||
"title": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.\nMore info: http://kubernetes.io/docs/user-guide/labels\n+optional",
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"title": "Name must be unique within a namespace. Is required when creating resources, although\nsome resources may allow a client to request the generation of an appropriate name\nautomatically. Name is primarily intended for creation idempotence and configuration\ndefinition.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\n+optional"
|
||||
},
|
||||
"namespace": {
|
||||
"description": "Namespace defines the space within each name must be unique. An empty namespace is\nequivalent to the \"default\" namespace, but \"default\" is the canonical representation.\nNot all objects are required to be scoped to a namespace - the value of this field for\nthose objects will be empty.\n\nMust be a DNS_LABEL.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/namespaces\n+optional",
|
||||
"type": "string"
|
||||
},
|
||||
"ownerReferences": {
|
||||
"type": "array",
|
||||
"title": "List of objects depended by this object. If ALL objects in the list have\nbeen deleted, this object will be garbage collected. If this object is managed by a controller,\nthen an entry in this list will point to this controller, with the controller field set to true.\nThere cannot be more than one managing controller.\n+optional\n+patchMergeKey=uid\n+patchStrategy=merge",
|
||||
"items": {
|
||||
"$ref": "#/definitions/v1OwnerReference"
|
||||
}
|
||||
},
|
||||
"resourceVersion": {
|
||||
"description": "An opaque value that represents the internal version of this object that can\nbe used by clients to determine when objects have changed. May be used for optimistic\nconcurrency, change detection, and the watch operation on a resource or set of resources.\nClients must treat these values as opaque and passed unmodified back to the server.\nThey may only be valid for a particular resource or set of resources.\n\nPopulated by the system.\nRead-only.\nValue must be treated as opaque by clients and .\nMore info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency\n+optional",
|
||||
"type": "string"
|
||||
},
|
||||
"selfLink": {
|
||||
"type": "string",
|
||||
"title": "SelfLink is a URL representing this object.\nPopulated by the system.\nRead-only.\n+optional"
|
||||
},
|
||||
"uid": {
|
||||
"description": "UID is the unique in time and space value for this object. It is typically generated by\nthe server on successful creation of a resource and is not allowed to change on PUT\noperations.\n\nPopulated by the system.\nRead-only.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#uids\n+optional",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"v1ObjectReference": {
|
||||
"type": "object",
|
||||
"title": "ObjectReference contains enough information to let you inspect or modify the referred object.\n+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object",
|
||||
@@ -2025,7 +2025,7 @@
|
||||
"title": "AppProject is a definition of AppProject resource.\n+genclient\n+genclient:noStatus\n+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object",
|
||||
"properties": {
|
||||
"metadata": {
|
||||
"$ref": "#/definitions/apismetav1ObjectMeta"
|
||||
"$ref": "#/definitions/v1ObjectMeta"
|
||||
},
|
||||
"spec": {
|
||||
"$ref": "#/definitions/v1alpha1AppProjectSpec"
|
||||
@@ -2096,7 +2096,7 @@
|
||||
"title": "Application is a definition of Application resource.\n+genclient\n+genclient:noStatus\n+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object",
|
||||
"properties": {
|
||||
"metadata": {
|
||||
"$ref": "#/definitions/apismetav1ObjectMeta"
|
||||
"$ref": "#/definitions/v1ObjectMeta"
|
||||
},
|
||||
"operation": {
|
||||
"$ref": "#/definitions/v1alpha1Operation"
|
||||
|
||||
@@ -51,7 +51,7 @@ func (m *VersionMessage) Reset() { *m = VersionMessage{} }
|
||||
func (m *VersionMessage) String() string { return proto.CompactTextString(m) }
|
||||
func (*VersionMessage) ProtoMessage() {}
|
||||
func (*VersionMessage) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_version_6f54499c257f90e5, []int{0}
|
||||
return fileDescriptor_version_cdcdf9fc14514c9b, []int{0}
|
||||
}
|
||||
func (m *VersionMessage) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@@ -781,10 +781,10 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
proto.RegisterFile("server/version/version.proto", fileDescriptor_version_6f54499c257f90e5)
|
||||
proto.RegisterFile("server/version/version.proto", fileDescriptor_version_cdcdf9fc14514c9b)
|
||||
}
|
||||
|
||||
var fileDescriptor_version_6f54499c257f90e5 = []byte{
|
||||
var fileDescriptor_version_cdcdf9fc14514c9b = []byte{
|
||||
// 343 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x92, 0xcf, 0x4a, 0xc3, 0x40,
|
||||
0x10, 0xc6, 0x49, 0xd5, 0xfe, 0x59, 0x4a, 0x0f, 0x8b, 0xd4, 0x25, 0x96, 0x22, 0x3d, 0x88, 0x08,
|
||||
|
||||
@@ -122,6 +122,7 @@ func RefreshApp(appIf v1alpha1.ApplicationInterface, name string) (*argoappv1.Ap
|
||||
}
|
||||
|
||||
// WaitForRefresh watches an application until its comparison timestamp is after the refresh timestamp
|
||||
// If refresh timestamp is not present, will use current timestamp at time of call
|
||||
func WaitForRefresh(appIf v1alpha1.ApplicationInterface, name string, timeout *time.Duration) (*argoappv1.Application, error) {
|
||||
ctx := context.Background()
|
||||
var cancel context.CancelFunc
|
||||
@@ -136,6 +137,7 @@ func WaitForRefresh(appIf v1alpha1.ApplicationInterface, name string, timeout *t
|
||||
return nil, err
|
||||
}
|
||||
defer watchIf.Stop()
|
||||
now := time.Now().UTC()
|
||||
|
||||
for {
|
||||
select {
|
||||
@@ -161,6 +163,9 @@ func WaitForRefresh(appIf v1alpha1.ApplicationInterface, name string, timeout *t
|
||||
return nil, fmt.Errorf("Application event object failed conversion: %v", next)
|
||||
}
|
||||
refreshTimestampStr := app.ObjectMeta.Annotations[common.AnnotationKeyRefresh]
|
||||
if refreshTimestampStr == "" {
|
||||
refreshTimestampStr = now.String()
|
||||
}
|
||||
refreshTimestamp, err := time.Parse(time.RFC3339, refreshTimestampStr)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Unable to parse '%s': %v", common.AnnotationKeyRefresh, err)
|
||||
|
||||
@@ -20,7 +20,6 @@ import (
|
||||
|
||||
"github.com/coreos/dex/api"
|
||||
oidc "github.com/coreos/go-oidc"
|
||||
jwt "github.com/dgrijalva/jwt-go"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"golang.org/x/oauth2"
|
||||
"google.golang.org/grpc"
|
||||
@@ -325,15 +324,9 @@ func (a *ClientApp) HandleCallback(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
idToken, err := a.verify(rawIDToken)
|
||||
claims, err := a.sessionMgr.VerifyToken(rawIDToken)
|
||||
if err != nil {
|
||||
http.Error(w, fmt.Sprintf("Failed to verify ID token: %v", err), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
var claims jwt.MapClaims
|
||||
err = idToken.Claims(&claims)
|
||||
if err != nil {
|
||||
http.Error(w, fmt.Sprintf("Failed to unmarshal claims: %v", err), http.StatusInternalServerError)
|
||||
http.Error(w, fmt.Sprintf("invalid session token: %v", err), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
flags := []string{"path=/"}
|
||||
|
||||
@@ -149,7 +149,7 @@ func (m *nativeGitClient) Checkout(revision string) error {
|
||||
if _, err := m.runCmd("git", "checkout", "--force", revision); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := m.runCmd("git", "clean", "-fd"); err != nil {
|
||||
if _, err := m.runCmd("git", "clean", "-fdx"); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -9,40 +9,47 @@ import (
|
||||
extv1beta1 "k8s.io/api/extensions/v1beta1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/apis/apps"
|
||||
|
||||
appv1 "github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1"
|
||||
"github.com/argoproj/argo-cd/util/kube"
|
||||
"k8s.io/kubernetes/pkg/apis/apps"
|
||||
)
|
||||
|
||||
// GetAppHealth returns the health of a k8s resource
|
||||
func GetAppHealth(kubectl kube.Kubectl, obj *unstructured.Unstructured) (*appv1.HealthStatus, error) {
|
||||
|
||||
var err error
|
||||
var health *appv1.HealthStatus
|
||||
|
||||
switch obj.GetKind() {
|
||||
case kube.DeploymentKind:
|
||||
health, err = getDeploymentHealth(kubectl, obj)
|
||||
case kube.ServiceKind:
|
||||
health, err = getServiceHealth(kubectl, obj)
|
||||
case kube.IngressKind:
|
||||
health, err = getIngressHealth(kubectl, obj)
|
||||
case kube.StatefulSetKind:
|
||||
health, err = getStatefulSetHealth(kubectl, obj)
|
||||
case kube.ReplicaSetKind:
|
||||
health, err = getReplicaSetHealth(kubectl, obj)
|
||||
case kube.DaemonSetKind:
|
||||
health, err = getDaemonSetHealth(kubectl, obj)
|
||||
case kube.PersistentVolumeClaimKind:
|
||||
health, err = getPvcHealth(kubectl, obj)
|
||||
default:
|
||||
health = &appv1.HealthStatus{Status: appv1.HealthStatusHealthy}
|
||||
gvk := obj.GroupVersionKind()
|
||||
switch gvk.Group {
|
||||
case "apps", "extensions":
|
||||
switch gvk.Kind {
|
||||
case kube.DeploymentKind:
|
||||
health, err = getDeploymentHealth(kubectl, obj)
|
||||
case kube.IngressKind:
|
||||
health, err = getIngressHealth(kubectl, obj)
|
||||
case kube.StatefulSetKind:
|
||||
health, err = getStatefulSetHealth(kubectl, obj)
|
||||
case kube.ReplicaSetKind:
|
||||
health, err = getReplicaSetHealth(kubectl, obj)
|
||||
case kube.DaemonSetKind:
|
||||
health, err = getDaemonSetHealth(kubectl, obj)
|
||||
}
|
||||
case "":
|
||||
switch gvk.Kind {
|
||||
case kube.ServiceKind:
|
||||
health, err = getServiceHealth(kubectl, obj)
|
||||
case kube.PersistentVolumeClaimKind:
|
||||
health, err = getPVCHealth(kubectl, obj)
|
||||
}
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
health.Status = appv1.HealthStatusUnknown
|
||||
health.StatusDetails = err.Error()
|
||||
health = &appv1.HealthStatus{
|
||||
Status: appv1.HealthStatusUnknown,
|
||||
StatusDetails: err.Error(),
|
||||
}
|
||||
} else if health == nil {
|
||||
health = &appv1.HealthStatus{Status: appv1.HealthStatusHealthy}
|
||||
}
|
||||
return health, err
|
||||
}
|
||||
@@ -71,7 +78,7 @@ func IsWorse(current, new appv1.HealthStatusCode) bool {
|
||||
return newIndex > currentIndex
|
||||
}
|
||||
|
||||
func getPvcHealth(kubectl kube.Kubectl, obj *unstructured.Unstructured) (*appv1.HealthStatus, error) {
|
||||
func getPVCHealth(kubectl kube.Kubectl, obj *unstructured.Unstructured) (*appv1.HealthStatus, error) {
|
||||
obj, err := kubectl.ConvertToVersion(obj, "", "v1")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -12,74 +12,45 @@ import (
|
||||
"github.com/argoproj/argo-cd/util/kube"
|
||||
)
|
||||
|
||||
func assertAppHealth(t *testing.T, yamlPath string, expectedStatus appv1.HealthStatusCode) {
|
||||
yamlBytes, err := ioutil.ReadFile(yamlPath)
|
||||
assert.Nil(t, err)
|
||||
var obj unstructured.Unstructured
|
||||
err = yaml.Unmarshal(yamlBytes, &obj)
|
||||
assert.Nil(t, err)
|
||||
health, err := GetAppHealth(kube.KubectlCmd{}, &obj)
|
||||
assert.Nil(t, err)
|
||||
assert.NotNil(t, health)
|
||||
assert.Equal(t, expectedStatus, health.Status)
|
||||
}
|
||||
|
||||
func TestDeploymentHealth(t *testing.T) {
|
||||
yamlBytes, err := ioutil.ReadFile("../kube/testdata/nginx.yaml")
|
||||
assert.Nil(t, err)
|
||||
var obj unstructured.Unstructured
|
||||
err = yaml.Unmarshal(yamlBytes, &obj)
|
||||
assert.Nil(t, err)
|
||||
health, err := GetAppHealth(kube.KubectlCmd{}, &obj)
|
||||
assert.Nil(t, err)
|
||||
assert.NotNil(t, health)
|
||||
assert.Equal(t, appv1.HealthStatusHealthy, health.Status)
|
||||
}
|
||||
|
||||
func TestDeploymentProgressing(t *testing.T) {
|
||||
yamlBytes, err := ioutil.ReadFile("./testdata/progressing.yaml")
|
||||
assert.Nil(t, err)
|
||||
var obj unstructured.Unstructured
|
||||
err = yaml.Unmarshal(yamlBytes, &obj)
|
||||
assert.Nil(t, err)
|
||||
health, err := GetAppHealth(kube.KubectlCmd{}, &obj)
|
||||
assert.Nil(t, err)
|
||||
assert.NotNil(t, health)
|
||||
assert.Equal(t, appv1.HealthStatusProgressing, health.Status)
|
||||
}
|
||||
|
||||
func TestDeploymentDegraded(t *testing.T) {
|
||||
yamlBytes, err := ioutil.ReadFile("./testdata/degraded.yaml")
|
||||
assert.Nil(t, err)
|
||||
var obj unstructured.Unstructured
|
||||
err = yaml.Unmarshal(yamlBytes, &obj)
|
||||
assert.Nil(t, err)
|
||||
health, err := GetAppHealth(kube.KubectlCmd{}, &obj)
|
||||
assert.Nil(t, err)
|
||||
assert.NotNil(t, health)
|
||||
assert.Equal(t, appv1.HealthStatusDegraded, health.Status)
|
||||
assertAppHealth(t, "../kube/testdata/nginx.yaml", appv1.HealthStatusHealthy)
|
||||
assertAppHealth(t, "./testdata/deployment-progressing.yaml", appv1.HealthStatusProgressing)
|
||||
assertAppHealth(t, "./testdata/deployment-degraded.yaml", appv1.HealthStatusDegraded)
|
||||
}
|
||||
|
||||
func TestStatefulSetHealth(t *testing.T) {
|
||||
yamlBytes, err := ioutil.ReadFile("./testdata/statefulset.yaml")
|
||||
assert.Nil(t, err)
|
||||
var obj unstructured.Unstructured
|
||||
err = yaml.Unmarshal(yamlBytes, &obj)
|
||||
assert.Nil(t, err)
|
||||
health, err := GetAppHealth(kube.KubectlCmd{}, &obj)
|
||||
assert.Nil(t, err)
|
||||
assert.NotNil(t, health)
|
||||
assert.Equal(t, appv1.HealthStatusHealthy, health.Status)
|
||||
assertAppHealth(t, "./testdata/statefulset.yaml", appv1.HealthStatusHealthy)
|
||||
}
|
||||
|
||||
func TestPvcHealthy(t *testing.T) {
|
||||
yamlBytes, err := ioutil.ReadFile("./testdata/pvc-bound.yaml")
|
||||
assert.Nil(t, err)
|
||||
var obj unstructured.Unstructured
|
||||
err = yaml.Unmarshal(yamlBytes, &obj)
|
||||
assert.Nil(t, err)
|
||||
health, err := GetAppHealth(kube.KubectlCmd{}, &obj)
|
||||
assert.Nil(t, err)
|
||||
assert.NotNil(t, health)
|
||||
assert.Equal(t, appv1.HealthStatusHealthy, health.Status)
|
||||
func TestPVCHealth(t *testing.T) {
|
||||
assertAppHealth(t, "./testdata/pvc-bound.yaml", appv1.HealthStatusHealthy)
|
||||
assertAppHealth(t, "./testdata/pvc-pending.yaml", appv1.HealthStatusProgressing)
|
||||
}
|
||||
|
||||
func TestPvcPending(t *testing.T) {
|
||||
yamlBytes, err := ioutil.ReadFile("./testdata/pvc-pending.yaml")
|
||||
assert.Nil(t, err)
|
||||
var obj unstructured.Unstructured
|
||||
err = yaml.Unmarshal(yamlBytes, &obj)
|
||||
assert.Nil(t, err)
|
||||
health, err := GetAppHealth(kube.KubectlCmd{}, &obj)
|
||||
assert.Nil(t, err)
|
||||
assert.NotNil(t, health)
|
||||
assert.Equal(t, appv1.HealthStatusProgressing, health.Status)
|
||||
func TestServiceHealth(t *testing.T) {
|
||||
assertAppHealth(t, "./testdata/svc-clusterip.yaml", appv1.HealthStatusHealthy)
|
||||
assertAppHealth(t, "./testdata/svc-loadbalancer.yaml", appv1.HealthStatusHealthy)
|
||||
assertAppHealth(t, "./testdata/svc-loadbalancer-unassigned.yaml", appv1.HealthStatusProgressing)
|
||||
}
|
||||
|
||||
func TestIngressHealth(t *testing.T) {
|
||||
assertAppHealth(t, "./testdata/ingress.yaml", appv1.HealthStatusHealthy)
|
||||
assertAppHealth(t, "./testdata/ingress-unassigned.yaml", appv1.HealthStatusProgressing)
|
||||
}
|
||||
|
||||
func TestCRD(t *testing.T) {
|
||||
// This ensures we do not try to compare only based on "Kind"
|
||||
assertAppHealth(t, "./testdata/knative-service.yaml", appv1.HealthStatusHealthy)
|
||||
}
|
||||
|
||||
24
util/health/testdata/ingress-unassigned.yaml
vendored
Normal file
24
util/health/testdata/ingress-unassigned.yaml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
|
||||
creationTimestamp: 2018-09-20T06:47:27Z
|
||||
generation: 9
|
||||
name: argocd-server-ingress
|
||||
namespace: argocd
|
||||
resourceVersion: "23207680"
|
||||
selfLink: /apis/extensions/v1beta1/namespaces/argocd/ingresses/argocd-server-ingress
|
||||
uid: 09927cae-bca1-11e8-bbd2-42010a8a00bb
|
||||
spec:
|
||||
rules:
|
||||
- host: example.argoproj.io
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
serviceName: argocd-server
|
||||
servicePort: https
|
||||
status:
|
||||
loadBalancer: {}
|
||||
26
util/health/testdata/ingress.yaml
vendored
Normal file
26
util/health/testdata/ingress.yaml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
|
||||
creationTimestamp: 2018-09-20T06:47:27Z
|
||||
generation: 9
|
||||
name: argocd-server-ingress
|
||||
namespace: argocd
|
||||
resourceVersion: "23207680"
|
||||
selfLink: /apis/extensions/v1beta1/namespaces/argocd/ingresses/argocd-server-ingress
|
||||
uid: 09927cae-bca1-11e8-bbd2-42010a8a00bb
|
||||
spec:
|
||||
rules:
|
||||
- host: example.argoproj.io
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
serviceName: argocd-server
|
||||
servicePort: https
|
||||
status:
|
||||
loadBalancer:
|
||||
ingress:
|
||||
- ip: 1.2.3.4
|
||||
14
util/health/testdata/knative-service.yaml
vendored
Normal file
14
util/health/testdata/knative-service.yaml
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
apiVersion: serving.knative.dev/v1alpha1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: helloworld
|
||||
spec:
|
||||
runLatest:
|
||||
configuration:
|
||||
revisionTemplate:
|
||||
spec:
|
||||
container:
|
||||
env:
|
||||
- name: TARGET
|
||||
value: world
|
||||
image: helloworld:latest
|
||||
25
util/health/testdata/svc-clusterip.yaml
vendored
Normal file
25
util/health/testdata/svc-clusterip.yaml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kubectl.kubernetes.io/last-applied-configuration: |
|
||||
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"argocd-metrics","namespace":"argocd"},"spec":{"ports":[{"name":"http","port":8082,"protocol":"TCP","targetPort":8082}],"selector":{"app":"argocd-server"}}}
|
||||
creationTimestamp: 2018-10-27T06:36:27Z
|
||||
name: argocd-metrics
|
||||
namespace: argocd
|
||||
resourceVersion: "1131"
|
||||
selfLink: /api/v1/namespaces/argocd/services/argocd-metrics
|
||||
uid: a1f65069-d9b2-11e8-b3c1-9ae2f452bd03
|
||||
spec:
|
||||
clusterIP: 10.96.199.2
|
||||
ports:
|
||||
- name: http
|
||||
port: 8082
|
||||
protocol: TCP
|
||||
targetPort: 8082
|
||||
selector:
|
||||
app: argocd-server
|
||||
sessionAffinity: None
|
||||
type: ClusterIP
|
||||
status:
|
||||
loadBalancer: {}
|
||||
25
util/health/testdata/svc-loadbalancer-unassigned.yaml
vendored
Normal file
25
util/health/testdata/svc-loadbalancer-unassigned.yaml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
creationTimestamp: 2018-11-06T01:07:35Z
|
||||
name: argo-artifacts
|
||||
namespace: argo
|
||||
resourceVersion: "346792"
|
||||
selfLink: /api/v1/namespaces/argo/services/argo-artifacts
|
||||
uid: 586f5e57-e160-11e8-b3c1-9ae2f452bd03
|
||||
spec:
|
||||
clusterIP: 10.105.70.181
|
||||
externalTrafficPolicy: Cluster
|
||||
ports:
|
||||
- name: service
|
||||
nodePort: 32667
|
||||
port: 9000
|
||||
protocol: TCP
|
||||
targetPort: 9000
|
||||
selector:
|
||||
app: minio
|
||||
release: argo-artifacts
|
||||
sessionAffinity: None
|
||||
type: LoadBalancer
|
||||
status:
|
||||
loadBalancer: {}
|
||||
35
util/health/testdata/svc-loadbalancer.yaml
vendored
Normal file
35
util/health/testdata/svc-loadbalancer.yaml
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600"
|
||||
creationTimestamp: 2018-06-05T23:34:58Z
|
||||
labels:
|
||||
applications.argoproj.io/app-name: argocd-cdp
|
||||
name: argocd-server
|
||||
namespace: argocd
|
||||
resourceVersion: "32559487"
|
||||
selfLink: /api/v1/namespaces/argocd/services/argocd-server
|
||||
uid: 0f5885a9-6919-11e8-ad29-020124679688
|
||||
spec:
|
||||
clusterIP: 100.69.46.185
|
||||
externalTrafficPolicy: Cluster
|
||||
ports:
|
||||
- name: http
|
||||
nodePort: 30354
|
||||
port: 80
|
||||
protocol: TCP
|
||||
targetPort: 8080
|
||||
- name: https
|
||||
nodePort: 31866
|
||||
port: 443
|
||||
protocol: TCP
|
||||
targetPort: 8080
|
||||
selector:
|
||||
app: argocd-server
|
||||
sessionAffinity: None
|
||||
type: LoadBalancer
|
||||
status:
|
||||
loadBalancer:
|
||||
ingress:
|
||||
- hostname: abc123.us-west-2.elb.amazonaws.com
|
||||
@@ -32,59 +32,30 @@ type KubectlCmd struct{}
|
||||
|
||||
// WatchResources Watches all the existing resources with the provided label name in the provided namespace in the cluster provided by the config
|
||||
func (k KubectlCmd) WatchResources(
|
||||
ctx context.Context, config *rest.Config, namespace string, selector func(kind schema.GroupVersionKind) metav1.ListOptions) (chan watch.Event, error) {
|
||||
|
||||
ctx context.Context,
|
||||
config *rest.Config,
|
||||
namespace string,
|
||||
selector func(kind schema.GroupVersionKind) metav1.ListOptions,
|
||||
) (chan watch.Event, error) {
|
||||
log.Infof("Start watching for resources changes with in cluster %s", config.Host)
|
||||
dynClientPool := dynamic.NewDynamicClientPool(config)
|
||||
disco, err := discovery.NewDiscoveryClientForConfig(config)
|
||||
apiResIfs, err := filterAPIResources(config, watchSupported, namespace)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
serverResources, err := GetCachedServerResources(config.Host, disco)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
items := make([]struct {
|
||||
resource dynamic.ResourceInterface
|
||||
gvk schema.GroupVersionKind
|
||||
}, 0)
|
||||
for _, apiResourcesList := range serverResources {
|
||||
for i := range apiResourcesList.APIResources {
|
||||
apiResource := apiResourcesList.APIResources[i]
|
||||
watchSupported := false
|
||||
for _, verb := range apiResource.Verbs {
|
||||
if verb == watchVerb {
|
||||
watchSupported = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if watchSupported && !isExcludedResourceGroup(apiResource) {
|
||||
dclient, err := dynClientPool.ClientForGroupVersionKind(schema.FromAPIVersionAndKind(apiResourcesList.GroupVersion, apiResource.Kind))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, struct {
|
||||
resource dynamic.ResourceInterface
|
||||
gvk schema.GroupVersionKind
|
||||
}{resource: dclient.Resource(&apiResource, namespace), gvk: schema.FromAPIVersionAndKind(apiResourcesList.GroupVersion, apiResource.Kind)})
|
||||
}
|
||||
}
|
||||
}
|
||||
ch := make(chan watch.Event)
|
||||
go func() {
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(len(items))
|
||||
for i := 0; i < len(items); i++ {
|
||||
item := items[i]
|
||||
go func() {
|
||||
wg.Add(len(apiResIfs))
|
||||
for _, a := range apiResIfs {
|
||||
go func(apiResIf apiResourceInterface) {
|
||||
defer wg.Done()
|
||||
w, err := item.resource.Watch(selector(item.gvk))
|
||||
gvk := schema.FromAPIVersionAndKind(apiResIf.groupVersion, apiResIf.apiResource.Kind)
|
||||
w, err := apiResIf.resourceIf.Watch(selector(gvk))
|
||||
if err == nil {
|
||||
defer w.Stop()
|
||||
copyEventsChannel(ctx, w.ResultChan(), ch)
|
||||
}
|
||||
}()
|
||||
}(a)
|
||||
}
|
||||
wg.Wait()
|
||||
close(ch)
|
||||
@@ -95,13 +66,12 @@ func (k KubectlCmd) WatchResources(
|
||||
|
||||
// DeleteResource deletes resource
|
||||
func (k KubectlCmd) DeleteResource(config *rest.Config, obj *unstructured.Unstructured, namespace string) error {
|
||||
dynClientPool := dynamic.NewDynamicClientPool(config)
|
||||
disco, err := discovery.NewDiscoveryClientForConfig(config)
|
||||
dynamicIf, err := dynamic.NewForConfig(config)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
gvk := obj.GroupVersionKind()
|
||||
dclient, err := dynClientPool.ClientForGroupVersionKind(gvk)
|
||||
disco, err := discovery.NewDiscoveryClientForConfig(config)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -109,9 +79,10 @@ func (k KubectlCmd) DeleteResource(config *rest.Config, obj *unstructured.Unstru
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
reIf := dclient.Resource(apiResource, namespace)
|
||||
resource := gvk.GroupVersion().WithResource(apiResource.Name)
|
||||
resourceIf := ToResourceInterface(dynamicIf, apiResource, resource, namespace)
|
||||
propagationPolicy := metav1.DeletePropagationForeground
|
||||
return reIf.Delete(obj.GetName(), &metav1.DeleteOptions{PropagationPolicy: &propagationPolicy})
|
||||
return resourceIf.Delete(obj.GetName(), &metav1.DeleteOptions{PropagationPolicy: &propagationPolicy})
|
||||
}
|
||||
|
||||
// ApplyResource performs an apply of a unstructured resource
|
||||
|
||||
@@ -204,17 +204,32 @@ func FlushServerResourcesCache() {
|
||||
apiResourceCache.Flush()
|
||||
}
|
||||
|
||||
func ToGroupVersionResource(groupVersion string, apiResource *metav1.APIResource) schema.GroupVersionResource {
|
||||
gvk := schema.FromAPIVersionAndKind(groupVersion, apiResource.Kind)
|
||||
gv := gvk.GroupVersion()
|
||||
return gv.WithResource(apiResource.Name)
|
||||
}
|
||||
|
||||
func ToResourceInterface(dynamicIf dynamic.Interface, apiResource *metav1.APIResource, resource schema.GroupVersionResource, namespace string) dynamic.ResourceInterface {
|
||||
if apiResource.Namespaced {
|
||||
return dynamicIf.Resource(resource).Namespace(namespace)
|
||||
}
|
||||
return dynamicIf.Resource(resource)
|
||||
}
|
||||
|
||||
// GetLiveResource returns the corresponding live resource from a unstructured object
|
||||
func GetLiveResource(dclient dynamic.Interface, obj *unstructured.Unstructured, apiResource *metav1.APIResource, namespace string) (*unstructured.Unstructured, error) {
|
||||
func GetLiveResource(dynamicIf dynamic.Interface, obj *unstructured.Unstructured, apiResource *metav1.APIResource, namespace string) (*unstructured.Unstructured, error) {
|
||||
resourceName := obj.GetName()
|
||||
if resourceName == "" {
|
||||
return nil, fmt.Errorf("resource was supplied without a name")
|
||||
}
|
||||
reIf := dclient.Resource(apiResource, namespace)
|
||||
gvk := obj.GroupVersionKind()
|
||||
resource := ToGroupVersionResource(gvk.GroupVersion().String(), apiResource)
|
||||
reIf := ToResourceInterface(dynamicIf, apiResource, resource, namespace)
|
||||
liveObj, err := reIf.Get(resourceName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
if apierr.IsNotFound(err) {
|
||||
log.Infof("No live counterpart to %s/%s/%s/%s in namespace: '%s'", apiResource.Group, apiResource.Version, apiResource.Name, resourceName, namespace)
|
||||
log.Infof("No live counterpart to %s, %s/%s", gvk.String(), namespace, resourceName)
|
||||
return nil, nil
|
||||
}
|
||||
return nil, errors.WithStack(err)
|
||||
@@ -235,9 +250,19 @@ func isExcludedResourceGroup(resource metav1.APIResource) bool {
|
||||
return resource.Group == "servicecatalog.k8s.io"
|
||||
}
|
||||
|
||||
func WatchResourcesWithLabel(ctx context.Context, config *rest.Config, namespace string, labelName string) (chan watch.Event, error) {
|
||||
log.Infof("Start watching for resources changes with label %s in cluster %s", labelName, config.Host)
|
||||
dynClientPool := dynamic.NewDynamicClientPool(config)
|
||||
type apiResourceInterface struct {
|
||||
groupVersion string
|
||||
apiResource metav1.APIResource
|
||||
resourceIf dynamic.ResourceInterface
|
||||
}
|
||||
|
||||
type filterFunc func(groupVersion string, apiResource *metav1.APIResource) bool
|
||||
|
||||
func filterAPIResources(config *rest.Config, filter filterFunc, namespace string) ([]apiResourceInterface, error) {
|
||||
dynamicIf, err := dynamic.NewForConfig(config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
disco, err := discovery.NewDiscoveryClientForConfig(config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -246,41 +271,58 @@ func WatchResourcesWithLabel(ctx context.Context, config *rest.Config, namespace
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resources := make([]dynamic.ResourceInterface, 0)
|
||||
apiResIfs := make([]apiResourceInterface, 0)
|
||||
for _, apiResourcesList := range serverResources {
|
||||
for i := range apiResourcesList.APIResources {
|
||||
apiResource := apiResourcesList.APIResources[i]
|
||||
watchSupported := false
|
||||
for _, verb := range apiResource.Verbs {
|
||||
if verb == watchVerb {
|
||||
watchSupported = true
|
||||
break
|
||||
for _, apiResource := range apiResourcesList.APIResources {
|
||||
if filter(apiResourcesList.GroupVersion, &apiResource) {
|
||||
resource := ToGroupVersionResource(apiResourcesList.GroupVersion, &apiResource)
|
||||
resourceIf := ToResourceInterface(dynamicIf, &apiResource, resource, namespace)
|
||||
apiResIf := apiResourceInterface{
|
||||
groupVersion: apiResourcesList.GroupVersion,
|
||||
apiResource: apiResource,
|
||||
resourceIf: resourceIf,
|
||||
}
|
||||
}
|
||||
if watchSupported && !isExcludedResourceGroup(apiResource) {
|
||||
dclient, err := dynClientPool.ClientForGroupVersionKind(schema.FromAPIVersionAndKind(apiResourcesList.GroupVersion, apiResource.Kind))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resources = append(resources, dclient.Resource(&apiResource, namespace))
|
||||
apiResIfs = append(apiResIfs, apiResIf)
|
||||
}
|
||||
}
|
||||
}
|
||||
return apiResIfs, nil
|
||||
}
|
||||
|
||||
// isSupportedVerb returns whether or not a APIResource supports a specific verb
|
||||
func isSupportedVerb(apiResource *metav1.APIResource, verb string) bool {
|
||||
for _, v := range apiResource.Verbs {
|
||||
if v == verb {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func watchSupported(groupVersion string, apiResource *metav1.APIResource) bool {
|
||||
return isSupportedVerb(apiResource, watchVerb) && !isExcludedResourceGroup(*apiResource)
|
||||
}
|
||||
|
||||
func WatchResourcesWithLabel(ctx context.Context, config *rest.Config, namespace string, labelName string) (chan watch.Event, error) {
|
||||
log.Infof("Start watching for resources changes with label %s in cluster %s", labelName, config.Host)
|
||||
apiResIfs, err := filterAPIResources(config, watchSupported, namespace)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ch := make(chan watch.Event)
|
||||
go func() {
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(len(resources))
|
||||
for i := 0; i < len(resources); i++ {
|
||||
resource := resources[i]
|
||||
go func() {
|
||||
wg.Add(len(apiResIfs))
|
||||
for _, apiResIf := range apiResIfs {
|
||||
go func(resourceIf dynamic.ResourceInterface) {
|
||||
defer wg.Done()
|
||||
w, err := resource.Watch(metav1.ListOptions{LabelSelector: labelName})
|
||||
w, err := resourceIf.Watch(metav1.ListOptions{LabelSelector: labelName})
|
||||
if err == nil {
|
||||
defer w.Stop()
|
||||
copyEventsChannel(ctx, w.ResultChan(), ch)
|
||||
}
|
||||
}()
|
||||
}(apiResIf.resourceIf)
|
||||
}
|
||||
wg.Wait()
|
||||
close(ch)
|
||||
@@ -310,47 +352,23 @@ func copyEventsChannel(ctx context.Context, src <-chan watch.Event, dst chan wat
|
||||
|
||||
// GetResourcesWithLabel returns all kubernetes resources with specified label
|
||||
func GetResourcesWithLabel(config *rest.Config, namespace string, labelName string, labelValue string) ([]*unstructured.Unstructured, error) {
|
||||
dynClientPool := dynamic.NewDynamicClientPool(config)
|
||||
disco, err := discovery.NewDiscoveryClientForConfig(config)
|
||||
listSupported := func(groupVersion string, apiResource *metav1.APIResource) bool {
|
||||
return isSupportedVerb(apiResource, listVerb) && !isExcludedResourceGroup(*apiResource)
|
||||
}
|
||||
apiResIfs, err := filterAPIResources(config, listSupported, namespace)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resources, err := GetCachedServerResources(config.Host, disco)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var resourceInterfaces []dynamic.ResourceInterface
|
||||
|
||||
for _, apiResourcesList := range resources {
|
||||
for i := range apiResourcesList.APIResources {
|
||||
apiResource := apiResourcesList.APIResources[i]
|
||||
listSupported := false
|
||||
for _, verb := range apiResource.Verbs {
|
||||
if verb == listVerb {
|
||||
listSupported = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if listSupported && !isExcludedResourceGroup(apiResource) {
|
||||
dclient, err := dynClientPool.ClientForGroupVersionKind(schema.FromAPIVersionAndKind(apiResourcesList.GroupVersion, apiResource.Kind))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resourceInterfaces = append(resourceInterfaces, dclient.Resource(&apiResource, namespace))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var asyncErr error
|
||||
var result []*unstructured.Unstructured
|
||||
var wg sync.WaitGroup
|
||||
var lock sync.Mutex
|
||||
wg.Add(len(resourceInterfaces))
|
||||
for _, c := range resourceInterfaces {
|
||||
go func(client dynamic.ResourceInterface) {
|
||||
wg.Add(len(apiResIfs))
|
||||
for _, apiResIf := range apiResIfs {
|
||||
go func(resourceIf dynamic.ResourceInterface) {
|
||||
defer wg.Done()
|
||||
list, err := client.List(metav1.ListOptions{
|
||||
list, err := resourceIf.List(metav1.ListOptions{
|
||||
LabelSelector: fmt.Sprintf("%s=%s", labelName, labelValue),
|
||||
})
|
||||
if err != nil {
|
||||
@@ -360,8 +378,8 @@ func GetResourcesWithLabel(config *rest.Config, namespace string, labelName stri
|
||||
return
|
||||
}
|
||||
// apply client side filtering since not every kubernetes API supports label filtering
|
||||
for i := range list.(*unstructured.UnstructuredList).Items {
|
||||
item := list.(*unstructured.UnstructuredList).Items[i]
|
||||
for i := range list.Items {
|
||||
item := list.Items[i]
|
||||
labels := item.GetLabels()
|
||||
if labels != nil {
|
||||
if value, ok := labels[labelName]; ok && value == labelValue {
|
||||
@@ -371,86 +389,62 @@ func GetResourcesWithLabel(config *rest.Config, namespace string, labelName stri
|
||||
}
|
||||
}
|
||||
}
|
||||
}(c)
|
||||
}(apiResIf.resourceIf)
|
||||
}
|
||||
wg.Wait()
|
||||
return result, asyncErr
|
||||
}
|
||||
|
||||
// DeleteResourceWithLabel delete all resources which match to specified label selector
|
||||
func DeleteResourceWithLabel(config *rest.Config, namespace string, labelName string, labelValue string) error {
|
||||
dynClientPool := dynamic.NewDynamicClientPool(config)
|
||||
disco, err := discovery.NewDiscoveryClientForConfig(config)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
resources, err := GetCachedServerResources(config.Host, disco)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
type resClient struct {
|
||||
dynamic.ResourceInterface
|
||||
deleteCollectionSupported bool
|
||||
}
|
||||
var resourceInterfaces []resClient
|
||||
|
||||
for _, apiResourcesList := range resources {
|
||||
for i := range apiResourcesList.APIResources {
|
||||
apiResource := apiResourcesList.APIResources[i]
|
||||
deleteCollectionSupported := false
|
||||
deleteSupported := false
|
||||
for _, verb := range apiResource.Verbs {
|
||||
if verb == deleteCollectionVerb {
|
||||
deleteCollectionSupported = true
|
||||
} else if verb == deleteVerb {
|
||||
deleteSupported = true
|
||||
}
|
||||
}
|
||||
dclient, err := dynClientPool.ClientForGroupVersionKind(schema.FromAPIVersionAndKind(apiResourcesList.GroupVersion, apiResource.Kind))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if (deleteCollectionSupported || deleteSupported) &&
|
||||
!IsCRDGroupVersionKind(schema.FromAPIVersionAndKind(apiResourcesList.GroupVersion, apiResource.Kind)) &&
|
||||
!isExcludedResourceGroup(apiResource) {
|
||||
resourceInterfaces = append(resourceInterfaces, resClient{
|
||||
dclient.Resource(&apiResource, namespace),
|
||||
deleteCollectionSupported,
|
||||
})
|
||||
// DeleteResourcesWithLabel delete all resources which match to specified label selector
|
||||
func DeleteResourcesWithLabel(config *rest.Config, namespace string, labelName string, labelValue string) error {
|
||||
deleteSupported := func(groupVersion string, apiResource *metav1.APIResource) bool {
|
||||
if !isSupportedVerb(apiResource, deleteCollectionVerb) {
|
||||
// if we can't delete by collection, we better be able to list and delete
|
||||
if !isSupportedVerb(apiResource, listVerb) || !isSupportedVerb(apiResource, deleteVerb) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
if isExcludedResourceGroup(*apiResource) {
|
||||
return false
|
||||
}
|
||||
if IsCRDGroupVersionKind(schema.FromAPIVersionAndKind(groupVersion, apiResource.Kind)) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
apiResIfs, err := filterAPIResources(config, deleteSupported, namespace)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var asyncErr error
|
||||
propagationPolicy := metav1.DeletePropagationForeground
|
||||
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(len(resourceInterfaces))
|
||||
|
||||
for _, c := range resourceInterfaces {
|
||||
go func(client resClient) {
|
||||
wg.Add(len(apiResIfs))
|
||||
for _, a := range apiResIfs {
|
||||
go func(apiResIf apiResourceInterface) {
|
||||
defer wg.Done()
|
||||
if client.deleteCollectionSupported {
|
||||
err = client.DeleteCollection(&metav1.DeleteOptions{
|
||||
deleteCollectionSupported := isSupportedVerb(&apiResIf.apiResource, deleteCollectionVerb)
|
||||
resourceIf := apiResIf.resourceIf
|
||||
if deleteCollectionSupported {
|
||||
err = resourceIf.DeleteCollection(&metav1.DeleteOptions{
|
||||
PropagationPolicy: &propagationPolicy,
|
||||
}, metav1.ListOptions{LabelSelector: fmt.Sprintf("%s=%s", labelName, labelValue)})
|
||||
if err != nil && !apierr.IsNotFound(err) {
|
||||
asyncErr = err
|
||||
}
|
||||
} else {
|
||||
items, err := client.List(metav1.ListOptions{LabelSelector: fmt.Sprintf("%s=%s", labelName, labelValue)})
|
||||
items, err := resourceIf.List(metav1.ListOptions{LabelSelector: fmt.Sprintf("%s=%s", labelName, labelValue)})
|
||||
if err != nil {
|
||||
asyncErr = err
|
||||
return
|
||||
}
|
||||
for _, item := range items.(*unstructured.UnstructuredList).Items {
|
||||
for _, item := range items.Items {
|
||||
// apply client side filtering since not every kubernetes API supports label filtering
|
||||
labels := item.GetLabels()
|
||||
if labels != nil {
|
||||
if value, ok := labels[labelName]; ok && value == labelValue {
|
||||
err = client.Delete(item.GetName(), &metav1.DeleteOptions{
|
||||
err = resourceIf.Delete(item.GetName(), &metav1.DeleteOptions{
|
||||
PropagationPolicy: &propagationPolicy,
|
||||
})
|
||||
if err != nil && !apierr.IsNotFound(err) {
|
||||
@@ -461,7 +455,7 @@ func DeleteResourceWithLabel(config *rest.Config, namespace string, labelName st
|
||||
}
|
||||
}
|
||||
}
|
||||
}(c)
|
||||
}(a)
|
||||
}
|
||||
wg.Wait()
|
||||
return asyncErr
|
||||
@@ -487,8 +481,10 @@ type listResult struct {
|
||||
}
|
||||
|
||||
// ListResources returns a list of resources of a particular API type using the dynamic client
|
||||
func ListResources(dclient dynamic.Interface, apiResource metav1.APIResource, namespace string, listOpts metav1.ListOptions) ([]*unstructured.Unstructured, error) {
|
||||
reIf := dclient.Resource(&apiResource, namespace)
|
||||
func ListResources(dynamicIf dynamic.Interface, apiResource metav1.APIResource, namespace string, listOpts metav1.ListOptions) ([]*unstructured.Unstructured, error) {
|
||||
gvk := schema.FromAPIVersionAndKind(apiResource.Version, apiResource.Kind)
|
||||
resource := ToGroupVersionResource(gvk.GroupVersion().String(), &apiResource)
|
||||
reIf := ToResourceInterface(dynamicIf, &apiResource, resource, namespace)
|
||||
liveObjs, err := reIf.List(listOpts)
|
||||
if err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
@@ -526,7 +522,13 @@ func cleanKubectlOutput(s string) string {
|
||||
|
||||
// WriteKubeConfig takes a rest.Config and writes it as a kubeconfig at the specified path
|
||||
func WriteKubeConfig(restConfig *rest.Config, namespace, filename string) error {
|
||||
var kubeConfig = clientcmdapi.Config{
|
||||
kubeConfig := NewKubeConfig(restConfig, namespace)
|
||||
return clientcmd.WriteToFile(*kubeConfig, filename)
|
||||
}
|
||||
|
||||
// NewKubeConfig converts a clientcmdapi.Config (kubeconfig) from a rest.Config
|
||||
func NewKubeConfig(restConfig *rest.Config, namespace string) *clientcmdapi.Config {
|
||||
return &clientcmdapi.Config{
|
||||
CurrentContext: restConfig.Host,
|
||||
Contexts: map[string]*clientcmdapi.Context{
|
||||
restConfig.Host: {
|
||||
@@ -537,49 +539,62 @@ func WriteKubeConfig(restConfig *rest.Config, namespace, filename string) error
|
||||
},
|
||||
Clusters: map[string]*clientcmdapi.Cluster{
|
||||
restConfig.Host: {
|
||||
Server: restConfig.Host,
|
||||
Server: restConfig.Host,
|
||||
InsecureSkipTLSVerify: restConfig.TLSClientConfig.Insecure,
|
||||
CertificateAuthority: restConfig.TLSClientConfig.CAFile,
|
||||
CertificateAuthorityData: restConfig.TLSClientConfig.CAData,
|
||||
},
|
||||
},
|
||||
AuthInfos: map[string]*clientcmdapi.AuthInfo{
|
||||
restConfig.Host: {},
|
||||
restConfig.Host: newAuthInfo(restConfig),
|
||||
},
|
||||
}
|
||||
// Set Cluster info
|
||||
if restConfig.TLSClientConfig.Insecure {
|
||||
kubeConfig.Clusters[restConfig.Host].InsecureSkipTLSVerify = true
|
||||
}
|
||||
if restConfig.TLSClientConfig.CAFile != "" {
|
||||
kubeConfig.Clusters[restConfig.Host].CertificateAuthority = restConfig.TLSClientConfig.CAFile
|
||||
}
|
||||
// Set AuthInfo
|
||||
if len(restConfig.TLSClientConfig.CAData) > 0 {
|
||||
kubeConfig.Clusters[restConfig.Host].CertificateAuthorityData = restConfig.TLSClientConfig.CAData
|
||||
}
|
||||
}
|
||||
|
||||
// newAuthInfo returns an AuthInfo from a rest config, detecting if the rest.Config is an
|
||||
// in-cluster config and automatically setting the token path appropriately.
|
||||
func newAuthInfo(restConfig *rest.Config) *clientcmdapi.AuthInfo {
|
||||
authInfo := clientcmdapi.AuthInfo{}
|
||||
haveCredentials := false
|
||||
if restConfig.TLSClientConfig.CertFile != "" {
|
||||
kubeConfig.AuthInfos[restConfig.Host].ClientCertificate = restConfig.TLSClientConfig.CertFile
|
||||
authInfo.ClientCertificate = restConfig.TLSClientConfig.CertFile
|
||||
haveCredentials = true
|
||||
}
|
||||
if len(restConfig.TLSClientConfig.CertData) > 0 {
|
||||
kubeConfig.AuthInfos[restConfig.Host].ClientCertificateData = restConfig.TLSClientConfig.CertData
|
||||
authInfo.ClientCertificateData = restConfig.TLSClientConfig.CertData
|
||||
haveCredentials = true
|
||||
}
|
||||
if restConfig.TLSClientConfig.KeyFile != "" {
|
||||
kubeConfig.AuthInfos[restConfig.Host].ClientKey = restConfig.TLSClientConfig.KeyFile
|
||||
authInfo.ClientKey = restConfig.TLSClientConfig.KeyFile
|
||||
haveCredentials = true
|
||||
}
|
||||
if len(restConfig.TLSClientConfig.KeyData) > 0 {
|
||||
kubeConfig.AuthInfos[restConfig.Host].ClientKeyData = restConfig.TLSClientConfig.KeyData
|
||||
authInfo.ClientKeyData = restConfig.TLSClientConfig.KeyData
|
||||
haveCredentials = true
|
||||
}
|
||||
if restConfig.Username != "" {
|
||||
kubeConfig.AuthInfos[restConfig.Host].Username = restConfig.Username
|
||||
authInfo.Username = restConfig.Username
|
||||
haveCredentials = true
|
||||
}
|
||||
if restConfig.Password != "" {
|
||||
kubeConfig.AuthInfos[restConfig.Host].Password = restConfig.Password
|
||||
authInfo.Password = restConfig.Password
|
||||
haveCredentials = true
|
||||
}
|
||||
if restConfig.BearerToken != "" {
|
||||
kubeConfig.AuthInfos[restConfig.Host].Token = restConfig.BearerToken
|
||||
authInfo.Token = restConfig.BearerToken
|
||||
haveCredentials = true
|
||||
}
|
||||
if restConfig.ExecProvider != nil {
|
||||
kubeConfig.AuthInfos[restConfig.Host].Exec = restConfig.ExecProvider
|
||||
authInfo.Exec = restConfig.ExecProvider
|
||||
haveCredentials = true
|
||||
}
|
||||
return clientcmd.WriteToFile(kubeConfig, filename)
|
||||
if restConfig.ExecProvider == nil && !haveCredentials {
|
||||
// If no credentials were set (or there was no exec provider), we assume in-cluster config.
|
||||
// In-cluster configs from the go-client will no longer set bearer tokens, so we set the
|
||||
// well known token path. See issue #774
|
||||
authInfo.TokenFile = "/var/run/secrets/kubernetes.io/serviceaccount/token"
|
||||
}
|
||||
return &authInfo
|
||||
}
|
||||
|
||||
var diffSeparator = regexp.MustCompile(`\n---`)
|
||||
|
||||
@@ -18,7 +18,9 @@ import (
|
||||
fakediscovery "k8s.io/client-go/discovery/fake"
|
||||
fakedynamic "k8s.io/client-go/dynamic/fake"
|
||||
"k8s.io/client-go/kubernetes/fake"
|
||||
"k8s.io/client-go/rest"
|
||||
kubetesting "k8s.io/client-go/testing"
|
||||
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||
|
||||
"github.com/argoproj/argo-cd/common"
|
||||
argoappv1 "github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1"
|
||||
@@ -100,8 +102,8 @@ func TestGetLiveResource(t *testing.T) {
|
||||
assert.True(t, ok)
|
||||
fakeDiscovery.Fake.Resources = resourceList()
|
||||
|
||||
fakeDynClient := fakedynamic.FakeClient{
|
||||
Fake: &kubetesting.Fake{},
|
||||
fakeDynClient := fakedynamic.FakeDynamicClient{
|
||||
Fake: kubetesting.Fake{},
|
||||
}
|
||||
fakeDynClient.Fake.AddReactor("get", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) {
|
||||
svc, err := kubeclientset.CoreV1().Services(test.TestNamespace).Get(demoSvc.Name, metav1.GetOptions{})
|
||||
@@ -119,8 +121,8 @@ func TestGetLiveResource(t *testing.T) {
|
||||
|
||||
func TestListResources(t *testing.T) {
|
||||
kubeclientset := fake.NewSimpleClientset(test.DemoService(), test.DemoDeployment())
|
||||
fakeDynClient := fakedynamic.FakeClient{
|
||||
Fake: &kubetesting.Fake{},
|
||||
fakeDynClient := fakedynamic.FakeDynamicClient{
|
||||
Fake: kubetesting.Fake{},
|
||||
}
|
||||
fakeDynClient.Fake.AddReactor("list", "services", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) {
|
||||
svcList, err := kubeclientset.CoreV1().Services(test.TestNamespace).List(metav1.ListOptions{})
|
||||
@@ -304,3 +306,24 @@ spec:
|
||||
assert.Equal(t, float64(0.2), requestsBefore["cpu"])
|
||||
assert.Equal(t, "200m", requestsAfter["cpu"])
|
||||
}
|
||||
|
||||
func TestInClusterKubeConfig(t *testing.T) {
|
||||
restConfig := &rest.Config{}
|
||||
kubeConfig := NewKubeConfig(restConfig, "")
|
||||
assert.NotEmpty(t, kubeConfig.AuthInfos[kubeConfig.CurrentContext].TokenFile)
|
||||
|
||||
restConfig = &rest.Config{
|
||||
Password: "foo",
|
||||
}
|
||||
kubeConfig = NewKubeConfig(restConfig, "")
|
||||
assert.Empty(t, kubeConfig.AuthInfos[kubeConfig.CurrentContext].TokenFile)
|
||||
|
||||
restConfig = &rest.Config{
|
||||
ExecProvider: &clientcmdapi.ExecConfig{
|
||||
APIVersion: "client.authentication.k8s.io/v1alpha1",
|
||||
Command: "aws-iam-authenticator",
|
||||
},
|
||||
}
|
||||
kubeConfig = NewKubeConfig(restConfig, "")
|
||||
assert.Empty(t, kubeConfig.AuthInfos[kubeConfig.CurrentContext].TokenFile)
|
||||
}
|
||||
|
||||
@@ -160,7 +160,29 @@ func (mgr *SessionManager) VerifyToken(tokenString string) (jwt.Claims, error) {
|
||||
verifier := provider.Verifier(&oidc.Config{ClientID: claims.Audience})
|
||||
idToken, err := verifier.Verify(context.Background(), tokenString)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
// HACK: if we failed token verification, it's possible the reason was because dex
|
||||
// restarted and has new JWKS signing keys (we do not back dex with persistent storage
|
||||
// so keys might be regenerated). Detect this by:
|
||||
// 1. looking for the specific error message
|
||||
// 2. re-initializing the OIDC provider
|
||||
// 3. re-attempting token verification
|
||||
// NOTE: the error message is sensitive to implementation of verifier.Verify()
|
||||
if !strings.Contains(err.Error(), "failed to verify signature") {
|
||||
return nil, err
|
||||
}
|
||||
provider, retryErr := mgr.initializeOIDCProvider()
|
||||
if retryErr != nil {
|
||||
// return original error if we fail to re-initialize OIDC
|
||||
return nil, err
|
||||
}
|
||||
verifier = provider.Verifier(&oidc.Config{ClientID: claims.Audience})
|
||||
idToken, err = verifier.Verify(context.Background(), tokenString)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// If we get here, we successfully re-initialized OIDC and after re-initialization,
|
||||
// the token is now valid.
|
||||
log.Info("New OIDC settings detected")
|
||||
}
|
||||
var claims jwt.MapClaims
|
||||
err = idToken.Claims(&claims)
|
||||
@@ -168,6 +190,7 @@ func (mgr *SessionManager) VerifyToken(tokenString string) (jwt.Claims, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// Username is a helper to extract a human readable username from a context
|
||||
func Username(ctx context.Context) string {
|
||||
claims, ok := ctx.Value("claims").(jwt.Claims)
|
||||
if !ok {
|
||||
@@ -194,8 +217,7 @@ func MakeCookieMetadata(key, value string, flags ...string) string {
|
||||
return strings.Join(components, "; ")
|
||||
}
|
||||
|
||||
// OIDCProvider lazily initializes and returns the OIDC provider, querying the well known oidc
|
||||
// configuration path (http://example-argocd.com/api/dex/.well-known/openid-configuration).
|
||||
// OIDCProvider lazily initializes, memoizes, and returns the OIDC provider.
|
||||
// We have to initialize the provider lazily since ArgoCD is an OIDC client to itself, which
|
||||
// presents a chicken-and-egg problem of (1) serving dex over HTTP, and (2) querying the OIDC
|
||||
// provider (ourselves) to initialize the app.
|
||||
@@ -203,6 +225,12 @@ func (mgr *SessionManager) OIDCProvider() (*oidc.Provider, error) {
|
||||
if mgr.provider != nil {
|
||||
return mgr.provider, nil
|
||||
}
|
||||
return mgr.initializeOIDCProvider()
|
||||
}
|
||||
|
||||
// initializeOIDCProvider re-initializes the OIDC provider, querying the well known oidc
|
||||
// configuration path (http://example-argocd.com/api/dex/.well-known/openid-configuration)
|
||||
func (mgr *SessionManager) initializeOIDCProvider() (*oidc.Provider, error) {
|
||||
if !mgr.settings.IsSSOConfigured() {
|
||||
return nil, fmt.Errorf("SSO is not configured")
|
||||
}
|
||||
@@ -213,7 +241,6 @@ func (mgr *SessionManager) OIDCProvider() (*oidc.Provider, error) {
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Failed to query provider %q: %v", issuerURL, err)
|
||||
}
|
||||
|
||||
// Returns the scopes the provider supports
|
||||
// See: https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata
|
||||
var s struct {
|
||||
@@ -223,24 +250,27 @@ func (mgr *SessionManager) OIDCProvider() (*oidc.Provider, error) {
|
||||
return nil, fmt.Errorf("Failed to parse provider scopes_supported: %v", err)
|
||||
}
|
||||
log.Infof("OpenID supported scopes: %v", s.ScopesSupported)
|
||||
offlineAsScope := false
|
||||
if len(s.ScopesSupported) == 0 {
|
||||
// scopes_supported is a "RECOMMENDED" discovery claim, not a required
|
||||
// one. If missing, assume that the provider follows the spec and has
|
||||
// an "offline_access" scope.
|
||||
mgr.offlineAsScope = true
|
||||
offlineAsScope = true
|
||||
} else {
|
||||
// See if scopes_supported has the "offline_access" scope.
|
||||
for _, scope := range s.ScopesSupported {
|
||||
if scope == oidc.ScopeOfflineAccess {
|
||||
mgr.offlineAsScope = true
|
||||
offlineAsScope = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
mgr.provider = provider
|
||||
mgr.offlineAsScope = offlineAsScope
|
||||
return mgr.provider, nil
|
||||
}
|
||||
|
||||
// OfflineAsScope returns whether or not the OIDC provider supports offline as a scope
|
||||
func (mgr *SessionManager) OfflineAsScope() bool {
|
||||
_, _ = mgr.OIDCProvider() // forces offlineAsScope to be determined
|
||||
return mgr.offlineAsScope
|
||||
|
||||
Reference in New Issue
Block a user