From 778607958f9229975de7b9aa98b669302a9109de Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Thu, 22 Apr 2021 22:25:54 -0700 Subject: [PATCH 01/21] =?UTF-8?q?=E2=9C=A8=20Add=20support=20for=20generat?= =?UTF-8?q?ing=20based=20on=20scraping=20the=20Github=20API.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Includes general support for repo hosts and a specific implementation for Github. --- api/v1alpha1/applicationset_types.go | 45 +- api/v1alpha1/zz_generated.deepcopy.go | 103 ++++ go.mod | 3 + go.sum | 130 +++++ main.go | 1 + .../crds/argoproj.io_applicationsets.yaml | 446 ++++++++++++++++++ pkg/controllers/applicationset_controller.go | 2 +- .../applicationset_controller_test.go | 2 +- pkg/generators/cluster.go | 2 +- pkg/generators/cluster_test.go | 2 +- pkg/generators/git.go | 2 +- pkg/generators/git_test.go | 4 +- pkg/generators/interface.go | 2 +- pkg/generators/list.go | 2 +- pkg/generators/list_test.go | 2 +- pkg/generators/repo_host.go | 114 +++++ pkg/generators/repo_host_test.go | 74 +++ pkg/services/repo_host/github.go | 77 +++ pkg/services/repo_host/github_test.go | 40 ++ pkg/services/repo_host/mock.go | 17 + pkg/services/repo_host/types.go | 27 ++ pkg/services/repo_host/utils.go | 87 ++++ pkg/services/repo_host/utils_test.go | 130 +++++ 23 files changed, 1301 insertions(+), 13 deletions(-) create mode 100644 pkg/generators/repo_host.go create mode 100644 pkg/generators/repo_host_test.go create mode 100644 pkg/services/repo_host/github.go create mode 100644 pkg/services/repo_host/github_test.go create mode 100644 pkg/services/repo_host/mock.go create mode 100644 pkg/services/repo_host/types.go create mode 100644 pkg/services/repo_host/utils.go create mode 100644 pkg/services/repo_host/utils_test.go diff --git a/api/v1alpha1/applicationset_types.go b/api/v1alpha1/applicationset_types.go index 07ec1479..1ff9f4d6 100644 --- a/api/v1alpha1/applicationset_types.go +++ b/api/v1alpha1/applicationset_types.go @@ -21,6 +21,12 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) +// Utility struct for a reference to a secret key. +type SecretRef struct { + Name string `json:"name"` + Key string `json:"key"` +} + // ApplicationSet is a set of Application resources // +kubebuilder:object:root=true // +kubebuilder:resource:path=applicationsets,shortName=appset;appsets @@ -63,9 +69,10 @@ type ApplicationSetTemplateMeta struct { // ApplicationSetGenerator include list item info type ApplicationSetGenerator struct { - List *ListGenerator `json:"list,omitempty"` - Clusters *ClusterGenerator `json:"clusters,omitempty"` - Git *GitGenerator `json:"git,omitempty"` + List *ListGenerator `json:"list,omitempty"` + Clusters *ClusterGenerator `json:"clusters,omitempty"` + Git *GitGenerator `json:"git,omitempty"` + RepoHost *RepoHostGenerator `json:"repoHost,omitempty"` } // ListGenerator include items info @@ -112,6 +119,38 @@ type GitFileGeneratorItem struct { Path string `json:"path"` } +// RepoHostGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. +type RepoHostGenerator struct { + // Which provider to use and config for it. + Github *RepoHostGeneratorGithub `json:"github,omitempty"` + // TODO other providers. + // Filters for which repos should be considered. + Filters []RepoHostGeneratorFilter `json:"filters,omitempty"` + // Standard parameters. + RequeueAfterSeconds *int64 `json:"requeueAfterSeconds,omitempty"` + Template ApplicationSetTemplate `json:"template,omitempty"` +} + +// RepoHostGeneratorGithub defines a connection info specific to Github. +type RepoHostGeneratorGithub struct { + // Github org to scan. Required. + Organization string `json:"organization"` + // The Github API URL to talk to. If blank, use https://api.github.com/. + API string `json:"api,omitempty"` + // Authentication token reference. + TokenRef *SecretRef `json:"tokenRef,omitempty"` +} + +// RepoHostGeneratorFilter is a single repoisitory filter. +type RepoHostGeneratorFilter struct { + // A regex for repo names. + RepositoryMatch *string `json:"repositoryMatch,omitempty"` + // A path which must exist. + PathExists *string `json:"pathExists,omitempty"` + // A regex which must match at least one label. + LabelMatch *string `json:"labelMatch,omitempty"` +} + // ApplicationSetStatus defines the observed state of ApplicationSet type ApplicationSetStatus struct { // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 4353e89e..d61561d0 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -69,6 +69,11 @@ func (in *ApplicationSetGenerator) DeepCopyInto(out *ApplicationSetGenerator) { *out = new(GitGenerator) (*in).DeepCopyInto(*out) } + if in.RepoHost != nil { + in, out := &in.RepoHost, &out.RepoHost + *out = new(RepoHostGenerator) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetGenerator. @@ -346,3 +351,101 @@ func (in *ListGeneratorElement) DeepCopy() *ListGeneratorElement { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RepoHostGenerator) DeepCopyInto(out *RepoHostGenerator) { + *out = *in + if in.Github != nil { + in, out := &in.Github, &out.Github + *out = new(RepoHostGeneratorGithub) + (*in).DeepCopyInto(*out) + } + if in.Filters != nil { + in, out := &in.Filters, &out.Filters + *out = make([]RepoHostGeneratorFilter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RequeueAfterSeconds != nil { + in, out := &in.RequeueAfterSeconds, &out.RequeueAfterSeconds + *out = new(int64) + **out = **in + } + in.Template.DeepCopyInto(&out.Template) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepoHostGenerator. +func (in *RepoHostGenerator) DeepCopy() *RepoHostGenerator { + if in == nil { + return nil + } + out := new(RepoHostGenerator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RepoHostGeneratorFilter) DeepCopyInto(out *RepoHostGeneratorFilter) { + *out = *in + if in.RepositoryMatch != nil { + in, out := &in.RepositoryMatch, &out.RepositoryMatch + *out = new(string) + **out = **in + } + if in.PathExists != nil { + in, out := &in.PathExists, &out.PathExists + *out = new(string) + **out = **in + } + if in.LabelMatch != nil { + in, out := &in.LabelMatch, &out.LabelMatch + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepoHostGeneratorFilter. +func (in *RepoHostGeneratorFilter) DeepCopy() *RepoHostGeneratorFilter { + if in == nil { + return nil + } + out := new(RepoHostGeneratorFilter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RepoHostGeneratorGithub) DeepCopyInto(out *RepoHostGeneratorGithub) { + *out = *in + if in.TokenRef != nil { + in, out := &in.TokenRef, &out.TokenRef + *out = new(SecretRef) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepoHostGeneratorGithub. +func (in *RepoHostGeneratorGithub) DeepCopy() *RepoHostGeneratorGithub { + if in == nil { + return nil + } + out := new(RepoHostGeneratorGithub) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretRef) DeepCopyInto(out *SecretRef) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretRef. +func (in *SecretRef) DeepCopy() *SecretRef { + if in == nil { + return nil + } + out := new(SecretRef) + in.DeepCopyInto(out) + return out +} diff --git a/go.mod b/go.mod index 4e9ff036..cb9d0064 100644 --- a/go.mod +++ b/go.mod @@ -7,12 +7,15 @@ require ( github.com/argoproj/gitops-engine v0.2.1 github.com/argoproj/pkg v0.2.0 github.com/go-logr/logr v0.3.0 + github.com/google/go-github/v35 v35.0.0 // indirect github.com/imdario/mergo v0.3.10 github.com/jeremywohl/flatten v1.0.1 github.com/pkg/errors v0.9.1 github.com/sirupsen/logrus v1.6.0 github.com/stretchr/testify v1.6.1 github.com/valyala/fasttemplate v1.2.1 + golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78 // indirect + google.golang.org/grpc v1.31.0 // indirect k8s.io/api v0.19.2 k8s.io/apimachinery v0.19.2 k8s.io/client-go v11.0.1-0.20190816222228-6d55c1b1f1ca+incompatible diff --git a/go.sum b/go.sum index c35e6a2c..11048f59 100644 --- a/go.sum +++ b/go.sum @@ -7,12 +7,34 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go v0.51.0 h1:PvKAVQWCtlGUSlZkGW3QLelKaWq7KYv/MW1EboG8bfM= cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v43.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= @@ -226,6 +248,7 @@ github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0 github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-acme/lego v2.5.0+incompatible/go.mod h1:yzMNe9CasVUhkquNvti5nAtPmG94USbYxYrZfTkIn0M= github.com/go-bindata/go-bindata v3.1.1+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.9.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= @@ -321,10 +344,15 @@ github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= @@ -342,18 +370,29 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-github/v35 v35.0.0 h1:oLrHdYkSQvbhN4gJihpEkTFKAZnIFgTCj1p/OlE4Os4= +github.com/google/go-github/v35 v35.0.0/go.mod h1:s0515YVTI+IMrDoy9Y4pHt9ShGpzHvHO8rZ7L7acgvs= github.com/google/go-jsonnet v0.17.0 h1:/9NIEfhK1NQRKl3sP2536b2+x5HnZMdql7x3yK/l8JY= github.com/google/go-jsonnet v0.17.0/go.mod h1:sOcuej3UW1vpPTZOr8L7RQimqai1a57bt5j22LzGZCw= +github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= @@ -689,7 +728,9 @@ github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0B github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/gopher-lua v0.0.0-20190115140932-732aa6820ec4 h1:1yOVVSFiradDwXpgdkDjlGOcGJqcohH/W49Zn8Ywgco= github.com/yuin/gopher-lua v0.0.0-20190115140932-732aa6820ec4/go.mod h1:fFiAh+CowNFr0NK5VASokuwKwkbacRmHsVA7Yb1Tqac= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -703,6 +744,8 @@ go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qL go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opentelemetry.io/otel v0.13.0 h1:2isEnyzjjJZq6r2EKMsFj4TxiQiexsM04AVhwbR/oBA= go.opentelemetry.io/otel v0.13.0/go.mod h1:dlSNewoRYikTkotEnxdmuBHgzT+k/idJSfDv/FxEnOY= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -745,7 +788,12 @@ golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200821190819-94841d0725da h1:vfV2BR+q1+/jmgJR30Ms3RHbryruQ3Yd83lLAAue9cs= golang.org/x/exp v0.0.0-20200821190819-94841d0725da/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= @@ -760,6 +808,8 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -787,6 +837,7 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -795,11 +846,19 @@ golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201022231255-08b38378de70/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201024042810-be3efd7ff127 h1:pZPp9+iYUqwYKLjht0SDBbRCRK/9gAXDy7pz5fRDpjo= @@ -809,12 +868,16 @@ golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78 h1:rPRtHfUb0UKZeZ6GH4K4Nt4YRbE9V1u+QZX5upZXqJQ= +golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= @@ -853,22 +916,32 @@ golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200327173247-9dae0f8f5775/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4 h1:5/PjkGUjvEU5Gl6BxmvKRPpqo2uNMv4rcHBMwzk/st8= golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -910,16 +983,38 @@ golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 h1:HHeAlu5H9b71C+Fx0K+1dGgVFN1DM1/wz4aoGOA5qS8= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.1.0 h1:Phva6wqu+xR//Njw6iorylFFgn/z547tw5Ne3HZPQ+k= gomodules.xyz/jsonpatch/v2 v2.1.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= @@ -932,9 +1027,20 @@ google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEt google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.1-0.20200106000736-b8fc810ca6b5/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.1/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -952,12 +1058,32 @@ google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987 h1:PDIOdWxZ8eRizhKa1AAvY53xsvLB1cWorMjslvY3VA8= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.15.0 h1:Az/KuahOM4NAidTEuJCv/RonAA7rYsTPkqXVjr+8OOw= google.golang.org/grpc v1.15.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= @@ -1017,6 +1143,8 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.19.2 h1:q+/krnHWKsL7OBZg/rxnycsl9569Pud76UJ77MvKXms= k8s.io/api v0.19.2/go.mod h1:IQpK0zFQ1xc5iNIQPqzgoOwuFugaYHK4iCknlAQP9nI= k8s.io/apiextensions-apiserver v0.19.2 h1:oG84UwiDsVDu7dlsGQs5GySmQHCzMhknfhFExJMz9tA= @@ -1077,6 +1205,8 @@ modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0= sigs.k8s.io/controller-runtime v0.7.0 h1:bU20IBBEPccWz5+zXpLnpVsgBYxqclaHu1pVDl/gEt8= sigs.k8s.io/controller-runtime v0.7.0/go.mod h1:pJ3YBrJiAqMAZKi6UVGuE98ZrroV1p+pIhoHsMm9wdU= diff --git a/main.go b/main.go index 6adda406..fec777f1 100644 --- a/main.go +++ b/main.go @@ -139,6 +139,7 @@ func main() { "List": generators.NewListGenerator(), "Clusters": generators.NewClusterGenerator(mgr.GetClient(), context.Background(), k8s, namespace), "Git": generators.NewGitGenerator(services.NewArgoCDService(argoCDDB, argocdRepoServer)), + "RepoHost": generators.NewRepoHostGenerator(mgr.GetClient()), }, Client: mgr.GetClient(), Log: ctrl.Log.WithName("controllers").WithName("ApplicationSet"), diff --git a/manifests/crds/argoproj.io_applicationsets.yaml b/manifests/crds/argoproj.io_applicationsets.yaml index a5402450..70592ffa 100644 --- a/manifests/crds/argoproj.io_applicationsets.yaml +++ b/manifests/crds/argoproj.io_applicationsets.yaml @@ -1344,6 +1344,452 @@ spec: required: - elements type: object + repoHost: + description: RepoHostGenerator defines a generator that scrapes + a SCMaaS API to find candidate repos. + properties: + filters: + description: TODO other providers. Filters for which repos + should be considered. + items: + description: RepoHostGeneratorFilter is a single repoisitory + filter. + properties: + labelMatch: + description: A regex which must match at least one + label. + type: string + pathExists: + description: A path which must exist. + type: string + repositoryMatch: + description: A regex for repo names. + type: string + type: object + type: array + github: + description: Which provider to use and config for it. + properties: + api: + description: The Github API URL to talk to. If blank, + use https://api.github.com/. + type: string + organization: + description: Github org to scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + name: + type: string + required: + - key + - name + type: object + required: + - organization + type: object + requeueAfterSeconds: + description: Standard parameters. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents the + Argo CD application fields that may be used for Applications + generated from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec represents desired application + state. Contains link to repository with application + definition and additional parameters link definition + revision. + properties: + destination: + description: Destination overrides the kubernetes + server and namespace defined in the environment + ksonnet app.yaml + properties: + name: + description: Name of the destination cluster + which can be used instead of server (url) + field + type: string + namespace: + description: Namespace overrides the environment + namespace value in the ksonnet app.yaml + type: string + server: + description: Server overrides the environment + server value in the ksonnet app.yaml + type: string + type: object + ignoreDifferences: + description: IgnoreDifferences controls resources + fields which should be ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with live + state. + properties: + group: + type: string + jsonPointers: + items: + type: string + type: array + kind: + type: string + name: + type: string + namespace: + type: string + required: + - jsonPointers + - kind + type: object + type: array + info: + description: Infos contains a list of useful information + (URLs, email addresses, and plain text) that relates + to the application + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a application project name. + Empty name means that application belongs to 'default' + project. + type: string + revisionHistoryLimit: + description: This limits this number of items kept + in the apps revision history. This should only + be changed in exceptional circumstances. Setting + to zero will store no history. This will reduce + storage used. Increasing will increase the space + used to store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: Source is a reference to the location + ksonnet application definition + properties: + chart: + description: Chart is a Helm chart name + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + type: string + jsonnet: + description: ApplicationSourceJsonnet holds + jsonnet specific options + properties: + extVars: + description: ExtVars is a list of Jsonnet + External Variables + items: + description: JsonnetVar is a jsonnet + variable + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library search + dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar is a jsonnet + variable + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file parameters + to the helm template + items: + description: HelmFileParameter is a file + parameter to a helm template + properties: + name: + description: Name is the name of the + helm parameter + type: string + path: + description: Path is the path value + for the helm parameter + type: string + type: object + type: array + parameters: + description: Parameters are parameters to + the helm template + items: + description: HelmParameter is a parameter + to a helm template + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name of the + helm parameter + type: string + value: + description: Value is the value for + the helm parameter + type: string + type: object + type: array + releaseName: + description: The Helm release name. If omitted + it will use the application name + type: string + valueFiles: + description: ValuesFiles is a list of Helm + value files to use when generating a template + items: + type: string + type: array + values: + description: Values is Helm values, typically + defined as a block + type: string + version: + description: Version is the Helm version + to use for templating with + type: string + type: object + ksonnet: + description: Ksonnet holds ksonnet specific + options + properties: + environment: + description: Environment is a ksonnet application + environment name + type: string + parameters: + description: Parameters are a list of ksonnet + component parameter override values + items: + description: KsonnetParameter is a ksonnet + component parameter + properties: + component: + type: string + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations adds additional + kustomize commonAnnotations + type: object + commonLabels: + additionalProperties: + type: string + description: CommonLabels adds additional + kustomize commonLabels + type: object + images: + description: Images are kustomize image + overrides + items: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix appended + to resources for kustomize apps + type: string + nameSuffix: + description: NameSuffix is a suffix appended + to resources for kustomize apps + type: string + version: + description: Version contains optional Kustomize + version + type: string + type: object + path: + description: Path is a directory path within + the Git repository + type: string + plugin: + description: ConfigManagementPlugin holds config + management plugin specific options + properties: + env: + items: + properties: + name: + description: the name, usually uppercase + type: string + value: + description: the value + type: string + required: + - name + - value + type: object + type: array + name: + type: string + type: object + repoURL: + description: RepoURL is the repository URL of + the application manifests + type: string + targetRevision: + description: TargetRevision defines the commit, + tag, or branch in which to sync the application + to. If omitted, will sync to HEAD + type: string + required: + - repoURL + type: object + syncPolicy: + description: SyncPolicy controls when a sync will + be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps have + zero live resources (default: false)' + type: boolean + prune: + description: 'Prune will prune resources + automatically as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal enables auto-syncing + if (default: false)' + type: boolean + type: object + retry: + description: Retry controls failed sync retry + behavior + properties: + backoff: + description: Backoff is a backoff strategy + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor to multiply + the base duration after each failed + retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the maximum + amount of time allowed for the backoff + strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts when retrying a container + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify whole + app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + - source + type: object + required: + - metadata + - spec + type: object + type: object type: object type: array syncPolicy: diff --git a/pkg/controllers/applicationset_controller.go b/pkg/controllers/applicationset_controller.go index d1064da4..61616ae1 100644 --- a/pkg/controllers/applicationset_controller.go +++ b/pkg/controllers/applicationset_controller.go @@ -353,7 +353,7 @@ func (r *ApplicationSetReconciler) generateApplications(applicationSetInfo argop continue } - params, err := g.GenerateParams(&requestedGenerator) + params, err := g.GenerateParams(&requestedGenerator, &applicationSetInfo) if err != nil { log.WithError(err).WithField("generator", g). Error("error generating params") diff --git a/pkg/controllers/applicationset_controller_test.go b/pkg/controllers/applicationset_controller_test.go index 723435a6..7821e491 100644 --- a/pkg/controllers/applicationset_controller_test.go +++ b/pkg/controllers/applicationset_controller_test.go @@ -41,7 +41,7 @@ func (g *generatorMock) GetTemplate(appSetGenerator *argoprojiov1alpha1.Applicat return args.Get(0).(*argoprojiov1alpha1.ApplicationSetTemplate) } -func (g *generatorMock) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) ([]map[string]string, error) { +func (g *generatorMock) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, _ *argoprojiov1alpha1.ApplicationSet) ([]map[string]string, error) { args := g.Called(appSetGenerator) return args.Get(0).([]map[string]string), args.Error(1) diff --git a/pkg/generators/cluster.go b/pkg/generators/cluster.go index be89a57d..ab7574a9 100644 --- a/pkg/generators/cluster.go +++ b/pkg/generators/cluster.go @@ -59,7 +59,7 @@ func (g *ClusterGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.Appli } func (g *ClusterGenerator) GenerateParams( - appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) ([]map[string]string, error) { + appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, _ *argoprojiov1alpha1.ApplicationSet) ([]map[string]string, error) { if appSetGenerator == nil { return nil, EmptyAppSetGeneratorError diff --git a/pkg/generators/cluster_test.go b/pkg/generators/cluster_test.go index 11ba21df..6bec3f81 100644 --- a/pkg/generators/cluster_test.go +++ b/pkg/generators/cluster_test.go @@ -229,7 +229,7 @@ func TestGenerateParams(t *testing.T) { Selector: testCase.selector, Values: testCase.values, }, - }) + }, nil) if testCase.expectedError != nil { assert.Error(t, testCase.expectedError, err) diff --git a/pkg/generators/git.go b/pkg/generators/git.go index d93234ac..f64265ec 100644 --- a/pkg/generators/git.go +++ b/pkg/generators/git.go @@ -46,7 +46,7 @@ func (g *GitGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.Appli return DefaultRequeueAfterSeconds } -func (g *GitGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) ([]map[string]string, error) { +func (g *GitGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, _ *argoprojiov1alpha1.ApplicationSet) ([]map[string]string, error) { if appSetGenerator == nil { return nil, EmptyAppSetGeneratorError diff --git a/pkg/generators/git_test.go b/pkg/generators/git_test.go index ee0c859c..7286e8c3 100644 --- a/pkg/generators/git_test.go +++ b/pkg/generators/git_test.go @@ -164,7 +164,7 @@ func TestGitGenerateParamsFromDirectories(t *testing.T) { }, } - got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0]) + got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], nil) if c.expectedError != nil { assert.EqualError(t, err, c.expectedError.Error()) @@ -370,7 +370,7 @@ func TestGitGenerateParamsFromFiles(t *testing.T) { }, } - got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0]) + got, err := gitGenerator.GenerateParams(&applicationSetInfo.Spec.Generators[0], nil) fmt.Println(got, err) if c.expectedError != nil { diff --git a/pkg/generators/interface.go b/pkg/generators/interface.go index 78fe2521..3d9ff11e 100644 --- a/pkg/generators/interface.go +++ b/pkg/generators/interface.go @@ -12,7 +12,7 @@ type Generator interface { // GenerateParams interprets the ApplicationSet and generates all relevant parameters for the application template. // The expected / desired list of parameters is returned, it then will be render and reconciled // against the current state of the Applications in the cluster. - GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) ([]map[string]string, error) + GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet) ([]map[string]string, error) // GetRequeueAfter is the the generator can controller the next reconciled loop // In case there is more then one generator the time will be the minimum of the times. diff --git a/pkg/generators/list.go b/pkg/generators/list.go index 8997bfa0..9cd85bda 100644 --- a/pkg/generators/list.go +++ b/pkg/generators/list.go @@ -26,7 +26,7 @@ func (g *ListGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.Applicat return &appSetGenerator.List.Template } -func (g *ListGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) ([]map[string]string, error) { +func (g *ListGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, _ *argoprojiov1alpha1.ApplicationSet) ([]map[string]string, error) { if appSetGenerator == nil { return nil, EmptyAppSetGeneratorError } diff --git a/pkg/generators/list_test.go b/pkg/generators/list_test.go index 74b36acb..472d8211 100644 --- a/pkg/generators/list_test.go +++ b/pkg/generators/list_test.go @@ -31,7 +31,7 @@ func TestGenerateListParams(t *testing.T) { got, err := listGenerator.GenerateParams(&argoprojiov1alpha1.ApplicationSetGenerator{List: &argoprojiov1alpha1.ListGenerator{ Elements: testCase.elements, - }}) + }}, nil) assert.NoError(t, err) assert.ElementsMatch(t, testCase.expected, got) diff --git a/pkg/generators/repo_host.go b/pkg/generators/repo_host.go new file mode 100644 index 00000000..1b4ea6c8 --- /dev/null +++ b/pkg/generators/repo_host.go @@ -0,0 +1,114 @@ +package generators + +import ( + "context" + "fmt" + "strings" + "time" + + corev1 "k8s.io/api/core/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + + argoprojiov1alpha1 "github.com/argoproj-labs/applicationset/api/v1alpha1" + "github.com/argoproj-labs/applicationset/pkg/services/repo_host" +) + +var _ Generator = (*RepoHostGenerator)(nil) + +const ( + DefaultRepoHostRequeueAfterSeconds = 30 * time.Minute +) + +type RepoHostGenerator struct { + client client.Client + // Testing hooks. + overrideHost repo_host.RepoHostService +} + +func NewRepoHostGenerator(client client.Client) Generator { + return &RepoHostGenerator{client: client} +} + +func (g *RepoHostGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) time.Duration { + // Return a requeue default of 30 minutes, if no default is specified. + + if appSetGenerator.RepoHost.RequeueAfterSeconds != nil { + return time.Duration(*appSetGenerator.RepoHost.RequeueAfterSeconds) * time.Second + } + + return DefaultRepoHostRequeueAfterSeconds +} + +func (g *RepoHostGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) *argoprojiov1alpha1.ApplicationSetTemplate { + return &appSetGenerator.RepoHost.Template +} + +func (g *RepoHostGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet) ([]map[string]string, error) { + if appSetGenerator == nil { + return nil, EmptyAppSetGeneratorError + } + + if appSetGenerator.RepoHost == nil { + return nil, EmptyAppSetGeneratorError + } + + ctx := context.Background() + + // Create the repo host. + hostConfig := appSetGenerator.RepoHost + var host repo_host.RepoHostService + if g.overrideHost != nil { + host = g.overrideHost + } else if hostConfig.Github != nil { + token, err := g.getSecretRef(ctx, hostConfig.Github.TokenRef, applicationSetInfo.Namespace) + if err != nil { + return nil, fmt.Errorf("error fetching Github token: %v", err) + } + host, err = repo_host.NewGithubRepoHost(ctx, hostConfig.Github.Organization, token, hostConfig.Github.API) + if err != nil { + return nil, fmt.Errorf("error initializing Github service: %v", err) + } + } else { + return nil, fmt.Errorf("no repository host provider configured") + } + + // Find all the available repos. + repos, err := repo_host.ListRepos(ctx, host, hostConfig.Filters) + if err != nil { + return nil, fmt.Errorf("error listing repos: %v", err) + } + params := make([]map[string]string, 0, len(repos)) + for _, repo := range repos { + params = append(params, map[string]string{ + "organization": repo.Organization, + "repository": repo.Repository, + "url": repo.URL, + "branch": repo.Branch, + "labels": strings.Join(repo.Labels, ","), + }) + } + return params, nil +} + +func (g *RepoHostGenerator) getSecretRef(ctx context.Context, ref *argoprojiov1alpha1.SecretRef, namespace string) (string, error) { + if ref == nil { + return "", nil + } + + secret := &corev1.Secret{} + err := g.client.Get( + ctx, + client.ObjectKey{ + Name: ref.Name, + Namespace: namespace, + }, + secret) + if err != nil { + return "", fmt.Errorf("error fetching secret %s/%s: %v", namespace, ref.Name, err) + } + tokenBytes, ok := secret.Data[ref.Key] + if !ok { + return "", fmt.Errorf("key %q in secret %s/%s not found", ref.Key, namespace, ref.Name) + } + return string(tokenBytes), nil +} diff --git a/pkg/generators/repo_host_test.go b/pkg/generators/repo_host_test.go new file mode 100644 index 00000000..20190aef --- /dev/null +++ b/pkg/generators/repo_host_test.go @@ -0,0 +1,74 @@ +package generators + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client/fake" + + argoprojiov1alpha1 "github.com/argoproj-labs/applicationset/api/v1alpha1" + "github.com/argoproj-labs/applicationset/pkg/services/repo_host" +) + +func TestRepoHostGetSecretRef(t *testing.T) { + secret := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{Name: "test-secret", Namespace: "test"}, + Data: map[string][]byte{ + "my-token": []byte("secret"), + }, + } + gen := &RepoHostGenerator{client: fake.NewFakeClient(secret)} + ctx := context.Background() + + token, err := gen.getSecretRef(ctx, &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "my-token"}, "test") + assert.Nil(t, err) + assert.Equal(t, "secret", token) + + token, err = gen.getSecretRef(ctx, nil, "test") + assert.Nil(t, err) + assert.Equal(t, "", token) + + _, err = gen.getSecretRef(ctx, &argoprojiov1alpha1.SecretRef{Name: "other", Key: "my-token"}, "test") + assert.NotNil(t, err) + + _, err = gen.getSecretRef(ctx, &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "other-token"}, "test") + assert.NotNil(t, err) + + _, err = gen.getSecretRef(ctx, &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "my-token"}, "other") + assert.NotNil(t, err) +} + +func TestRepoHostGenerateParams(t *testing.T) { + mockHost := &repo_host.MockRepoHost{ + Repos: []*repo_host.HostedRepo{ + { + Organization: "myorg", + Repository: "repo1", + URL: "git@github.com:myorg/repo1.git", + Branch: "main", + Labels: []string{"prod", "staging"}, + }, + { + Organization: "myorg", + Repository: "repo2", + URL: "git@github.com:myorg/repo2.git", + Branch: "main", + }, + }, + } + gen := &RepoHostGenerator{overrideHost: mockHost} + params, err := gen.GenerateParams(&argoprojiov1alpha1.ApplicationSetGenerator{ + RepoHost: &argoprojiov1alpha1.RepoHostGenerator{}, + }, nil) + assert.Nil(t, err) + assert.Len(t, params, 2) + assert.Equal(t, "myorg", params[0]["organization"]) + assert.Equal(t, "repo1", params[0]["repository"]) + assert.Equal(t, "git@github.com:myorg/repo1.git", params[0]["url"]) + assert.Equal(t, "main", params[0]["branch"]) + assert.Equal(t, "prod,staging", params[0]["labels"]) + assert.Equal(t, "repo2", params[1]["repository"]) +} diff --git a/pkg/services/repo_host/github.go b/pkg/services/repo_host/github.go new file mode 100644 index 00000000..92e3e0b5 --- /dev/null +++ b/pkg/services/repo_host/github.go @@ -0,0 +1,77 @@ +package repo_host + +import ( + "context" + + "github.com/google/go-github/v35/github" + "golang.org/x/oauth2" +) + +type GithubRepoHost struct { + client *github.Client + organization string +} + +var _ RepoHostService = &GithubRepoHost{} + +func NewGithubRepoHost(ctx context.Context, organization string, token string, url string) (*GithubRepoHost, error) { + var ts oauth2.TokenSource + if token != "" { + ts = oauth2.StaticTokenSource( + &oauth2.Token{AccessToken: token}, + ) + } + httpClient := oauth2.NewClient(ctx, ts) + var client *github.Client + if url == "" { + client = github.NewClient(httpClient) + } else { + var err error + client, err = github.NewEnterpriseClient(url, url, httpClient) + if err != nil { + return nil, err + } + } + return &GithubRepoHost{client: client, organization: organization}, nil +} + +func (g *GithubRepoHost) ListRepos(ctx context.Context) ([]*HostedRepo, error) { + opt := &github.RepositoryListByOrgOptions{ + ListOptions: github.ListOptions{PerPage: 100}, + } + repos := []*HostedRepo{} + for { + githubRepos, resp, err := g.client.Repositories.ListByOrg(ctx, g.organization, opt) + if err != nil { + return nil, err + } + for _, githubRepo := range githubRepos { + repos = append(repos, &HostedRepo{ + Organization: githubRepo.Owner.GetName(), + Repository: githubRepo.GetName(), + URL: githubRepo.GetSSHURL(), // TODO Config flag for CloneURL (i.e. https://)? + Branch: githubRepo.GetDefaultBranch(), + Labels: githubRepo.Topics, + }) + } + if resp.NextPage == 0 { + break + } + opt.Page = resp.NextPage + } + return repos, nil +} + +func (g *GithubRepoHost) RepoHasPath(ctx context.Context, repo *HostedRepo, path string) (bool, error) { + _, _, resp, err := g.client.Repositories.GetContents(ctx, repo.Organization, repo.Repository, path, &github.RepositoryContentGetOptions{ + Ref: repo.Branch, + }) + // 404s are not an error here, just a normal false. + if resp != nil && resp.StatusCode == 404 { + return false, nil + } + if err != nil { + return false, err + } + return true, nil +} diff --git a/pkg/services/repo_host/github_test.go b/pkg/services/repo_host/github_test.go new file mode 100644 index 00000000..6b49babe --- /dev/null +++ b/pkg/services/repo_host/github_test.go @@ -0,0 +1,40 @@ +package repo_host + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGithubListRepos(t *testing.T) { + host, _ := NewGithubRepoHost(context.Background(), "argoproj-labs", "", "") + repos, err := host.ListRepos(context.Background()) + assert.Nil(t, err) + // Just check that this one project shows up. Not a great test but better thing nothing? + var repo *HostedRepo + for _, r := range repos { + if r.Repository == "applicationset" { + repo = r + break + } + } + assert.NotNil(t, repo) + assert.Equal(t, "git@github.com:argoproj-labs/applicationset.git", repo.URL) +} + +func TestGithubHasPath(t *testing.T) { + host, _ := NewGithubRepoHost(context.Background(), "argoproj-labs", "", "") + repo := &HostedRepo{ + Organization: "argoproj-labs", + Repository: "applicationset", + Branch: "master", + } + ok, err := host.RepoHasPath(context.Background(), repo, "pkg/") + assert.Nil(t, err) + assert.True(t, ok) + + ok, err = host.RepoHasPath(context.Background(), repo, "notathing/") + assert.Nil(t, err) + assert.False(t, ok) +} diff --git a/pkg/services/repo_host/mock.go b/pkg/services/repo_host/mock.go new file mode 100644 index 00000000..dc2a6735 --- /dev/null +++ b/pkg/services/repo_host/mock.go @@ -0,0 +1,17 @@ +package repo_host + +import "context" + +type MockRepoHost struct { + Repos []*HostedRepo +} + +var _ RepoHostService = &MockRepoHost{} + +func (m *MockRepoHost) ListRepos(_ context.Context) ([]*HostedRepo, error) { + return m.Repos, nil +} + +func (*MockRepoHost) RepoHasPath(_ context.Context, repo *HostedRepo, path string) (bool, error) { + return path == repo.Repository, nil +} diff --git a/pkg/services/repo_host/types.go b/pkg/services/repo_host/types.go new file mode 100644 index 00000000..fa9cc6ce --- /dev/null +++ b/pkg/services/repo_host/types.go @@ -0,0 +1,27 @@ +package repo_host + +import ( + "context" + "regexp" +) + +// An abstract repository from an API provider. +type HostedRepo struct { + Organization string + Repository string + URL string + Branch string + Labels []string +} + +type RepoHostService interface { + ListRepos(context.Context) ([]*HostedRepo, error) + RepoHasPath(context.Context, *HostedRepo, string) (bool, error) +} + +// A compiled version of RepoHostGeneratorFilter for performance. +type Filter struct { + RepositoryMatch *regexp.Regexp + PathExists *string + LabelMatch *regexp.Regexp +} diff --git a/pkg/services/repo_host/utils.go b/pkg/services/repo_host/utils.go new file mode 100644 index 00000000..64c908ee --- /dev/null +++ b/pkg/services/repo_host/utils.go @@ -0,0 +1,87 @@ +package repo_host + +import ( + "context" + "fmt" + "regexp" + + argoprojiov1alpha1 "github.com/argoproj-labs/applicationset/api/v1alpha1" +) + +func compileFilters(filters []argoprojiov1alpha1.RepoHostGeneratorFilter) ([]*Filter, error) { + outFilters := make([]*Filter, 0, len(filters)) + for _, filter := range filters { + outFilter := &Filter{} + var err error + if filter.RepositoryMatch != nil { + outFilter.RepositoryMatch, err = regexp.Compile(*filter.RepositoryMatch) + if err != nil { + return nil, fmt.Errorf("error compiling RepositoryMatch regexp %q: %v", *filter.RepositoryMatch, err) + } + } + if filter.LabelMatch != nil { + outFilter.LabelMatch, err = regexp.Compile(*filter.LabelMatch) + if err != nil { + return nil, fmt.Errorf("error compiling LabelMatch regexp %q: %v", *filter.LabelMatch, err) + } + } + if filter.PathExists != nil { + outFilter.PathExists = filter.PathExists + } + outFilters = append(outFilters, outFilter) + } + return outFilters, nil +} + +func ListRepos(ctx context.Context, host RepoHostService, filters []argoprojiov1alpha1.RepoHostGeneratorFilter) ([]*HostedRepo, error) { + compiledFilters, err := compileFilters(filters) + if err != nil { + return nil, err + } + + repos, err := host.ListRepos(ctx) + if err != nil { + return nil, err + } + filteredRepos := make([]*HostedRepo, 0, len(repos)) + for _, repo := range repos { + matches := true + for _, filter := range compiledFilters { + if filter.RepositoryMatch != nil { + if !filter.RepositoryMatch.MatchString(repo.Repository) { + matches = false + break + } + } + + if filter.LabelMatch != nil { + found := false + for _, label := range repo.Labels { + if filter.LabelMatch.MatchString(label) { + found = true + break + } + } + if !found { + matches = false + break + } + } + + if filter.PathExists != nil { + hasPath, err := host.RepoHasPath(ctx, repo, *filter.PathExists) + if err != nil { + return nil, err + } + if !hasPath { + matches = false + break + } + } + } + if matches { + filteredRepos = append(filteredRepos, repo) + } + } + return filteredRepos, nil +} diff --git a/pkg/services/repo_host/utils_test.go b/pkg/services/repo_host/utils_test.go new file mode 100644 index 00000000..0d9acb15 --- /dev/null +++ b/pkg/services/repo_host/utils_test.go @@ -0,0 +1,130 @@ +package repo_host + +import ( + "context" + "testing" + + argoprojiov1alpha1 "github.com/argoproj-labs/applicationset/api/v1alpha1" + "github.com/stretchr/testify/assert" +) + +func strp(s string) *string { + return &s +} + +func TestFilterRepoMatch(t *testing.T) { + host := &MockRepoHost{ + Repos: []*HostedRepo{ + { + Repository: "one", + }, + { + Repository: "two", + }, + { + Repository: "three", + }, + { + Repository: "four", + }, + }, + } + filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + { + RepositoryMatch: strp("n|hr"), + }, + } + repos, err := ListRepos(context.Background(), host, filters) + assert.Nil(t, err) + assert.Len(t, repos, 2) + assert.Equal(t, "one", repos[0].Repository) + assert.Equal(t, "three", repos[1].Repository) +} + +func TestFilterLabelMatch(t *testing.T) { + host := &MockRepoHost{ + Repos: []*HostedRepo{ + { + Repository: "one", + Labels: []string{"prod-one", "prod-two", "staging"}, + }, + { + Repository: "two", + Labels: []string{"prod-two"}, + }, + { + Repository: "three", + Labels: []string{"staging"}, + }, + }, + } + filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + { + LabelMatch: strp("^prod-.*$"), + }, + } + repos, err := ListRepos(context.Background(), host, filters) + assert.Nil(t, err) + assert.Len(t, repos, 2) + assert.Equal(t, "one", repos[0].Repository) + assert.Equal(t, "two", repos[1].Repository) +} + +func TestFilterPatchExists(t *testing.T) { + host := &MockRepoHost{ + Repos: []*HostedRepo{ + { + Repository: "one", + }, + { + Repository: "two", + }, + { + Repository: "three", + }, + }, + } + filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + { + PathExists: strp("two"), + }, + } + repos, err := ListRepos(context.Background(), host, filters) + assert.Nil(t, err) + assert.Len(t, repos, 1) + assert.Equal(t, "two", repos[0].Repository) +} + +func TestFilterRepoMatchBadRegexp(t *testing.T) { + host := &MockRepoHost{ + Repos: []*HostedRepo{ + { + Repository: "one", + }, + }, + } + filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + { + RepositoryMatch: strp("("), + }, + } + _, err := ListRepos(context.Background(), host, filters) + assert.NotNil(t, err) +} + +func TestFilterLabelMatchBadRegexp(t *testing.T) { + host := &MockRepoHost{ + Repos: []*HostedRepo{ + { + Repository: "one", + }, + }, + } + filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + { + LabelMatch: strp("("), + }, + } + _, err := ListRepos(context.Background(), host, filters) + assert.NotNil(t, err) +} From 3396bf689855caaea218376322c9f3215d6dc9df Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Fri, 23 Apr 2021 12:23:15 -0700 Subject: [PATCH 02/21] =?UTF-8?q?=F0=9F=8E=A8=20Switch=20to=20the=20non-de?= =?UTF-8?q?precated=20way=20to=20make=20a=20fake=20client.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/generators/repo_host_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/generators/repo_host_test.go b/pkg/generators/repo_host_test.go index 20190aef..c0b8f6af 100644 --- a/pkg/generators/repo_host_test.go +++ b/pkg/generators/repo_host_test.go @@ -20,7 +20,7 @@ func TestRepoHostGetSecretRef(t *testing.T) { "my-token": []byte("secret"), }, } - gen := &RepoHostGenerator{client: fake.NewFakeClient(secret)} + gen := &RepoHostGenerator{client: fake.NewClientBuilder().WithObjects(secret).Build()} ctx := context.Background() token, err := gen.getSecretRef(ctx, &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "my-token"}, "test") From bb49ab9c2e29f798518e589e0c1c092964f0f1b3 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Fri, 23 Apr 2021 12:23:36 -0700 Subject: [PATCH 03/21] =?UTF-8?q?=F0=9F=8E=A8=20Go=20mod=20tidy.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 5 ++-- go.sum | 95 +++------------------------------------------------------- 2 files changed, 6 insertions(+), 94 deletions(-) diff --git a/go.mod b/go.mod index cb9d0064..1e747126 100644 --- a/go.mod +++ b/go.mod @@ -7,15 +7,14 @@ require ( github.com/argoproj/gitops-engine v0.2.1 github.com/argoproj/pkg v0.2.0 github.com/go-logr/logr v0.3.0 - github.com/google/go-github/v35 v35.0.0 // indirect + github.com/google/go-github/v35 v35.0.0 github.com/imdario/mergo v0.3.10 github.com/jeremywohl/flatten v1.0.1 github.com/pkg/errors v0.9.1 github.com/sirupsen/logrus v1.6.0 github.com/stretchr/testify v1.6.1 github.com/valyala/fasttemplate v1.2.1 - golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78 // indirect - google.golang.org/grpc v1.31.0 // indirect + golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78 k8s.io/api v0.19.2 k8s.io/apimachinery v0.19.2 k8s.io/client-go v11.0.1-0.20190816222228-6d55c1b1f1ca+incompatible diff --git a/go.sum b/go.sum index 11048f59..056d9a52 100644 --- a/go.sum +++ b/go.sum @@ -1,14 +1,12 @@ bitbucket.org/bertimus9/systemstat v0.0.0-20180207000608-0eeff89b0690/go.mod h1:Ulb78X89vxKYgdL24HMTiXYHlyHEvruOj1ZPlqeNEZM= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0 h1:ROfEUZz+Gh5pa62DJWXSaonyu3StP6EA6lPEXPI6mCo= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.51.0 h1:PvKAVQWCtlGUSlZkGW3QLelKaWq7KYv/MW1EboG8bfM= cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= @@ -39,35 +37,24 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 github.com/Azure/azure-sdk-for-go v43.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.9.6 h1:5YWtOnckcudzIw8lPPBcWOnmIFWMtHci1ZWAZulMSx0= github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= -github.com/Azure/go-autorest/autorest/adal v0.5.0 h1:q2gDruN08/guU9vAjuPWff0+QIrpH6ediguzdAzXAUU= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.2 h1:O1X4oexUxnZCaEUGsvMnr8ZGj8HI37tNezwY4npRqA0= github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/date v0.1.0 h1:YGrhWfrgtFs84+h0o46rJrlmsZtyZRg470CqAXTZaGM= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0 h1:Ww5g4zThfD/6cLb4z6xxgeyDa7QDkizMkJKe0ysZXp0= github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0 h1:qJumjCaCudz+OcqE9/XtEPfvtOjOmKaui4EOpFI6zZc= github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= -github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20200415212048-7901bc822317/go.mod h1:DF8FZRxMHMGv/vP2lQP6h+dYzzjpuRn24VeRiYn3qjQ= github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5hodBMJ5+l/7J4xAyMeuM2PNuepvHlGs8yilUCA= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= @@ -84,7 +71,6 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d h1:WtAMR0fPCOfK7TPGZ8ZpLLY18HRvL7XJ3xcs0wnREgo= github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d/go.mod h1:WML6KOYjeU8N6YyusMjj2qRvaPNUEvrQvaxuFcMRFJY= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -94,9 +80,7 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6 h1:45bxf7AZMwWcqkLzDAQugVEwedisr5nRJ1r+7LYnv0U= github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= -github.com/alicebob/miniredis v2.5.0+incompatible h1:yBHoLpsyjupjz3NL3MhKMVkR41j82Yjf3KFv7ApYzUI= github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= @@ -113,7 +97,6 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/auth0/go-jwt-middleware v0.0.0-20170425171159-5493cabe49f7/go.mod h1:LWMyo4iOLWXHGdBki7NIht1kHru/0wM179h+d3g8ATM= github.com/aws/aws-sdk-go v1.6.10/go.mod h1:ZRmQr0FajVIyZ4ZzBYKG5P3ZqPz9IHG41ZoMu1ADI3k= @@ -126,13 +109,11 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bifurcation/mint v0.0.0-20180715133206-93c51c6ce115/go.mod h1:zVt7zX3K/aDCk9Tj+VM7YymsX66ERvzCJzw8rFCX2JU= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bombsimon/logrusr v1.0.0 h1:CTCkURYAt5nhCCnKH9eLShYayj2/8Kn/4Qg3QfiU+Ro= github.com/bombsimon/logrusr v1.0.0/go.mod h1:Jq0nHtvxabKE5EMwAAdgTaz7dfWE8C4i11NOltxGQpc= github.com/caddyserver/caddy v1.0.3/go.mod h1:G+ouvOY32gENkJC+jhgl62TyhvqEsFaDiZ4uw0RzP1E= -github.com/casbin/casbin v1.9.1 h1:ucjbS5zTrmSLtH4XogqOG920Poe6QatdXtz1FEbApeM= github.com/casbin/casbin v1.9.1/go.mod h1:z8uPsfBJGUsnkagrt3G8QvjgTKFMBJ32UP8HpZllfog= github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= @@ -172,7 +153,6 @@ github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ github.com/coredns/corefile-migration v1.0.10/go.mod h1:RMy/mXdeDlYwzt0vdMEJvT2hGJ2I86/eO0UdXmH9XNI= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -183,7 +163,6 @@ github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+ github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= @@ -193,9 +172,7 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= @@ -212,7 +189,6 @@ github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c h1:ZfSZ3P3BedhKG github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= @@ -231,7 +207,6 @@ github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8 github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= @@ -258,7 +233,6 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.2.1 h1:fV3MLmabKIZ383XifUjFSwcoGee0v9qgPp8wy5svibE= github.com/go-logr/logr v0.2.1/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs= github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= @@ -268,11 +242,9 @@ github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70t github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5 h1:8b2ZgKfKIUTVQpTb77MoRDIMEIwvDVw40o3aOXdfYzI= github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2 h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY= github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= @@ -290,11 +262,9 @@ github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/loads v0.19.4 h1:5I4CCSqoWzT+82bBkNIvmLc0UOsoKKQ4Fz+3VxOB7SY= github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= -github.com/go-openapi/runtime v0.19.4 h1:csnOgcgAiuGoM/Po7PEpKDoNulCcF3FGbSnbHfxgjMI= github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= @@ -305,7 +275,6 @@ github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8 github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= -github.com/go-openapi/strfmt v0.19.3 h1:eRfyY5SkaNJCAwmmMcADjY31ow9+N7MCLW7oRkbsINA= github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= @@ -315,22 +284,16 @@ github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tF github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-openapi/validate v0.19.5 h1:QhCBKRYqZR+SKo4gl1lPhPahope8/RLt6EVgY8X80w0= github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU= -github.com/go-redis/cache/v8 v8.2.1 h1:G4CtEQDT3JsiERPob1nUL/KTkiC317rAJvHx6GdWjiM= github.com/go-redis/cache/v8 v8.2.1/go.mod h1:8PFGBZrRqG2nToSHw76mSsozxgSKrn3vsZerq/NJtt8= -github.com/go-redis/redis/v8 v8.3.2 h1:1bJscgN2yGtKLW6MsTRosa2LHyeq94j0hnNAgRZzj/M= github.com/go-redis/redis/v8 v8.3.2/go.mod h1:jszGxBCez8QA1HWSmQxJO9Y82kNibbUmeYhKWrBejTU= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gobuffalo/packr v1.11.0 h1:lxysfHcxVCWGNMHzKABP7ZEL3A7iIVYfkev/D7AR0aM= github.com/gobuffalo/packr v1.11.0/go.mod h1:rYwMLC6NXbAbkKb+9j3NTKbxSswkKLlelZYccr4HYVw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogits/go-gogs-client v0.0.0-20190616193657-5a05380e4bc2 h1:BbwX8wsMRDZRdNYxAna+4ls3wvMKJyn4PT6Zk1CPxP4= github.com/gogits/go-gogs-client v0.0.0-20190616193657-5a05380e4bc2/go.mod h1:cY2AIrMgHm6oOHmR7jY+9TtjzSjQ3iG7tURJG3Y6XH0= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -342,7 +305,6 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -360,7 +322,6 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= -github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0= github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= @@ -377,7 +338,6 @@ github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-github/v35 v35.0.0 h1:oLrHdYkSQvbhN4gJihpEkTFKAZnIFgTCj1p/OlE4Os4= github.com/google/go-github/v35 v35.0.0/go.mod h1:s0515YVTI+IMrDoy9Y4pHt9ShGpzHvHO8rZ7L7acgvs= -github.com/google/go-jsonnet v0.17.0 h1:/9NIEfhK1NQRKl3sP2536b2+x5HnZMdql7x3yK/l8JY= github.com/google/go-jsonnet v0.17.0/go.mod h1:sOcuej3UW1vpPTZOr8L7RQimqai1a57bt5j22LzGZCw= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -394,14 +354,12 @@ github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1 h1:A8Yhf6EtqTv9RMsU6MQTyrtV1TjWlR6xU9BsZIwuTCM= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= @@ -410,7 +368,6 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORR github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.0/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= @@ -418,28 +375,23 @@ github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:Fecb github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4 h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.12.2 h1:D0EVSTwQoQOyfY35QNSuPJA4jpZRtkoGYWQMB7XNg5o= github.com/grpc-ecosystem/grpc-gateway v1.12.2/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/heketi/heketi v9.0.1-0.20190917153846-c2e2a4ab7ab9+incompatible/go.mod h1:bB9ly3RchcQqsQ9CpyaQwvva7RS5ytVoSoholZQON6o= github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6/go.mod h1:xGMAM8JLi7UkZt1i4FQeQy0R2T8GLUwQhOP5M1gBhy4= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.10 h1:6q5mVkdH/vYmqngx7kZQTjJ5HRsx+ImorDIEQ+beJgc= github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/improbable-eng/grpc-web v0.0.0-20181111100011-16092bd1d58a h1:RweVA0vnEyStwtAelyGmnU8ENDnwd1Q7pQr7U3J/rXo= github.com/improbable-eng/grpc-web v0.0.0-20181111100011-16092bd1d58a/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -472,7 +424,6 @@ github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.11.1 h1:bPb7nMRdOZYDrpPMTA3EInUQrdgoBinqUuSwlGdKDdE= github.com/klauspost/compress v1.11.1/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= @@ -508,7 +459,6 @@ github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8 h1:A6SLdFpRzUUF5v9F/7T1fu3DERmOCgTwwP6x54eyFfU= github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8/go.mod h1:UtpLyb/EupVKXF/N0b4NRe1DNg+QYJsnsHQ038romhM= github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -532,11 +482,9 @@ github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/moby/ipvs v1.0.1/go.mod h1:2pngiyseZbIKXNv7hsKj3O9UEz30c53MT9005gt2hxQ= github.com/moby/sys/mountinfo v0.1.3/go.mod h1:w2t2Avltqx8vE7gX5l+QiBKxODu2TX0+Syr3h52Tw4o= -github.com/moby/term v0.0.0-20200312100748-672ec06f55cd h1:aY7OQNf2XqY/JQ6qREWamhI/81os/agb2BAGpcx5yWI= github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf h1:Un6PNx5oMK6CCwO3QTUyPiK2mtZnPrpDl5UnZ64eCkw= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= @@ -554,7 +502,6 @@ github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8m github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mvdan/xurls v1.1.0/go.mod h1:tQlNn3BED8bE/15hnSL2HLkDeLWpNPAwtw7wkEq44oU= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= @@ -566,7 +513,6 @@ github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:v github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= @@ -574,7 +520,6 @@ github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M= github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= @@ -592,7 +537,6 @@ github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/ github.com/opencontainers/runtime-spec v1.0.3-0.20200520003142-237cc4f519e2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.5.1/go.mod h1:yTcKuYAh6R95iDpefGLQaPaRwJFwyzAJufJyiTt7s0g= github.com/opencontainers/selinux v1.5.2/go.mod h1:yTcKuYAh6R95iDpefGLQaPaRwJFwyzAJufJyiTt7s0g= -github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= @@ -606,7 +550,6 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/pquerna/cachecontrol v0.0.0-20180306154005-525d0eb5f91d h1:7gXyC293Lsm2YWgQ+0uaAFFFDO82ruiQSwc3ua+Vtlc= github.com/pquerna/cachecontrol v0.0.0-20180306154005-525d0eb5f91d/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= @@ -636,32 +579,27 @@ github.com/robfig/cron v1.1.0 h1:jk4/Hud3TTdcrJgUOBgsqrZBarcxl6ADIjSC2iniwLY= github.com/robfig/cron v1.1.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rs/cors v1.6.0 h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI= github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday v0.0.0-20170610170232-067529f716f4/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c h1:fyKiXKO1/I/B6Y2U8T7WdQGWzwehOuGIrljPtt7YTTI= github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= @@ -694,12 +632,10 @@ github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/thecodeteam/goscaleio v0.1.0/go.mod h1:68sdkZAsK8bvEwBlbQnlLS+xU+hvLYM/iQ8KXej1AwM= -github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/undefinedlabs/go-mpatch v1.0.6 h1:h8q5ORH/GaOE1Se1DMhrOyljXZEhRcROO7agMqWXCOY= github.com/undefinedlabs/go-mpatch v1.0.6/go.mod h1:TyJZDQ/5AgyN7FSLiBJ8RO9u2c6wbtRvK827b6AVqY4= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -713,14 +649,10 @@ github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/vishvananda/netns v0.0.0-20200520041808-52d707b772fe/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= -github.com/vmihailenco/bufpool v0.1.11 h1:gOq2WmBrq0i2yW5QJ16ykccQ4wH9UyEsgLm6czKAd94= github.com/vmihailenco/bufpool v0.1.11/go.mod h1:AFf/MOy3l2CFTKbxwt0mp2MwnqjNEs5H/UxrkA5jxTQ= -github.com/vmihailenco/go-tinylfu v0.1.0 h1:wNwKigNq50gfiyQDPpseEuGK4TZtFyjduJSg0M6gBns= github.com/vmihailenco/go-tinylfu v0.1.0/go.mod h1:qZbD6U3F10Sfuxyy4c5wMq5CM4/t5I3eJJS9yMQoXU0= github.com/vmihailenco/msgpack/v5 v5.0.0-beta.5/go.mod h1:MPECSZPg8yittBek5Gq2MhEDJpB9FrbSzQOSWmJm38A= -github.com/vmihailenco/msgpack/v5 v5.1.0 h1:+od5YbEXxW95SPlW6beocmt8nOtlh83zqat5Ip9Hwdc= github.com/vmihailenco/msgpack/v5 v5.1.0/go.mod h1:C5gboKD0TJPqWDTVTtrQNfRbiBwHZGo8UTqP/9/XvLI= -github.com/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vbd1qPqc= github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= @@ -731,7 +663,6 @@ github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1: github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/gopher-lua v0.0.0-20190115140932-732aa6820ec4 h1:1yOVVSFiradDwXpgdkDjlGOcGJqcohH/W49Zn8Ywgco= github.com/yuin/gopher-lua v0.0.0-20190115140932-732aa6820ec4/go.mod h1:fFiAh+CowNFr0NK5VASokuwKwkbacRmHsVA7Yb1Tqac= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -739,14 +670,12 @@ go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.2 h1:jxcFYjlkl8xaERsgLo+RNquI0epW6zuy/ZRQs6jnrFA= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opentelemetry.io/otel v0.13.0 h1:2isEnyzjjJZq6r2EKMsFj4TxiQiexsM04AVhwbR/oBA= go.opentelemetry.io/otel v0.13.0/go.mod h1:dlSNewoRYikTkotEnxdmuBHgzT+k/idJSfDv/FxEnOY= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -794,7 +723,6 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20200821190819-94841d0725da h1:vfV2BR+q1+/jmgJR30Ms3RHbryruQ3Yd83lLAAue9cs= golang.org/x/exp v0.0.0-20200821190819-94841d0725da/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= @@ -806,9 +734,9 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -856,7 +784,6 @@ golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -866,7 +793,6 @@ golang.org/x/net v0.0.0-20201024042810-be3efd7ff127/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78 h1:rPRtHfUb0UKZeZ6GH4K4Nt4YRbE9V1u+QZX5upZXqJQ= @@ -878,7 +804,6 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -935,7 +860,6 @@ golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4 h1:5/PjkGUjvEU5Gl6BxmvKRPpqo2uNMv4rcHBMwzk/st8= golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -950,7 +874,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e h1:EHBhcS0mlXEAVwNyO2dLfjToGsyY4j24pTs2ScHnX7s= golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1004,16 +927,16 @@ golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWc golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 h1:HHeAlu5H9b71C+Fx0K+1dGgVFN1DM1/wz4aoGOA5qS8= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d h1:W07d4xkoAUSNOkOzdzXCdFGxT7o2rW4q8M34tB2i//k= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.1.0 h1:Phva6wqu+xR//Njw6iorylFFgn/z547tw5Ne3HZPQ+k= gomodules.xyz/jsonpatch/v2 v2.1.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= @@ -1074,7 +997,6 @@ google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1086,7 +1008,6 @@ google.golang.org/grpc v1.15.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9M google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= @@ -1097,17 +1018,14 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogR gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/go-playground/webhooks.v5 v5.11.0 h1:V3vej+ZXrVvO2EmBTKlhClEbpTqXH44K5OyLUMOkHMg= gopkg.in/go-playground/webhooks.v5 v5.11.0/go.mod h1:LZbya/qLVdbqDR1aKrGuWV6qbia2zCYSR5dpom2SInQ= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mcuadros/go-syslog.v2 v2.2.1/go.mod h1:l5LPIyOOyIdQquNg+oU6Z3524YwrcqEm0aKH+5zpt2U= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/square/go-jose.v2 v2.2.2 h1:orlkJ3myw8CN1nVQHBFfloD+L3egixIa4FvUP6RosSA= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= @@ -1128,7 +1046,6 @@ gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -1141,9 +1058,9 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.19.2 h1:q+/krnHWKsL7OBZg/rxnycsl9569Pud76UJ77MvKXms= k8s.io/api v0.19.2/go.mod h1:IQpK0zFQ1xc5iNIQPqzgoOwuFugaYHK4iCknlAQP9nI= @@ -1159,14 +1076,12 @@ k8s.io/client-go v0.19.2 h1:gMJuU3xJZs86L1oQ99R4EViAADUPMHHtS9jFshasHSc= k8s.io/client-go v0.19.2/go.mod h1:S5wPhCqyDNAlzM9CnEdgTGV4OqhsW3jGO1UM1epwfJA= k8s.io/cloud-provider v0.19.2/go.mod h1:aj+g++cXa2EcXhwXPpqf81wNGxtXxAZjvPoIFjMRtIc= k8s.io/cluster-bootstrap v0.19.2/go.mod h1:bzngsppPfdt9vAHUnDIEoMNsxD2b6XArVVH/W9PDDFk= -k8s.io/code-generator v0.19.2 h1:7uaWJll6fyCPj2j3sfNN1AiY2gZU1VFN2dFR2uoxGWI= k8s.io/code-generator v0.19.2/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= k8s.io/component-base v0.19.2 h1:jW5Y9RcZTb79liEhW3XDVTW7MuvEGP0tQZnfSX6/+gs= k8s.io/component-base v0.19.2/go.mod h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo= k8s.io/cri-api v0.19.2/go.mod h1:UN/iU9Ua0iYdDREBXNE9vqCJ7MIh/FW3VIL0d8pw7Fw= k8s.io/csi-translation-lib v0.19.2/go.mod h1:9V3DYlJ6reyKD+/S/JrFyk/j0N1i8FCQYukch0JbNew= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 h1:t4L10Qfx/p7ASH3gXCdIUtPbbIuegCoUJf3TMSFekjw= k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/heapster v1.2.0-beta.1/go.mod h1:h1uhptVXMwC8xtZBYsPXKVi8fpdlYkTs6k949KozGrM= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= @@ -1192,11 +1107,9 @@ k8s.io/metrics v0.19.2/go.mod h1:IlLaAGXN0q7yrtB+SV0q3JIraf6VtlDr+iuTcX21fCU= k8s.io/sample-apiserver v0.19.2/go.mod h1:XZxHsGPvUkjzos8B/lhbM4REthLt4tRMfkhN2CRXCGs= k8s.io/system-validators v1.1.2/go.mod h1:bPldcLgkIUK22ALflnsXk8pvkTEndYdNuaHH6gRrl0Q= k8s.io/utils v0.0.0-20200414100711-2df71ebbae66/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20200729134348-d5654de09c73 h1:uJmqzgNWG7XyClnU/mLPBWwfKKF1K8Hf8whTseBgJcg= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20200912215256-4140de9c8800 h1:9ZNvfPvVIEsp/T1ez4GQuzCcCTEQWhovSofhqR73A6g= k8s.io/utils v0.0.0-20200912215256-4140de9c8800/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -layeh.com/gopher-json v0.0.0-20190114024228-97fed8db8427 h1:RZkKxMR3jbQxdCEcglq3j7wY3PRJIopAwBlx1RE71X0= layeh.com/gopher-json v0.0.0-20190114024228-97fed8db8427/go.mod h1:ivKkcY8Zxw5ba0jldhZCYYQfGdb2K6u9tbYK1AwMIBc= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= From 161a81bdd74fe041eb25b1435815ac9c52581778 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Fri, 23 Apr 2021 12:28:11 -0700 Subject: [PATCH 04/21] =?UTF-8?q?=F0=9F=8E=A8=20Sync=20the=20install=20man?= =?UTF-8?q?ifests=20too.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manifests/install-with-argo-cd.yaml | 446 ++++++++++++++++++++++++++++ manifests/install.yaml | 446 ++++++++++++++++++++++++++++ 2 files changed, 892 insertions(+) diff --git a/manifests/install-with-argo-cd.yaml b/manifests/install-with-argo-cd.yaml index 0a1f51e6..0f67204e 100644 --- a/manifests/install-with-argo-cd.yaml +++ b/manifests/install-with-argo-cd.yaml @@ -2840,6 +2840,452 @@ spec: required: - elements type: object + repoHost: + description: RepoHostGenerator defines a generator that scrapes + a SCMaaS API to find candidate repos. + properties: + filters: + description: TODO other providers. Filters for which repos + should be considered. + items: + description: RepoHostGeneratorFilter is a single repoisitory + filter. + properties: + labelMatch: + description: A regex which must match at least one + label. + type: string + pathExists: + description: A path which must exist. + type: string + repositoryMatch: + description: A regex for repo names. + type: string + type: object + type: array + github: + description: Which provider to use and config for it. + properties: + api: + description: The Github API URL to talk to. If blank, + use https://api.github.com/. + type: string + organization: + description: Github org to scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + name: + type: string + required: + - key + - name + type: object + required: + - organization + type: object + requeueAfterSeconds: + description: Standard parameters. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents the + Argo CD application fields that may be used for Applications + generated from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec represents desired application + state. Contains link to repository with application + definition and additional parameters link definition + revision. + properties: + destination: + description: Destination overrides the kubernetes + server and namespace defined in the environment + ksonnet app.yaml + properties: + name: + description: Name of the destination cluster + which can be used instead of server (url) + field + type: string + namespace: + description: Namespace overrides the environment + namespace value in the ksonnet app.yaml + type: string + server: + description: Server overrides the environment + server value in the ksonnet app.yaml + type: string + type: object + ignoreDifferences: + description: IgnoreDifferences controls resources + fields which should be ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with live + state. + properties: + group: + type: string + jsonPointers: + items: + type: string + type: array + kind: + type: string + name: + type: string + namespace: + type: string + required: + - jsonPointers + - kind + type: object + type: array + info: + description: Infos contains a list of useful information + (URLs, email addresses, and plain text) that relates + to the application + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a application project name. + Empty name means that application belongs to 'default' + project. + type: string + revisionHistoryLimit: + description: This limits this number of items kept + in the apps revision history. This should only + be changed in exceptional circumstances. Setting + to zero will store no history. This will reduce + storage used. Increasing will increase the space + used to store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: Source is a reference to the location + ksonnet application definition + properties: + chart: + description: Chart is a Helm chart name + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + type: string + jsonnet: + description: ApplicationSourceJsonnet holds + jsonnet specific options + properties: + extVars: + description: ExtVars is a list of Jsonnet + External Variables + items: + description: JsonnetVar is a jsonnet + variable + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library search + dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar is a jsonnet + variable + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file parameters + to the helm template + items: + description: HelmFileParameter is a file + parameter to a helm template + properties: + name: + description: Name is the name of the + helm parameter + type: string + path: + description: Path is the path value + for the helm parameter + type: string + type: object + type: array + parameters: + description: Parameters are parameters to + the helm template + items: + description: HelmParameter is a parameter + to a helm template + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name of the + helm parameter + type: string + value: + description: Value is the value for + the helm parameter + type: string + type: object + type: array + releaseName: + description: The Helm release name. If omitted + it will use the application name + type: string + valueFiles: + description: ValuesFiles is a list of Helm + value files to use when generating a template + items: + type: string + type: array + values: + description: Values is Helm values, typically + defined as a block + type: string + version: + description: Version is the Helm version + to use for templating with + type: string + type: object + ksonnet: + description: Ksonnet holds ksonnet specific + options + properties: + environment: + description: Environment is a ksonnet application + environment name + type: string + parameters: + description: Parameters are a list of ksonnet + component parameter override values + items: + description: KsonnetParameter is a ksonnet + component parameter + properties: + component: + type: string + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations adds additional + kustomize commonAnnotations + type: object + commonLabels: + additionalProperties: + type: string + description: CommonLabels adds additional + kustomize commonLabels + type: object + images: + description: Images are kustomize image + overrides + items: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix appended + to resources for kustomize apps + type: string + nameSuffix: + description: NameSuffix is a suffix appended + to resources for kustomize apps + type: string + version: + description: Version contains optional Kustomize + version + type: string + type: object + path: + description: Path is a directory path within + the Git repository + type: string + plugin: + description: ConfigManagementPlugin holds config + management plugin specific options + properties: + env: + items: + properties: + name: + description: the name, usually uppercase + type: string + value: + description: the value + type: string + required: + - name + - value + type: object + type: array + name: + type: string + type: object + repoURL: + description: RepoURL is the repository URL of + the application manifests + type: string + targetRevision: + description: TargetRevision defines the commit, + tag, or branch in which to sync the application + to. If omitted, will sync to HEAD + type: string + required: + - repoURL + type: object + syncPolicy: + description: SyncPolicy controls when a sync will + be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps have + zero live resources (default: false)' + type: boolean + prune: + description: 'Prune will prune resources + automatically as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal enables auto-syncing + if (default: false)' + type: boolean + type: object + retry: + description: Retry controls failed sync retry + behavior + properties: + backoff: + description: Backoff is a backoff strategy + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor to multiply + the base duration after each failed + retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the maximum + amount of time allowed for the backoff + strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts when retrying a container + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify whole + app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + - source + type: object + required: + - metadata + - spec + type: object + type: object type: object type: array syncPolicy: diff --git a/manifests/install.yaml b/manifests/install.yaml index f666d1ac..d9bd1428 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -1079,6 +1079,452 @@ spec: required: - elements type: object + repoHost: + description: RepoHostGenerator defines a generator that scrapes + a SCMaaS API to find candidate repos. + properties: + filters: + description: TODO other providers. Filters for which repos + should be considered. + items: + description: RepoHostGeneratorFilter is a single repoisitory + filter. + properties: + labelMatch: + description: A regex which must match at least one + label. + type: string + pathExists: + description: A path which must exist. + type: string + repositoryMatch: + description: A regex for repo names. + type: string + type: object + type: array + github: + description: Which provider to use and config for it. + properties: + api: + description: The Github API URL to talk to. If blank, + use https://api.github.com/. + type: string + organization: + description: Github org to scan. Required. + type: string + tokenRef: + description: Authentication token reference. + properties: + key: + type: string + name: + type: string + required: + - key + - name + type: object + required: + - organization + type: object + requeueAfterSeconds: + description: Standard parameters. + format: int64 + type: integer + template: + description: ApplicationSetTemplate represents argocd ApplicationSpec + properties: + metadata: + description: ApplicationSetTemplateMeta represents the + Argo CD application fields that may be used for Applications + generated from the ApplicationSet (based on metav1.ObjectMeta) + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + description: ApplicationSpec represents desired application + state. Contains link to repository with application + definition and additional parameters link definition + revision. + properties: + destination: + description: Destination overrides the kubernetes + server and namespace defined in the environment + ksonnet app.yaml + properties: + name: + description: Name of the destination cluster + which can be used instead of server (url) + field + type: string + namespace: + description: Namespace overrides the environment + namespace value in the ksonnet app.yaml + type: string + server: + description: Server overrides the environment + server value in the ksonnet app.yaml + type: string + type: object + ignoreDifferences: + description: IgnoreDifferences controls resources + fields which should be ignored during comparison + items: + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with live + state. + properties: + group: + type: string + jsonPointers: + items: + type: string + type: array + kind: + type: string + name: + type: string + namespace: + type: string + required: + - jsonPointers + - kind + type: object + type: array + info: + description: Infos contains a list of useful information + (URLs, email addresses, and plain text) that relates + to the application + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a application project name. + Empty name means that application belongs to 'default' + project. + type: string + revisionHistoryLimit: + description: This limits this number of items kept + in the apps revision history. This should only + be changed in exceptional circumstances. Setting + to zero will store no history. This will reduce + storage used. Increasing will increase the space + used to store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: Source is a reference to the location + ksonnet application definition + properties: + chart: + description: Chart is a Helm chart name + type: string + directory: + description: Directory holds path/directory + specific options + properties: + exclude: + type: string + jsonnet: + description: ApplicationSourceJsonnet holds + jsonnet specific options + properties: + extVars: + description: ExtVars is a list of Jsonnet + External Variables + items: + description: JsonnetVar is a jsonnet + variable + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library search + dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet + Top-level Arguments + items: + description: JsonnetVar is a jsonnet + variable + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file parameters + to the helm template + items: + description: HelmFileParameter is a file + parameter to a helm template + properties: + name: + description: Name is the name of the + helm parameter + type: string + path: + description: Path is the path value + for the helm parameter + type: string + type: object + type: array + parameters: + description: Parameters are parameters to + the helm template + items: + description: HelmParameter is a parameter + to a helm template + properties: + forceString: + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings + type: boolean + name: + description: Name is the name of the + helm parameter + type: string + value: + description: Value is the value for + the helm parameter + type: string + type: object + type: array + releaseName: + description: The Helm release name. If omitted + it will use the application name + type: string + valueFiles: + description: ValuesFiles is a list of Helm + value files to use when generating a template + items: + type: string + type: array + values: + description: Values is Helm values, typically + defined as a block + type: string + version: + description: Version is the Helm version + to use for templating with + type: string + type: object + ksonnet: + description: Ksonnet holds ksonnet specific + options + properties: + environment: + description: Environment is a ksonnet application + environment name + type: string + parameters: + description: Parameters are a list of ksonnet + component parameter override values + items: + description: KsonnetParameter is a ksonnet + component parameter + properties: + component: + type: string + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + kustomize: + description: Kustomize holds kustomize specific + options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations adds additional + kustomize commonAnnotations + type: object + commonLabels: + additionalProperties: + type: string + description: CommonLabels adds additional + kustomize commonLabels + type: object + images: + description: Images are kustomize image + overrides + items: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix appended + to resources for kustomize apps + type: string + nameSuffix: + description: NameSuffix is a suffix appended + to resources for kustomize apps + type: string + version: + description: Version contains optional Kustomize + version + type: string + type: object + path: + description: Path is a directory path within + the Git repository + type: string + plugin: + description: ConfigManagementPlugin holds config + management plugin specific options + properties: + env: + items: + properties: + name: + description: the name, usually uppercase + type: string + value: + description: the value + type: string + required: + - name + - value + type: object + type: array + name: + type: string + type: object + repoURL: + description: RepoURL is the repository URL of + the application manifests + type: string + targetRevision: + description: TargetRevision defines the commit, + tag, or branch in which to sync the application + to. If omitted, will sync to HEAD + type: string + required: + - repoURL + type: object + syncPolicy: + description: SyncPolicy controls when a sync will + be performed + properties: + automated: + description: Automated will keep an application + synced to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps have + zero live resources (default: false)' + type: boolean + prune: + description: 'Prune will prune resources + automatically as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal enables auto-syncing + if (default: false)' + type: boolean + type: object + retry: + description: Retry controls failed sync retry + behavior + properties: + backoff: + description: Backoff is a backoff strategy + properties: + duration: + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor to multiply + the base duration after each failed + retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the maximum + amount of time allowed for the backoff + strategy + type: string + type: object + limit: + description: Limit is the maximum number + of attempts when retrying a container + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify whole + app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + - source + type: object + required: + - metadata + - spec + type: object + type: object type: object type: array syncPolicy: From 0377be1e33ba649cec91d9faf75f899f0c96161a Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Fri, 23 Apr 2021 12:38:00 -0700 Subject: [PATCH 05/21] =?UTF-8?q?=F0=9F=8E=A8=20Refactor=20to=20a=20table?= =?UTF-8?q?=20test.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/generators/repo_host_test.go | 66 +++++++++++++++++++++++++------- 1 file changed, 52 insertions(+), 14 deletions(-) diff --git a/pkg/generators/repo_host_test.go b/pkg/generators/repo_host_test.go index c0b8f6af..35833940 100644 --- a/pkg/generators/repo_host_test.go +++ b/pkg/generators/repo_host_test.go @@ -23,22 +23,60 @@ func TestRepoHostGetSecretRef(t *testing.T) { gen := &RepoHostGenerator{client: fake.NewClientBuilder().WithObjects(secret).Build()} ctx := context.Background() - token, err := gen.getSecretRef(ctx, &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "my-token"}, "test") - assert.Nil(t, err) - assert.Equal(t, "secret", token) - - token, err = gen.getSecretRef(ctx, nil, "test") - assert.Nil(t, err) - assert.Equal(t, "", token) - - _, err = gen.getSecretRef(ctx, &argoprojiov1alpha1.SecretRef{Name: "other", Key: "my-token"}, "test") - assert.NotNil(t, err) + cases := []struct { + name, namespace, token string + ref *argoprojiov1alpha1.SecretRef + hasError bool + }{ + { + name: "valid ref", + ref: &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "my-token"}, + namespace: "test", + token: "secret", + hasError: false, + }, + { + name: "nil ref", + ref: nil, + namespace: "test", + token: "", + hasError: false, + }, + { + name: "wrong name", + ref: &argoprojiov1alpha1.SecretRef{Name: "other", Key: "my-token"}, + namespace: "test", + token: "", + hasError: true, + }, + { + name: "wrong key", + ref: &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "other-token"}, + namespace: "test", + token: "", + hasError: true, + }, + { + name: "wrong namespace", + ref: &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "my-token"}, + namespace: "other", + token: "", + hasError: true, + }, + } - _, err = gen.getSecretRef(ctx, &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "other-token"}, "test") - assert.NotNil(t, err) + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + token, err := gen.getSecretRef(ctx, c.ref, c.namespace) + if c.hasError { + assert.NotNil(t, err) + } else { + assert.Nil(t, err) + } + assert.Equal(t, c.token, token) - _, err = gen.getSecretRef(ctx, &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "my-token"}, "other") - assert.NotNil(t, err) + }) + } } func TestRepoHostGenerateParams(t *testing.T) { From 41dcea826f4a2aa67366ef8a2fa6c6821a35b513 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Fri, 23 Apr 2021 14:11:39 -0700 Subject: [PATCH 06/21] =?UTF-8?q?=F0=9F=93=9D=20Docs=20for=20the=20repo=20?= =?UTF-8?q?host=20generator.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/Generators.md | 94 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/docs/Generators.md b/docs/Generators.md index 7fe5002b..588bc263 100644 --- a/docs/Generators.md +++ b/docs/Generators.md @@ -370,3 +370,97 @@ Any `config.json` files found under the `cluster-config` directory will be param Only JSON file parsing is currently supported. The work to add support for YAML files is [tracked here](https://github.com/argoproj-labs/applicationset/issues/106). As with other generators, clusters *must* already be defined within Argo CD, in order to generate Applications for them. + +## Repository Host Generator + +The RepoHost generator uses the API of an SCMaaS provider to discover repositories. This fits well with many repos following the same GitOps layout patterns such as microservices. + +### Github + +The Github mode uses the Github API to scan and organization in either github.com or Github Enterprise. + +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: myapps +spec: + generators: + - repoHost: + github: + # The Github organization to scan. + organization: myorg + # For Github Enterprise: + api: https://git.example.com/ + # Reference to a Secret containing an access token. (optional) + tokenRef: + name: github-token + key: token + template: + # ... +``` + +* `organization`: Required name of the Github organization to scan. If you have multiple orgs, use multiple generators. +* `api`: If using Github Enterprise, the URL to access it. +* `tokenRef`: A Secret name and key containing the Github access token to use for requests. If not specified, will make anonymous requests which have a lower rate limit. + +For label filtering, the repository topics are used. + +### Filters + +Filters allow selecting which repositories to generate for. Filters are additive, specifying none will template every repository and each filter added will pare that down. + +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: myapps +spec: + generators: + - repoHost: + github: + # ... + filters: + - repositoryMatch: ^myapp.* + pathExists: kubernetes/kustomization.yaml + labelMatch: deploy-ok + template: + # ... +``` + +* `repositoryMatch`: A regexp matched against the repository name. +* `pathExists`: A path within the repository that must exist. Can be a file or directory, but do not include the trailing `/` for directories. +* `labelMatch`: A regexp matched against repository labels. If any label matches, the repository is included. + +### Template + +As with all generators, several keys are available for replacement in the generated application. + +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: myapps +spec: + generators: + - repoHost: + # ... + template: + metadata: + name: '{{ repository }}' + spec: + source: + repoURL: '{{ url }}' + targetRevision: '{{ branch }}' + path: kubernetes/ + project: default + destination: + server: https://kubernetes.default.svc + namespace: default +``` + +* `organization`: The name of the organization the repository is in. +* `repository`: The name of the repository. +* `url`: The clone URL for the repository. +* `branch`: The default branch of the repository. + From d7b4f18e0bb41433c0ef66aa272315a7fcc3e07c Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Fri, 23 Apr 2021 14:11:53 -0700 Subject: [PATCH 07/21] =?UTF-8?q?=F0=9F=93=9D=20Example=20for=20repo=20hos?= =?UTF-8?q?t=20generator.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repo-host-example.yaml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 examples/repo-host-generator/repo-host-example.yaml diff --git a/examples/repo-host-generator/repo-host-example.yaml b/examples/repo-host-generator/repo-host-example.yaml new file mode 100644 index 00000000..21a5a602 --- /dev/null +++ b/examples/repo-host-generator/repo-host-example.yaml @@ -0,0 +1,23 @@ +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: guestbook +spec: + generators: + - repoHost: + github: + organization: argoproj + filters: + - repositoryMatch: example-apps + template: + metadata: + name: '{{ repository }}-guestbook' + spec: + project: "default" + source: + repoURL: '{{ url }}' + targetRevision: '{{ branch }}' + path: guestbook + destination: + server: https://kubernetes.default.svc + namespace: guestbook From f5d0939b1b9da65fc16b07e7bc9a625952f5f145 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Fri, 23 Apr 2021 15:28:42 -0700 Subject: [PATCH 08/21] =?UTF-8?q?=F0=9F=8E=A8=20Add=20an=20E2E=20test=20fo?= =?UTF-8?q?r=20repo=20host=20generator.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../e2e/applicationset/applicationset_test.go | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/test/e2e/applicationset/applicationset_test.go b/test/e2e/applicationset/applicationset_test.go index 51adf544..266aa5ee 100644 --- a/test/e2e/applicationset/applicationset_test.go +++ b/test/e2e/applicationset/applicationset_test.go @@ -310,3 +310,70 @@ func TestSimpleGitFilesGenerator(t *testing.T) { When(). Delete().Then().Expect(ApplicationsDoNotExist(expectedAppsNewNamespace)) } + +func TestSimpleRepoHostGenerator(t *testing.T) { + expectedApp := argov1alpha1.Application{ + TypeMeta: metav1.TypeMeta{ + Kind: "Application", + APIVersion: "argoproj.io/v1alpha1", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "argocd-example-apps-guestbook", + Namespace: utils.ArgoCDNamespace, + Finalizers: []string{"resources-finalizer.argocd.argoproj.io"}, + }, + Spec: argov1alpha1.ApplicationSpec{ + Project: "default", + Source: argov1alpha1.ApplicationSource{ + RepoURL: "git@github.com:argoproj/argocd-example-apps.git", + TargetRevision: "master", + Path: "guestbook", + }, + Destination: argov1alpha1.ApplicationDestination{ + Server: "https://kubernetes.default.svc", + Namespace: "guestbook", + }, + }, + } + + // Because you can't &"". + repoMatch := "example-apps" + + Given(t). + // Create a RepoHostGenerator-based ApplicationSet + When().Create(v1alpha1.ApplicationSet{ObjectMeta: metav1.ObjectMeta{ + Name: "simple-repo-host-generator", + }, + Spec: v1alpha1.ApplicationSetSpec{ + Template: v1alpha1.ApplicationSetTemplate{ + ApplicationSetTemplateMeta: v1alpha1.ApplicationSetTemplateMeta{Name: "{{ repository }}-guestbook"}, + Spec: argov1alpha1.ApplicationSpec{ + Project: "default", + Source: argov1alpha1.ApplicationSource{ + RepoURL: "{{ url }}", + TargetRevision: "{{ branch }}", + Path: "guestbook", + }, + Destination: argov1alpha1.ApplicationDestination{ + Server: "https://kubernetes.default.svc", + Namespace: "guestbook", + }, + }, + }, + Generators: []v1alpha1.ApplicationSetGenerator{ + { + RepoHost: &v1alpha1.RepoHostGenerator{ + Github: &v1alpha1.RepoHostGeneratorGithub{ + Organization: "argoprod", + }, + Filters: []v1alpha1.RepoHostGeneratorFilter{ + { + RepositoryMatch: &repoMatch, + }, + }, + }, + }, + }, + }, + }).Then().Expect(ApplicationsExist([]argov1alpha1.Application{expectedApp})) +} From 450c2a182260752a363cd19937e34fa8cccd8961 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Sat, 24 Apr 2021 14:49:21 -0700 Subject: [PATCH 09/21] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Typo=20in=20my=20E2E?= =?UTF-8?q?=20test.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/e2e/applicationset/applicationset_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/applicationset/applicationset_test.go b/test/e2e/applicationset/applicationset_test.go index 266aa5ee..6d3a5c2a 100644 --- a/test/e2e/applicationset/applicationset_test.go +++ b/test/e2e/applicationset/applicationset_test.go @@ -364,7 +364,7 @@ func TestSimpleRepoHostGenerator(t *testing.T) { { RepoHost: &v1alpha1.RepoHostGenerator{ Github: &v1alpha1.RepoHostGeneratorGithub{ - Organization: "argoprod", + Organization: "argoproj", }, Filters: []v1alpha1.RepoHostGeneratorFilter{ { From 25ef713c06ae4af2e902901872a485e131c5f101 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Sat, 24 Apr 2021 14:50:52 -0700 Subject: [PATCH 10/21] =?UTF-8?q?=F0=9F=8E=A8=20Regenerate=20the=20manifes?= =?UTF-8?q?ts=20with=20controller-get=200.3.0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The indentation style changed between versions. --- manifests/install-with-argo-cd.yaml | 1954 +++++++++++++++++++-------- manifests/install.yaml | 791 +++++++---- 2 files changed, 1920 insertions(+), 825 deletions(-) diff --git a/manifests/install-with-argo-cd.yaml b/manifests/install-with-argo-cd.yaml index 0f67204e..cef82369 100644 --- a/manifests/install-with-argo-cd.yaml +++ b/manifests/install-with-argo-cd.yaml @@ -35,15 +35,20 @@ spec: description: Application is a definition of Application resource. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object operation: - description: Operation contains information about a requested or running operation + description: Operation contains information about a requested or running + operation properties: info: description: Info is a list of informational items for this operation @@ -59,34 +64,42 @@ spec: type: object type: array initiatedBy: - description: InitiatedBy contains information about who initiated the operations + description: InitiatedBy contains information about who initiated + the operations properties: automated: - description: Automated is set to true if operation was initiated automatically by the application controller. + description: Automated is set to true if operation was initiated + automatically by the application controller. type: boolean username: - description: Username contains the name of a user who started operation + description: Username contains the name of a user who started + operation type: string type: object retry: description: Retry controls the strategy to apply if a sync fails properties: backoff: - description: Backoff controls how to backoff on subsequent retries of failed syncs + description: Backoff controls how to backoff on subsequent retries + of failed syncs properties: duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount to back off. Default unit + is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration after each failed retry + description: Factor is a factor to multiply the base duration + after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed for the backoff strategy + description: MaxDuration is the maximum amount of time allowed + for the backoff strategy type: string type: object limit: - description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed. + description: Limit is the maximum number of attempts for retrying + a failed sync. If set to 0, no retries will be performed. format: int64 type: integer type: object @@ -94,18 +107,22 @@ spec: description: Sync contains parameters for the operation properties: dryRun: - description: DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync + description: DryRun specifies to perform a `kubectl apply --dry-run` + without actually performing the sync type: boolean manifests: - description: Manifests is an optional field that overrides sync source with a local directory for development + description: Manifests is an optional field that overrides sync + source with a local directory for development items: type: string type: array prune: - description: Prune specifies to delete resources from the cluster that are no longer tracked in git + description: Prune specifies to delete resources from the cluster + that are no longer tracked in git type: boolean resources: - description: Resources describes which resources shall be part of the sync + description: Resources describes which resources shall be part + of the sync items: description: SyncOperationResource contains resources to sync. properties: @@ -123,30 +140,41 @@ spec: type: object type: array revision: - description: Revision is the revision (Git) or chart version (Helm) which to sync the application to If omitted, will use the revision specified in app spec. + description: Revision is the revision (Git) or chart version (Helm) + which to sync the application to If omitted, will use the revision + specified in app spec. type: string source: - description: Source overrides the source definition set in the application. This is typically set in a Rollback operation and is nil during a Sync operation + description: Source overrides the source definition set in the + application. This is typically set in a Rollback operation and + is nil during a Sync operation properties: chart: - description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. + description: Chart is a Helm chart name, and must be specified + for applications sourced from a Helm repo. type: string directory: description: Directory holds path/directory specific options properties: exclude: - description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation + description: Exclude contains a glob pattern to match + paths against that should be explicitly excluded from + being used during manifest generation type: string include: - description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation + description: Include contains a glob pattern to match + paths against that should be explicitly included during + manifest generation type: string jsonnet: description: Jsonnet holds options specific to Jsonnet properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet External + Variables items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to + be passed to jsonnet during manifest generation properties: code: type: boolean @@ -167,7 +195,8 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to + be passed to jsonnet during manifest generation properties: code: type: boolean @@ -182,32 +211,40 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan a directory recursively for manifests + description: Recurse specifies whether to scan a directory + recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters to the + helm template items: - description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation + description: HelmFileParameter is a file parameter that's + passed to helm template during manifest generation properties: name: description: Name is the name of the Helm parameter type: string path: - description: Path is the path to the file containing the values for the Helm parameter + description: Path is the path to the file containing + the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation + description: Parameters is a list of Helm parameters which + are passed to the helm template command upon manifest + generation items: - description: HelmParameter is a parameter that's passed to helm template during manifest generation + description: HelmParameter is a parameter that's passed + to helm template during manifest generation properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines whether to tell + Helm to interpret booleans and numbers as strings type: boolean name: description: Name is the name of the Helm parameter @@ -218,30 +255,37 @@ spec: type: object type: array releaseName: - description: ReleaseName is the Helm release name to use. If omitted it will use the application name + description: ReleaseName is the Helm release name to use. + If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm value files + to use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be passed to helm template, typically defined as a block + description: Values specifies Helm values to be passed + to helm template, typically defined as a block type: string version: - description: Version is the Helm version to use for templating (either "2" or "3") + description: Version is the Helm version to use for templating + (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application environment + name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet component + parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet component + parameter properties: component: type: string @@ -261,42 +305,53 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional annotations to add to rendered manifests + description: CommonAnnotations is a list of additional + annotations to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional labels to add to rendered manifests + description: CommonLabels is a list of additional labels + to add to rendered manifests type: object images: - description: Images is a list of Kustomize image override specifications + description: Images is a list of Kustomize image override + specifications items: - description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize image + definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for Kustomize apps + description: NamePrefix is a prefix appended to resources + for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for Kustomize apps + description: NameSuffix is a suffix appended to resources + for Kustomize apps type: string version: - description: Version controls which version of Kustomize to use for rendering manifests + description: Version controls which version of Kustomize + to use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. + description: Path is a directory path within the Git repository, + and is only valid for applications sourced from Git. type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config management + plugin specific options properties: env: description: Env is a list of environment variable entries items: - description: EnvEntry represents an entry in the application's environment + description: EnvEntry represents an entry in the application's + environment properties: name: - description: Name is the name of the variable, usually expressed in uppercase + description: Name is the name of the variable, usually + expressed in uppercase type: string value: description: Value is the value of the variable @@ -310,10 +365,14 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests + description: RepoURL is the URL to the repository (Git or + Helm) that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. + description: TargetRevision defines the revision of the source + to sync the application to. In case of Git, this can be + commit, tag, or branch. If omitted, will equal to HEAD. + In case of Helm, this is a semver tag for the Chart's version. type: string required: - repoURL @@ -327,42 +386,60 @@ spec: description: SyncStrategy describes how to perform the sync properties: apply: - description: Apply will perform a `kubectl apply` to perform the sync. + description: Apply will perform a `kubectl apply` to perform + the sync. properties: force: - description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times. + description: Force indicates whether or not to supply + the --force flag to `kubectl apply`. The --force flag + deletes and re-create the resource, when PATCH encounters + conflict and has retried for 5 times. type: boolean type: object hook: - description: Hook will submit any referenced resources to perform the sync. This is the default strategy + description: Hook will submit any referenced resources to + perform the sync. This is the default strategy properties: force: - description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times. + description: Force indicates whether or not to supply + the --force flag to `kubectl apply`. The --force flag + deletes and re-create the resource, when PATCH encounters + conflict and has retried for 5 times. type: boolean type: object type: object type: object type: object spec: - description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. + description: ApplicationSpec represents desired application state. Contains + link to repository with application definition and additional parameters + link definition revision. properties: destination: - description: Destination is a reference to the target Kubernetes server and namespace + description: Destination is a reference to the target Kubernetes server + and namespace properties: name: - description: Name is an alternate way of specifying the target cluster by its symbolic name + description: Name is an alternate way of specifying the target + cluster by its symbolic name type: string namespace: - description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace + description: Namespace specifies the target namespace for the + application's resources. The namespace will only be set for + namespace-scoped resources that have not set a value for .metadata.namespace type: string server: - description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API + description: Server specifies the URL of the target cluster and + must be set to the Kubernetes control plane API type: string type: object ignoreDifferences: - description: IgnoreDifferences is a list of resources and their fields which should be ignored during comparison + description: IgnoreDifferences is a list of resources and their fields + which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. + description: ResourceIgnoreDifferences contains resource filter + and list of json paths which should be ignored during comparison + with live state. properties: group: type: string @@ -382,7 +459,8 @@ spec: type: object type: array info: - description: Info contains a list of information (URLs, email addresses, and plain text) that relates to the application + description: Info contains a list of information (URLs, email addresses, + and plain text) that relates to the application items: properties: name: @@ -395,26 +473,40 @@ spec: type: object type: array project: - description: Project is a reference to the project this application belongs to. The empty string means that application belongs to the 'default' project. + description: Project is a reference to the project this application + belongs to. The empty string means that application belongs to the + 'default' project. type: string revisionHistoryLimit: - description: RevisionHistoryLimit limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. + description: RevisionHistoryLimit limits the number of items kept + in the application's revision history, which is used for informational + purposes as well as for rollbacks to previous versions. This should + only be changed in exceptional circumstances. Setting to zero will + store no history. This will reduce storage used. Increasing will + increase the space used to store the history, so we do not recommend + increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location of the application's manifests or chart + description: Source is a reference to the location of the application's + manifests or chart properties: chart: - description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. + description: Chart is a Helm chart name, and must be specified + for applications sourced from a Helm repo. type: string directory: description: Directory holds path/directory specific options properties: exclude: - description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation + description: Exclude contains a glob pattern to match paths + against that should be explicitly excluded from being used + during manifest generation type: string include: - description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation + description: Include contains a glob pattern to match paths + against that should be explicitly included during manifest + generation type: string jsonnet: description: Jsonnet holds options specific to Jsonnet @@ -422,7 +514,8 @@ spec: extVars: description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be + passed to jsonnet during manifest generation properties: code: type: boolean @@ -443,7 +536,8 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be + passed to jsonnet during manifest generation properties: code: type: boolean @@ -458,32 +552,39 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan a directory recursively for manifests + description: Recurse specifies whether to scan a directory + recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters to the helm + template items: - description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation + description: HelmFileParameter is a file parameter that's + passed to helm template during manifest generation properties: name: description: Name is the name of the Helm parameter type: string path: - description: Path is the path to the file containing the values for the Helm parameter + description: Path is the path to the file containing + the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation + description: Parameters is a list of Helm parameters which + are passed to the helm template command upon manifest generation items: - description: HelmParameter is a parameter that's passed to helm template during manifest generation + description: HelmParameter is a parameter that's passed + to helm template during manifest generation properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines whether to tell + Helm to interpret booleans and numbers as strings type: boolean name: description: Name is the name of the Helm parameter @@ -494,28 +595,34 @@ spec: type: object type: array releaseName: - description: ReleaseName is the Helm release name to use. If omitted it will use the application name + description: ReleaseName is the Helm release name to use. + If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm value files to + use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be passed to helm template, typically defined as a block + description: Values specifies Helm values to be passed to + helm template, typically defined as a block type: string version: - description: Version is the Helm version to use for templating (either "2" or "3") + description: Version is the Helm version to use for templating + (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application environment + name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet component parameter + override values items: description: KsonnetParameter is a ksonnet component parameter properties: @@ -537,42 +644,53 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional annotations to add to rendered manifests + description: CommonAnnotations is a list of additional annotations + to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional labels to add to rendered manifests + description: CommonLabels is a list of additional labels to + add to rendered manifests type: object images: - description: Images is a list of Kustomize image override specifications + description: Images is a list of Kustomize image override + specifications items: - description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize image + definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for Kustomize apps + description: NamePrefix is a prefix appended to resources + for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for Kustomize apps + description: NameSuffix is a suffix appended to resources + for Kustomize apps type: string version: - description: Version controls which version of Kustomize to use for rendering manifests + description: Version controls which version of Kustomize to + use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. + description: Path is a directory path within the Git repository, + and is only valid for applications sourced from Git. type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config management plugin + specific options properties: env: description: Env is a list of environment variable entries items: - description: EnvEntry represents an entry in the application's environment + description: EnvEntry represents an entry in the application's + environment properties: name: - description: Name is the name of the variable, usually expressed in uppercase + description: Name is the name of the variable, usually + expressed in uppercase type: string value: description: Value is the value of the variable @@ -586,10 +704,14 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests + description: RepoURL is the URL to the repository (Git or Helm) + that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. + description: TargetRevision defines the revision of the source + to sync the application to. In case of Git, this can be commit, + tag, or branch. If omitted, will equal to HEAD. In case of Helm, + this is a semver tag for the Chart's version. type: string required: - repoURL @@ -598,37 +720,49 @@ spec: description: SyncPolicy controls when and how a sync will be performed properties: automated: - description: Automated will keep an application synced to the target revision + description: Automated will keep an application synced to the + target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live resources (default: false)' + description: 'AllowEmpty allows apps have zero live resources + (default: false)' type: boolean prune: - description: 'Prune specifies whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false)' + description: 'Prune specifies whether to delete resources + from the cluster that are not found in the sources anymore + as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal specifes whether to revert resources back to their desired state upon modification in the cluster (default: false)' + description: 'SelfHeal specifes whether to revert resources + back to their desired state upon modification in the cluster + (default: false)' type: boolean type: object retry: description: Retry controls failed sync retry behavior properties: backoff: - description: Backoff controls how to backoff on subsequent retries of failed syncs + description: Backoff controls how to backoff on subsequent + retries of failed syncs properties: duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount to back off. Default + unit is seconds, but could also be a duration (e.g. + "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration after each failed retry + description: Factor is a factor to multiply the base duration + after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed for the backoff strategy + description: MaxDuration is the maximum amount of time + allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed. + description: Limit is the maximum number of attempts for retrying + a failed sync. If set to 0, no retries will be performed. format: int64 type: integer type: object @@ -647,16 +781,20 @@ spec: description: ApplicationStatus contains status information for the application properties: conditions: - description: Conditions is a list of currently observed application conditions + description: Conditions is a list of currently observed application + conditions items: - description: ApplicationCondition contains details about an application condition, which is usally an error or warning + description: ApplicationCondition contains details about an application + condition, which is usally an error or warning properties: lastTransitionTime: - description: LastTransitionTime is the time the condition was last observed + description: LastTransitionTime is the time the condition was + last observed format: date-time type: string message: - description: Message contains human-readable message indicating details about condition + description: Message contains human-readable message indicating + details about condition type: string type: description: Type is an application condition type @@ -667,22 +805,28 @@ spec: type: object type: array health: - description: Health contains information about the application's current health status + description: Health contains information about the application's current + health status properties: message: - description: Message is a human-readable informational message describing the health status + description: Message is a human-readable informational message + describing the health status type: string status: - description: Status holds the status code of the application or resource + description: Status holds the status code of the application or + resource type: string type: object history: - description: History contains information about the application's sync history + description: History contains information about the application's + sync history items: - description: RevisionHistory contains history information about a previous sync + description: RevisionHistory contains history information about + a previous sync properties: deployStartedAt: - description: DeployStartedAt holds the time the sync operation started + description: DeployStartedAt holds the time the sync operation + started format: date-time type: string deployedAt: @@ -694,30 +838,39 @@ spec: format: int64 type: integer revision: - description: Revision holds the revision the sync was performed against + description: Revision holds the revision the sync was performed + against type: string source: - description: Source is a reference to the application source used for the sync operation + description: Source is a reference to the application source + used for the sync operation properties: chart: - description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. + description: Chart is a Helm chart name, and must be specified + for applications sourced from a Helm repo. type: string directory: description: Directory holds path/directory specific options properties: exclude: - description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation + description: Exclude contains a glob pattern to match + paths against that should be explicitly excluded from + being used during manifest generation type: string include: - description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation + description: Include contains a glob pattern to match + paths against that should be explicitly included during + manifest generation type: string jsonnet: description: Jsonnet holds options specific to Jsonnet properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet External + Variables items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -736,9 +889,11 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet Top-level + Arguments items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -753,32 +908,41 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan a directory recursively for manifests + description: Recurse specifies whether to scan a directory + recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters to the + helm template items: - description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation + description: HelmFileParameter is a file parameter + that's passed to helm template during manifest generation properties: name: description: Name is the name of the Helm parameter type: string path: - description: Path is the path to the file containing the values for the Helm parameter + description: Path is the path to the file containing + the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation + description: Parameters is a list of Helm parameters + which are passed to the helm template command upon + manifest generation items: - description: HelmParameter is a parameter that's passed to helm template during manifest generation + description: HelmParameter is a parameter that's passed + to helm template during manifest generation properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines whether to + tell Helm to interpret booleans and numbers + as strings type: boolean name: description: Name is the name of the Helm parameter @@ -789,30 +953,37 @@ spec: type: object type: array releaseName: - description: ReleaseName is the Helm release name to use. If omitted it will use the application name + description: ReleaseName is the Helm release name to + use. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm value files + to use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be passed to helm template, typically defined as a block + description: Values specifies Helm values to be passed + to helm template, typically defined as a block type: string version: - description: Version is the Helm version to use for templating (either "2" or "3") + description: Version is the Helm version to use for + templating (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application environment + name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet component + parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet component + parameter properties: component: type: string @@ -832,42 +1003,53 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional annotations to add to rendered manifests + description: CommonAnnotations is a list of additional + annotations to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional labels to add to rendered manifests + description: CommonLabels is a list of additional labels + to add to rendered manifests type: object images: - description: Images is a list of Kustomize image override specifications + description: Images is a list of Kustomize image override + specifications items: - description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize + image definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for Kustomize apps + description: NamePrefix is a prefix appended to resources + for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for Kustomize apps + description: NameSuffix is a suffix appended to resources + for Kustomize apps type: string version: - description: Version controls which version of Kustomize to use for rendering manifests + description: Version controls which version of Kustomize + to use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. + description: Path is a directory path within the Git repository, + and is only valid for applications sourced from Git. type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config management + plugin specific options properties: env: description: Env is a list of environment variable entries items: - description: EnvEntry represents an entry in the application's environment + description: EnvEntry represents an entry in the application's + environment properties: name: - description: Name is the name of the variable, usually expressed in uppercase + description: Name is the name of the variable, + usually expressed in uppercase type: string value: description: Value is the value of the variable @@ -881,10 +1063,15 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests + description: RepoURL is the URL to the repository (Git or + Helm) that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. + description: TargetRevision defines the revision of the + source to sync the application to. In case of Git, this + can be commit, tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver tag for the + Chart's version. type: string required: - repoURL @@ -896,24 +1083,29 @@ spec: type: object type: array observedAt: - description: 'ObservedAt indicates when the application state was updated without querying latest git state Deprecated: controller no longer updates ObservedAt field' + description: 'ObservedAt indicates when the application state was + updated without querying latest git state Deprecated: controller + no longer updates ObservedAt field' format: date-time type: string operationState: - description: OperationState contains information about any ongoing operations, such as a sync + description: OperationState contains information about any ongoing + operations, such as a sync properties: finishedAt: description: FinishedAt contains time of operation completion format: date-time type: string message: - description: Message holds any pertinent messages when attempting to perform operation (typically errors). + description: Message holds any pertinent messages when attempting + to perform operation (typically errors). type: string operation: description: Operation is the original requested operation properties: info: - description: Info is a list of informational items for this operation + description: Info is a list of informational items for this + operation items: properties: name: @@ -926,34 +1118,45 @@ spec: type: object type: array initiatedBy: - description: InitiatedBy contains information about who initiated the operations + description: InitiatedBy contains information about who initiated + the operations properties: automated: - description: Automated is set to true if operation was initiated automatically by the application controller. + description: Automated is set to true if operation was + initiated automatically by the application controller. type: boolean username: - description: Username contains the name of a user who started operation + description: Username contains the name of a user who + started operation type: string type: object retry: - description: Retry controls the strategy to apply if a sync fails + description: Retry controls the strategy to apply if a sync + fails properties: backoff: - description: Backoff controls how to backoff on subsequent retries of failed syncs + description: Backoff controls how to backoff on subsequent + retries of failed syncs properties: duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount to back off. Default + unit is seconds, but could also be a duration (e.g. + "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration after each failed retry + description: Factor is a factor to multiply the base + duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed for the backoff strategy + description: MaxDuration is the maximum amount of + time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed. + description: Limit is the maximum number of attempts for + retrying a failed sync. If set to 0, no retries will + be performed. format: int64 type: integer type: object @@ -961,20 +1164,25 @@ spec: description: Sync contains parameters for the operation properties: dryRun: - description: DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync + description: DryRun specifies to perform a `kubectl apply + --dry-run` without actually performing the sync type: boolean manifests: - description: Manifests is an optional field that overrides sync source with a local directory for development + description: Manifests is an optional field that overrides + sync source with a local directory for development items: type: string type: array prune: - description: Prune specifies to delete resources from the cluster that are no longer tracked in git + description: Prune specifies to delete resources from + the cluster that are no longer tracked in git type: boolean resources: - description: Resources describes which resources shall be part of the sync + description: Resources describes which resources shall + be part of the sync items: - description: SyncOperationResource contains resources to sync. + description: SyncOperationResource contains resources + to sync. properties: group: type: string @@ -990,30 +1198,45 @@ spec: type: object type: array revision: - description: Revision is the revision (Git) or chart version (Helm) which to sync the application to If omitted, will use the revision specified in app spec. + description: Revision is the revision (Git) or chart version + (Helm) which to sync the application to If omitted, + will use the revision specified in app spec. type: string source: - description: Source overrides the source definition set in the application. This is typically set in a Rollback operation and is nil during a Sync operation + description: Source overrides the source definition set + in the application. This is typically set in a Rollback + operation and is nil during a Sync operation properties: chart: - description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. + description: Chart is a Helm chart name, and must + be specified for applications sourced from a Helm + repo. type: string directory: - description: Directory holds path/directory specific options + description: Directory holds path/directory specific + options properties: exclude: - description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation + description: Exclude contains a glob pattern to + match paths against that should be explicitly + excluded from being used during manifest generation type: string include: - description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation + description: Include contains a glob pattern to + match paths against that should be explicitly + included during manifest generation type: string jsonnet: - description: Jsonnet holds options specific to Jsonnet + description: Jsonnet holds options specific to + Jsonnet properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet + External Variables items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest + generation properties: code: type: boolean @@ -1032,9 +1255,12 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet Top-level + Arguments items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest + generation properties: code: type: boolean @@ -1049,66 +1275,88 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan a directory recursively for manifests + description: Recurse specifies whether to scan + a directory recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters + to the helm template items: - description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation + description: HelmFileParameter is a file parameter + that's passed to helm template during manifest + generation properties: name: - description: Name is the name of the Helm parameter + description: Name is the name of the Helm + parameter type: string path: - description: Path is the path to the file containing the values for the Helm parameter + description: Path is the path to the file + containing the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation + description: Parameters is a list of Helm parameters + which are passed to the helm template command + upon manifest generation items: - description: HelmParameter is a parameter that's passed to helm template during manifest generation + description: HelmParameter is a parameter that's + passed to helm template during manifest generation properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines whether + to tell Helm to interpret booleans and + numbers as strings type: boolean name: - description: Name is the name of the Helm parameter + description: Name is the name of the Helm + parameter type: string value: - description: Value is the value for the Helm parameter + description: Value is the value for the + Helm parameter type: string type: object type: array releaseName: - description: ReleaseName is the Helm release name to use. If omitted it will use the application name + description: ReleaseName is the Helm release name + to use. If omitted it will use the application + name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm value + files to use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be passed to helm template, typically defined as a block + description: Values specifies Helm values to be + passed to helm template, typically defined as + a block type: string version: - description: Version is the Helm version to use for templating (either "2" or "3") + description: Version is the Helm version to use + for templating (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application + environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet + component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet component + parameter properties: component: type: string @@ -1128,42 +1376,55 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional annotations to add to rendered manifests + description: CommonAnnotations is a list of additional + annotations to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional labels to add to rendered manifests + description: CommonLabels is a list of additional + labels to add to rendered manifests type: object images: - description: Images is a list of Kustomize image override specifications + description: Images is a list of Kustomize image + override specifications items: - description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize + image definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for Kustomize apps + description: NamePrefix is a prefix appended to + resources for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for Kustomize apps + description: NameSuffix is a suffix appended to + resources for Kustomize apps type: string version: - description: Version controls which version of Kustomize to use for rendering manifests + description: Version controls which version of + Kustomize to use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. + description: Path is a directory path within the Git + repository, and is only valid for applications sourced + from Git. type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config management + plugin specific options properties: env: - description: Env is a list of environment variable entries + description: Env is a list of environment variable + entries items: - description: EnvEntry represents an entry in the application's environment + description: EnvEntry represents an entry in + the application's environment properties: name: - description: Name is the name of the variable, usually expressed in uppercase + description: Name is the name of the variable, + usually expressed in uppercase type: string value: description: Value is the value of the variable @@ -1177,34 +1438,51 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests + description: RepoURL is the URL to the repository + (Git or Helm) that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. + description: TargetRevision defines the revision of + the source to sync the application to. In case of + Git, this can be commit, tag, or branch. If omitted, + will equal to HEAD. In case of Helm, this is a semver + tag for the Chart's version. type: string required: - repoURL type: object syncOptions: - description: SyncOptions provide per-sync sync-options, e.g. Validate=false + description: SyncOptions provide per-sync sync-options, + e.g. Validate=false items: type: string type: array syncStrategy: - description: SyncStrategy describes how to perform the sync + description: SyncStrategy describes how to perform the + sync properties: apply: - description: Apply will perform a `kubectl apply` to perform the sync. + description: Apply will perform a `kubectl apply` + to perform the sync. properties: force: - description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times. + description: Force indicates whether or not to + supply the --force flag to `kubectl apply`. + The --force flag deletes and re-create the resource, + when PATCH encounters conflict and has retried + for 5 times. type: boolean type: object hook: - description: Hook will submit any referenced resources to perform the sync. This is the default strategy + description: Hook will submit any referenced resources + to perform the sync. This is the default strategy properties: force: - description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times. + description: Force indicates whether or not to + supply the --force flag to `kubectl apply`. + The --force flag deletes and re-create the resource, + when PATCH encounters conflict and has retried + for 5 times. type: boolean type: object type: object @@ -1225,39 +1503,50 @@ spec: description: SyncResult is the result of a Sync operation properties: resources: - description: Resources contains a list of sync result items for each individual resource in a sync operation + description: Resources contains a list of sync result items + for each individual resource in a sync operation items: - description: ResourceResult holds the operation result details of a specific resource + description: ResourceResult holds the operation result details + of a specific resource properties: group: description: Group specifies the API group of the resource type: string hookPhase: - description: HookPhase contains the state of any operation associated with this resource OR hook This can also contain values for non-hook resources. + description: HookPhase contains the state of any operation + associated with this resource OR hook This can also + contain values for non-hook resources. type: string hookType: - description: HookType specifies the type of the hook. Empty for non-hook resources + description: HookType specifies the type of the hook. + Empty for non-hook resources type: string kind: description: Kind specifies the API kind of the resource type: string message: - description: Message contains an informational or error message for the last sync OR operation + description: Message contains an informational or error + message for the last sync OR operation type: string name: description: Name specifies the name of the resource type: string namespace: - description: Namespace specifies the target namespace of the resource + description: Namespace specifies the target namespace + of the resource type: string status: - description: Status holds the final result of the sync. Will be empty if the resources is yet to be applied/pruned and is always zero-value for hooks + description: Status holds the final result of the sync. + Will be empty if the resources is yet to be applied/pruned + and is always zero-value for hooks type: string syncPhase: - description: SyncPhase indicates the particular phase of the sync that this result was acquired in + description: SyncPhase indicates the particular phase + of the sync that this result was acquired in type: string version: - description: Version specifies the API version of the resource + description: Version specifies the API version of the + resource type: string required: - group @@ -1268,30 +1557,39 @@ spec: type: object type: array revision: - description: Revision holds the revision this sync operation was performed to + description: Revision holds the revision this sync operation + was performed to type: string source: - description: Source records the application source information of the sync, used for comparing auto-sync + description: Source records the application source information + of the sync, used for comparing auto-sync properties: chart: - description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. + description: Chart is a Helm chart name, and must be specified + for applications sourced from a Helm repo. type: string directory: description: Directory holds path/directory specific options properties: exclude: - description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation + description: Exclude contains a glob pattern to match + paths against that should be explicitly excluded + from being used during manifest generation type: string include: - description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation + description: Include contains a glob pattern to match + paths against that should be explicitly included + during manifest generation type: string jsonnet: description: Jsonnet holds options specific to Jsonnet properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet External + Variables items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -1310,9 +1608,11 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet Top-level + Arguments items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -1327,66 +1627,84 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan a directory recursively for manifests + description: Recurse specifies whether to scan a directory + recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters to + the helm template items: - description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation + description: HelmFileParameter is a file parameter + that's passed to helm template during manifest + generation properties: name: description: Name is the name of the Helm parameter type: string path: - description: Path is the path to the file containing the values for the Helm parameter + description: Path is the path to the file containing + the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation + description: Parameters is a list of Helm parameters + which are passed to the helm template command upon + manifest generation items: - description: HelmParameter is a parameter that's passed to helm template during manifest generation + description: HelmParameter is a parameter that's + passed to helm template during manifest generation properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines whether + to tell Helm to interpret booleans and numbers + as strings type: boolean name: description: Name is the name of the Helm parameter type: string value: - description: Value is the value for the Helm parameter + description: Value is the value for the Helm + parameter type: string type: object type: array releaseName: - description: ReleaseName is the Helm release name to use. If omitted it will use the application name + description: ReleaseName is the Helm release name + to use. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm value files + to use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be passed to helm template, typically defined as a block + description: Values specifies Helm values to be passed + to helm template, typically defined as a block type: string version: - description: Version is the Helm version to use for templating (either "2" or "3") + description: Version is the Helm version to use for + templating (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application + environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet component + parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet component + parameter properties: component: type: string @@ -1406,42 +1724,54 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional annotations to add to rendered manifests + description: CommonAnnotations is a list of additional + annotations to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional labels to add to rendered manifests + description: CommonLabels is a list of additional + labels to add to rendered manifests type: object images: - description: Images is a list of Kustomize image override specifications + description: Images is a list of Kustomize image override + specifications items: - description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize + image definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for Kustomize apps + description: NamePrefix is a prefix appended to resources + for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for Kustomize apps + description: NameSuffix is a suffix appended to resources + for Kustomize apps type: string version: - description: Version controls which version of Kustomize to use for rendering manifests + description: Version controls which version of Kustomize + to use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. + description: Path is a directory path within the Git repository, + and is only valid for applications sourced from Git. type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config management + plugin specific options properties: env: - description: Env is a list of environment variable entries + description: Env is a list of environment variable + entries items: - description: EnvEntry represents an entry in the application's environment + description: EnvEntry represents an entry in the + application's environment properties: name: - description: Name is the name of the variable, usually expressed in uppercase + description: Name is the name of the variable, + usually expressed in uppercase type: string value: description: Value is the value of the variable @@ -1455,10 +1785,15 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests + description: RepoURL is the URL to the repository (Git + or Helm) that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. + description: TargetRevision defines the revision of the + source to sync the application to. In case of Git, this + can be commit, tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver tag for the + Chart's version. type: string required: - repoURL @@ -1472,24 +1807,30 @@ spec: - startedAt type: object reconciledAt: - description: ReconciledAt indicates when the application state was reconciled using the latest git version + description: ReconciledAt indicates when the application state was + reconciled using the latest git version format: date-time type: string resources: - description: Resources is a list of Kubernetes resources managed by this application + description: Resources is a list of Kubernetes resources managed by + this application items: - description: 'ResourceStatus holds the current sync and health status of a resource TODO: describe members of this type' + description: 'ResourceStatus holds the current sync and health status + of a resource TODO: describe members of this type' properties: group: type: string health: - description: HealthStatus contains information about the currently observed health state of an application or resource + description: HealthStatus contains information about the currently + observed health state of an application or resource properties: message: - description: Message is a human-readable informational message describing the health status + description: Message is a human-readable informational message + describing the health status type: string status: - description: Status holds the status code of the application or resource + description: Status holds the status code of the application + or resource type: string type: object hook: @@ -1503,7 +1844,8 @@ spec: requiresPruning: type: boolean status: - description: SyncStatusCode is a type which represents possible comparison results + description: SyncStatusCode is a type which represents possible + comparison results type: string version: type: string @@ -1513,10 +1855,12 @@ spec: description: SourceType specifies the type of this application type: string summary: - description: Summary contains a list of URLs and container images used by this application + description: Summary contains a list of URLs and container images + used by this application properties: externalURLs: - description: ExternalURLs holds all external URLs of application child resources. + description: ExternalURLs holds all external URLs of application + child resources. items: type: string type: array @@ -1527,46 +1871,62 @@ spec: type: array type: object sync: - description: Sync contains information about the application's current sync status + description: Sync contains information about the application's current + sync status properties: comparedTo: - description: ComparedTo contains information about what has been compared + description: ComparedTo contains information about what has been + compared properties: destination: - description: Destination is a reference to the application's destination used for comparison + description: Destination is a reference to the application's + destination used for comparison properties: name: - description: Name is an alternate way of specifying the target cluster by its symbolic name + description: Name is an alternate way of specifying the + target cluster by its symbolic name type: string namespace: - description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace + description: Namespace specifies the target namespace + for the application's resources. The namespace will + only be set for namespace-scoped resources that have + not set a value for .metadata.namespace type: string server: - description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API + description: Server specifies the URL of the target cluster + and must be set to the Kubernetes control plane API type: string type: object source: - description: Source is a reference to the application's source used for comparison + description: Source is a reference to the application's source + used for comparison properties: chart: - description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. + description: Chart is a Helm chart name, and must be specified + for applications sourced from a Helm repo. type: string directory: description: Directory holds path/directory specific options properties: exclude: - description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation + description: Exclude contains a glob pattern to match + paths against that should be explicitly excluded + from being used during manifest generation type: string include: - description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation + description: Include contains a glob pattern to match + paths against that should be explicitly included + during manifest generation type: string jsonnet: description: Jsonnet holds options specific to Jsonnet properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet External + Variables items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -1585,9 +1945,11 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet Top-level + Arguments items: - description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -1602,66 +1964,84 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan a directory recursively for manifests + description: Recurse specifies whether to scan a directory + recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters to + the helm template items: - description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation + description: HelmFileParameter is a file parameter + that's passed to helm template during manifest + generation properties: name: description: Name is the name of the Helm parameter type: string path: - description: Path is the path to the file containing the values for the Helm parameter + description: Path is the path to the file containing + the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation + description: Parameters is a list of Helm parameters + which are passed to the helm template command upon + manifest generation items: - description: HelmParameter is a parameter that's passed to helm template during manifest generation + description: HelmParameter is a parameter that's + passed to helm template during manifest generation properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines whether + to tell Helm to interpret booleans and numbers + as strings type: boolean name: description: Name is the name of the Helm parameter type: string value: - description: Value is the value for the Helm parameter + description: Value is the value for the Helm + parameter type: string type: object type: array releaseName: - description: ReleaseName is the Helm release name to use. If omitted it will use the application name + description: ReleaseName is the Helm release name + to use. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm value files + to use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be passed to helm template, typically defined as a block + description: Values specifies Helm values to be passed + to helm template, typically defined as a block type: string version: - description: Version is the Helm version to use for templating (either "2" or "3") + description: Version is the Helm version to use for + templating (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application + environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet component + parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet component + parameter properties: component: type: string @@ -1681,42 +2061,54 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional annotations to add to rendered manifests + description: CommonAnnotations is a list of additional + annotations to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional labels to add to rendered manifests + description: CommonLabels is a list of additional + labels to add to rendered manifests type: object images: - description: Images is a list of Kustomize image override specifications + description: Images is a list of Kustomize image override + specifications items: - description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize + image definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for Kustomize apps + description: NamePrefix is a prefix appended to resources + for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for Kustomize apps + description: NameSuffix is a suffix appended to resources + for Kustomize apps type: string version: - description: Version controls which version of Kustomize to use for rendering manifests + description: Version controls which version of Kustomize + to use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. + description: Path is a directory path within the Git repository, + and is only valid for applications sourced from Git. type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config management + plugin specific options properties: env: - description: Env is a list of environment variable entries + description: Env is a list of environment variable + entries items: - description: EnvEntry represents an entry in the application's environment + description: EnvEntry represents an entry in the + application's environment properties: name: - description: Name is the name of the variable, usually expressed in uppercase + description: Name is the name of the variable, + usually expressed in uppercase type: string value: description: Value is the value of the variable @@ -1730,10 +2122,15 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests + description: RepoURL is the URL to the repository (Git + or Helm) that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. + description: TargetRevision defines the revision of the + source to sync the application to. In case of Git, this + can be commit, tag, or branch. If omitted, will equal + to HEAD. In case of Helm, this is a semver tag for the + Chart's version. type: string required: - repoURL @@ -1743,7 +2140,8 @@ spec: - source type: object revision: - description: Revision contains information about the revision the comparison has been performed to + description: Revision contains information about the revision + the comparison has been performed to type: string status: description: Status is the sync state of the comparison @@ -1785,39 +2183,59 @@ spec: description: ApplicationSet is a set of Application resources properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: ApplicationSetSpec represents a class of application set state. + description: ApplicationSetSpec represents a class of application set + state. properties: generators: items: description: ApplicationSetGenerator include list item info properties: clusters: - description: ClusterGenerator defines a generator to match against clusters registered with ArgoCD. + description: ClusterGenerator defines a generator to match against + clusters registered with ArgoCD. properties: selector: - description: Selector defines a label selector to match against all clusters registered with ArgoCD. Clusters today are stored as Kubernetes Secrets, thus the Secret labels will be used for matching the selector. + description: Selector defines a label selector to match + against all clusters registered with ArgoCD. Clusters + today are stored as Kubernetes Secrets, thus the Secret + labels will be used for matching the selector. properties: matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: - description: key is the label key that the selector applies to. + description: key is the label key that the selector + applies to. type: string operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists + or DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. items: type: string type: array @@ -1829,14 +2247,20 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. type: object type: object template: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the + Argo CD application fields that may be used for Applications + generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -1852,25 +2276,38 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. + description: ApplicationSpec represents desired application + state. Contains link to repository with application + definition and additional parameters link definition + revision. properties: destination: - description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml + description: Destination overrides the kubernetes + server and namespace defined in the environment + ksonnet app.yaml properties: name: - description: Name of the destination cluster which can be used instead of server (url) field + description: Name of the destination cluster + which can be used instead of server (url) + field type: string namespace: - description: Namespace overrides the environment namespace value in the ksonnet app.yaml + description: Namespace overrides the environment + namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment server value in the ksonnet app.yaml + description: Server overrides the environment + server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources fields which should be ignored during comparison + description: IgnoreDifferences controls resources + fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with live + state. properties: group: type: string @@ -1890,7 +2327,9 @@ spec: type: object type: array info: - description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application + description: Infos contains a list of useful information + (URLs, email addresses, and plain text) that relates + to the application items: properties: name: @@ -1903,30 +2342,43 @@ spec: type: object type: array project: - description: Project is a application project name. Empty name means that application belongs to 'default' project. + description: Project is a application project name. + Empty name means that application belongs to 'default' + project. type: string revisionHistoryLimit: - description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. + description: This limits this number of items kept + in the apps revision history. This should only + be changed in exceptional circumstances. Setting + to zero will store no history. This will reduce + storage used. Increasing will increase the space + used to store the history, so we do not recommend + increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location ksonnet application definition + description: Source is a reference to the location + ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory specific options + description: Directory holds path/directory + specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds jsonnet specific options + description: ApplicationSourceJsonnet holds + jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet + External Variables items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -1940,14 +2392,17 @@ spec: type: object type: array libs: - description: Additional library search dirs + description: Additional library search + dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet + Top-level Arguments items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -1968,59 +2423,77 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters + to the helm template items: - description: HelmFileParameter is a file parameter to a helm template + description: HelmFileParameter is a file + parameter to a helm template properties: name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string path: - description: Path is the path value for the helm parameter + description: Path is the path value + for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to the helm template + description: Parameters are parameters to + the helm template items: - description: HelmParameter is a parameter to a helm template + description: HelmParameter is a parameter + to a helm template properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings type: boolean name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string value: - description: Value is the value for the helm parameter + description: Value is the value for + the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted it will use the application name + description: The Helm release name. If omitted + it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm + value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically defined as a block + description: Values is Helm values, typically + defined as a block type: string version: - description: Version is the Helm version to use for templating with + description: Version is the Helm version + to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific options + description: Ksonnet holds ksonnet specific + options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application + environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet + component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet + component parameter properties: component: type: string @@ -2035,38 +2508,47 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific options + description: Kustomize holds kustomize specific + options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional kustomize commonAnnotations + description: CommonAnnotations adds additional + kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional kustomize commonLabels + description: CommonLabels adds additional + kustomize commonLabels type: object images: - description: Images are kustomize image overrides + description: Images are kustomize image + overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for kustomize apps + description: NamePrefix is a prefix appended + to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for kustomize apps + description: NameSuffix is a suffix appended + to resources for kustomize apps type: string version: - description: Version contains optional Kustomize version + description: Version contains optional Kustomize + version type: string type: object path: - description: Path is a directory path within the Git repository + description: Path is a directory path within + the Git repository type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config + management plugin specific options properties: env: items: @@ -2086,54 +2568,73 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of the application manifests + description: RepoURL is the repository URL of + the application manifests type: string targetRevision: - description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, + tag, or branch in which to sync the application + to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will be performed + description: SyncPolicy controls when a sync will + be performed properties: automated: - description: Automated will keep an application synced to the target revision + description: Automated will keep an application + synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live resources (default: false)' + description: 'AllowEmpty allows apps have + zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources automatically as part of automated sync (default: false)' + description: 'Prune will prune resources + automatically as part of automated sync + (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing if (default: false)' + description: 'SelfHeal enables auto-syncing + if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry behavior + description: Retry controls failed sync retry + behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration after each failed retry + description: Factor is a factor to multiply + the base duration after each failed + retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed for the backoff strategy + description: MaxDuration is the maximum + amount of time allowed for the backoff + strategy type: string type: object limit: - description: Limit is the maximum number of attempts when retrying a container + description: Limit is the maximum number + of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole app sync-options + description: Options allow you to specify whole + app sync-options items: type: string type: array @@ -2150,7 +2651,8 @@ spec: values: additionalProperties: type: string - description: Values contains key/value pairs which are passed directly as parameters to the template + description: Values contains key/value pairs which are passed + directly as parameters to the template type: object type: object git: @@ -2186,7 +2688,9 @@ spec: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the + Argo CD application fields that may be used for Applications + generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -2202,25 +2706,38 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. + description: ApplicationSpec represents desired application + state. Contains link to repository with application + definition and additional parameters link definition + revision. properties: destination: - description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml + description: Destination overrides the kubernetes + server and namespace defined in the environment + ksonnet app.yaml properties: name: - description: Name of the destination cluster which can be used instead of server (url) field + description: Name of the destination cluster + which can be used instead of server (url) + field type: string namespace: - description: Namespace overrides the environment namespace value in the ksonnet app.yaml + description: Namespace overrides the environment + namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment server value in the ksonnet app.yaml + description: Server overrides the environment + server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources fields which should be ignored during comparison + description: IgnoreDifferences controls resources + fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with live + state. properties: group: type: string @@ -2240,7 +2757,9 @@ spec: type: object type: array info: - description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application + description: Infos contains a list of useful information + (URLs, email addresses, and plain text) that relates + to the application items: properties: name: @@ -2253,30 +2772,43 @@ spec: type: object type: array project: - description: Project is a application project name. Empty name means that application belongs to 'default' project. + description: Project is a application project name. + Empty name means that application belongs to 'default' + project. type: string revisionHistoryLimit: - description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. + description: This limits this number of items kept + in the apps revision history. This should only + be changed in exceptional circumstances. Setting + to zero will store no history. This will reduce + storage used. Increasing will increase the space + used to store the history, so we do not recommend + increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location ksonnet application definition + description: Source is a reference to the location + ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory specific options + description: Directory holds path/directory + specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds jsonnet specific options + description: ApplicationSourceJsonnet holds + jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet + External Variables items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -2290,14 +2822,17 @@ spec: type: object type: array libs: - description: Additional library search dirs + description: Additional library search + dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet + Top-level Arguments items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -2318,59 +2853,77 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters + to the helm template items: - description: HelmFileParameter is a file parameter to a helm template + description: HelmFileParameter is a file + parameter to a helm template properties: name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string path: - description: Path is the path value for the helm parameter + description: Path is the path value + for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to the helm template + description: Parameters are parameters to + the helm template items: - description: HelmParameter is a parameter to a helm template + description: HelmParameter is a parameter + to a helm template properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings type: boolean name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string value: - description: Value is the value for the helm parameter + description: Value is the value for + the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted it will use the application name + description: The Helm release name. If omitted + it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm + value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically defined as a block + description: Values is Helm values, typically + defined as a block type: string version: - description: Version is the Helm version to use for templating with + description: Version is the Helm version + to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific options + description: Ksonnet holds ksonnet specific + options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application + environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet + component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet + component parameter properties: component: type: string @@ -2385,38 +2938,47 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific options + description: Kustomize holds kustomize specific + options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional kustomize commonAnnotations + description: CommonAnnotations adds additional + kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional kustomize commonLabels + description: CommonLabels adds additional + kustomize commonLabels type: object images: - description: Images are kustomize image overrides + description: Images are kustomize image + overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for kustomize apps + description: NamePrefix is a prefix appended + to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for kustomize apps + description: NameSuffix is a suffix appended + to resources for kustomize apps type: string version: - description: Version contains optional Kustomize version + description: Version contains optional Kustomize + version type: string type: object path: - description: Path is a directory path within the Git repository + description: Path is a directory path within + the Git repository type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config + management plugin specific options properties: env: items: @@ -2436,54 +2998,73 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of the application manifests + description: RepoURL is the repository URL of + the application manifests type: string targetRevision: - description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, + tag, or branch in which to sync the application + to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will be performed + description: SyncPolicy controls when a sync will + be performed properties: automated: - description: Automated will keep an application synced to the target revision + description: Automated will keep an application + synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live resources (default: false)' + description: 'AllowEmpty allows apps have + zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources automatically as part of automated sync (default: false)' + description: 'Prune will prune resources + automatically as part of automated sync + (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing if (default: false)' + description: 'SelfHeal enables auto-syncing + if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry behavior + description: Retry controls failed sync retry + behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration after each failed retry + description: Factor is a factor to multiply + the base duration after each failed + retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed for the backoff strategy + description: MaxDuration is the maximum + amount of time allowed for the backoff + strategy type: string type: object limit: - description: Limit is the maximum number of attempts when retrying a container + description: Limit is the maximum number + of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole app sync-options + description: Options allow you to specify whole + app sync-options items: type: string type: array @@ -2506,7 +3087,8 @@ spec: properties: elements: items: - description: ListGeneratorElement include cluster and url info + description: ListGeneratorElement include cluster and + url info properties: cluster: type: string @@ -2515,7 +3097,8 @@ spec: values: additionalProperties: type: string - description: Values contains key/value pairs which are passed directly as parameters to the template + description: Values contains key/value pairs which + are passed directly as parameters to the template type: object required: - cluster @@ -2526,7 +3109,9 @@ spec: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the + Argo CD application fields that may be used for Applications + generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -2542,25 +3127,38 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. + description: ApplicationSpec represents desired application + state. Contains link to repository with application + definition and additional parameters link definition + revision. properties: destination: - description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml + description: Destination overrides the kubernetes + server and namespace defined in the environment + ksonnet app.yaml properties: name: - description: Name of the destination cluster which can be used instead of server (url) field + description: Name of the destination cluster + which can be used instead of server (url) + field type: string namespace: - description: Namespace overrides the environment namespace value in the ksonnet app.yaml + description: Namespace overrides the environment + namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment server value in the ksonnet app.yaml + description: Server overrides the environment + server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources fields which should be ignored during comparison + description: IgnoreDifferences controls resources + fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with live + state. properties: group: type: string @@ -2580,7 +3178,9 @@ spec: type: object type: array info: - description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application + description: Infos contains a list of useful information + (URLs, email addresses, and plain text) that relates + to the application items: properties: name: @@ -2593,30 +3193,43 @@ spec: type: object type: array project: - description: Project is a application project name. Empty name means that application belongs to 'default' project. + description: Project is a application project name. + Empty name means that application belongs to 'default' + project. type: string revisionHistoryLimit: - description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. + description: This limits this number of items kept + in the apps revision history. This should only + be changed in exceptional circumstances. Setting + to zero will store no history. This will reduce + storage used. Increasing will increase the space + used to store the history, so we do not recommend + increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location ksonnet application definition + description: Source is a reference to the location + ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory specific options + description: Directory holds path/directory + specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds jsonnet specific options + description: ApplicationSourceJsonnet holds + jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet + External Variables items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -2630,14 +3243,17 @@ spec: type: object type: array libs: - description: Additional library search dirs + description: Additional library search + dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet + Top-level Arguments items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -2658,59 +3274,77 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters + to the helm template items: - description: HelmFileParameter is a file parameter to a helm template + description: HelmFileParameter is a file + parameter to a helm template properties: name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string path: - description: Path is the path value for the helm parameter + description: Path is the path value + for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to the helm template + description: Parameters are parameters to + the helm template items: - description: HelmParameter is a parameter to a helm template + description: HelmParameter is a parameter + to a helm template properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings type: boolean name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string value: - description: Value is the value for the helm parameter + description: Value is the value for + the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted it will use the application name + description: The Helm release name. If omitted + it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm + value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically defined as a block + description: Values is Helm values, typically + defined as a block type: string version: - description: Version is the Helm version to use for templating with + description: Version is the Helm version + to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific options + description: Ksonnet holds ksonnet specific + options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application + environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet + component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet + component parameter properties: component: type: string @@ -2725,38 +3359,47 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific options + description: Kustomize holds kustomize specific + options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional kustomize commonAnnotations + description: CommonAnnotations adds additional + kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional kustomize commonLabels + description: CommonLabels adds additional + kustomize commonLabels type: object images: - description: Images are kustomize image overrides + description: Images are kustomize image + overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for kustomize apps + description: NamePrefix is a prefix appended + to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for kustomize apps + description: NameSuffix is a suffix appended + to resources for kustomize apps type: string version: - description: Version contains optional Kustomize version + description: Version contains optional Kustomize + version type: string type: object path: - description: Path is a directory path within the Git repository + description: Path is a directory path within + the Git repository type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config + management plugin specific options properties: env: items: @@ -2776,54 +3419,73 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of the application manifests + description: RepoURL is the repository URL of + the application manifests type: string targetRevision: - description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, + tag, or branch in which to sync the application + to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will be performed + description: SyncPolicy controls when a sync will + be performed properties: automated: - description: Automated will keep an application synced to the target revision + description: Automated will keep an application + synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live resources (default: false)' + description: 'AllowEmpty allows apps have + zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources automatically as part of automated sync (default: false)' + description: 'Prune will prune resources + automatically as part of automated sync + (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing if (default: false)' + description: 'SelfHeal enables auto-syncing + if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry behavior + description: Retry controls failed sync retry + behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration after each failed retry + description: Factor is a factor to multiply + the base duration after each failed + retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed for the backoff strategy + description: MaxDuration is the maximum + amount of time allowed for the backoff + strategy type: string type: object limit: - description: Limit is the maximum number of attempts when retrying a container + description: Limit is the maximum number + of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole app sync-options + description: Options allow you to specify whole + app sync-options items: type: string type: array @@ -3289,17 +3951,24 @@ spec: type: object type: array syncPolicy: - description: ApplicationSetSyncPolicy configures how generated Applications will relate to their ApplicationSet. + description: ApplicationSetSyncPolicy configures how generated Applications + will relate to their ApplicationSet. properties: skipPrune: - description: SkipPrune will disable the default behavior which will delete Applications that are no longer being generated for the ApplicationSet which created them, or the ApplicationSet itself is deleted. If SkipPrune is set to true, these Applications will be orphaned but continue to exist. + description: SkipPrune will disable the default behavior which + will delete Applications that are no longer being generated + for the ApplicationSet which created them, or the ApplicationSet + itself is deleted. If SkipPrune is set to true, these Applications + will be orphaned but continue to exist. type: boolean type: object template: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD + application fields that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -3315,25 +3984,34 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. + description: ApplicationSpec represents desired application state. + Contains link to repository with application definition and + additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml + description: Destination overrides the kubernetes server and + namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster which can be used instead of server (url) field + description: Name of the destination cluster which can + be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment namespace value in the ksonnet app.yaml + description: Namespace overrides the environment namespace + value in the ksonnet app.yaml type: string server: - description: Server overrides the environment server value in the ksonnet app.yaml + description: Server overrides the environment server value + in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources fields which should be ignored during comparison + description: IgnoreDifferences controls resources fields which + should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. + description: ResourceIgnoreDifferences contains resource + filter and list of json paths which should be ignored + during comparison with live state. properties: group: type: string @@ -3353,7 +4031,8 @@ spec: type: object type: array info: - description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application + description: Infos contains a list of useful information (URLs, + email addresses, and plain text) that relates to the application items: properties: name: @@ -3366,14 +4045,21 @@ spec: type: object type: array project: - description: Project is a application project name. Empty name means that application belongs to 'default' project. + description: Project is a application project name. Empty + name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. + description: This limits this number of items kept in the + apps revision history. This should only be changed in exceptional + circumstances. Setting to zero will store no history. This + will reduce storage used. Increasing will increase the space + used to store the history, so we do not recommend increasing + it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location ksonnet application definition + description: Source is a reference to the location ksonnet + application definition properties: chart: description: Chart is a Helm chart name @@ -3384,10 +4070,12 @@ spec: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds jsonnet specific options + description: ApplicationSourceJsonnet holds jsonnet + specific options properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet External + Variables items: description: JsonnetVar is a jsonnet variable properties: @@ -3408,7 +4096,8 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet Top-level + Arguments items: description: JsonnetVar is a jsonnet variable properties: @@ -3431,59 +4120,74 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters to + the helm template items: - description: HelmFileParameter is a file parameter to a helm template + description: HelmFileParameter is a file parameter + to a helm template properties: name: description: Name is the name of the helm parameter type: string path: - description: Path is the path value for the helm parameter + description: Path is the path value for the + helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to the helm template + description: Parameters are parameters to the helm + template items: - description: HelmParameter is a parameter to a helm template + description: HelmParameter is a parameter to a helm + template properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines whether + to tell Helm to interpret booleans and numbers + as strings type: boolean name: description: Name is the name of the helm parameter type: string value: - description: Value is the value for the helm parameter + description: Value is the value for the helm + parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted it will use the application name + description: The Helm release name. If omitted it + will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm value files + to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically defined as a block + description: Values is Helm values, typically defined + as a block type: string version: - description: Version is the Helm version to use for templating with + description: Version is the Helm version to use for + templating with type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application + environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet component + parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet component + parameter properties: component: type: string @@ -3503,12 +4207,14 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional kustomize commonAnnotations + description: CommonAnnotations adds additional kustomize + commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional kustomize commonLabels + description: CommonLabels adds additional kustomize + commonLabels type: object images: description: Images are kustomize image overrides @@ -3516,10 +4222,12 @@ spec: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for kustomize apps + description: NamePrefix is a prefix appended to resources + for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for kustomize apps + description: NameSuffix is a suffix appended to resources + for kustomize apps type: string version: description: Version contains optional Kustomize version @@ -3529,7 +4237,8 @@ spec: description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config management + plugin specific options properties: env: items: @@ -3549,10 +4258,13 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of the application manifests + description: RepoURL is the repository URL of the application + manifests type: string targetRevision: - description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, tag, or + branch in which to sync the application to. If omitted, + will sync to HEAD type: string required: - repoURL @@ -3561,16 +4273,20 @@ spec: description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application synced to the target revision + description: Automated will keep an application synced + to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live resources (default: false)' + description: 'AllowEmpty allows apps have zero live + resources (default: false)' type: boolean prune: - description: 'Prune will prune resources automatically as part of automated sync (default: false)' + description: 'Prune will prune resources automatically + as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing if (default: false)' + description: 'SelfHeal enables auto-syncing if (default: + false)' type: boolean type: object retry: @@ -3580,18 +4296,23 @@ spec: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount to back off. + Default unit is seconds, but could also be a + duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration after each failed retry + description: Factor is a factor to multiply the + base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed for the backoff strategy + description: MaxDuration is the maximum amount + of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number of attempts when retrying a container + description: Limit is the maximum number of attempts + when retrying a container format: int64 type: integer type: object @@ -3652,13 +4373,22 @@ spec: - name: v1alpha1 schema: openAPIV3Schema: - description: 'AppProject provides a logical grouping of applications, providing controls for: * where the apps may deploy to (cluster whitelist) * what may be deployed (repository whitelist, resource whitelist/blacklist) * who can access these applications (roles, OIDC group claims bindings) * and what they can do (RBAC policies) * automation access to these roles (JWT tokens)' + description: 'AppProject provides a logical grouping of applications, providing + controls for: * where the apps may deploy to (cluster whitelist) * what + may be deployed (repository whitelist, resource whitelist/blacklist) * who + can access these applications (roles, OIDC group claims bindings) * and + what they can do (RBAC policies) * automation access to these roles (JWT + tokens)' properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object @@ -3666,9 +4396,12 @@ spec: description: AppProjectSpec is the specification of an AppProject properties: clusterResourceBlacklist: - description: ClusterResourceBlacklist contains list of blacklisted cluster level resources + description: ClusterResourceBlacklist contains list of blacklisted + cluster level resources items: - description: GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types + description: GroupKind specifies a Group and a Kind, but does not + force a version. This is useful for identifying concepts during + lookup stages without having partially valid types properties: group: type: string @@ -3680,9 +4413,12 @@ spec: type: object type: array clusterResourceWhitelist: - description: ClusterResourceWhitelist contains list of whitelisted cluster level resources + description: ClusterResourceWhitelist contains list of whitelisted + cluster level resources items: - description: GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types + description: GroupKind specifies a Group and a Kind, but does not + force a version. This is useful for identifying concepts during + lookup stages without having partially valid types properties: group: type: string @@ -3697,25 +4433,34 @@ spec: description: Description contains optional project description type: string destinations: - description: Destinations contains list of destinations available for deployment + description: Destinations contains list of destinations available + for deployment items: - description: ApplicationDestination holds information about the application's destination + description: ApplicationDestination holds information about the + application's destination properties: name: - description: Name is an alternate way of specifying the target cluster by its symbolic name + description: Name is an alternate way of specifying the target + cluster by its symbolic name type: string namespace: - description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace + description: Namespace specifies the target namespace for the + application's resources. The namespace will only be set for + namespace-scoped resources that have not set a value for .metadata.namespace type: string server: - description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API + description: Server specifies the URL of the target cluster + and must be set to the Kubernetes control plane API type: string type: object type: array namespaceResourceBlacklist: - description: NamespaceResourceBlacklist contains list of blacklisted namespace level resources + description: NamespaceResourceBlacklist contains list of blacklisted + namespace level resources items: - description: GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types + description: GroupKind specifies a Group and a Kind, but does not + force a version. This is useful for identifying concepts during + lookup stages without having partially valid types properties: group: type: string @@ -3727,9 +4472,12 @@ spec: type: object type: array namespaceResourceWhitelist: - description: NamespaceResourceWhitelist contains list of whitelisted namespace level resources + description: NamespaceResourceWhitelist contains list of whitelisted + namespace level resources items: - description: GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types + description: GroupKind specifies a Group and a Kind, but does not + force a version. This is useful for identifying concepts during + lookup stages without having partially valid types properties: group: type: string @@ -3741,12 +4489,15 @@ spec: type: object type: array orphanedResources: - description: OrphanedResources specifies if controller should monitor orphaned resources of apps in this project + description: OrphanedResources specifies if controller should monitor + orphaned resources of apps in this project properties: ignore: - description: Ignore contains a list of resources that are to be excluded from orphaned resources monitoring + description: Ignore contains a list of resources that are to be + excluded from orphaned resources monitoring items: - description: OrphanedResourceKey is a reference to a resource to be ignored from + description: OrphanedResourceKey is a reference to a resource + to be ignored from properties: group: type: string @@ -3757,26 +4508,32 @@ spec: type: object type: array warn: - description: Warn indicates if warning condition should be created for apps which have orphaned resources + description: Warn indicates if warning condition should be created + for apps which have orphaned resources type: boolean type: object roles: - description: Roles are user defined RBAC roles associated with this project + description: Roles are user defined RBAC roles associated with this + project items: - description: ProjectRole represents a role that has access to a project + description: ProjectRole represents a role that has access to a + project properties: description: description: Description is a description of the role type: string groups: - description: Groups are a list of OIDC group claims bound to this role + description: Groups are a list of OIDC group claims bound to + this role items: type: string type: array jwtTokens: - description: JWTTokens are a list of generated JWT tokens bound to this role + description: JWTTokens are a list of generated JWT tokens bound + to this role items: - description: JWTToken holds the issuedAt and expiresAt values of a token + description: JWTToken holds the issuedAt and expiresAt values + of a token properties: exp: format: int64 @@ -3794,7 +4551,8 @@ spec: description: Name is a name for this role type: string policies: - description: Policies Stores a list of casbin formated strings that define access policies for the role in the project + description: Policies Stores a list of casbin formated strings + that define access policies for the role in the project items: type: string type: array @@ -3803,9 +4561,11 @@ spec: type: object type: array signatureKeys: - description: SignatureKeys contains a list of PGP key IDs that commits in Git must be signed with in order to be allowed for sync + description: SignatureKeys contains a list of PGP key IDs that commits + in Git must be signed with in order to be allowed for sync items: - description: SignatureKey is the specification of a key required to verify commit signatures with + description: SignatureKey is the specification of a key required + to verify commit signatures with properties: keyID: description: The ID of the key in hexadecimal notation @@ -3815,47 +4575,57 @@ spec: type: object type: array sourceRepos: - description: SourceRepos contains list of repository URLs which can be used for deployment + description: SourceRepos contains list of repository URLs which can + be used for deployment items: type: string type: array syncWindows: - description: SyncWindows controls when syncs can be run for apps in this project + description: SyncWindows controls when syncs can be run for apps in + this project items: - description: SyncWindow contains the kind, time, duration and attributes that are used to assign the syncWindows to apps + description: SyncWindow contains the kind, time, duration and attributes + that are used to assign the syncWindows to apps properties: applications: - description: Applications contains a list of applications that the window will apply to + description: Applications contains a list of applications that + the window will apply to items: type: string type: array clusters: - description: Clusters contains a list of clusters that the window will apply to + description: Clusters contains a list of clusters that the window + will apply to items: type: string type: array duration: - description: Duration is the amount of time the sync window will be open + description: Duration is the amount of time the sync window + will be open type: string kind: description: Kind defines if the window allows or blocks syncs type: string manualSync: - description: ManualSync enables manual syncs when they would otherwise be blocked + description: ManualSync enables manual syncs when they would + otherwise be blocked type: boolean namespaces: - description: Namespaces contains a list of namespaces that the window will apply to + description: Namespaces contains a list of namespaces that the + window will apply to items: type: string type: array schedule: - description: Schedule is the time the window will begin, specified in cron format + description: Schedule is the time the window will begin, specified + in cron format type: string type: object type: array type: object status: - description: AppProjectStatus contains status information for AppProject CRs + description: AppProjectStatus contains status information for AppProject + CRs properties: jwtTokensByRole: additionalProperties: @@ -3863,7 +4633,8 @@ spec: properties: items: items: - description: JWTToken holds the issuedAt and expiresAt values of a token + description: JWTToken holds the issuedAt and expiresAt values + of a token properties: exp: format: int64 @@ -3878,7 +4649,8 @@ spec: type: object type: array type: object - description: JWTTokensByRole contains a list of JWT tokens issued for a given role + description: JWTTokensByRole contains a list of JWT tokens issued + for a given role type: object type: object required: diff --git a/manifests/install.yaml b/manifests/install.yaml index d9bd1428..632287fc 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -24,39 +24,59 @@ spec: description: ApplicationSet is a set of Application resources properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: ApplicationSetSpec represents a class of application set state. + description: ApplicationSetSpec represents a class of application set + state. properties: generators: items: description: ApplicationSetGenerator include list item info properties: clusters: - description: ClusterGenerator defines a generator to match against clusters registered with ArgoCD. + description: ClusterGenerator defines a generator to match against + clusters registered with ArgoCD. properties: selector: - description: Selector defines a label selector to match against all clusters registered with ArgoCD. Clusters today are stored as Kubernetes Secrets, thus the Secret labels will be used for matching the selector. + description: Selector defines a label selector to match + against all clusters registered with ArgoCD. Clusters + today are stored as Kubernetes Secrets, thus the Secret + labels will be used for matching the selector. properties: matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: - description: key is the label key that the selector applies to. + description: key is the label key that the selector + applies to. type: string operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists + or DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. items: type: string type: array @@ -68,14 +88,20 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. type: object type: object template: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the + Argo CD application fields that may be used for Applications + generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -91,25 +117,38 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. + description: ApplicationSpec represents desired application + state. Contains link to repository with application + definition and additional parameters link definition + revision. properties: destination: - description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml + description: Destination overrides the kubernetes + server and namespace defined in the environment + ksonnet app.yaml properties: name: - description: Name of the destination cluster which can be used instead of server (url) field + description: Name of the destination cluster + which can be used instead of server (url) + field type: string namespace: - description: Namespace overrides the environment namespace value in the ksonnet app.yaml + description: Namespace overrides the environment + namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment server value in the ksonnet app.yaml + description: Server overrides the environment + server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources fields which should be ignored during comparison + description: IgnoreDifferences controls resources + fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with live + state. properties: group: type: string @@ -129,7 +168,9 @@ spec: type: object type: array info: - description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application + description: Infos contains a list of useful information + (URLs, email addresses, and plain text) that relates + to the application items: properties: name: @@ -142,30 +183,43 @@ spec: type: object type: array project: - description: Project is a application project name. Empty name means that application belongs to 'default' project. + description: Project is a application project name. + Empty name means that application belongs to 'default' + project. type: string revisionHistoryLimit: - description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. + description: This limits this number of items kept + in the apps revision history. This should only + be changed in exceptional circumstances. Setting + to zero will store no history. This will reduce + storage used. Increasing will increase the space + used to store the history, so we do not recommend + increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location ksonnet application definition + description: Source is a reference to the location + ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory specific options + description: Directory holds path/directory + specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds jsonnet specific options + description: ApplicationSourceJsonnet holds + jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet + External Variables items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -179,14 +233,17 @@ spec: type: object type: array libs: - description: Additional library search dirs + description: Additional library search + dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet + Top-level Arguments items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -207,59 +264,77 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters + to the helm template items: - description: HelmFileParameter is a file parameter to a helm template + description: HelmFileParameter is a file + parameter to a helm template properties: name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string path: - description: Path is the path value for the helm parameter + description: Path is the path value + for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to the helm template + description: Parameters are parameters to + the helm template items: - description: HelmParameter is a parameter to a helm template + description: HelmParameter is a parameter + to a helm template properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings type: boolean name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string value: - description: Value is the value for the helm parameter + description: Value is the value for + the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted it will use the application name + description: The Helm release name. If omitted + it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm + value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically defined as a block + description: Values is Helm values, typically + defined as a block type: string version: - description: Version is the Helm version to use for templating with + description: Version is the Helm version + to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific options + description: Ksonnet holds ksonnet specific + options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application + environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet + component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet + component parameter properties: component: type: string @@ -274,38 +349,47 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific options + description: Kustomize holds kustomize specific + options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional kustomize commonAnnotations + description: CommonAnnotations adds additional + kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional kustomize commonLabels + description: CommonLabels adds additional + kustomize commonLabels type: object images: - description: Images are kustomize image overrides + description: Images are kustomize image + overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for kustomize apps + description: NamePrefix is a prefix appended + to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for kustomize apps + description: NameSuffix is a suffix appended + to resources for kustomize apps type: string version: - description: Version contains optional Kustomize version + description: Version contains optional Kustomize + version type: string type: object path: - description: Path is a directory path within the Git repository + description: Path is a directory path within + the Git repository type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config + management plugin specific options properties: env: items: @@ -325,54 +409,73 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of the application manifests + description: RepoURL is the repository URL of + the application manifests type: string targetRevision: - description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, + tag, or branch in which to sync the application + to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will be performed + description: SyncPolicy controls when a sync will + be performed properties: automated: - description: Automated will keep an application synced to the target revision + description: Automated will keep an application + synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live resources (default: false)' + description: 'AllowEmpty allows apps have + zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources automatically as part of automated sync (default: false)' + description: 'Prune will prune resources + automatically as part of automated sync + (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing if (default: false)' + description: 'SelfHeal enables auto-syncing + if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry behavior + description: Retry controls failed sync retry + behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration after each failed retry + description: Factor is a factor to multiply + the base duration after each failed + retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed for the backoff strategy + description: MaxDuration is the maximum + amount of time allowed for the backoff + strategy type: string type: object limit: - description: Limit is the maximum number of attempts when retrying a container + description: Limit is the maximum number + of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole app sync-options + description: Options allow you to specify whole + app sync-options items: type: string type: array @@ -389,7 +492,8 @@ spec: values: additionalProperties: type: string - description: Values contains key/value pairs which are passed directly as parameters to the template + description: Values contains key/value pairs which are passed + directly as parameters to the template type: object type: object git: @@ -425,7 +529,9 @@ spec: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the + Argo CD application fields that may be used for Applications + generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -441,25 +547,38 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. + description: ApplicationSpec represents desired application + state. Contains link to repository with application + definition and additional parameters link definition + revision. properties: destination: - description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml + description: Destination overrides the kubernetes + server and namespace defined in the environment + ksonnet app.yaml properties: name: - description: Name of the destination cluster which can be used instead of server (url) field + description: Name of the destination cluster + which can be used instead of server (url) + field type: string namespace: - description: Namespace overrides the environment namespace value in the ksonnet app.yaml + description: Namespace overrides the environment + namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment server value in the ksonnet app.yaml + description: Server overrides the environment + server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources fields which should be ignored during comparison + description: IgnoreDifferences controls resources + fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with live + state. properties: group: type: string @@ -479,7 +598,9 @@ spec: type: object type: array info: - description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application + description: Infos contains a list of useful information + (URLs, email addresses, and plain text) that relates + to the application items: properties: name: @@ -492,30 +613,43 @@ spec: type: object type: array project: - description: Project is a application project name. Empty name means that application belongs to 'default' project. + description: Project is a application project name. + Empty name means that application belongs to 'default' + project. type: string revisionHistoryLimit: - description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. + description: This limits this number of items kept + in the apps revision history. This should only + be changed in exceptional circumstances. Setting + to zero will store no history. This will reduce + storage used. Increasing will increase the space + used to store the history, so we do not recommend + increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location ksonnet application definition + description: Source is a reference to the location + ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory specific options + description: Directory holds path/directory + specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds jsonnet specific options + description: ApplicationSourceJsonnet holds + jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet + External Variables items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -529,14 +663,17 @@ spec: type: object type: array libs: - description: Additional library search dirs + description: Additional library search + dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet + Top-level Arguments items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -557,59 +694,77 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters + to the helm template items: - description: HelmFileParameter is a file parameter to a helm template + description: HelmFileParameter is a file + parameter to a helm template properties: name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string path: - description: Path is the path value for the helm parameter + description: Path is the path value + for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to the helm template + description: Parameters are parameters to + the helm template items: - description: HelmParameter is a parameter to a helm template + description: HelmParameter is a parameter + to a helm template properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings type: boolean name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string value: - description: Value is the value for the helm parameter + description: Value is the value for + the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted it will use the application name + description: The Helm release name. If omitted + it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm + value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically defined as a block + description: Values is Helm values, typically + defined as a block type: string version: - description: Version is the Helm version to use for templating with + description: Version is the Helm version + to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific options + description: Ksonnet holds ksonnet specific + options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application + environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet + component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet + component parameter properties: component: type: string @@ -624,38 +779,47 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific options + description: Kustomize holds kustomize specific + options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional kustomize commonAnnotations + description: CommonAnnotations adds additional + kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional kustomize commonLabels + description: CommonLabels adds additional + kustomize commonLabels type: object images: - description: Images are kustomize image overrides + description: Images are kustomize image + overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for kustomize apps + description: NamePrefix is a prefix appended + to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for kustomize apps + description: NameSuffix is a suffix appended + to resources for kustomize apps type: string version: - description: Version contains optional Kustomize version + description: Version contains optional Kustomize + version type: string type: object path: - description: Path is a directory path within the Git repository + description: Path is a directory path within + the Git repository type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config + management plugin specific options properties: env: items: @@ -675,54 +839,73 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of the application manifests + description: RepoURL is the repository URL of + the application manifests type: string targetRevision: - description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, + tag, or branch in which to sync the application + to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will be performed + description: SyncPolicy controls when a sync will + be performed properties: automated: - description: Automated will keep an application synced to the target revision + description: Automated will keep an application + synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live resources (default: false)' + description: 'AllowEmpty allows apps have + zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources automatically as part of automated sync (default: false)' + description: 'Prune will prune resources + automatically as part of automated sync + (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing if (default: false)' + description: 'SelfHeal enables auto-syncing + if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry behavior + description: Retry controls failed sync retry + behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration after each failed retry + description: Factor is a factor to multiply + the base duration after each failed + retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed for the backoff strategy + description: MaxDuration is the maximum + amount of time allowed for the backoff + strategy type: string type: object limit: - description: Limit is the maximum number of attempts when retrying a container + description: Limit is the maximum number + of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole app sync-options + description: Options allow you to specify whole + app sync-options items: type: string type: array @@ -745,7 +928,8 @@ spec: properties: elements: items: - description: ListGeneratorElement include cluster and url info + description: ListGeneratorElement include cluster and + url info properties: cluster: type: string @@ -754,7 +938,8 @@ spec: values: additionalProperties: type: string - description: Values contains key/value pairs which are passed directly as parameters to the template + description: Values contains key/value pairs which + are passed directly as parameters to the template type: object required: - cluster @@ -765,7 +950,9 @@ spec: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the + Argo CD application fields that may be used for Applications + generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -781,25 +968,38 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. + description: ApplicationSpec represents desired application + state. Contains link to repository with application + definition and additional parameters link definition + revision. properties: destination: - description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml + description: Destination overrides the kubernetes + server and namespace defined in the environment + ksonnet app.yaml properties: name: - description: Name of the destination cluster which can be used instead of server (url) field + description: Name of the destination cluster + which can be used instead of server (url) + field type: string namespace: - description: Namespace overrides the environment namespace value in the ksonnet app.yaml + description: Namespace overrides the environment + namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment server value in the ksonnet app.yaml + description: Server overrides the environment + server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources fields which should be ignored during comparison + description: IgnoreDifferences controls resources + fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. + description: ResourceIgnoreDifferences contains + resource filter and list of json paths which + should be ignored during comparison with live + state. properties: group: type: string @@ -819,7 +1019,9 @@ spec: type: object type: array info: - description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application + description: Infos contains a list of useful information + (URLs, email addresses, and plain text) that relates + to the application items: properties: name: @@ -832,30 +1034,43 @@ spec: type: object type: array project: - description: Project is a application project name. Empty name means that application belongs to 'default' project. + description: Project is a application project name. + Empty name means that application belongs to 'default' + project. type: string revisionHistoryLimit: - description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. + description: This limits this number of items kept + in the apps revision history. This should only + be changed in exceptional circumstances. Setting + to zero will store no history. This will reduce + storage used. Increasing will increase the space + used to store the history, so we do not recommend + increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location ksonnet application definition + description: Source is a reference to the location + ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory specific options + description: Directory holds path/directory + specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds jsonnet specific options + description: ApplicationSourceJsonnet holds + jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet + External Variables items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -869,14 +1084,17 @@ spec: type: object type: array libs: - description: Additional library search dirs + description: Additional library search + dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet + Top-level Arguments items: - description: JsonnetVar is a jsonnet variable + description: JsonnetVar is a jsonnet + variable properties: code: type: boolean @@ -897,59 +1115,77 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters + to the helm template items: - description: HelmFileParameter is a file parameter to a helm template + description: HelmFileParameter is a file + parameter to a helm template properties: name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string path: - description: Path is the path value for the helm parameter + description: Path is the path value + for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to the helm template + description: Parameters are parameters to + the helm template items: - description: HelmParameter is a parameter to a helm template + description: HelmParameter is a parameter + to a helm template properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines + whether to tell Helm to interpret + booleans and numbers as strings type: boolean name: - description: Name is the name of the helm parameter + description: Name is the name of the + helm parameter type: string value: - description: Value is the value for the helm parameter + description: Value is the value for + the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted it will use the application name + description: The Helm release name. If omitted + it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm + value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically defined as a block + description: Values is Helm values, typically + defined as a block type: string version: - description: Version is the Helm version to use for templating with + description: Version is the Helm version + to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific options + description: Ksonnet holds ksonnet specific + options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application + environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet + component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet + component parameter properties: component: type: string @@ -964,38 +1200,47 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific options + description: Kustomize holds kustomize specific + options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional kustomize commonAnnotations + description: CommonAnnotations adds additional + kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional kustomize commonLabels + description: CommonLabels adds additional + kustomize commonLabels type: object images: - description: Images are kustomize image overrides + description: Images are kustomize image + overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for kustomize apps + description: NamePrefix is a prefix appended + to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for kustomize apps + description: NameSuffix is a suffix appended + to resources for kustomize apps type: string version: - description: Version contains optional Kustomize version + description: Version contains optional Kustomize + version type: string type: object path: - description: Path is a directory path within the Git repository + description: Path is a directory path within + the Git repository type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config + management plugin specific options properties: env: items: @@ -1015,54 +1260,73 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of the application manifests + description: RepoURL is the repository URL of + the application manifests type: string targetRevision: - description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, + tag, or branch in which to sync the application + to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will be performed + description: SyncPolicy controls when a sync will + be performed properties: automated: - description: Automated will keep an application synced to the target revision + description: Automated will keep an application + synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live resources (default: false)' + description: 'AllowEmpty allows apps have + zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources automatically as part of automated sync (default: false)' + description: 'Prune will prune resources + automatically as part of automated sync + (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing if (default: false)' + description: 'SelfHeal enables auto-syncing + if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry behavior + description: Retry controls failed sync retry + behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount + to back off. Default unit is seconds, + but could also be a duration (e.g. + "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration after each failed retry + description: Factor is a factor to multiply + the base duration after each failed + retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed for the backoff strategy + description: MaxDuration is the maximum + amount of time allowed for the backoff + strategy type: string type: object limit: - description: Limit is the maximum number of attempts when retrying a container + description: Limit is the maximum number + of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole app sync-options + description: Options allow you to specify whole + app sync-options items: type: string type: array @@ -1528,17 +1792,24 @@ spec: type: object type: array syncPolicy: - description: ApplicationSetSyncPolicy configures how generated Applications will relate to their ApplicationSet. + description: ApplicationSetSyncPolicy configures how generated Applications + will relate to their ApplicationSet. properties: skipPrune: - description: SkipPrune will disable the default behavior which will delete Applications that are no longer being generated for the ApplicationSet which created them, or the ApplicationSet itself is deleted. If SkipPrune is set to true, these Applications will be orphaned but continue to exist. + description: SkipPrune will disable the default behavior which + will delete Applications that are no longer being generated + for the ApplicationSet which created them, or the ApplicationSet + itself is deleted. If SkipPrune is set to true, these Applications + will be orphaned but continue to exist. type: boolean type: object template: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD + application fields that may be used for Applications generated + from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -1554,25 +1825,34 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. + description: ApplicationSpec represents desired application state. + Contains link to repository with application definition and + additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml + description: Destination overrides the kubernetes server and + namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster which can be used instead of server (url) field + description: Name of the destination cluster which can + be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment namespace value in the ksonnet app.yaml + description: Namespace overrides the environment namespace + value in the ksonnet app.yaml type: string server: - description: Server overrides the environment server value in the ksonnet app.yaml + description: Server overrides the environment server value + in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources fields which should be ignored during comparison + description: IgnoreDifferences controls resources fields which + should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. + description: ResourceIgnoreDifferences contains resource + filter and list of json paths which should be ignored + during comparison with live state. properties: group: type: string @@ -1592,7 +1872,8 @@ spec: type: object type: array info: - description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application + description: Infos contains a list of useful information (URLs, + email addresses, and plain text) that relates to the application items: properties: name: @@ -1605,14 +1886,21 @@ spec: type: object type: array project: - description: Project is a application project name. Empty name means that application belongs to 'default' project. + description: Project is a application project name. Empty + name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. + description: This limits this number of items kept in the + apps revision history. This should only be changed in exceptional + circumstances. Setting to zero will store no history. This + will reduce storage used. Increasing will increase the space + used to store the history, so we do not recommend increasing + it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location ksonnet application definition + description: Source is a reference to the location ksonnet + application definition properties: chart: description: Chart is a Helm chart name @@ -1623,10 +1911,12 @@ spec: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds jsonnet specific options + description: ApplicationSourceJsonnet holds jsonnet + specific options properties: extVars: - description: ExtVars is a list of Jsonnet External Variables + description: ExtVars is a list of Jsonnet External + Variables items: description: JsonnetVar is a jsonnet variable properties: @@ -1647,7 +1937,8 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level Arguments + description: TLAS is a list of Jsonnet Top-level + Arguments items: description: JsonnetVar is a jsonnet variable properties: @@ -1670,59 +1961,74 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm template + description: FileParameters are file parameters to + the helm template items: - description: HelmFileParameter is a file parameter to a helm template + description: HelmFileParameter is a file parameter + to a helm template properties: name: description: Name is the name of the helm parameter type: string path: - description: Path is the path value for the helm parameter + description: Path is the path value for the + helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to the helm template + description: Parameters are parameters to the helm + template items: - description: HelmParameter is a parameter to a helm template + description: HelmParameter is a parameter to a helm + template properties: forceString: - description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings + description: ForceString determines whether + to tell Helm to interpret booleans and numbers + as strings type: boolean name: description: Name is the name of the helm parameter type: string value: - description: Value is the value for the helm parameter + description: Value is the value for the helm + parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted it will use the application name + description: The Helm release name. If omitted it + will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to use when generating a template + description: ValuesFiles is a list of Helm value files + to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically defined as a block + description: Values is Helm values, typically defined + as a block type: string version: - description: Version is the Helm version to use for templating with + description: Version is the Helm version to use for + templating with type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application environment name + description: Environment is a ksonnet application + environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter override values + description: Parameters are a list of ksonnet component + parameter override values items: - description: KsonnetParameter is a ksonnet component parameter + description: KsonnetParameter is a ksonnet component + parameter properties: component: type: string @@ -1742,12 +2048,14 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional kustomize commonAnnotations + description: CommonAnnotations adds additional kustomize + commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional kustomize commonLabels + description: CommonLabels adds additional kustomize + commonLabels type: object images: description: Images are kustomize image overrides @@ -1755,10 +2063,12 @@ spec: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources for kustomize apps + description: NamePrefix is a prefix appended to resources + for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources for kustomize apps + description: NameSuffix is a suffix appended to resources + for kustomize apps type: string version: description: Version contains optional Kustomize version @@ -1768,7 +2078,8 @@ spec: description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config management plugin specific options + description: ConfigManagementPlugin holds config management + plugin specific options properties: env: items: @@ -1788,10 +2099,13 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of the application manifests + description: RepoURL is the repository URL of the application + manifests type: string targetRevision: - description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, tag, or + branch in which to sync the application to. If omitted, + will sync to HEAD type: string required: - repoURL @@ -1800,16 +2114,20 @@ spec: description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application synced to the target revision + description: Automated will keep an application synced + to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live resources (default: false)' + description: 'AllowEmpty allows apps have zero live + resources (default: false)' type: boolean prune: - description: 'Prune will prune resources automatically as part of automated sync (default: false)' + description: 'Prune will prune resources automatically + as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing if (default: false)' + description: 'SelfHeal enables auto-syncing if (default: + false)' type: boolean type: object retry: @@ -1819,18 +2137,23 @@ spec: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount to back off. + Default unit is seconds, but could also be a + duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration after each failed retry + description: Factor is a factor to multiply the + base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed for the backoff strategy + description: MaxDuration is the maximum amount + of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number of attempts when retrying a container + description: Limit is the maximum number of attempts + when retrying a container format: int64 type: integer type: object From 4182e1f7291386dc801dd5affd99b5f5f9fba6ad Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Sun, 25 Apr 2021 01:18:28 -0700 Subject: [PATCH 11/21] =?UTF-8?q?=F0=9F=8E=A8=20Regenerate=20the=20manifes?= =?UTF-8?q?ts=20with=20fixed=20Kustomize=20version.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manifests/install-with-argo-cd.yaml | 2164 ++++++++------------------- manifests/install.yaml | 1001 ++++--------- 2 files changed, 951 insertions(+), 2214 deletions(-) diff --git a/manifests/install-with-argo-cd.yaml b/manifests/install-with-argo-cd.yaml index cef82369..4be5af45 100644 --- a/manifests/install-with-argo-cd.yaml +++ b/manifests/install-with-argo-cd.yaml @@ -35,20 +35,15 @@ spec: description: Application is a definition of Application resource. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object operation: - description: Operation contains information about a requested or running - operation + description: Operation contains information about a requested or running operation properties: info: description: Info is a list of informational items for this operation @@ -64,42 +59,34 @@ spec: type: object type: array initiatedBy: - description: InitiatedBy contains information about who initiated - the operations + description: InitiatedBy contains information about who initiated the operations properties: automated: - description: Automated is set to true if operation was initiated - automatically by the application controller. + description: Automated is set to true if operation was initiated automatically by the application controller. type: boolean username: - description: Username contains the name of a user who started - operation + description: Username contains the name of a user who started operation type: string type: object retry: description: Retry controls the strategy to apply if a sync fails properties: backoff: - description: Backoff controls how to backoff on subsequent retries - of failed syncs + description: Backoff controls how to backoff on subsequent retries of failed syncs properties: duration: - description: Duration is the amount to back off. Default unit - is seconds, but could also be a duration (e.g. "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration - after each failed retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time allowed - for the backoff strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number of attempts for retrying - a failed sync. If set to 0, no retries will be performed. + description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed. format: int64 type: integer type: object @@ -107,22 +94,18 @@ spec: description: Sync contains parameters for the operation properties: dryRun: - description: DryRun specifies to perform a `kubectl apply --dry-run` - without actually performing the sync + description: DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync type: boolean manifests: - description: Manifests is an optional field that overrides sync - source with a local directory for development + description: Manifests is an optional field that overrides sync source with a local directory for development items: type: string type: array prune: - description: Prune specifies to delete resources from the cluster - that are no longer tracked in git + description: Prune specifies to delete resources from the cluster that are no longer tracked in git type: boolean resources: - description: Resources describes which resources shall be part - of the sync + description: Resources describes which resources shall be part of the sync items: description: SyncOperationResource contains resources to sync. properties: @@ -140,41 +123,30 @@ spec: type: object type: array revision: - description: Revision is the revision (Git) or chart version (Helm) - which to sync the application to If omitted, will use the revision - specified in app spec. + description: Revision is the revision (Git) or chart version (Helm) which to sync the application to If omitted, will use the revision specified in app spec. type: string source: - description: Source overrides the source definition set in the - application. This is typically set in a Rollback operation and - is nil during a Sync operation + description: Source overrides the source definition set in the application. This is typically set in a Rollback operation and is nil during a Sync operation properties: chart: - description: Chart is a Helm chart name, and must be specified - for applications sourced from a Helm repo. + description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. type: string directory: description: Directory holds path/directory specific options properties: exclude: - description: Exclude contains a glob pattern to match - paths against that should be explicitly excluded from - being used during manifest generation + description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation type: string include: - description: Include contains a glob pattern to match - paths against that should be explicitly included during - manifest generation + description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation type: string jsonnet: description: Jsonnet holds options specific to Jsonnet properties: extVars: - description: ExtVars is a list of Jsonnet External - Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar represents a variable to - be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -195,8 +167,7 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar represents a variable to - be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -211,40 +182,32 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan a directory - recursively for manifests + description: Recurse specifies whether to scan a directory recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the - helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file parameter that's - passed to helm template during manifest generation + description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation properties: name: description: Name is the name of the Helm parameter type: string path: - description: Path is the path to the file containing - the values for the Helm parameter + description: Path is the path to the file containing the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters which - are passed to the helm template command upon manifest - generation + description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation items: - description: HelmParameter is a parameter that's passed - to helm template during manifest generation + description: HelmParameter is a parameter that's passed to helm template during manifest generation properties: forceString: - description: ForceString determines whether to tell - Helm to interpret booleans and numbers as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: description: Name is the name of the Helm parameter @@ -255,37 +218,30 @@ spec: type: object type: array releaseName: - description: ReleaseName is the Helm release name to use. - If omitted it will use the application name + description: ReleaseName is the Helm release name to use. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files - to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be passed - to helm template, typically defined as a block + description: Values specifies Helm values to be passed to helm template, typically defined as a block type: string version: - description: Version is the Helm version to use for templating - (either "2" or "3") + description: Version is the Helm version to use for templating (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application environment - name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet component - parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -305,53 +261,42 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional - annotations to add to rendered manifests + description: CommonAnnotations is a list of additional annotations to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional labels - to add to rendered manifests + description: CommonLabels is a list of additional labels to add to rendered manifests type: object images: - description: Images is a list of Kustomize image override - specifications + description: Images is a list of Kustomize image override specifications items: - description: KustomizeImage represents a Kustomize image - definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources - for Kustomize apps + description: NamePrefix is a prefix appended to resources for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources - for Kustomize apps + description: NameSuffix is a suffix appended to resources for Kustomize apps type: string version: - description: Version controls which version of Kustomize - to use for rendering manifests + description: Version controls which version of Kustomize to use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git repository, - and is only valid for applications sourced from Git. + description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. type: string plugin: - description: ConfigManagementPlugin holds config management - plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: description: Env is a list of environment variable entries items: - description: EnvEntry represents an entry in the application's - environment + description: EnvEntry represents an entry in the application's environment properties: name: - description: Name is the name of the variable, usually - expressed in uppercase + description: Name is the name of the variable, usually expressed in uppercase type: string value: description: Value is the value of the variable @@ -365,14 +310,10 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository (Git or - Helm) that contains the application manifests + description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of the source - to sync the application to. In case of Git, this can be - commit, tag, or branch. If omitted, will equal to HEAD. - In case of Helm, this is a semver tag for the Chart's version. + description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. type: string required: - repoURL @@ -386,60 +327,42 @@ spec: description: SyncStrategy describes how to perform the sync properties: apply: - description: Apply will perform a `kubectl apply` to perform - the sync. + description: Apply will perform a `kubectl apply` to perform the sync. properties: force: - description: Force indicates whether or not to supply - the --force flag to `kubectl apply`. The --force flag - deletes and re-create the resource, when PATCH encounters - conflict and has retried for 5 times. + description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times. type: boolean type: object hook: - description: Hook will submit any referenced resources to - perform the sync. This is the default strategy + description: Hook will submit any referenced resources to perform the sync. This is the default strategy properties: force: - description: Force indicates whether or not to supply - the --force flag to `kubectl apply`. The --force flag - deletes and re-create the resource, when PATCH encounters - conflict and has retried for 5 times. + description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times. type: boolean type: object type: object type: object type: object spec: - description: ApplicationSpec represents desired application state. Contains - link to repository with application definition and additional parameters - link definition revision. + description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. properties: destination: - description: Destination is a reference to the target Kubernetes server - and namespace + description: Destination is a reference to the target Kubernetes server and namespace properties: name: - description: Name is an alternate way of specifying the target - cluster by its symbolic name + description: Name is an alternate way of specifying the target cluster by its symbolic name type: string namespace: - description: Namespace specifies the target namespace for the - application's resources. The namespace will only be set for - namespace-scoped resources that have not set a value for .metadata.namespace + description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace type: string server: - description: Server specifies the URL of the target cluster and - must be set to the Kubernetes control plane API + description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API type: string type: object ignoreDifferences: - description: IgnoreDifferences is a list of resources and their fields - which should be ignored during comparison + description: IgnoreDifferences is a list of resources and their fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource filter - and list of json paths which should be ignored during comparison - with live state. + description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. properties: group: type: string @@ -459,8 +382,7 @@ spec: type: object type: array info: - description: Info contains a list of information (URLs, email addresses, - and plain text) that relates to the application + description: Info contains a list of information (URLs, email addresses, and plain text) that relates to the application items: properties: name: @@ -473,40 +395,26 @@ spec: type: object type: array project: - description: Project is a reference to the project this application - belongs to. The empty string means that application belongs to the - 'default' project. + description: Project is a reference to the project this application belongs to. The empty string means that application belongs to the 'default' project. type: string revisionHistoryLimit: - description: RevisionHistoryLimit limits the number of items kept - in the application's revision history, which is used for informational - purposes as well as for rollbacks to previous versions. This should - only be changed in exceptional circumstances. Setting to zero will - store no history. This will reduce storage used. Increasing will - increase the space used to store the history, so we do not recommend - increasing it. Default is 10. + description: RevisionHistoryLimit limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location of the application's - manifests or chart + description: Source is a reference to the location of the application's manifests or chart properties: chart: - description: Chart is a Helm chart name, and must be specified - for applications sourced from a Helm repo. + description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. type: string directory: description: Directory holds path/directory specific options properties: exclude: - description: Exclude contains a glob pattern to match paths - against that should be explicitly excluded from being used - during manifest generation + description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation type: string include: - description: Include contains a glob pattern to match paths - against that should be explicitly included during manifest - generation + description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation type: string jsonnet: description: Jsonnet holds options specific to Jsonnet @@ -514,8 +422,7 @@ spec: extVars: description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar represents a variable to be - passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -536,8 +443,7 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar represents a variable to be - passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -552,39 +458,32 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan a directory - recursively for manifests + description: Recurse specifies whether to scan a directory recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the helm - template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file parameter that's - passed to helm template during manifest generation + description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation properties: name: description: Name is the name of the Helm parameter type: string path: - description: Path is the path to the file containing - the values for the Helm parameter + description: Path is the path to the file containing the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters which - are passed to the helm template command upon manifest generation + description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation items: - description: HelmParameter is a parameter that's passed - to helm template during manifest generation + description: HelmParameter is a parameter that's passed to helm template during manifest generation properties: forceString: - description: ForceString determines whether to tell - Helm to interpret booleans and numbers as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: description: Name is the name of the Helm parameter @@ -595,34 +494,28 @@ spec: type: object type: array releaseName: - description: ReleaseName is the Helm release name to use. - If omitted it will use the application name + description: ReleaseName is the Helm release name to use. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files to - use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be passed to - helm template, typically defined as a block + description: Values specifies Helm values to be passed to helm template, typically defined as a block type: string version: - description: Version is the Helm version to use for templating - (either "2" or "3") + description: Version is the Helm version to use for templating (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application environment - name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet component parameter - override values + description: Parameters are a list of ksonnet component parameter override values items: description: KsonnetParameter is a ksonnet component parameter properties: @@ -644,53 +537,42 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional annotations - to add to rendered manifests + description: CommonAnnotations is a list of additional annotations to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional labels to - add to rendered manifests + description: CommonLabels is a list of additional labels to add to rendered manifests type: object images: - description: Images is a list of Kustomize image override - specifications + description: Images is a list of Kustomize image override specifications items: - description: KustomizeImage represents a Kustomize image - definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources - for Kustomize apps + description: NamePrefix is a prefix appended to resources for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources - for Kustomize apps + description: NameSuffix is a suffix appended to resources for Kustomize apps type: string version: - description: Version controls which version of Kustomize to - use for rendering manifests + description: Version controls which version of Kustomize to use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git repository, - and is only valid for applications sourced from Git. + description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. type: string plugin: - description: ConfigManagementPlugin holds config management plugin - specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: description: Env is a list of environment variable entries items: - description: EnvEntry represents an entry in the application's - environment + description: EnvEntry represents an entry in the application's environment properties: name: - description: Name is the name of the variable, usually - expressed in uppercase + description: Name is the name of the variable, usually expressed in uppercase type: string value: description: Value is the value of the variable @@ -704,14 +586,10 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository (Git or Helm) - that contains the application manifests + description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of the source - to sync the application to. In case of Git, this can be commit, - tag, or branch. If omitted, will equal to HEAD. In case of Helm, - this is a semver tag for the Chart's version. + description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. type: string required: - repoURL @@ -720,49 +598,37 @@ spec: description: SyncPolicy controls when and how a sync will be performed properties: automated: - description: Automated will keep an application synced to the - target revision + description: Automated will keep an application synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live resources - (default: false)' + description: 'AllowEmpty allows apps have zero live resources (default: false)' type: boolean prune: - description: 'Prune specifies whether to delete resources - from the cluster that are not found in the sources anymore - as part of automated sync (default: false)' + description: 'Prune specifies whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal specifes whether to revert resources - back to their desired state upon modification in the cluster - (default: false)' + description: 'SelfHeal specifes whether to revert resources back to their desired state upon modification in the cluster (default: false)' type: boolean type: object retry: description: Retry controls failed sync retry behavior properties: backoff: - description: Backoff controls how to backoff on subsequent - retries of failed syncs + description: Backoff controls how to backoff on subsequent retries of failed syncs properties: duration: - description: Duration is the amount to back off. Default - unit is seconds, but could also be a duration (e.g. - "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base duration - after each failed retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of time - allowed for the backoff strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number of attempts for retrying - a failed sync. If set to 0, no retries will be performed. + description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed. format: int64 type: integer type: object @@ -781,20 +647,16 @@ spec: description: ApplicationStatus contains status information for the application properties: conditions: - description: Conditions is a list of currently observed application - conditions + description: Conditions is a list of currently observed application conditions items: - description: ApplicationCondition contains details about an application - condition, which is usally an error or warning + description: ApplicationCondition contains details about an application condition, which is usally an error or warning properties: lastTransitionTime: - description: LastTransitionTime is the time the condition was - last observed + description: LastTransitionTime is the time the condition was last observed format: date-time type: string message: - description: Message contains human-readable message indicating - details about condition + description: Message contains human-readable message indicating details about condition type: string type: description: Type is an application condition type @@ -805,28 +667,22 @@ spec: type: object type: array health: - description: Health contains information about the application's current - health status + description: Health contains information about the application's current health status properties: message: - description: Message is a human-readable informational message - describing the health status + description: Message is a human-readable informational message describing the health status type: string status: - description: Status holds the status code of the application or - resource + description: Status holds the status code of the application or resource type: string type: object history: - description: History contains information about the application's - sync history + description: History contains information about the application's sync history items: - description: RevisionHistory contains history information about - a previous sync + description: RevisionHistory contains history information about a previous sync properties: deployStartedAt: - description: DeployStartedAt holds the time the sync operation - started + description: DeployStartedAt holds the time the sync operation started format: date-time type: string deployedAt: @@ -838,39 +694,30 @@ spec: format: int64 type: integer revision: - description: Revision holds the revision the sync was performed - against + description: Revision holds the revision the sync was performed against type: string source: - description: Source is a reference to the application source - used for the sync operation + description: Source is a reference to the application source used for the sync operation properties: chart: - description: Chart is a Helm chart name, and must be specified - for applications sourced from a Helm repo. + description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. type: string directory: description: Directory holds path/directory specific options properties: exclude: - description: Exclude contains a glob pattern to match - paths against that should be explicitly excluded from - being used during manifest generation + description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation type: string include: - description: Include contains a glob pattern to match - paths against that should be explicitly included during - manifest generation + description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation type: string jsonnet: description: Jsonnet holds options specific to Jsonnet properties: extVars: - description: ExtVars is a list of Jsonnet External - Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar represents a variable - to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -889,11 +736,9 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level - Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar represents a variable - to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -908,41 +753,32 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan a directory - recursively for manifests + description: Recurse specifies whether to scan a directory recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to the - helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file parameter - that's passed to helm template during manifest generation + description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation properties: name: description: Name is the name of the Helm parameter type: string path: - description: Path is the path to the file containing - the values for the Helm parameter + description: Path is the path to the file containing the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters - which are passed to the helm template command upon - manifest generation + description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation items: - description: HelmParameter is a parameter that's passed - to helm template during manifest generation + description: HelmParameter is a parameter that's passed to helm template during manifest generation properties: forceString: - description: ForceString determines whether to - tell Helm to interpret booleans and numbers - as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: description: Name is the name of the Helm parameter @@ -953,37 +789,30 @@ spec: type: object type: array releaseName: - description: ReleaseName is the Helm release name to - use. If omitted it will use the application name + description: ReleaseName is the Helm release name to use. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files - to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be passed - to helm template, typically defined as a block + description: Values specifies Helm values to be passed to helm template, typically defined as a block type: string version: - description: Version is the Helm version to use for - templating (either "2" or "3") + description: Version is the Helm version to use for templating (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application environment - name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet component - parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -1003,53 +832,42 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional - annotations to add to rendered manifests + description: CommonAnnotations is a list of additional annotations to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional labels - to add to rendered manifests + description: CommonLabels is a list of additional labels to add to rendered manifests type: object images: - description: Images is a list of Kustomize image override - specifications + description: Images is a list of Kustomize image override specifications items: - description: KustomizeImage represents a Kustomize - image definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources - for Kustomize apps + description: NamePrefix is a prefix appended to resources for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources - for Kustomize apps + description: NameSuffix is a suffix appended to resources for Kustomize apps type: string version: - description: Version controls which version of Kustomize - to use for rendering manifests + description: Version controls which version of Kustomize to use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git repository, - and is only valid for applications sourced from Git. + description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. type: string plugin: - description: ConfigManagementPlugin holds config management - plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: description: Env is a list of environment variable entries items: - description: EnvEntry represents an entry in the application's - environment + description: EnvEntry represents an entry in the application's environment properties: name: - description: Name is the name of the variable, - usually expressed in uppercase + description: Name is the name of the variable, usually expressed in uppercase type: string value: description: Value is the value of the variable @@ -1063,15 +881,10 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository (Git or - Helm) that contains the application manifests + description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of the - source to sync the application to. In case of Git, this - can be commit, tag, or branch. If omitted, will equal - to HEAD. In case of Helm, this is a semver tag for the - Chart's version. + description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. type: string required: - repoURL @@ -1083,29 +896,24 @@ spec: type: object type: array observedAt: - description: 'ObservedAt indicates when the application state was - updated without querying latest git state Deprecated: controller - no longer updates ObservedAt field' + description: 'ObservedAt indicates when the application state was updated without querying latest git state Deprecated: controller no longer updates ObservedAt field' format: date-time type: string operationState: - description: OperationState contains information about any ongoing - operations, such as a sync + description: OperationState contains information about any ongoing operations, such as a sync properties: finishedAt: description: FinishedAt contains time of operation completion format: date-time type: string message: - description: Message holds any pertinent messages when attempting - to perform operation (typically errors). + description: Message holds any pertinent messages when attempting to perform operation (typically errors). type: string operation: description: Operation is the original requested operation properties: info: - description: Info is a list of informational items for this - operation + description: Info is a list of informational items for this operation items: properties: name: @@ -1118,45 +926,34 @@ spec: type: object type: array initiatedBy: - description: InitiatedBy contains information about who initiated - the operations + description: InitiatedBy contains information about who initiated the operations properties: automated: - description: Automated is set to true if operation was - initiated automatically by the application controller. + description: Automated is set to true if operation was initiated automatically by the application controller. type: boolean username: - description: Username contains the name of a user who - started operation + description: Username contains the name of a user who started operation type: string type: object retry: - description: Retry controls the strategy to apply if a sync - fails + description: Retry controls the strategy to apply if a sync fails properties: backoff: - description: Backoff controls how to backoff on subsequent - retries of failed syncs + description: Backoff controls how to backoff on subsequent retries of failed syncs properties: duration: - description: Duration is the amount to back off. Default - unit is seconds, but could also be a duration (e.g. - "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply the base - duration after each failed retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount of - time allowed for the backoff strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number of attempts for - retrying a failed sync. If set to 0, no retries will - be performed. + description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed. format: int64 type: integer type: object @@ -1164,25 +961,20 @@ spec: description: Sync contains parameters for the operation properties: dryRun: - description: DryRun specifies to perform a `kubectl apply - --dry-run` without actually performing the sync + description: DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync type: boolean manifests: - description: Manifests is an optional field that overrides - sync source with a local directory for development + description: Manifests is an optional field that overrides sync source with a local directory for development items: type: string type: array prune: - description: Prune specifies to delete resources from - the cluster that are no longer tracked in git + description: Prune specifies to delete resources from the cluster that are no longer tracked in git type: boolean resources: - description: Resources describes which resources shall - be part of the sync + description: Resources describes which resources shall be part of the sync items: - description: SyncOperationResource contains resources - to sync. + description: SyncOperationResource contains resources to sync. properties: group: type: string @@ -1198,45 +990,30 @@ spec: type: object type: array revision: - description: Revision is the revision (Git) or chart version - (Helm) which to sync the application to If omitted, - will use the revision specified in app spec. + description: Revision is the revision (Git) or chart version (Helm) which to sync the application to If omitted, will use the revision specified in app spec. type: string source: - description: Source overrides the source definition set - in the application. This is typically set in a Rollback - operation and is nil during a Sync operation + description: Source overrides the source definition set in the application. This is typically set in a Rollback operation and is nil during a Sync operation properties: chart: - description: Chart is a Helm chart name, and must - be specified for applications sourced from a Helm - repo. + description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. type: string directory: - description: Directory holds path/directory specific - options + description: Directory holds path/directory specific options properties: exclude: - description: Exclude contains a glob pattern to - match paths against that should be explicitly - excluded from being used during manifest generation + description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation type: string include: - description: Include contains a glob pattern to - match paths against that should be explicitly - included during manifest generation + description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation type: string jsonnet: - description: Jsonnet holds options specific to - Jsonnet + description: Jsonnet holds options specific to Jsonnet properties: extVars: - description: ExtVars is a list of Jsonnet - External Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar represents a variable - to be passed to jsonnet during manifest - generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -1255,12 +1032,9 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level - Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar represents a variable - to be passed to jsonnet during manifest - generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -1275,88 +1049,66 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan - a directory recursively for manifests + description: Recurse specifies whether to scan a directory recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters - to the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file parameter - that's passed to helm template during manifest - generation + description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation properties: name: - description: Name is the name of the Helm - parameter + description: Name is the name of the Helm parameter type: string path: - description: Path is the path to the file - containing the values for the Helm parameter + description: Path is the path to the file containing the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters - which are passed to the helm template command - upon manifest generation + description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation items: - description: HelmParameter is a parameter that's - passed to helm template during manifest generation + description: HelmParameter is a parameter that's passed to helm template during manifest generation properties: forceString: - description: ForceString determines whether - to tell Helm to interpret booleans and - numbers as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: - description: Name is the name of the Helm - parameter + description: Name is the name of the Helm parameter type: string value: - description: Value is the value for the - Helm parameter + description: Value is the value for the Helm parameter type: string type: object type: array releaseName: - description: ReleaseName is the Helm release name - to use. If omitted it will use the application - name + description: ReleaseName is the Helm release name to use. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value - files to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be - passed to helm template, typically defined as - a block + description: Values specifies Helm values to be passed to helm template, typically defined as a block type: string version: - description: Version is the Helm version to use - for templating (either "2" or "3") + description: Version is the Helm version to use for templating (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet - component parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -1376,55 +1128,42 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional - annotations to add to rendered manifests + description: CommonAnnotations is a list of additional annotations to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional - labels to add to rendered manifests + description: CommonLabels is a list of additional labels to add to rendered manifests type: object images: - description: Images is a list of Kustomize image - override specifications + description: Images is a list of Kustomize image override specifications items: - description: KustomizeImage represents a Kustomize - image definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to - resources for Kustomize apps + description: NamePrefix is a prefix appended to resources for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to - resources for Kustomize apps + description: NameSuffix is a suffix appended to resources for Kustomize apps type: string version: - description: Version controls which version of - Kustomize to use for rendering manifests + description: Version controls which version of Kustomize to use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git - repository, and is only valid for applications sourced - from Git. + description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. type: string plugin: - description: ConfigManagementPlugin holds config management - plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: - description: Env is a list of environment variable - entries + description: Env is a list of environment variable entries items: - description: EnvEntry represents an entry in - the application's environment + description: EnvEntry represents an entry in the application's environment properties: name: - description: Name is the name of the variable, - usually expressed in uppercase + description: Name is the name of the variable, usually expressed in uppercase type: string value: description: Value is the value of the variable @@ -1438,51 +1177,34 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository - (Git or Helm) that contains the application manifests + description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of - the source to sync the application to. In case of - Git, this can be commit, tag, or branch. If omitted, - will equal to HEAD. In case of Helm, this is a semver - tag for the Chart's version. + description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. type: string required: - repoURL type: object syncOptions: - description: SyncOptions provide per-sync sync-options, - e.g. Validate=false + description: SyncOptions provide per-sync sync-options, e.g. Validate=false items: type: string type: array syncStrategy: - description: SyncStrategy describes how to perform the - sync + description: SyncStrategy describes how to perform the sync properties: apply: - description: Apply will perform a `kubectl apply` - to perform the sync. + description: Apply will perform a `kubectl apply` to perform the sync. properties: force: - description: Force indicates whether or not to - supply the --force flag to `kubectl apply`. - The --force flag deletes and re-create the resource, - when PATCH encounters conflict and has retried - for 5 times. + description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times. type: boolean type: object hook: - description: Hook will submit any referenced resources - to perform the sync. This is the default strategy + description: Hook will submit any referenced resources to perform the sync. This is the default strategy properties: force: - description: Force indicates whether or not to - supply the --force flag to `kubectl apply`. - The --force flag deletes and re-create the resource, - when PATCH encounters conflict and has retried - for 5 times. + description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times. type: boolean type: object type: object @@ -1503,50 +1225,39 @@ spec: description: SyncResult is the result of a Sync operation properties: resources: - description: Resources contains a list of sync result items - for each individual resource in a sync operation + description: Resources contains a list of sync result items for each individual resource in a sync operation items: - description: ResourceResult holds the operation result details - of a specific resource + description: ResourceResult holds the operation result details of a specific resource properties: group: description: Group specifies the API group of the resource type: string hookPhase: - description: HookPhase contains the state of any operation - associated with this resource OR hook This can also - contain values for non-hook resources. + description: HookPhase contains the state of any operation associated with this resource OR hook This can also contain values for non-hook resources. type: string hookType: - description: HookType specifies the type of the hook. - Empty for non-hook resources + description: HookType specifies the type of the hook. Empty for non-hook resources type: string kind: description: Kind specifies the API kind of the resource type: string message: - description: Message contains an informational or error - message for the last sync OR operation + description: Message contains an informational or error message for the last sync OR operation type: string name: description: Name specifies the name of the resource type: string namespace: - description: Namespace specifies the target namespace - of the resource + description: Namespace specifies the target namespace of the resource type: string status: - description: Status holds the final result of the sync. - Will be empty if the resources is yet to be applied/pruned - and is always zero-value for hooks + description: Status holds the final result of the sync. Will be empty if the resources is yet to be applied/pruned and is always zero-value for hooks type: string syncPhase: - description: SyncPhase indicates the particular phase - of the sync that this result was acquired in + description: SyncPhase indicates the particular phase of the sync that this result was acquired in type: string version: - description: Version specifies the API version of the - resource + description: Version specifies the API version of the resource type: string required: - group @@ -1557,39 +1268,30 @@ spec: type: object type: array revision: - description: Revision holds the revision this sync operation - was performed to + description: Revision holds the revision this sync operation was performed to type: string source: - description: Source records the application source information - of the sync, used for comparing auto-sync + description: Source records the application source information of the sync, used for comparing auto-sync properties: chart: - description: Chart is a Helm chart name, and must be specified - for applications sourced from a Helm repo. + description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. type: string directory: description: Directory holds path/directory specific options properties: exclude: - description: Exclude contains a glob pattern to match - paths against that should be explicitly excluded - from being used during manifest generation + description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation type: string include: - description: Include contains a glob pattern to match - paths against that should be explicitly included - during manifest generation + description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation type: string jsonnet: description: Jsonnet holds options specific to Jsonnet properties: extVars: - description: ExtVars is a list of Jsonnet External - Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar represents a variable - to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -1608,11 +1310,9 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level - Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar represents a variable - to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -1627,84 +1327,66 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan a directory - recursively for manifests + description: Recurse specifies whether to scan a directory recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to - the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file parameter - that's passed to helm template during manifest - generation + description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation properties: name: description: Name is the name of the Helm parameter type: string path: - description: Path is the path to the file containing - the values for the Helm parameter + description: Path is the path to the file containing the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters - which are passed to the helm template command upon - manifest generation + description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation items: - description: HelmParameter is a parameter that's - passed to helm template during manifest generation + description: HelmParameter is a parameter that's passed to helm template during manifest generation properties: forceString: - description: ForceString determines whether - to tell Helm to interpret booleans and numbers - as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: description: Name is the name of the Helm parameter type: string value: - description: Value is the value for the Helm - parameter + description: Value is the value for the Helm parameter type: string type: object type: array releaseName: - description: ReleaseName is the Helm release name - to use. If omitted it will use the application name + description: ReleaseName is the Helm release name to use. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files - to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be passed - to helm template, typically defined as a block + description: Values specifies Helm values to be passed to helm template, typically defined as a block type: string version: - description: Version is the Helm version to use for - templating (either "2" or "3") + description: Version is the Helm version to use for templating (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet component - parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -1724,54 +1406,42 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional - annotations to add to rendered manifests + description: CommonAnnotations is a list of additional annotations to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional - labels to add to rendered manifests + description: CommonLabels is a list of additional labels to add to rendered manifests type: object images: - description: Images is a list of Kustomize image override - specifications + description: Images is a list of Kustomize image override specifications items: - description: KustomizeImage represents a Kustomize - image definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources - for Kustomize apps + description: NamePrefix is a prefix appended to resources for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources - for Kustomize apps + description: NameSuffix is a suffix appended to resources for Kustomize apps type: string version: - description: Version controls which version of Kustomize - to use for rendering manifests + description: Version controls which version of Kustomize to use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git repository, - and is only valid for applications sourced from Git. + description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. type: string plugin: - description: ConfigManagementPlugin holds config management - plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: - description: Env is a list of environment variable - entries + description: Env is a list of environment variable entries items: - description: EnvEntry represents an entry in the - application's environment + description: EnvEntry represents an entry in the application's environment properties: name: - description: Name is the name of the variable, - usually expressed in uppercase + description: Name is the name of the variable, usually expressed in uppercase type: string value: description: Value is the value of the variable @@ -1785,15 +1455,10 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository (Git - or Helm) that contains the application manifests + description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of the - source to sync the application to. In case of Git, this - can be commit, tag, or branch. If omitted, will equal - to HEAD. In case of Helm, this is a semver tag for the - Chart's version. + description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. type: string required: - repoURL @@ -1807,30 +1472,24 @@ spec: - startedAt type: object reconciledAt: - description: ReconciledAt indicates when the application state was - reconciled using the latest git version + description: ReconciledAt indicates when the application state was reconciled using the latest git version format: date-time type: string resources: - description: Resources is a list of Kubernetes resources managed by - this application + description: Resources is a list of Kubernetes resources managed by this application items: - description: 'ResourceStatus holds the current sync and health status - of a resource TODO: describe members of this type' + description: 'ResourceStatus holds the current sync and health status of a resource TODO: describe members of this type' properties: group: type: string health: - description: HealthStatus contains information about the currently - observed health state of an application or resource + description: HealthStatus contains information about the currently observed health state of an application or resource properties: message: - description: Message is a human-readable informational message - describing the health status + description: Message is a human-readable informational message describing the health status type: string status: - description: Status holds the status code of the application - or resource + description: Status holds the status code of the application or resource type: string type: object hook: @@ -1844,8 +1503,7 @@ spec: requiresPruning: type: boolean status: - description: SyncStatusCode is a type which represents possible - comparison results + description: SyncStatusCode is a type which represents possible comparison results type: string version: type: string @@ -1855,12 +1513,10 @@ spec: description: SourceType specifies the type of this application type: string summary: - description: Summary contains a list of URLs and container images - used by this application + description: Summary contains a list of URLs and container images used by this application properties: externalURLs: - description: ExternalURLs holds all external URLs of application - child resources. + description: ExternalURLs holds all external URLs of application child resources. items: type: string type: array @@ -1871,62 +1527,46 @@ spec: type: array type: object sync: - description: Sync contains information about the application's current - sync status + description: Sync contains information about the application's current sync status properties: comparedTo: - description: ComparedTo contains information about what has been - compared + description: ComparedTo contains information about what has been compared properties: destination: - description: Destination is a reference to the application's - destination used for comparison + description: Destination is a reference to the application's destination used for comparison properties: name: - description: Name is an alternate way of specifying the - target cluster by its symbolic name + description: Name is an alternate way of specifying the target cluster by its symbolic name type: string namespace: - description: Namespace specifies the target namespace - for the application's resources. The namespace will - only be set for namespace-scoped resources that have - not set a value for .metadata.namespace + description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace type: string server: - description: Server specifies the URL of the target cluster - and must be set to the Kubernetes control plane API + description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API type: string type: object source: - description: Source is a reference to the application's source - used for comparison + description: Source is a reference to the application's source used for comparison properties: chart: - description: Chart is a Helm chart name, and must be specified - for applications sourced from a Helm repo. + description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo. type: string directory: description: Directory holds path/directory specific options properties: exclude: - description: Exclude contains a glob pattern to match - paths against that should be explicitly excluded - from being used during manifest generation + description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation type: string include: - description: Include contains a glob pattern to match - paths against that should be explicitly included - during manifest generation + description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation type: string jsonnet: description: Jsonnet holds options specific to Jsonnet properties: extVars: - description: ExtVars is a list of Jsonnet External - Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar represents a variable - to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -1945,11 +1585,9 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level - Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar represents a variable - to be passed to jsonnet during manifest generation + description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation properties: code: type: boolean @@ -1964,84 +1602,66 @@ spec: type: array type: object recurse: - description: Recurse specifies whether to scan a directory - recursively for manifests + description: Recurse specifies whether to scan a directory recursively for manifests type: boolean type: object helm: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to - the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file parameter - that's passed to helm template during manifest - generation + description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation properties: name: description: Name is the name of the Helm parameter type: string path: - description: Path is the path to the file containing - the values for the Helm parameter + description: Path is the path to the file containing the values for the Helm parameter type: string type: object type: array parameters: - description: Parameters is a list of Helm parameters - which are passed to the helm template command upon - manifest generation + description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation items: - description: HelmParameter is a parameter that's - passed to helm template during manifest generation + description: HelmParameter is a parameter that's passed to helm template during manifest generation properties: forceString: - description: ForceString determines whether - to tell Helm to interpret booleans and numbers - as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: description: Name is the name of the Helm parameter type: string value: - description: Value is the value for the Helm - parameter + description: Value is the value for the Helm parameter type: string type: object type: array releaseName: - description: ReleaseName is the Helm release name - to use. If omitted it will use the application name + description: ReleaseName is the Helm release name to use. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files - to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values specifies Helm values to be passed - to helm template, typically defined as a block + description: Values specifies Helm values to be passed to helm template, typically defined as a block type: string version: - description: Version is the Helm version to use for - templating (either "2" or "3") + description: Version is the Helm version to use for templating (either "2" or "3") type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet component - parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -2061,54 +1681,42 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations is a list of additional - annotations to add to rendered manifests + description: CommonAnnotations is a list of additional annotations to add to rendered manifests type: object commonLabels: additionalProperties: type: string - description: CommonLabels is a list of additional - labels to add to rendered manifests + description: CommonLabels is a list of additional labels to add to rendered manifests type: object images: - description: Images is a list of Kustomize image override - specifications + description: Images is a list of Kustomize image override specifications items: - description: KustomizeImage represents a Kustomize - image definition in the format [old_image_name=]: + description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources - for Kustomize apps + description: NamePrefix is a prefix appended to resources for Kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources - for Kustomize apps + description: NameSuffix is a suffix appended to resources for Kustomize apps type: string version: - description: Version controls which version of Kustomize - to use for rendering manifests + description: Version controls which version of Kustomize to use for rendering manifests type: string type: object path: - description: Path is a directory path within the Git repository, - and is only valid for applications sourced from Git. + description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git. type: string plugin: - description: ConfigManagementPlugin holds config management - plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: - description: Env is a list of environment variable - entries + description: Env is a list of environment variable entries items: - description: EnvEntry represents an entry in the - application's environment + description: EnvEntry represents an entry in the application's environment properties: name: - description: Name is the name of the variable, - usually expressed in uppercase + description: Name is the name of the variable, usually expressed in uppercase type: string value: description: Value is the value of the variable @@ -2122,15 +1730,10 @@ spec: type: string type: object repoURL: - description: RepoURL is the URL to the repository (Git - or Helm) that contains the application manifests + description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests type: string targetRevision: - description: TargetRevision defines the revision of the - source to sync the application to. In case of Git, this - can be commit, tag, or branch. If omitted, will equal - to HEAD. In case of Helm, this is a semver tag for the - Chart's version. + description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version. type: string required: - repoURL @@ -2140,8 +1743,7 @@ spec: - source type: object revision: - description: Revision contains information about the revision - the comparison has been performed to + description: Revision contains information about the revision the comparison has been performed to type: string status: description: Status is the sync state of the comparison @@ -2183,59 +1785,39 @@ spec: description: ApplicationSet is a set of Application resources properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: ApplicationSetSpec represents a class of application set - state. + description: ApplicationSetSpec represents a class of application set state. properties: generators: items: description: ApplicationSetGenerator include list item info properties: clusters: - description: ClusterGenerator defines a generator to match against - clusters registered with ArgoCD. + description: ClusterGenerator defines a generator to match against clusters registered with ArgoCD. properties: selector: - description: Selector defines a label selector to match - against all clusters registered with ArgoCD. Clusters - today are stored as Kubernetes Secrets, thus the Secret - labels will be used for matching the selector. + description: Selector defines a label selector to match against all clusters registered with ArgoCD. Clusters today are stored as Kubernetes Secrets, thus the Secret labels will be used for matching the selector. properties: matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: key is the label key that the selector - applies to. + description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array @@ -2247,20 +1829,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object template: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the - Argo CD application fields that may be used for Applications - generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -2276,38 +1852,25 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application - state. Contains link to repository with application - definition and additional parameters link definition - revision. + description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes - server and namespace defined in the environment - ksonnet app.yaml + description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster - which can be used instead of server (url) - field + description: Name of the destination cluster which can be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment - namespace value in the ksonnet app.yaml + description: Namespace overrides the environment namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment - server value in the ksonnet app.yaml + description: Server overrides the environment server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources - fields which should be ignored during comparison + description: IgnoreDifferences controls resources fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains - resource filter and list of json paths which - should be ignored during comparison with live - state. + description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. properties: group: type: string @@ -2327,9 +1890,7 @@ spec: type: object type: array info: - description: Infos contains a list of useful information - (URLs, email addresses, and plain text) that relates - to the application + description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application items: properties: name: @@ -2342,43 +1903,30 @@ spec: type: object type: array project: - description: Project is a application project name. - Empty name means that application belongs to 'default' - project. + description: Project is a application project name. Empty name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept - in the apps revision history. This should only - be changed in exceptional circumstances. Setting - to zero will store no history. This will reduce - storage used. Increasing will increase the space - used to store the history, so we do not recommend - increasing it. Default is 10. + description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location - ksonnet application definition + description: Source is a reference to the location ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory - specific options + description: Directory holds path/directory specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds - jsonnet specific options + description: ApplicationSourceJsonnet holds jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet - External Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -2392,17 +1940,14 @@ spec: type: object type: array libs: - description: Additional library search - dirs + description: Additional library search dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet - Top-level Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -2423,77 +1968,59 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters - to the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file - parameter to a helm template + description: HelmFileParameter is a file parameter to a helm template properties: name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string path: - description: Path is the path value - for the helm parameter + description: Path is the path value for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to - the helm template + description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter - to a helm template + description: HelmParameter is a parameter to a helm template properties: forceString: - description: ForceString determines - whether to tell Helm to interpret - booleans and numbers as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string value: - description: Value is the value for - the helm parameter + description: Value is the value for the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted - it will use the application name + description: The Helm release name. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm - value files to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically - defined as a block + description: Values is Helm values, typically defined as a block type: string version: - description: Version is the Helm version - to use for templating with + description: Version is the Helm version to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet - component parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet - component parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -2508,47 +2035,38 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional - kustomize commonAnnotations + description: CommonAnnotations adds additional kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional - kustomize commonLabels + description: CommonLabels adds additional kustomize commonLabels type: object images: - description: Images are kustomize image - overrides + description: Images are kustomize image overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended - to resources for kustomize apps + description: NamePrefix is a prefix appended to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended - to resources for kustomize apps + description: NameSuffix is a suffix appended to resources for kustomize apps type: string version: - description: Version contains optional Kustomize - version + description: Version contains optional Kustomize version type: string type: object path: - description: Path is a directory path within - the Git repository + description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config - management plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: items: @@ -2568,73 +2086,54 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of - the application manifests + description: RepoURL is the repository URL of the application manifests type: string targetRevision: - description: TargetRevision defines the commit, - tag, or branch in which to sync the application - to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will - be performed + description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application - synced to the target revision + description: Automated will keep an application synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have - zero live resources (default: false)' + description: 'AllowEmpty allows apps have zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources - automatically as part of automated sync - (default: false)' + description: 'Prune will prune resources automatically as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing - if (default: false)' + description: 'SelfHeal enables auto-syncing if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry - behavior + description: Retry controls failed sync retry behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount - to back off. Default unit is seconds, - but could also be a duration (e.g. - "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply - the base duration after each failed - retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum - amount of time allowed for the backoff - strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number - of attempts when retrying a container + description: Limit is the maximum number of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole - app sync-options + description: Options allow you to specify whole app sync-options items: type: string type: array @@ -2651,8 +2150,7 @@ spec: values: additionalProperties: type: string - description: Values contains key/value pairs which are passed - directly as parameters to the template + description: Values contains key/value pairs which are passed directly as parameters to the template type: object type: object git: @@ -2688,9 +2186,7 @@ spec: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the - Argo CD application fields that may be used for Applications - generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -2706,38 +2202,25 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application - state. Contains link to repository with application - definition and additional parameters link definition - revision. + description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes - server and namespace defined in the environment - ksonnet app.yaml + description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster - which can be used instead of server (url) - field + description: Name of the destination cluster which can be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment - namespace value in the ksonnet app.yaml + description: Namespace overrides the environment namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment - server value in the ksonnet app.yaml + description: Server overrides the environment server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources - fields which should be ignored during comparison + description: IgnoreDifferences controls resources fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains - resource filter and list of json paths which - should be ignored during comparison with live - state. + description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. properties: group: type: string @@ -2757,9 +2240,7 @@ spec: type: object type: array info: - description: Infos contains a list of useful information - (URLs, email addresses, and plain text) that relates - to the application + description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application items: properties: name: @@ -2772,43 +2253,30 @@ spec: type: object type: array project: - description: Project is a application project name. - Empty name means that application belongs to 'default' - project. + description: Project is a application project name. Empty name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept - in the apps revision history. This should only - be changed in exceptional circumstances. Setting - to zero will store no history. This will reduce - storage used. Increasing will increase the space - used to store the history, so we do not recommend - increasing it. Default is 10. + description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location - ksonnet application definition + description: Source is a reference to the location ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory - specific options + description: Directory holds path/directory specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds - jsonnet specific options + description: ApplicationSourceJsonnet holds jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet - External Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -2822,17 +2290,14 @@ spec: type: object type: array libs: - description: Additional library search - dirs + description: Additional library search dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet - Top-level Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -2853,77 +2318,59 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters - to the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file - parameter to a helm template + description: HelmFileParameter is a file parameter to a helm template properties: name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string path: - description: Path is the path value - for the helm parameter + description: Path is the path value for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to - the helm template + description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter - to a helm template + description: HelmParameter is a parameter to a helm template properties: forceString: - description: ForceString determines - whether to tell Helm to interpret - booleans and numbers as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string value: - description: Value is the value for - the helm parameter + description: Value is the value for the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted - it will use the application name + description: The Helm release name. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm - value files to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically - defined as a block + description: Values is Helm values, typically defined as a block type: string version: - description: Version is the Helm version - to use for templating with + description: Version is the Helm version to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet - component parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet - component parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -2938,47 +2385,38 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional - kustomize commonAnnotations + description: CommonAnnotations adds additional kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional - kustomize commonLabels + description: CommonLabels adds additional kustomize commonLabels type: object images: - description: Images are kustomize image - overrides + description: Images are kustomize image overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended - to resources for kustomize apps + description: NamePrefix is a prefix appended to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended - to resources for kustomize apps + description: NameSuffix is a suffix appended to resources for kustomize apps type: string version: - description: Version contains optional Kustomize - version + description: Version contains optional Kustomize version type: string type: object path: - description: Path is a directory path within - the Git repository + description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config - management plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: items: @@ -2998,73 +2436,54 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of - the application manifests + description: RepoURL is the repository URL of the application manifests type: string targetRevision: - description: TargetRevision defines the commit, - tag, or branch in which to sync the application - to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will - be performed + description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application - synced to the target revision + description: Automated will keep an application synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have - zero live resources (default: false)' + description: 'AllowEmpty allows apps have zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources - automatically as part of automated sync - (default: false)' + description: 'Prune will prune resources automatically as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing - if (default: false)' + description: 'SelfHeal enables auto-syncing if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry - behavior + description: Retry controls failed sync retry behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount - to back off. Default unit is seconds, - but could also be a duration (e.g. - "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply - the base duration after each failed - retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum - amount of time allowed for the backoff - strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number - of attempts when retrying a container + description: Limit is the maximum number of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole - app sync-options + description: Options allow you to specify whole app sync-options items: type: string type: array @@ -3087,8 +2506,7 @@ spec: properties: elements: items: - description: ListGeneratorElement include cluster and - url info + description: ListGeneratorElement include cluster and url info properties: cluster: type: string @@ -3097,8 +2515,7 @@ spec: values: additionalProperties: type: string - description: Values contains key/value pairs which - are passed directly as parameters to the template + description: Values contains key/value pairs which are passed directly as parameters to the template type: object required: - cluster @@ -3109,9 +2526,7 @@ spec: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the - Argo CD application fields that may be used for Applications - generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -3127,38 +2542,25 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application - state. Contains link to repository with application - definition and additional parameters link definition - revision. + description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes - server and namespace defined in the environment - ksonnet app.yaml + description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster - which can be used instead of server (url) - field + description: Name of the destination cluster which can be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment - namespace value in the ksonnet app.yaml + description: Namespace overrides the environment namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment - server value in the ksonnet app.yaml + description: Server overrides the environment server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources - fields which should be ignored during comparison + description: IgnoreDifferences controls resources fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains - resource filter and list of json paths which - should be ignored during comparison with live - state. + description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. properties: group: type: string @@ -3178,9 +2580,7 @@ spec: type: object type: array info: - description: Infos contains a list of useful information - (URLs, email addresses, and plain text) that relates - to the application + description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application items: properties: name: @@ -3193,43 +2593,30 @@ spec: type: object type: array project: - description: Project is a application project name. - Empty name means that application belongs to 'default' - project. + description: Project is a application project name. Empty name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept - in the apps revision history. This should only - be changed in exceptional circumstances. Setting - to zero will store no history. This will reduce - storage used. Increasing will increase the space - used to store the history, so we do not recommend - increasing it. Default is 10. + description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location - ksonnet application definition + description: Source is a reference to the location ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory - specific options + description: Directory holds path/directory specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds - jsonnet specific options + description: ApplicationSourceJsonnet holds jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet - External Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -3243,17 +2630,14 @@ spec: type: object type: array libs: - description: Additional library search - dirs + description: Additional library search dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet - Top-level Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -3274,77 +2658,59 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters - to the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file - parameter to a helm template + description: HelmFileParameter is a file parameter to a helm template properties: name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string path: - description: Path is the path value - for the helm parameter + description: Path is the path value for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to - the helm template + description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter - to a helm template + description: HelmParameter is a parameter to a helm template properties: forceString: - description: ForceString determines - whether to tell Helm to interpret - booleans and numbers as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string value: - description: Value is the value for - the helm parameter + description: Value is the value for the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted - it will use the application name + description: The Helm release name. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm - value files to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically - defined as a block + description: Values is Helm values, typically defined as a block type: string version: - description: Version is the Helm version - to use for templating with + description: Version is the Helm version to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet - component parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet - component parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -3359,47 +2725,38 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional - kustomize commonAnnotations + description: CommonAnnotations adds additional kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional - kustomize commonLabels + description: CommonLabels adds additional kustomize commonLabels type: object images: - description: Images are kustomize image - overrides + description: Images are kustomize image overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended - to resources for kustomize apps + description: NamePrefix is a prefix appended to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended - to resources for kustomize apps + description: NameSuffix is a suffix appended to resources for kustomize apps type: string version: - description: Version contains optional Kustomize - version + description: Version contains optional Kustomize version type: string type: object path: - description: Path is a directory path within - the Git repository + description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config - management plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: items: @@ -3419,73 +2776,54 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of - the application manifests + description: RepoURL is the repository URL of the application manifests type: string targetRevision: - description: TargetRevision defines the commit, - tag, or branch in which to sync the application - to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will - be performed + description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application - synced to the target revision + description: Automated will keep an application synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have - zero live resources (default: false)' + description: 'AllowEmpty allows apps have zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources - automatically as part of automated sync - (default: false)' + description: 'Prune will prune resources automatically as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing - if (default: false)' + description: 'SelfHeal enables auto-syncing if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry - behavior + description: Retry controls failed sync retry behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount - to back off. Default unit is seconds, - but could also be a duration (e.g. - "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply - the base duration after each failed - retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum - amount of time allowed for the backoff - strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number - of attempts when retrying a container + description: Limit is the maximum number of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole - app sync-options + description: Options allow you to specify whole app sync-options items: type: string type: array @@ -3503,19 +2841,15 @@ spec: - elements type: object repoHost: - description: RepoHostGenerator defines a generator that scrapes - a SCMaaS API to find candidate repos. + description: RepoHostGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. properties: filters: - description: TODO other providers. Filters for which repos - should be considered. + description: TODO other providers. Filters for which repos should be considered. items: - description: RepoHostGeneratorFilter is a single repoisitory - filter. + description: RepoHostGeneratorFilter is a single repoisitory filter. properties: labelMatch: - description: A regex which must match at least one - label. + description: A regex which must match at least one label. type: string pathExists: description: A path which must exist. @@ -3529,8 +2863,7 @@ spec: description: Which provider to use and config for it. properties: api: - description: The Github API URL to talk to. If blank, - use https://api.github.com/. + description: The Github API URL to talk to. If blank, use https://api.github.com/. type: string organization: description: Github org to scan. Required. @@ -3557,9 +2890,7 @@ spec: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the - Argo CD application fields that may be used for Applications - generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -3575,38 +2906,25 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application - state. Contains link to repository with application - definition and additional parameters link definition - revision. + description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes - server and namespace defined in the environment - ksonnet app.yaml + description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster - which can be used instead of server (url) - field + description: Name of the destination cluster which can be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment - namespace value in the ksonnet app.yaml + description: Namespace overrides the environment namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment - server value in the ksonnet app.yaml + description: Server overrides the environment server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources - fields which should be ignored during comparison + description: IgnoreDifferences controls resources fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains - resource filter and list of json paths which - should be ignored during comparison with live - state. + description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. properties: group: type: string @@ -3626,9 +2944,7 @@ spec: type: object type: array info: - description: Infos contains a list of useful information - (URLs, email addresses, and plain text) that relates - to the application + description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application items: properties: name: @@ -3641,43 +2957,30 @@ spec: type: object type: array project: - description: Project is a application project name. - Empty name means that application belongs to 'default' - project. + description: Project is a application project name. Empty name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept - in the apps revision history. This should only - be changed in exceptional circumstances. Setting - to zero will store no history. This will reduce - storage used. Increasing will increase the space - used to store the history, so we do not recommend - increasing it. Default is 10. + description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location - ksonnet application definition + description: Source is a reference to the location ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory - specific options + description: Directory holds path/directory specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds - jsonnet specific options + description: ApplicationSourceJsonnet holds jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet - External Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -3691,17 +2994,14 @@ spec: type: object type: array libs: - description: Additional library search - dirs + description: Additional library search dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet - Top-level Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -3722,77 +3022,59 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters - to the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file - parameter to a helm template + description: HelmFileParameter is a file parameter to a helm template properties: name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string path: - description: Path is the path value - for the helm parameter + description: Path is the path value for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to - the helm template + description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter - to a helm template + description: HelmParameter is a parameter to a helm template properties: forceString: - description: ForceString determines - whether to tell Helm to interpret - booleans and numbers as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string value: - description: Value is the value for - the helm parameter + description: Value is the value for the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted - it will use the application name + description: The Helm release name. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm - value files to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically - defined as a block + description: Values is Helm values, typically defined as a block type: string version: - description: Version is the Helm version - to use for templating with + description: Version is the Helm version to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet - component parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet - component parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -3807,47 +3089,38 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional - kustomize commonAnnotations + description: CommonAnnotations adds additional kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional - kustomize commonLabels + description: CommonLabels adds additional kustomize commonLabels type: object images: - description: Images are kustomize image - overrides + description: Images are kustomize image overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended - to resources for kustomize apps + description: NamePrefix is a prefix appended to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended - to resources for kustomize apps + description: NameSuffix is a suffix appended to resources for kustomize apps type: string version: - description: Version contains optional Kustomize - version + description: Version contains optional Kustomize version type: string type: object path: - description: Path is a directory path within - the Git repository + description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config - management plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: items: @@ -3867,73 +3140,54 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of - the application manifests + description: RepoURL is the repository URL of the application manifests type: string targetRevision: - description: TargetRevision defines the commit, - tag, or branch in which to sync the application - to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will - be performed + description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application - synced to the target revision + description: Automated will keep an application synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have - zero live resources (default: false)' + description: 'AllowEmpty allows apps have zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources - automatically as part of automated sync - (default: false)' + description: 'Prune will prune resources automatically as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing - if (default: false)' + description: 'SelfHeal enables auto-syncing if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry - behavior + description: Retry controls failed sync retry behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount - to back off. Default unit is seconds, - but could also be a duration (e.g. - "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply - the base duration after each failed - retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum - amount of time allowed for the backoff - strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number - of attempts when retrying a container + description: Limit is the maximum number of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole - app sync-options + description: Options allow you to specify whole app sync-options items: type: string type: array @@ -3951,24 +3205,17 @@ spec: type: object type: array syncPolicy: - description: ApplicationSetSyncPolicy configures how generated Applications - will relate to their ApplicationSet. + description: ApplicationSetSyncPolicy configures how generated Applications will relate to their ApplicationSet. properties: skipPrune: - description: SkipPrune will disable the default behavior which - will delete Applications that are no longer being generated - for the ApplicationSet which created them, or the ApplicationSet - itself is deleted. If SkipPrune is set to true, these Applications - will be orphaned but continue to exist. + description: SkipPrune will disable the default behavior which will delete Applications that are no longer being generated for the ApplicationSet which created them, or the ApplicationSet itself is deleted. If SkipPrune is set to true, these Applications will be orphaned but continue to exist. type: boolean type: object template: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the Argo CD - application fields that may be used for Applications generated - from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -3984,34 +3231,25 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application state. - Contains link to repository with application definition and - additional parameters link definition revision. + description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes server and - namespace defined in the environment ksonnet app.yaml + description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster which can - be used instead of server (url) field + description: Name of the destination cluster which can be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment namespace - value in the ksonnet app.yaml + description: Namespace overrides the environment namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment server value - in the ksonnet app.yaml + description: Server overrides the environment server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources fields which - should be ignored during comparison + description: IgnoreDifferences controls resources fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource - filter and list of json paths which should be ignored - during comparison with live state. + description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. properties: group: type: string @@ -4031,8 +3269,7 @@ spec: type: object type: array info: - description: Infos contains a list of useful information (URLs, - email addresses, and plain text) that relates to the application + description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application items: properties: name: @@ -4045,21 +3282,14 @@ spec: type: object type: array project: - description: Project is a application project name. Empty - name means that application belongs to 'default' project. + description: Project is a application project name. Empty name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept in the - apps revision history. This should only be changed in exceptional - circumstances. Setting to zero will store no history. This - will reduce storage used. Increasing will increase the space - used to store the history, so we do not recommend increasing - it. Default is 10. + description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location ksonnet - application definition + description: Source is a reference to the location ksonnet application definition properties: chart: description: Chart is a Helm chart name @@ -4070,12 +3300,10 @@ spec: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds jsonnet - specific options + description: ApplicationSourceJsonnet holds jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet External - Variables + description: ExtVars is a list of Jsonnet External Variables items: description: JsonnetVar is a jsonnet variable properties: @@ -4096,8 +3324,7 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level - Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: description: JsonnetVar is a jsonnet variable properties: @@ -4120,74 +3347,59 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to - the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file parameter - to a helm template + description: HelmFileParameter is a file parameter to a helm template properties: name: description: Name is the name of the helm parameter type: string path: - description: Path is the path value for the - helm parameter + description: Path is the path value for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to the helm - template + description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template + description: HelmParameter is a parameter to a helm template properties: forceString: - description: ForceString determines whether - to tell Helm to interpret booleans and numbers - as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: description: Name is the name of the helm parameter type: string value: - description: Value is the value for the helm - parameter + description: Value is the value for the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted it - will use the application name + description: The Helm release name. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files - to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically defined - as a block + description: Values is Helm values, typically defined as a block type: string version: - description: Version is the Helm version to use for - templating with + description: Version is the Helm version to use for templating with type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet component - parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -4207,14 +3419,12 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional kustomize - commonAnnotations + description: CommonAnnotations adds additional kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional kustomize - commonLabels + description: CommonLabels adds additional kustomize commonLabels type: object images: description: Images are kustomize image overrides @@ -4222,12 +3432,10 @@ spec: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources - for kustomize apps + description: NamePrefix is a prefix appended to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources - for kustomize apps + description: NameSuffix is a suffix appended to resources for kustomize apps type: string version: description: Version contains optional Kustomize version @@ -4237,8 +3445,7 @@ spec: description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config management - plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: items: @@ -4258,13 +3465,10 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of the application - manifests + description: RepoURL is the repository URL of the application manifests type: string targetRevision: - description: TargetRevision defines the commit, tag, or - branch in which to sync the application to. If omitted, - will sync to HEAD + description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD type: string required: - repoURL @@ -4273,20 +3477,16 @@ spec: description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application synced - to the target revision + description: Automated will keep an application synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live - resources (default: false)' + description: 'AllowEmpty allows apps have zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources automatically - as part of automated sync (default: false)' + description: 'Prune will prune resources automatically as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing if (default: - false)' + description: 'SelfHeal enables auto-syncing if (default: false)' type: boolean type: object retry: @@ -4296,23 +3496,18 @@ spec: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount to back off. - Default unit is seconds, but could also be a - duration (e.g. "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply the - base duration after each failed retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount - of time allowed for the backoff strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number of attempts - when retrying a container + description: Limit is the maximum number of attempts when retrying a container format: int64 type: integer type: object @@ -4373,22 +3568,13 @@ spec: - name: v1alpha1 schema: openAPIV3Schema: - description: 'AppProject provides a logical grouping of applications, providing - controls for: * where the apps may deploy to (cluster whitelist) * what - may be deployed (repository whitelist, resource whitelist/blacklist) * who - can access these applications (roles, OIDC group claims bindings) * and - what they can do (RBAC policies) * automation access to these roles (JWT - tokens)' + description: 'AppProject provides a logical grouping of applications, providing controls for: * where the apps may deploy to (cluster whitelist) * what may be deployed (repository whitelist, resource whitelist/blacklist) * who can access these applications (roles, OIDC group claims bindings) * and what they can do (RBAC policies) * automation access to these roles (JWT tokens)' properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object @@ -4396,12 +3582,9 @@ spec: description: AppProjectSpec is the specification of an AppProject properties: clusterResourceBlacklist: - description: ClusterResourceBlacklist contains list of blacklisted - cluster level resources + description: ClusterResourceBlacklist contains list of blacklisted cluster level resources items: - description: GroupKind specifies a Group and a Kind, but does not - force a version. This is useful for identifying concepts during - lookup stages without having partially valid types + description: GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types properties: group: type: string @@ -4413,12 +3596,9 @@ spec: type: object type: array clusterResourceWhitelist: - description: ClusterResourceWhitelist contains list of whitelisted - cluster level resources + description: ClusterResourceWhitelist contains list of whitelisted cluster level resources items: - description: GroupKind specifies a Group and a Kind, but does not - force a version. This is useful for identifying concepts during - lookup stages without having partially valid types + description: GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types properties: group: type: string @@ -4433,34 +3613,25 @@ spec: description: Description contains optional project description type: string destinations: - description: Destinations contains list of destinations available - for deployment + description: Destinations contains list of destinations available for deployment items: - description: ApplicationDestination holds information about the - application's destination + description: ApplicationDestination holds information about the application's destination properties: name: - description: Name is an alternate way of specifying the target - cluster by its symbolic name + description: Name is an alternate way of specifying the target cluster by its symbolic name type: string namespace: - description: Namespace specifies the target namespace for the - application's resources. The namespace will only be set for - namespace-scoped resources that have not set a value for .metadata.namespace + description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace type: string server: - description: Server specifies the URL of the target cluster - and must be set to the Kubernetes control plane API + description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API type: string type: object type: array namespaceResourceBlacklist: - description: NamespaceResourceBlacklist contains list of blacklisted - namespace level resources + description: NamespaceResourceBlacklist contains list of blacklisted namespace level resources items: - description: GroupKind specifies a Group and a Kind, but does not - force a version. This is useful for identifying concepts during - lookup stages without having partially valid types + description: GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types properties: group: type: string @@ -4472,12 +3643,9 @@ spec: type: object type: array namespaceResourceWhitelist: - description: NamespaceResourceWhitelist contains list of whitelisted - namespace level resources + description: NamespaceResourceWhitelist contains list of whitelisted namespace level resources items: - description: GroupKind specifies a Group and a Kind, but does not - force a version. This is useful for identifying concepts during - lookup stages without having partially valid types + description: GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying concepts during lookup stages without having partially valid types properties: group: type: string @@ -4489,15 +3657,12 @@ spec: type: object type: array orphanedResources: - description: OrphanedResources specifies if controller should monitor - orphaned resources of apps in this project + description: OrphanedResources specifies if controller should monitor orphaned resources of apps in this project properties: ignore: - description: Ignore contains a list of resources that are to be - excluded from orphaned resources monitoring + description: Ignore contains a list of resources that are to be excluded from orphaned resources monitoring items: - description: OrphanedResourceKey is a reference to a resource - to be ignored from + description: OrphanedResourceKey is a reference to a resource to be ignored from properties: group: type: string @@ -4508,32 +3673,26 @@ spec: type: object type: array warn: - description: Warn indicates if warning condition should be created - for apps which have orphaned resources + description: Warn indicates if warning condition should be created for apps which have orphaned resources type: boolean type: object roles: - description: Roles are user defined RBAC roles associated with this - project + description: Roles are user defined RBAC roles associated with this project items: - description: ProjectRole represents a role that has access to a - project + description: ProjectRole represents a role that has access to a project properties: description: description: Description is a description of the role type: string groups: - description: Groups are a list of OIDC group claims bound to - this role + description: Groups are a list of OIDC group claims bound to this role items: type: string type: array jwtTokens: - description: JWTTokens are a list of generated JWT tokens bound - to this role + description: JWTTokens are a list of generated JWT tokens bound to this role items: - description: JWTToken holds the issuedAt and expiresAt values - of a token + description: JWTToken holds the issuedAt and expiresAt values of a token properties: exp: format: int64 @@ -4551,8 +3710,7 @@ spec: description: Name is a name for this role type: string policies: - description: Policies Stores a list of casbin formated strings - that define access policies for the role in the project + description: Policies Stores a list of casbin formated strings that define access policies for the role in the project items: type: string type: array @@ -4561,11 +3719,9 @@ spec: type: object type: array signatureKeys: - description: SignatureKeys contains a list of PGP key IDs that commits - in Git must be signed with in order to be allowed for sync + description: SignatureKeys contains a list of PGP key IDs that commits in Git must be signed with in order to be allowed for sync items: - description: SignatureKey is the specification of a key required - to verify commit signatures with + description: SignatureKey is the specification of a key required to verify commit signatures with properties: keyID: description: The ID of the key in hexadecimal notation @@ -4575,57 +3731,47 @@ spec: type: object type: array sourceRepos: - description: SourceRepos contains list of repository URLs which can - be used for deployment + description: SourceRepos contains list of repository URLs which can be used for deployment items: type: string type: array syncWindows: - description: SyncWindows controls when syncs can be run for apps in - this project + description: SyncWindows controls when syncs can be run for apps in this project items: - description: SyncWindow contains the kind, time, duration and attributes - that are used to assign the syncWindows to apps + description: SyncWindow contains the kind, time, duration and attributes that are used to assign the syncWindows to apps properties: applications: - description: Applications contains a list of applications that - the window will apply to + description: Applications contains a list of applications that the window will apply to items: type: string type: array clusters: - description: Clusters contains a list of clusters that the window - will apply to + description: Clusters contains a list of clusters that the window will apply to items: type: string type: array duration: - description: Duration is the amount of time the sync window - will be open + description: Duration is the amount of time the sync window will be open type: string kind: description: Kind defines if the window allows or blocks syncs type: string manualSync: - description: ManualSync enables manual syncs when they would - otherwise be blocked + description: ManualSync enables manual syncs when they would otherwise be blocked type: boolean namespaces: - description: Namespaces contains a list of namespaces that the - window will apply to + description: Namespaces contains a list of namespaces that the window will apply to items: type: string type: array schedule: - description: Schedule is the time the window will begin, specified - in cron format + description: Schedule is the time the window will begin, specified in cron format type: string type: object type: array type: object status: - description: AppProjectStatus contains status information for AppProject - CRs + description: AppProjectStatus contains status information for AppProject CRs properties: jwtTokensByRole: additionalProperties: @@ -4633,8 +3779,7 @@ spec: properties: items: items: - description: JWTToken holds the issuedAt and expiresAt values - of a token + description: JWTToken holds the issuedAt and expiresAt values of a token properties: exp: format: int64 @@ -4649,8 +3794,7 @@ spec: type: object type: array type: object - description: JWTTokensByRole contains a list of JWT tokens issued - for a given role + description: JWTTokensByRole contains a list of JWT tokens issued for a given role type: object type: object required: diff --git a/manifests/install.yaml b/manifests/install.yaml index 632287fc..2d11ca87 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -24,59 +24,39 @@ spec: description: ApplicationSet is a set of Application resources properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: ApplicationSetSpec represents a class of application set - state. + description: ApplicationSetSpec represents a class of application set state. properties: generators: items: description: ApplicationSetGenerator include list item info properties: clusters: - description: ClusterGenerator defines a generator to match against - clusters registered with ArgoCD. + description: ClusterGenerator defines a generator to match against clusters registered with ArgoCD. properties: selector: - description: Selector defines a label selector to match - against all clusters registered with ArgoCD. Clusters - today are stored as Kubernetes Secrets, thus the Secret - labels will be used for matching the selector. + description: Selector defines a label selector to match against all clusters registered with ArgoCD. Clusters today are stored as Kubernetes Secrets, thus the Secret labels will be used for matching the selector. properties: matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: key is the label key that the selector - applies to. + description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array @@ -88,20 +68,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object template: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the - Argo CD application fields that may be used for Applications - generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -117,38 +91,25 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application - state. Contains link to repository with application - definition and additional parameters link definition - revision. + description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes - server and namespace defined in the environment - ksonnet app.yaml + description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster - which can be used instead of server (url) - field + description: Name of the destination cluster which can be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment - namespace value in the ksonnet app.yaml + description: Namespace overrides the environment namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment - server value in the ksonnet app.yaml + description: Server overrides the environment server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources - fields which should be ignored during comparison + description: IgnoreDifferences controls resources fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains - resource filter and list of json paths which - should be ignored during comparison with live - state. + description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. properties: group: type: string @@ -168,9 +129,7 @@ spec: type: object type: array info: - description: Infos contains a list of useful information - (URLs, email addresses, and plain text) that relates - to the application + description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application items: properties: name: @@ -183,43 +142,30 @@ spec: type: object type: array project: - description: Project is a application project name. - Empty name means that application belongs to 'default' - project. + description: Project is a application project name. Empty name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept - in the apps revision history. This should only - be changed in exceptional circumstances. Setting - to zero will store no history. This will reduce - storage used. Increasing will increase the space - used to store the history, so we do not recommend - increasing it. Default is 10. + description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location - ksonnet application definition + description: Source is a reference to the location ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory - specific options + description: Directory holds path/directory specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds - jsonnet specific options + description: ApplicationSourceJsonnet holds jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet - External Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -233,17 +179,14 @@ spec: type: object type: array libs: - description: Additional library search - dirs + description: Additional library search dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet - Top-level Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -264,77 +207,59 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters - to the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file - parameter to a helm template + description: HelmFileParameter is a file parameter to a helm template properties: name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string path: - description: Path is the path value - for the helm parameter + description: Path is the path value for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to - the helm template + description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter - to a helm template + description: HelmParameter is a parameter to a helm template properties: forceString: - description: ForceString determines - whether to tell Helm to interpret - booleans and numbers as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string value: - description: Value is the value for - the helm parameter + description: Value is the value for the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted - it will use the application name + description: The Helm release name. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm - value files to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically - defined as a block + description: Values is Helm values, typically defined as a block type: string version: - description: Version is the Helm version - to use for templating with + description: Version is the Helm version to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet - component parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet - component parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -349,47 +274,38 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional - kustomize commonAnnotations + description: CommonAnnotations adds additional kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional - kustomize commonLabels + description: CommonLabels adds additional kustomize commonLabels type: object images: - description: Images are kustomize image - overrides + description: Images are kustomize image overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended - to resources for kustomize apps + description: NamePrefix is a prefix appended to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended - to resources for kustomize apps + description: NameSuffix is a suffix appended to resources for kustomize apps type: string version: - description: Version contains optional Kustomize - version + description: Version contains optional Kustomize version type: string type: object path: - description: Path is a directory path within - the Git repository + description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config - management plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: items: @@ -409,73 +325,54 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of - the application manifests + description: RepoURL is the repository URL of the application manifests type: string targetRevision: - description: TargetRevision defines the commit, - tag, or branch in which to sync the application - to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will - be performed + description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application - synced to the target revision + description: Automated will keep an application synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have - zero live resources (default: false)' + description: 'AllowEmpty allows apps have zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources - automatically as part of automated sync - (default: false)' + description: 'Prune will prune resources automatically as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing - if (default: false)' + description: 'SelfHeal enables auto-syncing if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry - behavior + description: Retry controls failed sync retry behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount - to back off. Default unit is seconds, - but could also be a duration (e.g. - "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply - the base duration after each failed - retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum - amount of time allowed for the backoff - strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number - of attempts when retrying a container + description: Limit is the maximum number of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole - app sync-options + description: Options allow you to specify whole app sync-options items: type: string type: array @@ -492,8 +389,7 @@ spec: values: additionalProperties: type: string - description: Values contains key/value pairs which are passed - directly as parameters to the template + description: Values contains key/value pairs which are passed directly as parameters to the template type: object type: object git: @@ -529,9 +425,7 @@ spec: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the - Argo CD application fields that may be used for Applications - generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -547,38 +441,25 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application - state. Contains link to repository with application - definition and additional parameters link definition - revision. + description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes - server and namespace defined in the environment - ksonnet app.yaml + description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster - which can be used instead of server (url) - field + description: Name of the destination cluster which can be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment - namespace value in the ksonnet app.yaml + description: Namespace overrides the environment namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment - server value in the ksonnet app.yaml + description: Server overrides the environment server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources - fields which should be ignored during comparison + description: IgnoreDifferences controls resources fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains - resource filter and list of json paths which - should be ignored during comparison with live - state. + description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. properties: group: type: string @@ -598,9 +479,7 @@ spec: type: object type: array info: - description: Infos contains a list of useful information - (URLs, email addresses, and plain text) that relates - to the application + description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application items: properties: name: @@ -613,43 +492,30 @@ spec: type: object type: array project: - description: Project is a application project name. - Empty name means that application belongs to 'default' - project. + description: Project is a application project name. Empty name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept - in the apps revision history. This should only - be changed in exceptional circumstances. Setting - to zero will store no history. This will reduce - storage used. Increasing will increase the space - used to store the history, so we do not recommend - increasing it. Default is 10. + description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location - ksonnet application definition + description: Source is a reference to the location ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory - specific options + description: Directory holds path/directory specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds - jsonnet specific options + description: ApplicationSourceJsonnet holds jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet - External Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -663,17 +529,14 @@ spec: type: object type: array libs: - description: Additional library search - dirs + description: Additional library search dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet - Top-level Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -694,77 +557,59 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters - to the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file - parameter to a helm template + description: HelmFileParameter is a file parameter to a helm template properties: name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string path: - description: Path is the path value - for the helm parameter + description: Path is the path value for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to - the helm template + description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter - to a helm template + description: HelmParameter is a parameter to a helm template properties: forceString: - description: ForceString determines - whether to tell Helm to interpret - booleans and numbers as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string value: - description: Value is the value for - the helm parameter + description: Value is the value for the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted - it will use the application name + description: The Helm release name. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm - value files to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically - defined as a block + description: Values is Helm values, typically defined as a block type: string version: - description: Version is the Helm version - to use for templating with + description: Version is the Helm version to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet - component parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet - component parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -779,47 +624,38 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional - kustomize commonAnnotations + description: CommonAnnotations adds additional kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional - kustomize commonLabels + description: CommonLabels adds additional kustomize commonLabels type: object images: - description: Images are kustomize image - overrides + description: Images are kustomize image overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended - to resources for kustomize apps + description: NamePrefix is a prefix appended to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended - to resources for kustomize apps + description: NameSuffix is a suffix appended to resources for kustomize apps type: string version: - description: Version contains optional Kustomize - version + description: Version contains optional Kustomize version type: string type: object path: - description: Path is a directory path within - the Git repository + description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config - management plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: items: @@ -839,73 +675,54 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of - the application manifests + description: RepoURL is the repository URL of the application manifests type: string targetRevision: - description: TargetRevision defines the commit, - tag, or branch in which to sync the application - to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will - be performed + description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application - synced to the target revision + description: Automated will keep an application synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have - zero live resources (default: false)' + description: 'AllowEmpty allows apps have zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources - automatically as part of automated sync - (default: false)' + description: 'Prune will prune resources automatically as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing - if (default: false)' + description: 'SelfHeal enables auto-syncing if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry - behavior + description: Retry controls failed sync retry behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount - to back off. Default unit is seconds, - but could also be a duration (e.g. - "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply - the base duration after each failed - retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum - amount of time allowed for the backoff - strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number - of attempts when retrying a container + description: Limit is the maximum number of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole - app sync-options + description: Options allow you to specify whole app sync-options items: type: string type: array @@ -928,8 +745,7 @@ spec: properties: elements: items: - description: ListGeneratorElement include cluster and - url info + description: ListGeneratorElement include cluster and url info properties: cluster: type: string @@ -938,8 +754,7 @@ spec: values: additionalProperties: type: string - description: Values contains key/value pairs which - are passed directly as parameters to the template + description: Values contains key/value pairs which are passed directly as parameters to the template type: object required: - cluster @@ -950,9 +765,7 @@ spec: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the - Argo CD application fields that may be used for Applications - generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -968,38 +781,25 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application - state. Contains link to repository with application - definition and additional parameters link definition - revision. + description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes - server and namespace defined in the environment - ksonnet app.yaml + description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster - which can be used instead of server (url) - field + description: Name of the destination cluster which can be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment - namespace value in the ksonnet app.yaml + description: Namespace overrides the environment namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment - server value in the ksonnet app.yaml + description: Server overrides the environment server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources - fields which should be ignored during comparison + description: IgnoreDifferences controls resources fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains - resource filter and list of json paths which - should be ignored during comparison with live - state. + description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. properties: group: type: string @@ -1019,9 +819,7 @@ spec: type: object type: array info: - description: Infos contains a list of useful information - (URLs, email addresses, and plain text) that relates - to the application + description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application items: properties: name: @@ -1034,43 +832,30 @@ spec: type: object type: array project: - description: Project is a application project name. - Empty name means that application belongs to 'default' - project. + description: Project is a application project name. Empty name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept - in the apps revision history. This should only - be changed in exceptional circumstances. Setting - to zero will store no history. This will reduce - storage used. Increasing will increase the space - used to store the history, so we do not recommend - increasing it. Default is 10. + description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location - ksonnet application definition + description: Source is a reference to the location ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory - specific options + description: Directory holds path/directory specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds - jsonnet specific options + description: ApplicationSourceJsonnet holds jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet - External Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1084,17 +869,14 @@ spec: type: object type: array libs: - description: Additional library search - dirs + description: Additional library search dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet - Top-level Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1115,77 +897,59 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters - to the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file - parameter to a helm template + description: HelmFileParameter is a file parameter to a helm template properties: name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string path: - description: Path is the path value - for the helm parameter + description: Path is the path value for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to - the helm template + description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter - to a helm template + description: HelmParameter is a parameter to a helm template properties: forceString: - description: ForceString determines - whether to tell Helm to interpret - booleans and numbers as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string value: - description: Value is the value for - the helm parameter + description: Value is the value for the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted - it will use the application name + description: The Helm release name. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm - value files to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically - defined as a block + description: Values is Helm values, typically defined as a block type: string version: - description: Version is the Helm version - to use for templating with + description: Version is the Helm version to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet - component parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet - component parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -1200,47 +964,38 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional - kustomize commonAnnotations + description: CommonAnnotations adds additional kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional - kustomize commonLabels + description: CommonLabels adds additional kustomize commonLabels type: object images: - description: Images are kustomize image - overrides + description: Images are kustomize image overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended - to resources for kustomize apps + description: NamePrefix is a prefix appended to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended - to resources for kustomize apps + description: NameSuffix is a suffix appended to resources for kustomize apps type: string version: - description: Version contains optional Kustomize - version + description: Version contains optional Kustomize version type: string type: object path: - description: Path is a directory path within - the Git repository + description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config - management plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: items: @@ -1260,73 +1015,54 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of - the application manifests + description: RepoURL is the repository URL of the application manifests type: string targetRevision: - description: TargetRevision defines the commit, - tag, or branch in which to sync the application - to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will - be performed + description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application - synced to the target revision + description: Automated will keep an application synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have - zero live resources (default: false)' + description: 'AllowEmpty allows apps have zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources - automatically as part of automated sync - (default: false)' + description: 'Prune will prune resources automatically as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing - if (default: false)' + description: 'SelfHeal enables auto-syncing if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry - behavior + description: Retry controls failed sync retry behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount - to back off. Default unit is seconds, - but could also be a duration (e.g. - "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply - the base duration after each failed - retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum - amount of time allowed for the backoff - strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number - of attempts when retrying a container + description: Limit is the maximum number of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole - app sync-options + description: Options allow you to specify whole app sync-options items: type: string type: array @@ -1344,19 +1080,15 @@ spec: - elements type: object repoHost: - description: RepoHostGenerator defines a generator that scrapes - a SCMaaS API to find candidate repos. + description: RepoHostGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. properties: filters: - description: TODO other providers. Filters for which repos - should be considered. + description: TODO other providers. Filters for which repos should be considered. items: - description: RepoHostGeneratorFilter is a single repoisitory - filter. + description: RepoHostGeneratorFilter is a single repoisitory filter. properties: labelMatch: - description: A regex which must match at least one - label. + description: A regex which must match at least one label. type: string pathExists: description: A path which must exist. @@ -1370,8 +1102,7 @@ spec: description: Which provider to use and config for it. properties: api: - description: The Github API URL to talk to. If blank, - use https://api.github.com/. + description: The Github API URL to talk to. If blank, use https://api.github.com/. type: string organization: description: Github org to scan. Required. @@ -1398,9 +1129,7 @@ spec: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the - Argo CD application fields that may be used for Applications - generated from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -1416,38 +1145,25 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application - state. Contains link to repository with application - definition and additional parameters link definition - revision. + description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes - server and namespace defined in the environment - ksonnet app.yaml + description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster - which can be used instead of server (url) - field + description: Name of the destination cluster which can be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment - namespace value in the ksonnet app.yaml + description: Namespace overrides the environment namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment - server value in the ksonnet app.yaml + description: Server overrides the environment server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources - fields which should be ignored during comparison + description: IgnoreDifferences controls resources fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains - resource filter and list of json paths which - should be ignored during comparison with live - state. + description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. properties: group: type: string @@ -1467,9 +1183,7 @@ spec: type: object type: array info: - description: Infos contains a list of useful information - (URLs, email addresses, and plain text) that relates - to the application + description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application items: properties: name: @@ -1482,43 +1196,30 @@ spec: type: object type: array project: - description: Project is a application project name. - Empty name means that application belongs to 'default' - project. + description: Project is a application project name. Empty name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept - in the apps revision history. This should only - be changed in exceptional circumstances. Setting - to zero will store no history. This will reduce - storage used. Increasing will increase the space - used to store the history, so we do not recommend - increasing it. Default is 10. + description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location - ksonnet application definition + description: Source is a reference to the location ksonnet application definition properties: chart: description: Chart is a Helm chart name type: string directory: - description: Directory holds path/directory - specific options + description: Directory holds path/directory specific options properties: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds - jsonnet specific options + description: ApplicationSourceJsonnet holds jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet - External Variables + description: ExtVars is a list of Jsonnet External Variables items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1532,17 +1233,14 @@ spec: type: object type: array libs: - description: Additional library search - dirs + description: Additional library search dirs items: type: string type: array tlas: - description: TLAS is a list of Jsonnet - Top-level Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet - variable + description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1563,77 +1261,59 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters - to the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file - parameter to a helm template + description: HelmFileParameter is a file parameter to a helm template properties: name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string path: - description: Path is the path value - for the helm parameter + description: Path is the path value for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to - the helm template + description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter - to a helm template + description: HelmParameter is a parameter to a helm template properties: forceString: - description: ForceString determines - whether to tell Helm to interpret - booleans and numbers as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: - description: Name is the name of the - helm parameter + description: Name is the name of the helm parameter type: string value: - description: Value is the value for - the helm parameter + description: Value is the value for the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted - it will use the application name + description: The Helm release name. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm - value files to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically - defined as a block + description: Values is Helm values, typically defined as a block type: string version: - description: Version is the Helm version - to use for templating with + description: Version is the Helm version to use for templating with type: string type: object ksonnet: - description: Ksonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet - component parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet - component parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -1648,47 +1328,38 @@ spec: type: array type: object kustomize: - description: Kustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional - kustomize commonAnnotations + description: CommonAnnotations adds additional kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional - kustomize commonLabels + description: CommonLabels adds additional kustomize commonLabels type: object images: - description: Images are kustomize image - overrides + description: Images are kustomize image overrides items: type: string type: array namePrefix: - description: NamePrefix is a prefix appended - to resources for kustomize apps + description: NamePrefix is a prefix appended to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended - to resources for kustomize apps + description: NameSuffix is a suffix appended to resources for kustomize apps type: string version: - description: Version contains optional Kustomize - version + description: Version contains optional Kustomize version type: string type: object path: - description: Path is a directory path within - the Git repository + description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config - management plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: items: @@ -1708,73 +1379,54 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of - the application manifests + description: RepoURL is the repository URL of the application manifests type: string targetRevision: - description: TargetRevision defines the commit, - tag, or branch in which to sync the application - to. If omitted, will sync to HEAD + description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD type: string required: - repoURL type: object syncPolicy: - description: SyncPolicy controls when a sync will - be performed + description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application - synced to the target revision + description: Automated will keep an application synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have - zero live resources (default: false)' + description: 'AllowEmpty allows apps have zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources - automatically as part of automated sync - (default: false)' + description: 'Prune will prune resources automatically as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing - if (default: false)' + description: 'SelfHeal enables auto-syncing if (default: false)' type: boolean type: object retry: - description: Retry controls failed sync retry - behavior + description: Retry controls failed sync retry behavior properties: backoff: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount - to back off. Default unit is seconds, - but could also be a duration (e.g. - "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply - the base duration after each failed - retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum - amount of time allowed for the backoff - strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number - of attempts when retrying a container + description: Limit is the maximum number of attempts when retrying a container format: int64 type: integer type: object syncOptions: - description: Options allow you to specify whole - app sync-options + description: Options allow you to specify whole app sync-options items: type: string type: array @@ -1792,24 +1444,17 @@ spec: type: object type: array syncPolicy: - description: ApplicationSetSyncPolicy configures how generated Applications - will relate to their ApplicationSet. + description: ApplicationSetSyncPolicy configures how generated Applications will relate to their ApplicationSet. properties: skipPrune: - description: SkipPrune will disable the default behavior which - will delete Applications that are no longer being generated - for the ApplicationSet which created them, or the ApplicationSet - itself is deleted. If SkipPrune is set to true, these Applications - will be orphaned but continue to exist. + description: SkipPrune will disable the default behavior which will delete Applications that are no longer being generated for the ApplicationSet which created them, or the ApplicationSet itself is deleted. If SkipPrune is set to true, these Applications will be orphaned but continue to exist. type: boolean type: object template: description: ApplicationSetTemplate represents argocd ApplicationSpec properties: metadata: - description: ApplicationSetTemplateMeta represents the Argo CD - application fields that may be used for Applications generated - from the ApplicationSet (based on metav1.ObjectMeta) + description: ApplicationSetTemplateMeta represents the Argo CD application fields that may be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta) properties: annotations: additionalProperties: @@ -1825,34 +1470,25 @@ spec: type: string type: object spec: - description: ApplicationSpec represents desired application state. - Contains link to repository with application definition and - additional parameters link definition revision. + description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision. properties: destination: - description: Destination overrides the kubernetes server and - namespace defined in the environment ksonnet app.yaml + description: Destination overrides the kubernetes server and namespace defined in the environment ksonnet app.yaml properties: name: - description: Name of the destination cluster which can - be used instead of server (url) field + description: Name of the destination cluster which can be used instead of server (url) field type: string namespace: - description: Namespace overrides the environment namespace - value in the ksonnet app.yaml + description: Namespace overrides the environment namespace value in the ksonnet app.yaml type: string server: - description: Server overrides the environment server value - in the ksonnet app.yaml + description: Server overrides the environment server value in the ksonnet app.yaml type: string type: object ignoreDifferences: - description: IgnoreDifferences controls resources fields which - should be ignored during comparison + description: IgnoreDifferences controls resources fields which should be ignored during comparison items: - description: ResourceIgnoreDifferences contains resource - filter and list of json paths which should be ignored - during comparison with live state. + description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state. properties: group: type: string @@ -1872,8 +1508,7 @@ spec: type: object type: array info: - description: Infos contains a list of useful information (URLs, - email addresses, and plain text) that relates to the application + description: Infos contains a list of useful information (URLs, email addresses, and plain text) that relates to the application items: properties: name: @@ -1886,21 +1521,14 @@ spec: type: object type: array project: - description: Project is a application project name. Empty - name means that application belongs to 'default' project. + description: Project is a application project name. Empty name means that application belongs to 'default' project. type: string revisionHistoryLimit: - description: This limits this number of items kept in the - apps revision history. This should only be changed in exceptional - circumstances. Setting to zero will store no history. This - will reduce storage used. Increasing will increase the space - used to store the history, so we do not recommend increasing - it. Default is 10. + description: This limits this number of items kept in the apps revision history. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10. format: int64 type: integer source: - description: Source is a reference to the location ksonnet - application definition + description: Source is a reference to the location ksonnet application definition properties: chart: description: Chart is a Helm chart name @@ -1911,12 +1539,10 @@ spec: exclude: type: string jsonnet: - description: ApplicationSourceJsonnet holds jsonnet - specific options + description: ApplicationSourceJsonnet holds jsonnet specific options properties: extVars: - description: ExtVars is a list of Jsonnet External - Variables + description: ExtVars is a list of Jsonnet External Variables items: description: JsonnetVar is a jsonnet variable properties: @@ -1937,8 +1563,7 @@ spec: type: string type: array tlas: - description: TLAS is a list of Jsonnet Top-level - Arguments + description: TLAS is a list of Jsonnet Top-level Arguments items: description: JsonnetVar is a jsonnet variable properties: @@ -1961,74 +1586,59 @@ spec: description: Helm holds helm specific options properties: fileParameters: - description: FileParameters are file parameters to - the helm template + description: FileParameters are file parameters to the helm template items: - description: HelmFileParameter is a file parameter - to a helm template + description: HelmFileParameter is a file parameter to a helm template properties: name: description: Name is the name of the helm parameter type: string path: - description: Path is the path value for the - helm parameter + description: Path is the path value for the helm parameter type: string type: object type: array parameters: - description: Parameters are parameters to the helm - template + description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template + description: HelmParameter is a parameter to a helm template properties: forceString: - description: ForceString determines whether - to tell Helm to interpret booleans and numbers - as strings + description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings type: boolean name: description: Name is the name of the helm parameter type: string value: - description: Value is the value for the helm - parameter + description: Value is the value for the helm parameter type: string type: object type: array releaseName: - description: The Helm release name. If omitted it - will use the application name + description: The Helm release name. If omitted it will use the application name type: string valueFiles: - description: ValuesFiles is a list of Helm value files - to use when generating a template + description: ValuesFiles is a list of Helm value files to use when generating a template items: type: string type: array values: - description: Values is Helm values, typically defined - as a block + description: Values is Helm values, typically defined as a block type: string version: - description: Version is the Helm version to use for - templating with + description: Version is the Helm version to use for templating with type: string type: object ksonnet: description: Ksonnet holds ksonnet specific options properties: environment: - description: Environment is a ksonnet application - environment name + description: Environment is a ksonnet application environment name type: string parameters: - description: Parameters are a list of ksonnet component - parameter override values + description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter + description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -2048,14 +1658,12 @@ spec: commonAnnotations: additionalProperties: type: string - description: CommonAnnotations adds additional kustomize - commonAnnotations + description: CommonAnnotations adds additional kustomize commonAnnotations type: object commonLabels: additionalProperties: type: string - description: CommonLabels adds additional kustomize - commonLabels + description: CommonLabels adds additional kustomize commonLabels type: object images: description: Images are kustomize image overrides @@ -2063,12 +1671,10 @@ spec: type: string type: array namePrefix: - description: NamePrefix is a prefix appended to resources - for kustomize apps + description: NamePrefix is a prefix appended to resources for kustomize apps type: string nameSuffix: - description: NameSuffix is a suffix appended to resources - for kustomize apps + description: NameSuffix is a suffix appended to resources for kustomize apps type: string version: description: Version contains optional Kustomize version @@ -2078,8 +1684,7 @@ spec: description: Path is a directory path within the Git repository type: string plugin: - description: ConfigManagementPlugin holds config management - plugin specific options + description: ConfigManagementPlugin holds config management plugin specific options properties: env: items: @@ -2099,13 +1704,10 @@ spec: type: string type: object repoURL: - description: RepoURL is the repository URL of the application - manifests + description: RepoURL is the repository URL of the application manifests type: string targetRevision: - description: TargetRevision defines the commit, tag, or - branch in which to sync the application to. If omitted, - will sync to HEAD + description: TargetRevision defines the commit, tag, or branch in which to sync the application to. If omitted, will sync to HEAD type: string required: - repoURL @@ -2114,20 +1716,16 @@ spec: description: SyncPolicy controls when a sync will be performed properties: automated: - description: Automated will keep an application synced - to the target revision + description: Automated will keep an application synced to the target revision properties: allowEmpty: - description: 'AllowEmpty allows apps have zero live - resources (default: false)' + description: 'AllowEmpty allows apps have zero live resources (default: false)' type: boolean prune: - description: 'Prune will prune resources automatically - as part of automated sync (default: false)' + description: 'Prune will prune resources automatically as part of automated sync (default: false)' type: boolean selfHeal: - description: 'SelfHeal enables auto-syncing if (default: - false)' + description: 'SelfHeal enables auto-syncing if (default: false)' type: boolean type: object retry: @@ -2137,23 +1735,18 @@ spec: description: Backoff is a backoff strategy properties: duration: - description: Duration is the amount to back off. - Default unit is seconds, but could also be a - duration (e.g. "2m", "1h") + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") type: string factor: - description: Factor is a factor to multiply the - base duration after each failed retry + description: Factor is a factor to multiply the base duration after each failed retry format: int64 type: integer maxDuration: - description: MaxDuration is the maximum amount - of time allowed for the backoff strategy + description: MaxDuration is the maximum amount of time allowed for the backoff strategy type: string type: object limit: - description: Limit is the maximum number of attempts - when retrying a container + description: Limit is the maximum number of attempts when retrying a container format: int64 type: integer type: object From 11b4d446aecc50a93c22809ab9c6991490065c06 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Fri, 30 Apr 2021 16:34:59 -0700 Subject: [PATCH 12/21] =?UTF-8?q?=F0=9F=8E=A8=20Tweaks=20from=20code=20rev?= =?UTF-8?q?iew.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1alpha1/applicationset_types.go | 10 ++++++---- docs/Generators.md | 20 +++++++++++--------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/api/v1alpha1/applicationset_types.go b/api/v1alpha1/applicationset_types.go index 1ff9f4d6..eebd4b34 100644 --- a/api/v1alpha1/applicationset_types.go +++ b/api/v1alpha1/applicationset_types.go @@ -131,17 +131,19 @@ type RepoHostGenerator struct { Template ApplicationSetTemplate `json:"template,omitempty"` } -// RepoHostGeneratorGithub defines a connection info specific to Github. +// RepoHostGeneratorGithub defines a connection info specific to GitHub. type RepoHostGeneratorGithub struct { - // Github org to scan. Required. + // GitHub org to scan. Required. Organization string `json:"organization"` - // The Github API URL to talk to. If blank, use https://api.github.com/. + // The GitHub API URL to talk to. If blank, use https://api.github.com/. API string `json:"api,omitempty"` // Authentication token reference. TokenRef *SecretRef `json:"tokenRef,omitempty"` } -// RepoHostGeneratorFilter is a single repoisitory filter. +// RepoHostGeneratorFilter is a single repository filter. +// If multiple filter types are set on a single struct, they will be AND'd together. All filters must +// pass for a repo to be included. type RepoHostGeneratorFilter struct { // A regex for repo names. RepositoryMatch *string `json:"repositoryMatch,omitempty"` diff --git a/docs/Generators.md b/docs/Generators.md index 588bc263..961a5ece 100644 --- a/docs/Generators.md +++ b/docs/Generators.md @@ -375,9 +375,11 @@ As with other generators, clusters *must* already be defined within Argo CD, in The RepoHost generator uses the API of an SCMaaS provider to discover repositories. This fits well with many repos following the same GitOps layout patterns such as microservices. -### Github +Support is currently limited to GitHub, PRs are welcome to add more SCM providers. -The Github mode uses the Github API to scan and organization in either github.com or Github Enterprise. +### GitHub + +The GitHub mode uses the GitHub API to scan and organization in either github.com or GitHub Enterprise. ```yaml apiVersion: argoproj.io/v1alpha1 @@ -388,9 +390,9 @@ spec: generators: - repoHost: github: - # The Github organization to scan. + # The GitHub organization to scan. organization: myorg - # For Github Enterprise: + # For GitHub Enterprise: api: https://git.example.com/ # Reference to a Secret containing an access token. (optional) tokenRef: @@ -400,15 +402,15 @@ spec: # ... ``` -* `organization`: Required name of the Github organization to scan. If you have multiple orgs, use multiple generators. -* `api`: If using Github Enterprise, the URL to access it. -* `tokenRef`: A Secret name and key containing the Github access token to use for requests. If not specified, will make anonymous requests which have a lower rate limit. +* `organization`: Required name of the GitHub organization to scan. If you have multiple orgs, use multiple generators. +* `api`: If using GitHub Enterprise, the URL to access it. +* `tokenRef`: A Secret name and key containing the GitHub access token to use for requests. If not specified, will make anonymous requests which have a lower rate limit. -For label filtering, the repository topics are used. +For label filtering, the repository topics are used. Currently only the default branch for the repository will be scanned. ### Filters -Filters allow selecting which repositories to generate for. Filters are additive, specifying none will template every repository and each filter added will pare that down. +Filters allow selecting which repositories to generate for. Filters are additive, specifying none will template every repository and each filter added will pare that down. If multiple filters are present, either in a single entry or multiple, the filter behavior is an AND of all. If at least one is NOT true, the repository will not be included. ```yaml apiVersion: argoproj.io/v1alpha1 From 370aff80bc91b47f4f53dee3c806df080d0fb810 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Sun, 2 May 2021 19:05:32 -0700 Subject: [PATCH 13/21] =?UTF-8?q?=E2=9C=A8=20Add=20three=20new=20features,?= =?UTF-8?q?=20branchMatch=20filters,=20allBranches=20scanning=20mode=20for?= =?UTF-8?q?=20GitHub,=20and=20configurable=20clone=20protocol.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first two combined allow generating deployment projects for new branches automatically. The last allows using HTTPS clone URLs if needed for token authentication. --- api/v1alpha1/applicationset_types.go | 7 ++ api/v1alpha1/zz_generated.deepcopy.go | 5 ++ docs/Generators.md | 23 +++++++ .../crds/argoproj.io_applicationsets.yaml | 22 +++++-- manifests/install-with-argo-cd.yaml | 15 ++++- manifests/install.yaml | 15 ++++- pkg/generators/repo_host.go | 4 +- pkg/services/repo_host/github.go | 66 ++++++++++++++++--- pkg/services/repo_host/github_test.go | 59 +++++++++++++---- pkg/services/repo_host/mock.go | 2 +- pkg/services/repo_host/types.go | 3 +- pkg/services/repo_host/utils.go | 17 ++++- pkg/services/repo_host/utils_test.go | 49 ++++++++++++-- 13 files changed, 243 insertions(+), 44 deletions(-) diff --git a/api/v1alpha1/applicationset_types.go b/api/v1alpha1/applicationset_types.go index eebd4b34..7c03dec9 100644 --- a/api/v1alpha1/applicationset_types.go +++ b/api/v1alpha1/applicationset_types.go @@ -126,6 +126,9 @@ type RepoHostGenerator struct { // TODO other providers. // Filters for which repos should be considered. Filters []RepoHostGeneratorFilter `json:"filters,omitempty"` + // Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers + // necessarily support all protocols. + CloneProtocol string `json:"cloneProtocol,omitempty"` // Standard parameters. RequeueAfterSeconds *int64 `json:"requeueAfterSeconds,omitempty"` Template ApplicationSetTemplate `json:"template,omitempty"` @@ -139,6 +142,8 @@ type RepoHostGeneratorGithub struct { API string `json:"api,omitempty"` // Authentication token reference. TokenRef *SecretRef `json:"tokenRef,omitempty"` + // Scan all branches instead of just the default branch. + AllBranches bool `json:"allBranches,omitempty"` } // RepoHostGeneratorFilter is a single repository filter. @@ -151,6 +156,8 @@ type RepoHostGeneratorFilter struct { PathExists *string `json:"pathExists,omitempty"` // A regex which must match at least one label. LabelMatch *string `json:"labelMatch,omitempty"` + // A regex which must match the branch name. + BranchMatch *string `json:"branchMatch,omitempty"` } // ApplicationSetStatus defines the observed state of ApplicationSet diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index d61561d0..54da4e78 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -403,6 +403,11 @@ func (in *RepoHostGeneratorFilter) DeepCopyInto(out *RepoHostGeneratorFilter) { *out = new(string) **out = **in } + if in.BranchMatch != nil { + in, out := &in.BranchMatch, &out.BranchMatch + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepoHostGeneratorFilter. diff --git a/docs/Generators.md b/docs/Generators.md index 961a5ece..3a00129d 100644 --- a/docs/Generators.md +++ b/docs/Generators.md @@ -377,6 +377,23 @@ The RepoHost generator uses the API of an SCMaaS provider to discover repositori Support is currently limited to GitHub, PRs are welcome to add more SCM providers. +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: myapps +spec: + generators: + - repoHost: + # Which protocol to clone using. + cloneProtocol: ssh + # See below for provider specific options. + github: + # ... +``` + +* `cloneProtocol`: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols, see provider documentation below for available options. + ### GitHub The GitHub mode uses the GitHub API to scan and organization in either github.com or GitHub Enterprise. @@ -394,6 +411,8 @@ spec: organization: myorg # For GitHub Enterprise: api: https://git.example.com/ + # If true, scan every branch of every repository. If false, scan only the default branch. Defaults to false. + allBranches: true # Reference to a Secret containing an access token. (optional) tokenRef: name: github-token @@ -404,10 +423,13 @@ spec: * `organization`: Required name of the GitHub organization to scan. If you have multiple orgs, use multiple generators. * `api`: If using GitHub Enterprise, the URL to access it. +* `allBranches`: By default (false) the template will only be evaluated for the default branch of each repo. If this is true, every branch of every repository will be passed to the filters. If using this flag, you likely want to use a `branchMatch` filter. * `tokenRef`: A Secret name and key containing the GitHub access token to use for requests. If not specified, will make anonymous requests which have a lower rate limit. For label filtering, the repository topics are used. Currently only the default branch for the repository will be scanned. +Available clone protocols are `ssh` and `https`. + ### Filters Filters allow selecting which repositories to generate for. Filters are additive, specifying none will template every repository and each filter added will pare that down. If multiple filters are present, either in a single entry or multiple, the filter behavior is an AND of all. If at least one is NOT true, the repository will not be included. @@ -433,6 +455,7 @@ spec: * `repositoryMatch`: A regexp matched against the repository name. * `pathExists`: A path within the repository that must exist. Can be a file or directory, but do not include the trailing `/` for directories. * `labelMatch`: A regexp matched against repository labels. If any label matches, the repository is included. +* `branchMatch`: A regexp matched against branch names. ### Template diff --git a/manifests/crds/argoproj.io_applicationsets.yaml b/manifests/crds/argoproj.io_applicationsets.yaml index 70592ffa..15cf0565 100644 --- a/manifests/crds/argoproj.io_applicationsets.yaml +++ b/manifests/crds/argoproj.io_applicationsets.yaml @@ -1348,13 +1348,23 @@ spec: description: RepoHostGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. properties: + cloneProtocol: + description: Which protocol to use for the SCM URL. Default + is provider-specific but ssh if possible. Not all providers + necessarily support all protocols. + type: string filters: description: TODO other providers. Filters for which repos should be considered. items: - description: RepoHostGeneratorFilter is a single repoisitory - filter. + description: RepoHostGeneratorFilter is a single repository + filter. If multiple filter types are set on a single + struct, they will be AND'd together. All filters must + pass for a repo to be included. properties: + branchMatch: + description: A regex which must match the branch name. + type: string labelMatch: description: A regex which must match at least one label. @@ -1370,12 +1380,16 @@ spec: github: description: Which provider to use and config for it. properties: + allBranches: + description: Scan all branches instead of just the default + branch. + type: boolean api: - description: The Github API URL to talk to. If blank, + description: The GitHub API URL to talk to. If blank, use https://api.github.com/. type: string organization: - description: Github org to scan. Required. + description: GitHub org to scan. Required. type: string tokenRef: description: Authentication token reference. diff --git a/manifests/install-with-argo-cd.yaml b/manifests/install-with-argo-cd.yaml index 4be5af45..00f872ed 100644 --- a/manifests/install-with-argo-cd.yaml +++ b/manifests/install-with-argo-cd.yaml @@ -2843,11 +2843,17 @@ spec: repoHost: description: RepoHostGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. properties: + cloneProtocol: + description: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols. + type: string filters: description: TODO other providers. Filters for which repos should be considered. items: - description: RepoHostGeneratorFilter is a single repoisitory filter. + description: RepoHostGeneratorFilter is a single repository filter. If multiple filter types are set on a single struct, they will be AND'd together. All filters must pass for a repo to be included. properties: + branchMatch: + description: A regex which must match the branch name. + type: string labelMatch: description: A regex which must match at least one label. type: string @@ -2862,11 +2868,14 @@ spec: github: description: Which provider to use and config for it. properties: + allBranches: + description: Scan all branches instead of just the default branch. + type: boolean api: - description: The Github API URL to talk to. If blank, use https://api.github.com/. + description: The GitHub API URL to talk to. If blank, use https://api.github.com/. type: string organization: - description: Github org to scan. Required. + description: GitHub org to scan. Required. type: string tokenRef: description: Authentication token reference. diff --git a/manifests/install.yaml b/manifests/install.yaml index 2d11ca87..c17b5e2d 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -1082,11 +1082,17 @@ spec: repoHost: description: RepoHostGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. properties: + cloneProtocol: + description: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols. + type: string filters: description: TODO other providers. Filters for which repos should be considered. items: - description: RepoHostGeneratorFilter is a single repoisitory filter. + description: RepoHostGeneratorFilter is a single repository filter. If multiple filter types are set on a single struct, they will be AND'd together. All filters must pass for a repo to be included. properties: + branchMatch: + description: A regex which must match the branch name. + type: string labelMatch: description: A regex which must match at least one label. type: string @@ -1101,11 +1107,14 @@ spec: github: description: Which provider to use and config for it. properties: + allBranches: + description: Scan all branches instead of just the default branch. + type: boolean api: - description: The Github API URL to talk to. If blank, use https://api.github.com/. + description: The GitHub API URL to talk to. If blank, use https://api.github.com/. type: string organization: - description: Github org to scan. Required. + description: GitHub org to scan. Required. type: string tokenRef: description: Authentication token reference. diff --git a/pkg/generators/repo_host.go b/pkg/generators/repo_host.go index 1b4ea6c8..7dca33a8 100644 --- a/pkg/generators/repo_host.go +++ b/pkg/generators/repo_host.go @@ -64,7 +64,7 @@ func (g *RepoHostGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A if err != nil { return nil, fmt.Errorf("error fetching Github token: %v", err) } - host, err = repo_host.NewGithubRepoHost(ctx, hostConfig.Github.Organization, token, hostConfig.Github.API) + host, err = repo_host.NewGithubRepoHost(ctx, hostConfig.Github.Organization, token, hostConfig.Github.API, hostConfig.Github.AllBranches) if err != nil { return nil, fmt.Errorf("error initializing Github service: %v", err) } @@ -73,7 +73,7 @@ func (g *RepoHostGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.A } // Find all the available repos. - repos, err := repo_host.ListRepos(ctx, host, hostConfig.Filters) + repos, err := repo_host.ListRepos(ctx, host, hostConfig.Filters, hostConfig.CloneProtocol) if err != nil { return nil, fmt.Errorf("error listing repos: %v", err) } diff --git a/pkg/services/repo_host/github.go b/pkg/services/repo_host/github.go index 92e3e0b5..cc05f4bb 100644 --- a/pkg/services/repo_host/github.go +++ b/pkg/services/repo_host/github.go @@ -2,6 +2,7 @@ package repo_host import ( "context" + "fmt" "github.com/google/go-github/v35/github" "golang.org/x/oauth2" @@ -10,11 +11,12 @@ import ( type GithubRepoHost struct { client *github.Client organization string + allBranches bool } var _ RepoHostService = &GithubRepoHost{} -func NewGithubRepoHost(ctx context.Context, organization string, token string, url string) (*GithubRepoHost, error) { +func NewGithubRepoHost(ctx context.Context, organization string, token string, url string, allBranches bool) (*GithubRepoHost, error) { var ts oauth2.TokenSource if token != "" { ts = oauth2.StaticTokenSource( @@ -32,10 +34,10 @@ func NewGithubRepoHost(ctx context.Context, organization string, token string, u return nil, err } } - return &GithubRepoHost{client: client, organization: organization}, nil + return &GithubRepoHost{client: client, organization: organization, allBranches: allBranches}, nil } -func (g *GithubRepoHost) ListRepos(ctx context.Context) ([]*HostedRepo, error) { +func (g *GithubRepoHost) ListRepos(ctx context.Context, cloneProtocol string) ([]*HostedRepo, error) { opt := &github.RepositoryListByOrgOptions{ ListOptions: github.ListOptions{PerPage: 100}, } @@ -46,13 +48,30 @@ func (g *GithubRepoHost) ListRepos(ctx context.Context) ([]*HostedRepo, error) { return nil, err } for _, githubRepo := range githubRepos { - repos = append(repos, &HostedRepo{ - Organization: githubRepo.Owner.GetName(), - Repository: githubRepo.GetName(), - URL: githubRepo.GetSSHURL(), // TODO Config flag for CloneURL (i.e. https://)? - Branch: githubRepo.GetDefaultBranch(), - Labels: githubRepo.Topics, - }) + var url string + switch cloneProtocol { + case "", "ssh": + url = githubRepo.GetSSHURL() + case "https": + url = githubRepo.GetCloneURL() + default: + return nil, fmt.Errorf("unknown clone protocol for GitHub %v", cloneProtocol) + } + + branches, err := g.listBranches(ctx, githubRepo) + if err != nil { + return nil, fmt.Errorf("error listing branches for %s/%s: %q", githubRepo.Owner.GetName(), githubRepo.GetName(), err) + } + + for _, branch := range branches { + repos = append(repos, &HostedRepo{ + Organization: githubRepo.Owner.GetName(), + Repository: githubRepo.GetName(), + URL: url, + Branch: branch, + Labels: githubRepo.Topics, + }) + } } if resp.NextPage == 0 { break @@ -75,3 +94,30 @@ func (g *GithubRepoHost) RepoHasPath(ctx context.Context, repo *HostedRepo, path } return true, nil } + +func (g *GithubRepoHost) listBranches(ctx context.Context, repo *github.Repository) ([]string, error) { + // If we don't specifically want to query for all branches, just use the default branch and call it a day. + if !g.allBranches { + return []string{repo.GetDefaultBranch()}, nil + } + // Otherwise, scrape the ListBranches API. + opt := &github.BranchListOptions{ + ListOptions: github.ListOptions{PerPage: 100}, + } + branches := []string{} + for { + githubBranches, resp, err := g.client.Repositories.ListBranches(ctx, repo.Owner.GetName(), repo.GetName(), opt) + if err != nil { + return nil, err + } + for _, githubBranch := range githubBranches { + branches = append(branches, githubBranch.GetName()) + } + + if resp.NextPage == 0 { + break + } + opt.Page = resp.NextPage + } + return branches, nil +} diff --git a/pkg/services/repo_host/github_test.go b/pkg/services/repo_host/github_test.go index 6b49babe..42bd03fa 100644 --- a/pkg/services/repo_host/github_test.go +++ b/pkg/services/repo_host/github_test.go @@ -8,23 +8,56 @@ import ( ) func TestGithubListRepos(t *testing.T) { - host, _ := NewGithubRepoHost(context.Background(), "argoproj-labs", "", "") - repos, err := host.ListRepos(context.Background()) - assert.Nil(t, err) - // Just check that this one project shows up. Not a great test but better thing nothing? - var repo *HostedRepo - for _, r := range repos { - if r.Repository == "applicationset" { - repo = r - break - } + cases := []struct { + name, proto, url string + hasError bool + }{ + { + name: "blank protocol", + url: "git@github.com:argoproj-labs/applicationset.git", + }, + { + name: "ssh protocol", + proto: "ssh", + url: "git@github.com:argoproj-labs/applicationset.git", + }, + { + name: "https protocol", + proto: "https", + url: "https://github.com/argoproj-labs/applicationset.git", + }, + { + name: "other protocol", + proto: "other", + hasError: true, + }, + } + + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + host, _ := NewGithubRepoHost(context.Background(), "argoproj-labs", "", "", false) + repos, err := host.ListRepos(context.Background(), c.proto) + if c.hasError { + assert.NotNil(t, err) + } else { + assert.Nil(t, err) + // Just check that this one project shows up. Not a great test but better thing nothing? + var repo *HostedRepo + for _, r := range repos { + if r.Repository == "applicationset" { + repo = r + break + } + } + assert.NotNil(t, repo) + assert.Equal(t, c.url, repo.URL) + } + }) } - assert.NotNil(t, repo) - assert.Equal(t, "git@github.com:argoproj-labs/applicationset.git", repo.URL) } func TestGithubHasPath(t *testing.T) { - host, _ := NewGithubRepoHost(context.Background(), "argoproj-labs", "", "") + host, _ := NewGithubRepoHost(context.Background(), "argoproj-labs", "", "", false) repo := &HostedRepo{ Organization: "argoproj-labs", Repository: "applicationset", diff --git a/pkg/services/repo_host/mock.go b/pkg/services/repo_host/mock.go index dc2a6735..2729ca6a 100644 --- a/pkg/services/repo_host/mock.go +++ b/pkg/services/repo_host/mock.go @@ -8,7 +8,7 @@ type MockRepoHost struct { var _ RepoHostService = &MockRepoHost{} -func (m *MockRepoHost) ListRepos(_ context.Context) ([]*HostedRepo, error) { +func (m *MockRepoHost) ListRepos(_ context.Context, _ string) ([]*HostedRepo, error) { return m.Repos, nil } diff --git a/pkg/services/repo_host/types.go b/pkg/services/repo_host/types.go index fa9cc6ce..a1c44c05 100644 --- a/pkg/services/repo_host/types.go +++ b/pkg/services/repo_host/types.go @@ -15,7 +15,7 @@ type HostedRepo struct { } type RepoHostService interface { - ListRepos(context.Context) ([]*HostedRepo, error) + ListRepos(context.Context, string) ([]*HostedRepo, error) RepoHasPath(context.Context, *HostedRepo, string) (bool, error) } @@ -24,4 +24,5 @@ type Filter struct { RepositoryMatch *regexp.Regexp PathExists *string LabelMatch *regexp.Regexp + BranchMatch *regexp.Regexp } diff --git a/pkg/services/repo_host/utils.go b/pkg/services/repo_host/utils.go index 64c908ee..393966a4 100644 --- a/pkg/services/repo_host/utils.go +++ b/pkg/services/repo_host/utils.go @@ -28,18 +28,24 @@ func compileFilters(filters []argoprojiov1alpha1.RepoHostGeneratorFilter) ([]*Fi if filter.PathExists != nil { outFilter.PathExists = filter.PathExists } + if filter.BranchMatch != nil { + outFilter.BranchMatch, err = regexp.Compile(*filter.BranchMatch) + if err != nil { + return nil, fmt.Errorf("error compiling BranchMatch regexp %q: %v", *filter.LabelMatch, err) + } + } outFilters = append(outFilters, outFilter) } return outFilters, nil } -func ListRepos(ctx context.Context, host RepoHostService, filters []argoprojiov1alpha1.RepoHostGeneratorFilter) ([]*HostedRepo, error) { +func ListRepos(ctx context.Context, host RepoHostService, filters []argoprojiov1alpha1.RepoHostGeneratorFilter, cloneProtocol string) ([]*HostedRepo, error) { compiledFilters, err := compileFilters(filters) if err != nil { return nil, err } - repos, err := host.ListRepos(ctx) + repos, err := host.ListRepos(ctx, cloneProtocol) if err != nil { return nil, err } @@ -54,6 +60,13 @@ func ListRepos(ctx context.Context, host RepoHostService, filters []argoprojiov1 } } + if filter.BranchMatch != nil { + if !filter.BranchMatch.MatchString(repo.Branch) { + matches = false + break + } + } + if filter.LabelMatch != nil { found := false for _, label := range repo.Labels { diff --git a/pkg/services/repo_host/utils_test.go b/pkg/services/repo_host/utils_test.go index 0d9acb15..a2e44460 100644 --- a/pkg/services/repo_host/utils_test.go +++ b/pkg/services/repo_host/utils_test.go @@ -34,7 +34,7 @@ func TestFilterRepoMatch(t *testing.T) { RepositoryMatch: strp("n|hr"), }, } - repos, err := ListRepos(context.Background(), host, filters) + repos, err := ListRepos(context.Background(), host, filters, "") assert.Nil(t, err) assert.Len(t, repos, 2) assert.Equal(t, "one", repos[0].Repository) @@ -63,7 +63,7 @@ func TestFilterLabelMatch(t *testing.T) { LabelMatch: strp("^prod-.*$"), }, } - repos, err := ListRepos(context.Background(), host, filters) + repos, err := ListRepos(context.Background(), host, filters, "") assert.Nil(t, err) assert.Len(t, repos, 2) assert.Equal(t, "one", repos[0].Repository) @@ -89,7 +89,7 @@ func TestFilterPatchExists(t *testing.T) { PathExists: strp("two"), }, } - repos, err := ListRepos(context.Background(), host, filters) + repos, err := ListRepos(context.Background(), host, filters, "") assert.Nil(t, err) assert.Len(t, repos, 1) assert.Equal(t, "two", repos[0].Repository) @@ -108,7 +108,7 @@ func TestFilterRepoMatchBadRegexp(t *testing.T) { RepositoryMatch: strp("("), }, } - _, err := ListRepos(context.Background(), host, filters) + _, err := ListRepos(context.Background(), host, filters, "") assert.NotNil(t, err) } @@ -125,6 +125,45 @@ func TestFilterLabelMatchBadRegexp(t *testing.T) { LabelMatch: strp("("), }, } - _, err := ListRepos(context.Background(), host, filters) + _, err := ListRepos(context.Background(), host, filters, "") assert.NotNil(t, err) } + +func TestFilterBranchMatch(t *testing.T) { + host := &MockRepoHost{ + Repos: []*HostedRepo{ + { + Repository: "one", + Branch: "one", + }, + { + Repository: "one", + Branch: "two", + }, + { + Repository: "two", + Branch: "one", + }, + { + Repository: "three", + Branch: "one", + }, + { + Repository: "three", + Branch: "two", + }, + }, + } + filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + { + BranchMatch: strp("w"), + }, + } + repos, err := ListRepos(context.Background(), host, filters, "") + assert.Nil(t, err) + assert.Len(t, repos, 2) + assert.Equal(t, "one", repos[0].Repository) + assert.Equal(t, "two", repos[0].Branch) + assert.Equal(t, "three", repos[1].Repository) + assert.Equal(t, "two", repos[1].Branch) +} From 86355302c2f56b710a99fa23428f65a60707e2f1 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Sun, 2 May 2021 20:25:06 -0700 Subject: [PATCH 14/21] =?UTF-8?q?=F0=9F=8E=A8=20Add=20a=20test=20for=20add?= =?UTF-8?q?Branches=20mode.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/services/repo_host/github.go | 6 ++--- pkg/services/repo_host/github_test.go | 36 ++++++++++++++++++--------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/pkg/services/repo_host/github.go b/pkg/services/repo_host/github.go index cc05f4bb..e0d0d8a5 100644 --- a/pkg/services/repo_host/github.go +++ b/pkg/services/repo_host/github.go @@ -60,12 +60,12 @@ func (g *GithubRepoHost) ListRepos(ctx context.Context, cloneProtocol string) ([ branches, err := g.listBranches(ctx, githubRepo) if err != nil { - return nil, fmt.Errorf("error listing branches for %s/%s: %q", githubRepo.Owner.GetName(), githubRepo.GetName(), err) + return nil, fmt.Errorf("error listing branches for %s/%s: %q", githubRepo.Owner.GetLogin(), githubRepo.GetName(), err) } for _, branch := range branches { repos = append(repos, &HostedRepo{ - Organization: githubRepo.Owner.GetName(), + Organization: githubRepo.Owner.GetLogin(), Repository: githubRepo.GetName(), URL: url, Branch: branch, @@ -106,7 +106,7 @@ func (g *GithubRepoHost) listBranches(ctx context.Context, repo *github.Reposito } branches := []string{} for { - githubBranches, resp, err := g.client.Repositories.ListBranches(ctx, repo.Owner.GetName(), repo.GetName(), opt) + githubBranches, resp, err := g.client.Repositories.ListBranches(ctx, repo.Owner.GetLogin(), repo.GetName(), opt) if err != nil { return nil, err } diff --git a/pkg/services/repo_host/github_test.go b/pkg/services/repo_host/github_test.go index 42bd03fa..5fc6ef9f 100644 --- a/pkg/services/repo_host/github_test.go +++ b/pkg/services/repo_host/github_test.go @@ -9,12 +9,14 @@ import ( func TestGithubListRepos(t *testing.T) { cases := []struct { - name, proto, url string - hasError bool + name, proto, url string + hasError, allBranches bool + branches []string }{ { - name: "blank protocol", - url: "git@github.com:argoproj-labs/applicationset.git", + name: "blank protocol", + url: "git@github.com:argoproj-labs/applicationset.git", + branches: []string{"master"}, }, { name: "ssh protocol", @@ -31,26 +33,36 @@ func TestGithubListRepos(t *testing.T) { proto: "other", hasError: true, }, + { + name: "all branches", + allBranches: true, + url: "git@github.com:argoproj-labs/applicationset.git", + branches: []string{"master", "release-0.1.0"}, + }, } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - host, _ := NewGithubRepoHost(context.Background(), "argoproj-labs", "", "", false) - repos, err := host.ListRepos(context.Background(), c.proto) + host, _ := NewGithubRepoHost(context.Background(), "argoproj-labs", "", "", c.allBranches) + rawRepos, err := host.ListRepos(context.Background(), c.proto) if c.hasError { assert.NotNil(t, err) } else { assert.Nil(t, err) // Just check that this one project shows up. Not a great test but better thing nothing? - var repo *HostedRepo - for _, r := range repos { + repos := []*HostedRepo{} + branches := []string{} + for _, r := range rawRepos { if r.Repository == "applicationset" { - repo = r - break + repos = append(repos, r) + branches = append(branches, r.Branch) } } - assert.NotNil(t, repo) - assert.Equal(t, c.url, repo.URL) + assert.NotEmpty(t, repos) + assert.Equal(t, c.url, repos[0].URL) + for _, b := range c.branches { + assert.Contains(t, branches, b) + } } }) } From 3ca390362505811b7dd05cf2cb1c00e9000ee126 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Mon, 3 May 2021 11:05:30 -0700 Subject: [PATCH 15/21] =?UTF-8?q?=F0=9F=93=9D=20Remove=20outdated=20line?= =?UTF-8?q?=20re:=20which=20branches=20are=20scanned.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/Generators.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Generators.md b/docs/Generators.md index 3a00129d..6760e378 100644 --- a/docs/Generators.md +++ b/docs/Generators.md @@ -426,7 +426,7 @@ spec: * `allBranches`: By default (false) the template will only be evaluated for the default branch of each repo. If this is true, every branch of every repository will be passed to the filters. If using this flag, you likely want to use a `branchMatch` filter. * `tokenRef`: A Secret name and key containing the GitHub access token to use for requests. If not specified, will make anonymous requests which have a lower rate limit. -For label filtering, the repository topics are used. Currently only the default branch for the repository will be scanned. +For label filtering, the repository topics are used. Available clone protocols are `ssh` and `https`. From a61120e347d0be7b4e681949f82dafc9d2c6f9db Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Mon, 3 May 2021 11:10:44 -0700 Subject: [PATCH 16/21] =?UTF-8?q?=F0=9F=8E=A8=20Name=20->=20SecretName=20f?= =?UTF-8?q?or=20clarity=20since=20it=20doesn't=20otherwise=20say=20it's=20?= =?UTF-8?q?a=20reference=20to=20a=20secret.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1alpha1/applicationset_types.go | 4 ++-- docs/Generators.md | 4 ++-- pkg/generators/repo_host.go | 6 +++--- pkg/generators/repo_host_test.go | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/api/v1alpha1/applicationset_types.go b/api/v1alpha1/applicationset_types.go index 7c03dec9..0150e5d9 100644 --- a/api/v1alpha1/applicationset_types.go +++ b/api/v1alpha1/applicationset_types.go @@ -23,8 +23,8 @@ import ( // Utility struct for a reference to a secret key. type SecretRef struct { - Name string `json:"name"` - Key string `json:"key"` + SecretName string `json:"secretName"` + Key string `json:"key"` } // ApplicationSet is a set of Application resources diff --git a/docs/Generators.md b/docs/Generators.md index 6760e378..07de7087 100644 --- a/docs/Generators.md +++ b/docs/Generators.md @@ -415,7 +415,7 @@ spec: allBranches: true # Reference to a Secret containing an access token. (optional) tokenRef: - name: github-token + secretName: github-token key: token template: # ... @@ -424,7 +424,7 @@ spec: * `organization`: Required name of the GitHub organization to scan. If you have multiple orgs, use multiple generators. * `api`: If using GitHub Enterprise, the URL to access it. * `allBranches`: By default (false) the template will only be evaluated for the default branch of each repo. If this is true, every branch of every repository will be passed to the filters. If using this flag, you likely want to use a `branchMatch` filter. -* `tokenRef`: A Secret name and key containing the GitHub access token to use for requests. If not specified, will make anonymous requests which have a lower rate limit. +* `tokenRef`: A Secret name and key containing the GitHub access token to use for requests. If not specified, will make anonymous requests which have a lower rate limit and can only see public repositories. For label filtering, the repository topics are used. diff --git a/pkg/generators/repo_host.go b/pkg/generators/repo_host.go index 7dca33a8..c5440a9e 100644 --- a/pkg/generators/repo_host.go +++ b/pkg/generators/repo_host.go @@ -99,16 +99,16 @@ func (g *RepoHostGenerator) getSecretRef(ctx context.Context, ref *argoprojiov1a err := g.client.Get( ctx, client.ObjectKey{ - Name: ref.Name, + Name: ref.SecretName, Namespace: namespace, }, secret) if err != nil { - return "", fmt.Errorf("error fetching secret %s/%s: %v", namespace, ref.Name, err) + return "", fmt.Errorf("error fetching secret %s/%s: %v", namespace, ref.SecretName, err) } tokenBytes, ok := secret.Data[ref.Key] if !ok { - return "", fmt.Errorf("key %q in secret %s/%s not found", ref.Key, namespace, ref.Name) + return "", fmt.Errorf("key %q in secret %s/%s not found", ref.Key, namespace, ref.SecretName) } return string(tokenBytes), nil } diff --git a/pkg/generators/repo_host_test.go b/pkg/generators/repo_host_test.go index 35833940..0340a9d8 100644 --- a/pkg/generators/repo_host_test.go +++ b/pkg/generators/repo_host_test.go @@ -30,7 +30,7 @@ func TestRepoHostGetSecretRef(t *testing.T) { }{ { name: "valid ref", - ref: &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "my-token"}, + ref: &argoprojiov1alpha1.SecretRef{SecretName: "test-secret", Key: "my-token"}, namespace: "test", token: "secret", hasError: false, @@ -44,21 +44,21 @@ func TestRepoHostGetSecretRef(t *testing.T) { }, { name: "wrong name", - ref: &argoprojiov1alpha1.SecretRef{Name: "other", Key: "my-token"}, + ref: &argoprojiov1alpha1.SecretRef{SecretName: "other", Key: "my-token"}, namespace: "test", token: "", hasError: true, }, { name: "wrong key", - ref: &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "other-token"}, + ref: &argoprojiov1alpha1.SecretRef{SecretName: "test-secret", Key: "other-token"}, namespace: "test", token: "", hasError: true, }, { name: "wrong namespace", - ref: &argoprojiov1alpha1.SecretRef{Name: "test-secret", Key: "my-token"}, + ref: &argoprojiov1alpha1.SecretRef{SecretName: "test-secret", Key: "my-token"}, namespace: "other", token: "", hasError: true, From a9fe5f4be1385be03176b78494eba09d8292850b Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Thu, 6 May 2021 22:39:57 -0700 Subject: [PATCH 17/21] =?UTF-8?q?=F0=9F=8E=A8=20Mass=20rename=20of=20the?= =?UTF-8?q?=20subsystem=20from=20"repo=20host"=20to=20"SCM=20provider".?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fingers crossed no lingering typos. --- api/v1alpha1/applicationset_types.go | 24 ++-- api/v1alpha1/zz_generated.deepcopy.go | 34 +++--- docs/Generators.md | 12 +- .../scm-provider-example.yaml} | 2 +- main.go | 8 +- .../crds/argoproj.io_applicationsets.yaml | 10 +- manifests/install-with-argo-cd.yaml | 10 +- manifests/install.yaml | 10 +- pkg/generators/repo_host.go | 114 ------------------ pkg/generators/scm_provider.go | 114 ++++++++++++++++++ ...repo_host_test.go => scm_provider_test.go} | 16 +-- pkg/services/repo_host/mock.go | 17 --- .../{repo_host => scm_provider}/github.go | 21 ++-- .../github_test.go | 12 +- pkg/services/scm_provider/mock.go | 17 +++ .../{repo_host => scm_provider}/types.go | 12 +- .../{repo_host => scm_provider}/utils.go | 12 +- .../{repo_host => scm_provider}/utils_test.go | 50 ++++---- .../e2e/applicationset/applicationset_test.go | 12 +- 19 files changed, 254 insertions(+), 253 deletions(-) rename examples/{repo-host-generator/repo-host-example.yaml => scm-provider-generator/scm-provider-example.yaml} (96%) delete mode 100644 pkg/generators/repo_host.go create mode 100644 pkg/generators/scm_provider.go rename pkg/generators/{repo_host_test.go => scm_provider_test.go} (84%) delete mode 100644 pkg/services/repo_host/mock.go rename pkg/services/{repo_host => scm_provider}/github.go (80%) rename pkg/services/{repo_host => scm_provider}/github_test.go (85%) create mode 100644 pkg/services/scm_provider/mock.go rename pkg/services/{repo_host => scm_provider}/types.go (55%) rename pkg/services/{repo_host => scm_provider}/utils.go (81%) rename pkg/services/{repo_host => scm_provider}/utils_test.go (67%) diff --git a/api/v1alpha1/applicationset_types.go b/api/v1alpha1/applicationset_types.go index 0150e5d9..47ea1ac4 100644 --- a/api/v1alpha1/applicationset_types.go +++ b/api/v1alpha1/applicationset_types.go @@ -69,10 +69,10 @@ type ApplicationSetTemplateMeta struct { // ApplicationSetGenerator include list item info type ApplicationSetGenerator struct { - List *ListGenerator `json:"list,omitempty"` - Clusters *ClusterGenerator `json:"clusters,omitempty"` - Git *GitGenerator `json:"git,omitempty"` - RepoHost *RepoHostGenerator `json:"repoHost,omitempty"` + List *ListGenerator `json:"list,omitempty"` + Clusters *ClusterGenerator `json:"clusters,omitempty"` + Git *GitGenerator `json:"git,omitempty"` + SCMProvider *SCMProviderGenerator `json:"scmProvider,omitempty"` } // ListGenerator include items info @@ -119,13 +119,13 @@ type GitFileGeneratorItem struct { Path string `json:"path"` } -// RepoHostGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. -type RepoHostGenerator struct { +// SCMProviderGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. +type SCMProviderGenerator struct { // Which provider to use and config for it. - Github *RepoHostGeneratorGithub `json:"github,omitempty"` + Github *SCMProviderGeneratorGithub `json:"github,omitempty"` // TODO other providers. // Filters for which repos should be considered. - Filters []RepoHostGeneratorFilter `json:"filters,omitempty"` + Filters []SCMProviderGeneratorFilter `json:"filters,omitempty"` // Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers // necessarily support all protocols. CloneProtocol string `json:"cloneProtocol,omitempty"` @@ -134,8 +134,8 @@ type RepoHostGenerator struct { Template ApplicationSetTemplate `json:"template,omitempty"` } -// RepoHostGeneratorGithub defines a connection info specific to GitHub. -type RepoHostGeneratorGithub struct { +// SCMProviderGeneratorGithub defines a connection info specific to GitHub. +type SCMProviderGeneratorGithub struct { // GitHub org to scan. Required. Organization string `json:"organization"` // The GitHub API URL to talk to. If blank, use https://api.github.com/. @@ -146,10 +146,10 @@ type RepoHostGeneratorGithub struct { AllBranches bool `json:"allBranches,omitempty"` } -// RepoHostGeneratorFilter is a single repository filter. +// SCMProviderGeneratorFilter is a single repository filter. // If multiple filter types are set on a single struct, they will be AND'd together. All filters must // pass for a repo to be included. -type RepoHostGeneratorFilter struct { +type SCMProviderGeneratorFilter struct { // A regex for repo names. RepositoryMatch *string `json:"repositoryMatch,omitempty"` // A path which must exist. diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 54da4e78..54d228ec 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -69,9 +69,9 @@ func (in *ApplicationSetGenerator) DeepCopyInto(out *ApplicationSetGenerator) { *out = new(GitGenerator) (*in).DeepCopyInto(*out) } - if in.RepoHost != nil { - in, out := &in.RepoHost, &out.RepoHost - *out = new(RepoHostGenerator) + if in.SCMProvider != nil { + in, out := &in.SCMProvider, &out.SCMProvider + *out = new(SCMProviderGenerator) (*in).DeepCopyInto(*out) } } @@ -353,16 +353,16 @@ func (in *ListGeneratorElement) DeepCopy() *ListGeneratorElement { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RepoHostGenerator) DeepCopyInto(out *RepoHostGenerator) { +func (in *SCMProviderGenerator) DeepCopyInto(out *SCMProviderGenerator) { *out = *in if in.Github != nil { in, out := &in.Github, &out.Github - *out = new(RepoHostGeneratorGithub) + *out = new(SCMProviderGeneratorGithub) (*in).DeepCopyInto(*out) } if in.Filters != nil { in, out := &in.Filters, &out.Filters - *out = make([]RepoHostGeneratorFilter, len(*in)) + *out = make([]SCMProviderGeneratorFilter, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -375,18 +375,18 @@ func (in *RepoHostGenerator) DeepCopyInto(out *RepoHostGenerator) { in.Template.DeepCopyInto(&out.Template) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepoHostGenerator. -func (in *RepoHostGenerator) DeepCopy() *RepoHostGenerator { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGenerator. +func (in *SCMProviderGenerator) DeepCopy() *SCMProviderGenerator { if in == nil { return nil } - out := new(RepoHostGenerator) + out := new(SCMProviderGenerator) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RepoHostGeneratorFilter) DeepCopyInto(out *RepoHostGeneratorFilter) { +func (in *SCMProviderGeneratorFilter) DeepCopyInto(out *SCMProviderGeneratorFilter) { *out = *in if in.RepositoryMatch != nil { in, out := &in.RepositoryMatch, &out.RepositoryMatch @@ -410,18 +410,18 @@ func (in *RepoHostGeneratorFilter) DeepCopyInto(out *RepoHostGeneratorFilter) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepoHostGeneratorFilter. -func (in *RepoHostGeneratorFilter) DeepCopy() *RepoHostGeneratorFilter { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGeneratorFilter. +func (in *SCMProviderGeneratorFilter) DeepCopy() *SCMProviderGeneratorFilter { if in == nil { return nil } - out := new(RepoHostGeneratorFilter) + out := new(SCMProviderGeneratorFilter) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RepoHostGeneratorGithub) DeepCopyInto(out *RepoHostGeneratorGithub) { +func (in *SCMProviderGeneratorGithub) DeepCopyInto(out *SCMProviderGeneratorGithub) { *out = *in if in.TokenRef != nil { in, out := &in.TokenRef, &out.TokenRef @@ -430,12 +430,12 @@ func (in *RepoHostGeneratorGithub) DeepCopyInto(out *RepoHostGeneratorGithub) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepoHostGeneratorGithub. -func (in *RepoHostGeneratorGithub) DeepCopy() *RepoHostGeneratorGithub { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SCMProviderGeneratorGithub. +func (in *SCMProviderGeneratorGithub) DeepCopy() *SCMProviderGeneratorGithub { if in == nil { return nil } - out := new(RepoHostGeneratorGithub) + out := new(SCMProviderGeneratorGithub) in.DeepCopyInto(out) return out } diff --git a/docs/Generators.md b/docs/Generators.md index 07de7087..b001b72c 100644 --- a/docs/Generators.md +++ b/docs/Generators.md @@ -371,9 +371,9 @@ Any `config.json` files found under the `cluster-config` directory will be param As with other generators, clusters *must* already be defined within Argo CD, in order to generate Applications for them. -## Repository Host Generator +## SCM Provider Generator -The RepoHost generator uses the API of an SCMaaS provider to discover repositories. This fits well with many repos following the same GitOps layout patterns such as microservices. +The SCMProvider generator uses the API of an SCMaaS provider to discover repositories. This fits well with many repos following the same GitOps layout patterns such as microservices. Support is currently limited to GitHub, PRs are welcome to add more SCM providers. @@ -384,7 +384,7 @@ metadata: name: myapps spec: generators: - - repoHost: + - scmProvider: # Which protocol to clone using. cloneProtocol: ssh # See below for provider specific options. @@ -405,7 +405,7 @@ metadata: name: myapps spec: generators: - - repoHost: + - scmProvider: github: # The GitHub organization to scan. organization: myorg @@ -441,7 +441,7 @@ metadata: name: myapps spec: generators: - - repoHost: + - scmProvider: github: # ... filters: @@ -468,7 +468,7 @@ metadata: name: myapps spec: generators: - - repoHost: + - scmProvider: # ... template: metadata: diff --git a/examples/repo-host-generator/repo-host-example.yaml b/examples/scm-provider-generator/scm-provider-example.yaml similarity index 96% rename from examples/repo-host-generator/repo-host-example.yaml rename to examples/scm-provider-generator/scm-provider-example.yaml index 21a5a602..7137547b 100644 --- a/examples/repo-host-generator/repo-host-example.yaml +++ b/examples/scm-provider-generator/scm-provider-example.yaml @@ -4,7 +4,7 @@ metadata: name: guestbook spec: generators: - - repoHost: + - scmProvider: github: organization: argoproj filters: diff --git a/main.go b/main.go index fec777f1..8795dc57 100644 --- a/main.go +++ b/main.go @@ -136,10 +136,10 @@ func main() { if err = (&controllers.ApplicationSetReconciler{ Generators: map[string]generators.Generator{ - "List": generators.NewListGenerator(), - "Clusters": generators.NewClusterGenerator(mgr.GetClient(), context.Background(), k8s, namespace), - "Git": generators.NewGitGenerator(services.NewArgoCDService(argoCDDB, argocdRepoServer)), - "RepoHost": generators.NewRepoHostGenerator(mgr.GetClient()), + "List": generators.NewListGenerator(), + "Clusters": generators.NewClusterGenerator(mgr.GetClient(), context.Background(), k8s, namespace), + "Git": generators.NewGitGenerator(services.NewArgoCDService(argoCDDB, argocdRepoServer)), + "SCMProvider": generators.NewSCMProviderGenerator(mgr.GetClient()), }, Client: mgr.GetClient(), Log: ctrl.Log.WithName("controllers").WithName("ApplicationSet"), diff --git a/manifests/crds/argoproj.io_applicationsets.yaml b/manifests/crds/argoproj.io_applicationsets.yaml index 15cf0565..9a8eb30b 100644 --- a/manifests/crds/argoproj.io_applicationsets.yaml +++ b/manifests/crds/argoproj.io_applicationsets.yaml @@ -1344,8 +1344,8 @@ spec: required: - elements type: object - repoHost: - description: RepoHostGenerator defines a generator that scrapes + scmProvider: + description: SCMProviderGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. properties: cloneProtocol: @@ -1357,7 +1357,7 @@ spec: description: TODO other providers. Filters for which repos should be considered. items: - description: RepoHostGeneratorFilter is a single repository + description: SCMProviderGeneratorFilter is a single repository filter. If multiple filter types are set on a single struct, they will be AND'd together. All filters must pass for a repo to be included. @@ -1396,11 +1396,11 @@ spec: properties: key: type: string - name: + secretName: type: string required: - key - - name + - secretName type: object required: - organization diff --git a/manifests/install-with-argo-cd.yaml b/manifests/install-with-argo-cd.yaml index 00f872ed..fb9f06fd 100644 --- a/manifests/install-with-argo-cd.yaml +++ b/manifests/install-with-argo-cd.yaml @@ -2840,8 +2840,8 @@ spec: required: - elements type: object - repoHost: - description: RepoHostGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. + scmProvider: + description: SCMProviderGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. properties: cloneProtocol: description: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols. @@ -2849,7 +2849,7 @@ spec: filters: description: TODO other providers. Filters for which repos should be considered. items: - description: RepoHostGeneratorFilter is a single repository filter. If multiple filter types are set on a single struct, they will be AND'd together. All filters must pass for a repo to be included. + description: SCMProviderGeneratorFilter is a single repository filter. If multiple filter types are set on a single struct, they will be AND'd together. All filters must pass for a repo to be included. properties: branchMatch: description: A regex which must match the branch name. @@ -2882,11 +2882,11 @@ spec: properties: key: type: string - name: + secretName: type: string required: - key - - name + - secretName type: object required: - organization diff --git a/manifests/install.yaml b/manifests/install.yaml index c17b5e2d..90ee742c 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -1079,8 +1079,8 @@ spec: required: - elements type: object - repoHost: - description: RepoHostGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. + scmProvider: + description: SCMProviderGenerator defines a generator that scrapes a SCMaaS API to find candidate repos. properties: cloneProtocol: description: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols. @@ -1088,7 +1088,7 @@ spec: filters: description: TODO other providers. Filters for which repos should be considered. items: - description: RepoHostGeneratorFilter is a single repository filter. If multiple filter types are set on a single struct, they will be AND'd together. All filters must pass for a repo to be included. + description: SCMProviderGeneratorFilter is a single repository filter. If multiple filter types are set on a single struct, they will be AND'd together. All filters must pass for a repo to be included. properties: branchMatch: description: A regex which must match the branch name. @@ -1121,11 +1121,11 @@ spec: properties: key: type: string - name: + secretName: type: string required: - key - - name + - secretName type: object required: - organization diff --git a/pkg/generators/repo_host.go b/pkg/generators/repo_host.go deleted file mode 100644 index c5440a9e..00000000 --- a/pkg/generators/repo_host.go +++ /dev/null @@ -1,114 +0,0 @@ -package generators - -import ( - "context" - "fmt" - "strings" - "time" - - corev1 "k8s.io/api/core/v1" - "sigs.k8s.io/controller-runtime/pkg/client" - - argoprojiov1alpha1 "github.com/argoproj-labs/applicationset/api/v1alpha1" - "github.com/argoproj-labs/applicationset/pkg/services/repo_host" -) - -var _ Generator = (*RepoHostGenerator)(nil) - -const ( - DefaultRepoHostRequeueAfterSeconds = 30 * time.Minute -) - -type RepoHostGenerator struct { - client client.Client - // Testing hooks. - overrideHost repo_host.RepoHostService -} - -func NewRepoHostGenerator(client client.Client) Generator { - return &RepoHostGenerator{client: client} -} - -func (g *RepoHostGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) time.Duration { - // Return a requeue default of 30 minutes, if no default is specified. - - if appSetGenerator.RepoHost.RequeueAfterSeconds != nil { - return time.Duration(*appSetGenerator.RepoHost.RequeueAfterSeconds) * time.Second - } - - return DefaultRepoHostRequeueAfterSeconds -} - -func (g *RepoHostGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) *argoprojiov1alpha1.ApplicationSetTemplate { - return &appSetGenerator.RepoHost.Template -} - -func (g *RepoHostGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet) ([]map[string]string, error) { - if appSetGenerator == nil { - return nil, EmptyAppSetGeneratorError - } - - if appSetGenerator.RepoHost == nil { - return nil, EmptyAppSetGeneratorError - } - - ctx := context.Background() - - // Create the repo host. - hostConfig := appSetGenerator.RepoHost - var host repo_host.RepoHostService - if g.overrideHost != nil { - host = g.overrideHost - } else if hostConfig.Github != nil { - token, err := g.getSecretRef(ctx, hostConfig.Github.TokenRef, applicationSetInfo.Namespace) - if err != nil { - return nil, fmt.Errorf("error fetching Github token: %v", err) - } - host, err = repo_host.NewGithubRepoHost(ctx, hostConfig.Github.Organization, token, hostConfig.Github.API, hostConfig.Github.AllBranches) - if err != nil { - return nil, fmt.Errorf("error initializing Github service: %v", err) - } - } else { - return nil, fmt.Errorf("no repository host provider configured") - } - - // Find all the available repos. - repos, err := repo_host.ListRepos(ctx, host, hostConfig.Filters, hostConfig.CloneProtocol) - if err != nil { - return nil, fmt.Errorf("error listing repos: %v", err) - } - params := make([]map[string]string, 0, len(repos)) - for _, repo := range repos { - params = append(params, map[string]string{ - "organization": repo.Organization, - "repository": repo.Repository, - "url": repo.URL, - "branch": repo.Branch, - "labels": strings.Join(repo.Labels, ","), - }) - } - return params, nil -} - -func (g *RepoHostGenerator) getSecretRef(ctx context.Context, ref *argoprojiov1alpha1.SecretRef, namespace string) (string, error) { - if ref == nil { - return "", nil - } - - secret := &corev1.Secret{} - err := g.client.Get( - ctx, - client.ObjectKey{ - Name: ref.SecretName, - Namespace: namespace, - }, - secret) - if err != nil { - return "", fmt.Errorf("error fetching secret %s/%s: %v", namespace, ref.SecretName, err) - } - tokenBytes, ok := secret.Data[ref.Key] - if !ok { - return "", fmt.Errorf("key %q in secret %s/%s not found", ref.Key, namespace, ref.SecretName) - } - return string(tokenBytes), nil -} diff --git a/pkg/generators/scm_provider.go b/pkg/generators/scm_provider.go new file mode 100644 index 00000000..0dfab3e9 --- /dev/null +++ b/pkg/generators/scm_provider.go @@ -0,0 +1,114 @@ +package generators + +import ( + "context" + "fmt" + "strings" + "time" + + corev1 "k8s.io/api/core/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + + argoprojiov1alpha1 "github.com/argoproj-labs/applicationset/api/v1alpha1" + "github.com/argoproj-labs/applicationset/pkg/services/scm_provider" +) + +var _ Generator = (*SCMProviderGenerator)(nil) + +const ( + DefaultSCMProviderRequeueAfterSeconds = 30 * time.Minute +) + +type SCMProviderGenerator struct { + client client.Client + // Testing hooks. + overrideProvider scm_provider.SCMProviderService +} + +func NewSCMProviderGenerator(client client.Client) Generator { + return &SCMProviderGenerator{client: client} +} + +func (g *SCMProviderGenerator) GetRequeueAfter(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) time.Duration { + // Return a requeue default of 30 minutes, if no default is specified. + + if appSetGenerator.SCMProvider.RequeueAfterSeconds != nil { + return time.Duration(*appSetGenerator.SCMProvider.RequeueAfterSeconds) * time.Second + } + + return DefaultSCMProviderRequeueAfterSeconds +} + +func (g *SCMProviderGenerator) GetTemplate(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator) *argoprojiov1alpha1.ApplicationSetTemplate { + return &appSetGenerator.SCMProvider.Template +} + +func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, applicationSetInfo *argoprojiov1alpha1.ApplicationSet) ([]map[string]string, error) { + if appSetGenerator == nil { + return nil, EmptyAppSetGeneratorError + } + + if appSetGenerator.SCMProvider == nil { + return nil, EmptyAppSetGeneratorError + } + + ctx := context.Background() + + // Create the SCM provider helper. + providerConfig := appSetGenerator.SCMProvider + var provider scm_provider.SCMProviderService + if g.overrideProvider != nil { + provider = g.overrideProvider + } else if providerConfig.Github != nil { + token, err := g.getSecretRef(ctx, providerConfig.Github.TokenRef, applicationSetInfo.Namespace) + if err != nil { + return nil, fmt.Errorf("error fetching Github token: %v", err) + } + provider, err = scm_provider.NewGithubProvider(ctx, providerConfig.Github.Organization, token, providerConfig.Github.API, providerConfig.Github.AllBranches) + if err != nil { + return nil, fmt.Errorf("error initializing Github service: %v", err) + } + } else { + return nil, fmt.Errorf("no SCM provider implementation configured") + } + + // Find all the available repos. + repos, err := scm_provider.ListRepos(ctx, provider, providerConfig.Filters, providerConfig.CloneProtocol) + if err != nil { + return nil, fmt.Errorf("error listing repos: %v", err) + } + params := make([]map[string]string, 0, len(repos)) + for _, repo := range repos { + params = append(params, map[string]string{ + "organization": repo.Organization, + "repository": repo.Repository, + "url": repo.URL, + "branch": repo.Branch, + "labels": strings.Join(repo.Labels, ","), + }) + } + return params, nil +} + +func (g *SCMProviderGenerator) getSecretRef(ctx context.Context, ref *argoprojiov1alpha1.SecretRef, namespace string) (string, error) { + if ref == nil { + return "", nil + } + + secret := &corev1.Secret{} + err := g.client.Get( + ctx, + client.ObjectKey{ + Name: ref.SecretName, + Namespace: namespace, + }, + secret) + if err != nil { + return "", fmt.Errorf("error fetching secret %s/%s: %v", namespace, ref.SecretName, err) + } + tokenBytes, ok := secret.Data[ref.Key] + if !ok { + return "", fmt.Errorf("key %q in secret %s/%s not found", ref.Key, namespace, ref.SecretName) + } + return string(tokenBytes), nil +} diff --git a/pkg/generators/repo_host_test.go b/pkg/generators/scm_provider_test.go similarity index 84% rename from pkg/generators/repo_host_test.go rename to pkg/generators/scm_provider_test.go index 0340a9d8..518f9a2a 100644 --- a/pkg/generators/repo_host_test.go +++ b/pkg/generators/scm_provider_test.go @@ -10,17 +10,17 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client/fake" argoprojiov1alpha1 "github.com/argoproj-labs/applicationset/api/v1alpha1" - "github.com/argoproj-labs/applicationset/pkg/services/repo_host" + "github.com/argoproj-labs/applicationset/pkg/services/scm_provider" ) -func TestRepoHostGetSecretRef(t *testing.T) { +func TestSCMProviderGetSecretRef(t *testing.T) { secret := &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{Name: "test-secret", Namespace: "test"}, Data: map[string][]byte{ "my-token": []byte("secret"), }, } - gen := &RepoHostGenerator{client: fake.NewClientBuilder().WithObjects(secret).Build()} + gen := &SCMProviderGenerator{client: fake.NewClientBuilder().WithObjects(secret).Build()} ctx := context.Background() cases := []struct { @@ -79,9 +79,9 @@ func TestRepoHostGetSecretRef(t *testing.T) { } } -func TestRepoHostGenerateParams(t *testing.T) { - mockHost := &repo_host.MockRepoHost{ - Repos: []*repo_host.HostedRepo{ +func TestSCMProviderGenerateParams(t *testing.T) { + mockProvider := &scm_provider.MockProvider{ + Repos: []*scm_provider.Repository{ { Organization: "myorg", Repository: "repo1", @@ -97,9 +97,9 @@ func TestRepoHostGenerateParams(t *testing.T) { }, }, } - gen := &RepoHostGenerator{overrideHost: mockHost} + gen := &SCMProviderGenerator{overrideProvider: mockProvider} params, err := gen.GenerateParams(&argoprojiov1alpha1.ApplicationSetGenerator{ - RepoHost: &argoprojiov1alpha1.RepoHostGenerator{}, + SCMProvider: &argoprojiov1alpha1.SCMProviderGenerator{}, }, nil) assert.Nil(t, err) assert.Len(t, params, 2) diff --git a/pkg/services/repo_host/mock.go b/pkg/services/repo_host/mock.go deleted file mode 100644 index 2729ca6a..00000000 --- a/pkg/services/repo_host/mock.go +++ /dev/null @@ -1,17 +0,0 @@ -package repo_host - -import "context" - -type MockRepoHost struct { - Repos []*HostedRepo -} - -var _ RepoHostService = &MockRepoHost{} - -func (m *MockRepoHost) ListRepos(_ context.Context, _ string) ([]*HostedRepo, error) { - return m.Repos, nil -} - -func (*MockRepoHost) RepoHasPath(_ context.Context, repo *HostedRepo, path string) (bool, error) { - return path == repo.Repository, nil -} diff --git a/pkg/services/repo_host/github.go b/pkg/services/scm_provider/github.go similarity index 80% rename from pkg/services/repo_host/github.go rename to pkg/services/scm_provider/github.go index e0d0d8a5..549dbe44 100644 --- a/pkg/services/repo_host/github.go +++ b/pkg/services/scm_provider/github.go @@ -1,4 +1,4 @@ -package repo_host +package scm_provider import ( "context" @@ -8,15 +8,15 @@ import ( "golang.org/x/oauth2" ) -type GithubRepoHost struct { +type GithubProvider struct { client *github.Client organization string allBranches bool } -var _ RepoHostService = &GithubRepoHost{} +var _ SCMProviderService = &GithubProvider{} -func NewGithubRepoHost(ctx context.Context, organization string, token string, url string, allBranches bool) (*GithubRepoHost, error) { +func NewGithubProvider(ctx context.Context, organization string, token string, url string, allBranches bool) (*GithubProvider, error) { var ts oauth2.TokenSource if token != "" { ts = oauth2.StaticTokenSource( @@ -34,14 +34,14 @@ func NewGithubRepoHost(ctx context.Context, organization string, token string, u return nil, err } } - return &GithubRepoHost{client: client, organization: organization, allBranches: allBranches}, nil + return &GithubProvider{client: client, organization: organization, allBranches: allBranches}, nil } -func (g *GithubRepoHost) ListRepos(ctx context.Context, cloneProtocol string) ([]*HostedRepo, error) { +func (g *GithubProvider) ListRepos(ctx context.Context, cloneProtocol string) ([]*Repository, error) { opt := &github.RepositoryListByOrgOptions{ ListOptions: github.ListOptions{PerPage: 100}, } - repos := []*HostedRepo{} + repos := []*Repository{} for { githubRepos, resp, err := g.client.Repositories.ListByOrg(ctx, g.organization, opt) if err != nil { @@ -50,6 +50,7 @@ func (g *GithubRepoHost) ListRepos(ctx context.Context, cloneProtocol string) ([ for _, githubRepo := range githubRepos { var url string switch cloneProtocol { + // Default to SSH if unspecified (i.e. if ""). case "", "ssh": url = githubRepo.GetSSHURL() case "https": @@ -64,7 +65,7 @@ func (g *GithubRepoHost) ListRepos(ctx context.Context, cloneProtocol string) ([ } for _, branch := range branches { - repos = append(repos, &HostedRepo{ + repos = append(repos, &Repository{ Organization: githubRepo.Owner.GetLogin(), Repository: githubRepo.GetName(), URL: url, @@ -81,7 +82,7 @@ func (g *GithubRepoHost) ListRepos(ctx context.Context, cloneProtocol string) ([ return repos, nil } -func (g *GithubRepoHost) RepoHasPath(ctx context.Context, repo *HostedRepo, path string) (bool, error) { +func (g *GithubProvider) RepoHasPath(ctx context.Context, repo *Repository, path string) (bool, error) { _, _, resp, err := g.client.Repositories.GetContents(ctx, repo.Organization, repo.Repository, path, &github.RepositoryContentGetOptions{ Ref: repo.Branch, }) @@ -95,7 +96,7 @@ func (g *GithubRepoHost) RepoHasPath(ctx context.Context, repo *HostedRepo, path return true, nil } -func (g *GithubRepoHost) listBranches(ctx context.Context, repo *github.Repository) ([]string, error) { +func (g *GithubProvider) listBranches(ctx context.Context, repo *github.Repository) ([]string, error) { // If we don't specifically want to query for all branches, just use the default branch and call it a day. if !g.allBranches { return []string{repo.GetDefaultBranch()}, nil diff --git a/pkg/services/repo_host/github_test.go b/pkg/services/scm_provider/github_test.go similarity index 85% rename from pkg/services/repo_host/github_test.go rename to pkg/services/scm_provider/github_test.go index 5fc6ef9f..6c8021a8 100644 --- a/pkg/services/repo_host/github_test.go +++ b/pkg/services/scm_provider/github_test.go @@ -1,4 +1,4 @@ -package repo_host +package scm_provider import ( "context" @@ -43,14 +43,14 @@ func TestGithubListRepos(t *testing.T) { for _, c := range cases { t.Run(c.name, func(t *testing.T) { - host, _ := NewGithubRepoHost(context.Background(), "argoproj-labs", "", "", c.allBranches) - rawRepos, err := host.ListRepos(context.Background(), c.proto) + provider, _ := NewGithubProvider(context.Background(), "argoproj-labs", "", "", c.allBranches) + rawRepos, err := provider.ListRepos(context.Background(), c.proto) if c.hasError { assert.NotNil(t, err) } else { assert.Nil(t, err) // Just check that this one project shows up. Not a great test but better thing nothing? - repos := []*HostedRepo{} + repos := []*Repository{} branches := []string{} for _, r := range rawRepos { if r.Repository == "applicationset" { @@ -69,8 +69,8 @@ func TestGithubListRepos(t *testing.T) { } func TestGithubHasPath(t *testing.T) { - host, _ := NewGithubRepoHost(context.Background(), "argoproj-labs", "", "", false) - repo := &HostedRepo{ + host, _ := NewGithubProvider(context.Background(), "argoproj-labs", "", "", false) + repo := &Repository{ Organization: "argoproj-labs", Repository: "applicationset", Branch: "master", diff --git a/pkg/services/scm_provider/mock.go b/pkg/services/scm_provider/mock.go new file mode 100644 index 00000000..54b864a4 --- /dev/null +++ b/pkg/services/scm_provider/mock.go @@ -0,0 +1,17 @@ +package scm_provider + +import "context" + +type MockProvider struct { + Repos []*Repository +} + +var _ SCMProviderService = &MockProvider{} + +func (m *MockProvider) ListRepos(_ context.Context, _ string) ([]*Repository, error) { + return m.Repos, nil +} + +func (*MockProvider) RepoHasPath(_ context.Context, repo *Repository, path string) (bool, error) { + return path == repo.Repository, nil +} diff --git a/pkg/services/repo_host/types.go b/pkg/services/scm_provider/types.go similarity index 55% rename from pkg/services/repo_host/types.go rename to pkg/services/scm_provider/types.go index a1c44c05..b95fb915 100644 --- a/pkg/services/repo_host/types.go +++ b/pkg/services/scm_provider/types.go @@ -1,4 +1,4 @@ -package repo_host +package scm_provider import ( "context" @@ -6,7 +6,7 @@ import ( ) // An abstract repository from an API provider. -type HostedRepo struct { +type Repository struct { Organization string Repository string URL string @@ -14,12 +14,12 @@ type HostedRepo struct { Labels []string } -type RepoHostService interface { - ListRepos(context.Context, string) ([]*HostedRepo, error) - RepoHasPath(context.Context, *HostedRepo, string) (bool, error) +type SCMProviderService interface { + ListRepos(context.Context, string) ([]*Repository, error) + RepoHasPath(context.Context, *Repository, string) (bool, error) } -// A compiled version of RepoHostGeneratorFilter for performance. +// A compiled version of SCMProviderGeneratorFilter for performance. type Filter struct { RepositoryMatch *regexp.Regexp PathExists *string diff --git a/pkg/services/repo_host/utils.go b/pkg/services/scm_provider/utils.go similarity index 81% rename from pkg/services/repo_host/utils.go rename to pkg/services/scm_provider/utils.go index 393966a4..19953f19 100644 --- a/pkg/services/repo_host/utils.go +++ b/pkg/services/scm_provider/utils.go @@ -1,4 +1,4 @@ -package repo_host +package scm_provider import ( "context" @@ -8,7 +8,7 @@ import ( argoprojiov1alpha1 "github.com/argoproj-labs/applicationset/api/v1alpha1" ) -func compileFilters(filters []argoprojiov1alpha1.RepoHostGeneratorFilter) ([]*Filter, error) { +func compileFilters(filters []argoprojiov1alpha1.SCMProviderGeneratorFilter) ([]*Filter, error) { outFilters := make([]*Filter, 0, len(filters)) for _, filter := range filters { outFilter := &Filter{} @@ -39,17 +39,17 @@ func compileFilters(filters []argoprojiov1alpha1.RepoHostGeneratorFilter) ([]*Fi return outFilters, nil } -func ListRepos(ctx context.Context, host RepoHostService, filters []argoprojiov1alpha1.RepoHostGeneratorFilter, cloneProtocol string) ([]*HostedRepo, error) { +func ListRepos(ctx context.Context, provider SCMProviderService, filters []argoprojiov1alpha1.SCMProviderGeneratorFilter, cloneProtocol string) ([]*Repository, error) { compiledFilters, err := compileFilters(filters) if err != nil { return nil, err } - repos, err := host.ListRepos(ctx, cloneProtocol) + repos, err := provider.ListRepos(ctx, cloneProtocol) if err != nil { return nil, err } - filteredRepos := make([]*HostedRepo, 0, len(repos)) + filteredRepos := make([]*Repository, 0, len(repos)) for _, repo := range repos { matches := true for _, filter := range compiledFilters { @@ -82,7 +82,7 @@ func ListRepos(ctx context.Context, host RepoHostService, filters []argoprojiov1 } if filter.PathExists != nil { - hasPath, err := host.RepoHasPath(ctx, repo, *filter.PathExists) + hasPath, err := provider.RepoHasPath(ctx, repo, *filter.PathExists) if err != nil { return nil, err } diff --git a/pkg/services/repo_host/utils_test.go b/pkg/services/scm_provider/utils_test.go similarity index 67% rename from pkg/services/repo_host/utils_test.go rename to pkg/services/scm_provider/utils_test.go index a2e44460..49e00388 100644 --- a/pkg/services/repo_host/utils_test.go +++ b/pkg/services/scm_provider/utils_test.go @@ -1,4 +1,4 @@ -package repo_host +package scm_provider import ( "context" @@ -13,8 +13,8 @@ func strp(s string) *string { } func TestFilterRepoMatch(t *testing.T) { - host := &MockRepoHost{ - Repos: []*HostedRepo{ + provider := &MockProvider{ + Repos: []*Repository{ { Repository: "one", }, @@ -29,12 +29,12 @@ func TestFilterRepoMatch(t *testing.T) { }, }, } - filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + filters := []argoprojiov1alpha1.SCMProviderGeneratorFilter{ { RepositoryMatch: strp("n|hr"), }, } - repos, err := ListRepos(context.Background(), host, filters, "") + repos, err := ListRepos(context.Background(), provider, filters, "") assert.Nil(t, err) assert.Len(t, repos, 2) assert.Equal(t, "one", repos[0].Repository) @@ -42,8 +42,8 @@ func TestFilterRepoMatch(t *testing.T) { } func TestFilterLabelMatch(t *testing.T) { - host := &MockRepoHost{ - Repos: []*HostedRepo{ + provider := &MockProvider{ + Repos: []*Repository{ { Repository: "one", Labels: []string{"prod-one", "prod-two", "staging"}, @@ -58,12 +58,12 @@ func TestFilterLabelMatch(t *testing.T) { }, }, } - filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + filters := []argoprojiov1alpha1.SCMProviderGeneratorFilter{ { LabelMatch: strp("^prod-.*$"), }, } - repos, err := ListRepos(context.Background(), host, filters, "") + repos, err := ListRepos(context.Background(), provider, filters, "") assert.Nil(t, err) assert.Len(t, repos, 2) assert.Equal(t, "one", repos[0].Repository) @@ -71,8 +71,8 @@ func TestFilterLabelMatch(t *testing.T) { } func TestFilterPatchExists(t *testing.T) { - host := &MockRepoHost{ - Repos: []*HostedRepo{ + provider := &MockProvider{ + Repos: []*Repository{ { Repository: "one", }, @@ -84,54 +84,54 @@ func TestFilterPatchExists(t *testing.T) { }, }, } - filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + filters := []argoprojiov1alpha1.SCMProviderGeneratorFilter{ { PathExists: strp("two"), }, } - repos, err := ListRepos(context.Background(), host, filters, "") + repos, err := ListRepos(context.Background(), provider, filters, "") assert.Nil(t, err) assert.Len(t, repos, 1) assert.Equal(t, "two", repos[0].Repository) } func TestFilterRepoMatchBadRegexp(t *testing.T) { - host := &MockRepoHost{ - Repos: []*HostedRepo{ + provider := &MockProvider{ + Repos: []*Repository{ { Repository: "one", }, }, } - filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + filters := []argoprojiov1alpha1.SCMProviderGeneratorFilter{ { RepositoryMatch: strp("("), }, } - _, err := ListRepos(context.Background(), host, filters, "") + _, err := ListRepos(context.Background(), provider, filters, "") assert.NotNil(t, err) } func TestFilterLabelMatchBadRegexp(t *testing.T) { - host := &MockRepoHost{ - Repos: []*HostedRepo{ + provider := &MockProvider{ + Repos: []*Repository{ { Repository: "one", }, }, } - filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + filters := []argoprojiov1alpha1.SCMProviderGeneratorFilter{ { LabelMatch: strp("("), }, } - _, err := ListRepos(context.Background(), host, filters, "") + _, err := ListRepos(context.Background(), provider, filters, "") assert.NotNil(t, err) } func TestFilterBranchMatch(t *testing.T) { - host := &MockRepoHost{ - Repos: []*HostedRepo{ + provider := &MockProvider{ + Repos: []*Repository{ { Repository: "one", Branch: "one", @@ -154,12 +154,12 @@ func TestFilterBranchMatch(t *testing.T) { }, }, } - filters := []argoprojiov1alpha1.RepoHostGeneratorFilter{ + filters := []argoprojiov1alpha1.SCMProviderGeneratorFilter{ { BranchMatch: strp("w"), }, } - repos, err := ListRepos(context.Background(), host, filters, "") + repos, err := ListRepos(context.Background(), provider, filters, "") assert.Nil(t, err) assert.Len(t, repos, 2) assert.Equal(t, "one", repos[0].Repository) diff --git a/test/e2e/applicationset/applicationset_test.go b/test/e2e/applicationset/applicationset_test.go index 6d3a5c2a..42edca36 100644 --- a/test/e2e/applicationset/applicationset_test.go +++ b/test/e2e/applicationset/applicationset_test.go @@ -311,7 +311,7 @@ func TestSimpleGitFilesGenerator(t *testing.T) { Delete().Then().Expect(ApplicationsDoNotExist(expectedAppsNewNamespace)) } -func TestSimpleRepoHostGenerator(t *testing.T) { +func TestSimpleSCMProviderGenerator(t *testing.T) { expectedApp := argov1alpha1.Application{ TypeMeta: metav1.TypeMeta{ Kind: "Application", @@ -340,9 +340,9 @@ func TestSimpleRepoHostGenerator(t *testing.T) { repoMatch := "example-apps" Given(t). - // Create a RepoHostGenerator-based ApplicationSet + // Create an SCMProviderGenerator-based ApplicationSet When().Create(v1alpha1.ApplicationSet{ObjectMeta: metav1.ObjectMeta{ - Name: "simple-repo-host-generator", + Name: "simple-scm-provider-generator", }, Spec: v1alpha1.ApplicationSetSpec{ Template: v1alpha1.ApplicationSetTemplate{ @@ -362,11 +362,11 @@ func TestSimpleRepoHostGenerator(t *testing.T) { }, Generators: []v1alpha1.ApplicationSetGenerator{ { - RepoHost: &v1alpha1.RepoHostGenerator{ - Github: &v1alpha1.RepoHostGeneratorGithub{ + SCMProvider: &v1alpha1.SCMProviderGenerator{ + Github: &v1alpha1.SCMProviderGeneratorGithub{ Organization: "argoproj", }, - Filters: []v1alpha1.RepoHostGeneratorFilter{ + Filters: []v1alpha1.SCMProviderGeneratorFilter{ { RepositoryMatch: &repoMatch, }, From 1b538e271e433a794a3a26d3c47398c9af2a51a9 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Thu, 6 May 2021 23:40:10 -0700 Subject: [PATCH 18/21] =?UTF-8?q?=E2=9C=A8=20Reflow=20the=20logic=20dealin?= =?UTF-8?q?g=20with=20multiple=20filters=20so=20it's=20a=20clearer=20OR=20?= =?UTF-8?q?then=20AND=20two-level=20system.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This also swaps PathExists -> PathsExist so you can still check for multiple files if needed. --- api/v1alpha1/applicationset_types.go | 4 +- api/v1alpha1/zz_generated.deepcopy.go | 8 +- docs/Generators.md | 14 +-- .../crds/argoproj.io_applicationsets.yaml | 9 +- manifests/install-with-argo-cd.yaml | 8 +- manifests/install.yaml | 8 +- pkg/services/scm_provider/types.go | 2 +- pkg/services/scm_provider/utils.go | 93 ++++++++++--------- pkg/services/scm_provider/utils_test.go | 90 +++++++++++++++++- 9 files changed, 171 insertions(+), 65 deletions(-) diff --git a/api/v1alpha1/applicationset_types.go b/api/v1alpha1/applicationset_types.go index 47ea1ac4..b916249f 100644 --- a/api/v1alpha1/applicationset_types.go +++ b/api/v1alpha1/applicationset_types.go @@ -152,8 +152,8 @@ type SCMProviderGeneratorGithub struct { type SCMProviderGeneratorFilter struct { // A regex for repo names. RepositoryMatch *string `json:"repositoryMatch,omitempty"` - // A path which must exist. - PathExists *string `json:"pathExists,omitempty"` + // An array of paths, all of which must exist. + PathsExist []string `json:"pathsExist,omitempty"` // A regex which must match at least one label. LabelMatch *string `json:"labelMatch,omitempty"` // A regex which must match the branch name. diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 54d228ec..d3a74ac5 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -393,10 +393,10 @@ func (in *SCMProviderGeneratorFilter) DeepCopyInto(out *SCMProviderGeneratorFilt *out = new(string) **out = **in } - if in.PathExists != nil { - in, out := &in.PathExists, &out.PathExists - *out = new(string) - **out = **in + if in.PathsExist != nil { + in, out := &in.PathsExist, &out.PathsExist + *out = make([]string, len(*in)) + copy(*out, *in) } if in.LabelMatch != nil { in, out := &in.LabelMatch, &out.LabelMatch diff --git a/docs/Generators.md b/docs/Generators.md index b001b72c..a778b261 100644 --- a/docs/Generators.md +++ b/docs/Generators.md @@ -432,7 +432,7 @@ Available clone protocols are `ssh` and `https`. ### Filters -Filters allow selecting which repositories to generate for. Filters are additive, specifying none will template every repository and each filter added will pare that down. If multiple filters are present, either in a single entry or multiple, the filter behavior is an AND of all. If at least one is NOT true, the repository will not be included. +Filters allow selecting which repositories to generate for. Each filter can declare one or more conditions, all of which must pass. If multiple filters are present, any can match for a repository to be included. If no filters are specified, all repositories will be processed. ```yaml apiVersion: argoproj.io/v1alpha1 @@ -442,18 +442,20 @@ metadata: spec: generators: - scmProvider: - github: - # ... filters: - - repositoryMatch: ^myapp.* - pathExists: kubernetes/kustomization.yaml + # Include any repository starting with "myapp" AND including a Kustomize config AND labeled with "deploy-ok" ... + - repositoryMatch: ^myapp + pathsExist: [kubernetes/kustomization.yaml] labelMatch: deploy-ok + # ... OR any repository starting with "otherapp" AND a Helm folder. + - repositoryMatch: ^otherapp + pathsExist: [helm] template: # ... ``` * `repositoryMatch`: A regexp matched against the repository name. -* `pathExists`: A path within the repository that must exist. Can be a file or directory, but do not include the trailing `/` for directories. +* `pathsExist`: An array of paths within the repository that must exist. Can be a file or directory, but do not include the trailing `/` for directories. * `labelMatch`: A regexp matched against repository labels. If any label matches, the repository is included. * `branchMatch`: A regexp matched against branch names. diff --git a/manifests/crds/argoproj.io_applicationsets.yaml b/manifests/crds/argoproj.io_applicationsets.yaml index 9a8eb30b..bfd24e03 100644 --- a/manifests/crds/argoproj.io_applicationsets.yaml +++ b/manifests/crds/argoproj.io_applicationsets.yaml @@ -1369,9 +1369,12 @@ spec: description: A regex which must match at least one label. type: string - pathExists: - description: A path which must exist. - type: string + pathsExist: + description: An array of paths, all of which must + exist. + items: + type: string + type: array repositoryMatch: description: A regex for repo names. type: string diff --git a/manifests/install-with-argo-cd.yaml b/manifests/install-with-argo-cd.yaml index fb9f06fd..b93519ee 100644 --- a/manifests/install-with-argo-cd.yaml +++ b/manifests/install-with-argo-cd.yaml @@ -2857,9 +2857,11 @@ spec: labelMatch: description: A regex which must match at least one label. type: string - pathExists: - description: A path which must exist. - type: string + pathsExist: + description: An array of paths, all of which must exist. + items: + type: string + type: array repositoryMatch: description: A regex for repo names. type: string diff --git a/manifests/install.yaml b/manifests/install.yaml index 90ee742c..a0746812 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -1096,9 +1096,11 @@ spec: labelMatch: description: A regex which must match at least one label. type: string - pathExists: - description: A path which must exist. - type: string + pathsExist: + description: An array of paths, all of which must exist. + items: + type: string + type: array repositoryMatch: description: A regex for repo names. type: string diff --git a/pkg/services/scm_provider/types.go b/pkg/services/scm_provider/types.go index b95fb915..a46d8121 100644 --- a/pkg/services/scm_provider/types.go +++ b/pkg/services/scm_provider/types.go @@ -22,7 +22,7 @@ type SCMProviderService interface { // A compiled version of SCMProviderGeneratorFilter for performance. type Filter struct { RepositoryMatch *regexp.Regexp - PathExists *string + PathsExist []string LabelMatch *regexp.Regexp BranchMatch *regexp.Regexp } diff --git a/pkg/services/scm_provider/utils.go b/pkg/services/scm_provider/utils.go index 19953f19..5b1d2011 100644 --- a/pkg/services/scm_provider/utils.go +++ b/pkg/services/scm_provider/utils.go @@ -25,8 +25,8 @@ func compileFilters(filters []argoprojiov1alpha1.SCMProviderGeneratorFilter) ([] return nil, fmt.Errorf("error compiling LabelMatch regexp %q: %v", *filter.LabelMatch, err) } } - if filter.PathExists != nil { - outFilter.PathExists = filter.PathExists + if filter.PathsExist != nil { + outFilter.PathsExist = filter.PathsExist } if filter.BranchMatch != nil { outFilter.BranchMatch, err = regexp.Compile(*filter.BranchMatch) @@ -39,6 +39,43 @@ func compileFilters(filters []argoprojiov1alpha1.SCMProviderGeneratorFilter) ([] return outFilters, nil } +func matchFilter(ctx context.Context, provider SCMProviderService, repo *Repository, filter *Filter) (bool, error) { + if filter.RepositoryMatch != nil && !filter.RepositoryMatch.MatchString(repo.Repository) { + return false, nil + } + + if filter.BranchMatch != nil && !filter.BranchMatch.MatchString(repo.Branch) { + return false, nil + } + + if filter.LabelMatch != nil { + found := false + for _, label := range repo.Labels { + if filter.LabelMatch.MatchString(label) { + found = true + break + } + } + if !found { + return false, nil + } + } + + if len(filter.PathsExist) != 0 { + for _, path := range filter.PathsExist { + hasPath, err := provider.RepoHasPath(ctx, repo, path) + if err != nil { + return false, err + } + if !hasPath { + return false, nil + } + } + } + + return true, nil +} + func ListRepos(ctx context.Context, provider SCMProviderService, filters []argoprojiov1alpha1.SCMProviderGeneratorFilter, cloneProtocol string) ([]*Repository, error) { compiledFilters, err := compileFilters(filters) if err != nil { @@ -49,52 +86,24 @@ func ListRepos(ctx context.Context, provider SCMProviderService, filters []argop if err != nil { return nil, err } + + // Special case, if we have no filters, allow everything. + if len(compiledFilters) == 0 { + return repos, nil + } + filteredRepos := make([]*Repository, 0, len(repos)) for _, repo := range repos { - matches := true for _, filter := range compiledFilters { - if filter.RepositoryMatch != nil { - if !filter.RepositoryMatch.MatchString(repo.Repository) { - matches = false - break - } - } - - if filter.BranchMatch != nil { - if !filter.BranchMatch.MatchString(repo.Branch) { - matches = false - break - } - } - - if filter.LabelMatch != nil { - found := false - for _, label := range repo.Labels { - if filter.LabelMatch.MatchString(label) { - found = true - break - } - } - if !found { - matches = false - break - } + matches, err := matchFilter(ctx, provider, repo, filter) + if err != nil { + return nil, err } - - if filter.PathExists != nil { - hasPath, err := provider.RepoHasPath(ctx, repo, *filter.PathExists) - if err != nil { - return nil, err - } - if !hasPath { - matches = false - break - } + if matches { + filteredRepos = append(filteredRepos, repo) + break } } - if matches { - filteredRepos = append(filteredRepos, repo) - } } return filteredRepos, nil } diff --git a/pkg/services/scm_provider/utils_test.go b/pkg/services/scm_provider/utils_test.go index 49e00388..4068df18 100644 --- a/pkg/services/scm_provider/utils_test.go +++ b/pkg/services/scm_provider/utils_test.go @@ -86,7 +86,7 @@ func TestFilterPatchExists(t *testing.T) { } filters := []argoprojiov1alpha1.SCMProviderGeneratorFilter{ { - PathExists: strp("two"), + PathsExist: []string{"two"}, }, } repos, err := ListRepos(context.Background(), provider, filters, "") @@ -167,3 +167,91 @@ func TestFilterBranchMatch(t *testing.T) { assert.Equal(t, "three", repos[1].Repository) assert.Equal(t, "two", repos[1].Branch) } + +func TestMultiFilterAnd(t *testing.T) { + provider := &MockProvider{ + Repos: []*Repository{ + { + Repository: "one", + Labels: []string{"prod-one", "prod-two", "staging"}, + }, + { + Repository: "two", + Labels: []string{"prod-two"}, + }, + { + Repository: "three", + Labels: []string{"staging"}, + }, + }, + } + filters := []argoprojiov1alpha1.SCMProviderGeneratorFilter{ + { + RepositoryMatch: strp("w"), + LabelMatch: strp("^prod-.*$"), + }, + } + repos, err := ListRepos(context.Background(), provider, filters, "") + assert.Nil(t, err) + assert.Len(t, repos, 1) + assert.Equal(t, "two", repos[0].Repository) +} + +func TestMultiFilterOr(t *testing.T) { + provider := &MockProvider{ + Repos: []*Repository{ + { + Repository: "one", + Labels: []string{"prod-one", "prod-two", "staging"}, + }, + { + Repository: "two", + Labels: []string{"prod-two"}, + }, + { + Repository: "three", + Labels: []string{"staging"}, + }, + }, + } + filters := []argoprojiov1alpha1.SCMProviderGeneratorFilter{ + { + RepositoryMatch: strp("e"), + }, + { + LabelMatch: strp("^prod-.*$"), + }, + } + repos, err := ListRepos(context.Background(), provider, filters, "") + assert.Nil(t, err) + assert.Len(t, repos, 3) + assert.Equal(t, "one", repos[0].Repository) + assert.Equal(t, "two", repos[1].Repository) + assert.Equal(t, "three", repos[2].Repository) +} + +func TestNoFilters(t *testing.T) { + provider := &MockProvider{ + Repos: []*Repository{ + { + Repository: "one", + Labels: []string{"prod-one", "prod-two", "staging"}, + }, + { + Repository: "two", + Labels: []string{"prod-two"}, + }, + { + Repository: "three", + Labels: []string{"staging"}, + }, + }, + } + filters := []argoprojiov1alpha1.SCMProviderGeneratorFilter{} + repos, err := ListRepos(context.Background(), provider, filters, "") + assert.Nil(t, err) + assert.Len(t, repos, 3) + assert.Equal(t, "one", repos[0].Repository) + assert.Equal(t, "two", repos[1].Repository) + assert.Equal(t, "three", repos[2].Repository) +} From b84e6b66053b45696fc0cbe77f43203899ec6efc Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Thu, 6 May 2021 23:47:19 -0700 Subject: [PATCH 19/21] =?UTF-8?q?=F0=9F=8E=A8=20Post=20merge=20go.sum=20fi?= =?UTF-8?q?xing.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Because no human can truly grok go.sum. --- go.sum | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/go.sum b/go.sum index 84167d3b..056d9a52 100644 --- a/go.sum +++ b/go.sum @@ -662,6 +662,7 @@ github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSf github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/gopher-lua v0.0.0-20190115140932-732aa6820ec4/go.mod h1:fFiAh+CowNFr0NK5VASokuwKwkbacRmHsVA7Yb1Tqac= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -673,6 +674,8 @@ go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qL go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opentelemetry.io/otel v0.13.0/go.mod h1:dlSNewoRYikTkotEnxdmuBHgzT+k/idJSfDv/FxEnOY= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -717,6 +720,9 @@ golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm0 golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200821190819-94841d0725da/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= @@ -776,6 +782,8 @@ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -795,6 +803,7 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From 1a9b0586bffd06051b57a91345e9c2a975a6f01f Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Fri, 7 May 2021 15:24:57 -0700 Subject: [PATCH 20/21] =?UTF-8?q?=F0=9F=8E=A8=20Try=20to=20better=20handle?= =?UTF-8?q?=20rate=20limit=20errors=20from=20the=20GitHub=20unit=20tests.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/services/scm_provider/github.go | 9 +++++++-- pkg/services/scm_provider/github_test.go | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/pkg/services/scm_provider/github.go b/pkg/services/scm_provider/github.go index 549dbe44..2f01e6c9 100644 --- a/pkg/services/scm_provider/github.go +++ b/pkg/services/scm_provider/github.go @@ -3,6 +3,7 @@ package scm_provider import ( "context" "fmt" + "os" "github.com/google/go-github/v35/github" "golang.org/x/oauth2" @@ -18,6 +19,10 @@ var _ SCMProviderService = &GithubProvider{} func NewGithubProvider(ctx context.Context, organization string, token string, url string, allBranches bool) (*GithubProvider, error) { var ts oauth2.TokenSource + // Undocumented environment variable to set a default token, to be used in testing to dodge anonymous rate limits. + if token == "" { + token = os.Getenv("GITHUB_TOKEN") + } if token != "" { ts = oauth2.StaticTokenSource( &oauth2.Token{AccessToken: token}, @@ -45,7 +50,7 @@ func (g *GithubProvider) ListRepos(ctx context.Context, cloneProtocol string) ([ for { githubRepos, resp, err := g.client.Repositories.ListByOrg(ctx, g.organization, opt) if err != nil { - return nil, err + return nil, fmt.Errorf("error listing repositories for %s: %v", g.organization, err) } for _, githubRepo := range githubRepos { var url string @@ -61,7 +66,7 @@ func (g *GithubProvider) ListRepos(ctx context.Context, cloneProtocol string) ([ branches, err := g.listBranches(ctx, githubRepo) if err != nil { - return nil, fmt.Errorf("error listing branches for %s/%s: %q", githubRepo.Owner.GetLogin(), githubRepo.GetName(), err) + return nil, fmt.Errorf("error listing branches for %s/%s: %v", githubRepo.Owner.GetLogin(), githubRepo.GetName(), err) } for _, branch := range branches { diff --git a/pkg/services/scm_provider/github_test.go b/pkg/services/scm_provider/github_test.go index 6c8021a8..c57b4513 100644 --- a/pkg/services/scm_provider/github_test.go +++ b/pkg/services/scm_provider/github_test.go @@ -2,11 +2,26 @@ package scm_provider import ( "context" + "os" + "strings" "testing" "github.com/stretchr/testify/assert" ) +func checkRateLimit(t *testing.T, err error) { + // Check if we've hit a rate limit, don't fail the test if so. + if err != nil && strings.Contains(err.Error(), "rate limit exceeded") { + allowRateLimitErrors := os.Getenv("CI") == "" + t.Logf("Got a rate limit error, consider setting $GITHUB_TOKEN to increase your GitHub API rate limit: %v\n", err) + if allowRateLimitErrors { + t.SkipNow() + } else { + t.FailNow() + } + } +} + func TestGithubListRepos(t *testing.T) { cases := []struct { name, proto, url string @@ -48,6 +63,7 @@ func TestGithubListRepos(t *testing.T) { if c.hasError { assert.NotNil(t, err) } else { + checkRateLimit(t, err) assert.Nil(t, err) // Just check that this one project shows up. Not a great test but better thing nothing? repos := []*Repository{} @@ -76,10 +92,12 @@ func TestGithubHasPath(t *testing.T) { Branch: "master", } ok, err := host.RepoHasPath(context.Background(), repo, "pkg/") + checkRateLimit(t, err) assert.Nil(t, err) assert.True(t, ok) ok, err = host.RepoHasPath(context.Background(), repo, "notathing/") + checkRateLimit(t, err) assert.Nil(t, err) assert.False(t, ok) } From ee81c7a20c572e41ea9ef13a34ef7842244bcdbe Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Sun, 9 May 2021 17:58:13 -0700 Subject: [PATCH 21/21] =?UTF-8?q?=F0=9F=8E=A8=20Switch=20the=20example=20t?= =?UTF-8?q?o=20use=20https=20cloning=20since=20it's=20a=20public=20repo=20?= =?UTF-8?q?and=20we=20don't=20need=20to=20require=20an=20SSH=20key=20setup?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/scm-provider-generator/scm-provider-example.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/scm-provider-generator/scm-provider-example.yaml b/examples/scm-provider-generator/scm-provider-example.yaml index 7137547b..24d8ba41 100644 --- a/examples/scm-provider-generator/scm-provider-example.yaml +++ b/examples/scm-provider-generator/scm-provider-example.yaml @@ -7,6 +7,7 @@ spec: - scmProvider: github: organization: argoproj + cloneProtocol: https filters: - repositoryMatch: example-apps template: