diff --git a/.argo-ci/ci.yaml b/.argo-ci/ci.yaml deleted file mode 100644 index b471f32826..0000000000 --- a/.argo-ci/ci.yaml +++ /dev/null @@ -1,163 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Workflow -metadata: - generateName: argo-cd-ci- -spec: - entrypoint: argo-cd-ci - arguments: - parameters: - - name: revision - value: master - - name: repo - value: https://github.com/argoproj/argo-cd.git - volumes: - - name: k3setc - emptyDir: {} - - name: k3svar - emptyDir: {} - - name: tmp - emptyDir: {} - - templates: - - name: argo-cd-ci - steps: - - - name: build-e2e - template: build-e2e - - - name: test - template: ci-builder - arguments: - parameters: - - name: cmd - value: "dep ensure && make lint test && bash <(curl -s https://codecov.io/bash) -f coverage.out" - - # The step builds argo cd image, deploy argo cd components into throw-away kubernetes cluster provisioned using k3s and run e2e tests against it. - - name: build-e2e - inputs: - artifacts: - - name: code - path: /go/src/github.com/argoproj/argo-cd - git: - repo: "{{workflow.parameters.repo}}" - revision: "{{workflow.parameters.revision}}" - container: - image: argoproj/argo-cd-ci-builder:v0.13.1 - imagePullPolicy: Always - command: [sh, -c] - # Main contains build argocd image. The image is saved it into k3s agent images directory so it could be preloaded by the k3s cluster. - args: [" - dep ensure && until docker ps; do sleep 3; done && \ - make image DEV_IMAGE=true && mkdir -p /var/lib/rancher/k3s/agent/images && \ - docker save argocd:latest > /var/lib/rancher/k3s/agent/images/argocd.tar && \ - touch /var/lib/rancher/k3s/ready && until ls /etc/rancher/k3s/k3s.yaml; do sleep 3; done && \ - kubectl create ns argocd-e2e && kustomize build ./test/manifests/ci | kubectl apply -n argocd-e2e -f - && \ - kubectl rollout status deployment -n argocd-e2e argocd-application-controller && kubectl rollout status deployment -n argocd-e2e argocd-server && \ - git config --global user.email \"test@example.com\" && \ - export ARGOCD_SERVER=$(kubectl get service argocd-server -o=jsonpath={.spec.clusterIP} -n argocd-e2e):443 && make test-e2e" - ] - workingDir: /go/src/github.com/argoproj/argo-cd - env: - - name: USER - value: argocd - - name: DOCKER_HOST - value: 127.0.0.1 - - name: DOCKER_BUILDKIT - value: "1" - - name: KUBECONFIG - value: /etc/rancher/k3s/k3s.yaml - volumeMounts: - - name: tmp - mountPath: /tmp - - name: k3setc - mountPath: /etc/rancher/k3s - - name: k3svar - mountPath: /var/lib/rancher/k3s - sidecars: - - name: dind - image: docker:18.09-dind - securityContext: - privileged: true - resources: - requests: - memory: 2048Mi - cpu: 500m - mirrorVolumeMounts: true - - # Steps waits for file /var/lib/rancher/k3s/ready which indicates that all required images are ready, then starts the cluster. - - name: k3s - image: rancher/k3s:v0.3.0-rc1 - imagePullPolicy: Always - command: [sh, -c] - args: ["until ls /var/lib/rancher/k3s/ready; do sleep 3; done && k3s server || true"] - securityContext: - privileged: true - volumeMounts: - - name: tmp - mountPath: /tmp - - name: k3setc - mountPath: /etc/rancher/k3s - - name: k3svar - mountPath: /var/lib/rancher/k3s - - - name: ci-builder - inputs: - parameters: - - name: cmd - artifacts: - - name: code - path: /go/src/github.com/argoproj/argo-cd - git: - repo: "{{workflow.parameters.repo}}" - revision: "{{workflow.parameters.revision}}" - container: - image: argoproj/argo-cd-ci-builder:v0.13.1 - imagePullPolicy: Always - command: [bash, -c] - args: ["{{inputs.parameters.cmd}}"] - workingDir: /go/src/github.com/argoproj/argo-cd - env: - - name: CODECOV_TOKEN - valueFrom: - secretKeyRef: - name: codecov-token - key: codecov-token - resources: - requests: - memory: 1024Mi - cpu: 200m - archiveLocation: - archiveLogs: true - - - name: ci-dind - inputs: - parameters: - - name: cmd - artifacts: - - name: code - path: /go/src/github.com/argoproj/argo-cd - git: - repo: "{{workflow.parameters.repo}}" - revision: "{{workflow.parameters.revision}}" - container: - image: argoproj/argo-cd-ci-builder:v0.13.1 - imagePullPolicy: Always - command: [sh, -c] - args: ["until docker ps; do sleep 3; done && {{inputs.parameters.cmd}}"] - workingDir: /go/src/github.com/argoproj/argo-cd - env: - - name: DOCKER_HOST - value: 127.0.0.1 - - name: DOCKER_BUILDKIT - value: "1" - resources: - requests: - memory: 1024Mi - cpu: 200m - sidecars: - - name: dind - image: docker:18.09-dind - securityContext: - privileged: true - mirrorVolumeMounts: true - archiveLocation: - archiveLogs: true diff --git a/.circleci/config.yml b/.circleci/config.yml index 55dbe9c4c8..15e3452a56 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -41,15 +41,7 @@ commands: name: Install Go deps command: | set -x - go get github.com/gobuffalo/packr/packr - go get github.com/gogo/protobuf/gogoproto - go get github.com/golang/protobuf/protoc-gen-go - go get github.com/golangci/golangci-lint/cmd/golangci-lint - go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway - go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger - go get github.com/jstemmer/go-junit-report - go get github.com/mattn/goreman - go get golang.org/x/tools/cmd/goimports + make install-dev-tools dep_ensure: steps: - restore_cache: @@ -65,12 +57,12 @@ commands: install_golang: steps: - run: - name: Install Golang v1.11.4 + name: Install Golang v1.12.6 command: | - go get golang.org/dl/go1.11.4 - [ -e /home/circleci/sdk/go1.11.4 ] || go1.11.4 download + go get golang.org/dl/go1.12.6 + [ -e /home/circleci/sdk/go1.12.6 ] || go1.12.6 download echo "export GOPATH=/home/circleci/.go_workspace" | tee -a $BASH_ENV - echo "export PATH=/home/circleci/sdk/go1.11.4/bin:\$PATH" | tee -a $BASH_ENV + echo "export PATH=/home/circleci/sdk/go1.12.6/bin:\$PATH" | tee -a $BASH_ENV - run: name: Golang diagnostics command: | @@ -176,7 +168,7 @@ commands: paths: - /home/circleci/.go_workspace - /home/circleci/.cache/go-build - - /home/circleci/sdk/go1.11.4 + - /home/circleci/sdk/go1.12.6 restore_go_cache: steps: - restore_cache: diff --git a/Dockerfile b/Dockerfile index d5e609b834..d34a4cae52 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ ARG BASE_IMAGE=debian:9.5-slim # Initial stage which pulls prepares build dependencies and CLI tooling we need for our final image # Also used as the image in CI jobs so needs all dependencies #################################################################################################### -FROM golang:1.11.4 as builder +FROM golang:1.12.6 as builder RUN apt-get update && apt-get install -y \ git \ @@ -126,7 +126,7 @@ WORKDIR /home/argocd #################################################################################################### # Argo CD Build stage which performs the actual build of Argo CD binaries #################################################################################################### -FROM golang:1.11.4 as argocd-build +FROM golang:1.12.6 as argocd-build COPY --from=builder /usr/local/bin/dep /usr/local/bin/dep COPY --from=builder /usr/local/bin/packr /usr/local/bin/packr diff --git a/Gopkg.lock b/Gopkg.lock index 3c5d196537..cc42340fde 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -56,14 +56,6 @@ pruneopts = "" revision = "6ce6a3bcf6cde6c5007887677ebd148ec30f42a4" -[[projects]] - branch = "master" - digest = "1:0cac9c70f3308d54ed601878aa66423eb95c374616fdd7d2ea4e2d18b045ae62" - name = "github.com/ant31/crd-validation" - packages = ["pkg"] - pruneopts = "" - revision = "38f6a293f140402953f884b015014e0cd519bbb3" - [[projects]] branch = "master" digest = "1:0caf9208419fa5db5a0ca7112affaa9550c54291dda8e2abac0c0e76181c959e" @@ -1584,7 +1576,6 @@ "github.com/Masterminds/semver", "github.com/TomOnTime/utfutil", "github.com/ajstarks/svgo", - "github.com/ant31/crd-validation/pkg", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1", "github.com/argoproj/argo/util", "github.com/argoproj/pkg/errors", diff --git a/Makefile b/Makefile index b8d3ce1ff0..b1a22f4a99 100644 --- a/Makefile +++ b/Makefile @@ -68,6 +68,21 @@ clientgen: .PHONY: codegen codegen: protogen clientgen openapigen manifests +.PHONY: install-dev-tools +install-dev-tools: + cd ./hack && \ + GO111MODULE=on go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.2.0-alpha.2 && \ + GO111MODULE=on go get github.com/gobuffalo/packr/packr@v1.30.1 && \ + GO111MODULE=on go get github.com/gogo/protobuf/gogoproto@v1.2.1 && \ + GO111MODULE=on go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.2.0-beta.2 && \ + GO111MODULE=on go get github.com/golang/protobuf/protoc-gen-go@v1.3.1 && \ + GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.17.1 && \ + GO111MODULE=on go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.9.2 && \ + GO111MODULE=on go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger@v1.9.2 && \ + GO111MODULE=on go get github.com/jstemmer/go-junit-report && \ + GO111MODULE=on go get github.com/mattn/goreman && \ + GO111MODULE=on go get golang.org/x/tools/cmd/goimports + .PHONY: cli cli: clean-debug CGO_ENABLED=0 ${PACKR_CMD} build -v -i -ldflags '${LDFLAGS}' -o ${DIST_DIR}/${CLI_NAME} ./cmd/argocd diff --git a/assets/swagger.json b/assets/swagger.json index bb48c059dd..f75c01b1b7 100644 --- a/assets/swagger.json +++ b/assets/swagger.json @@ -2430,7 +2430,7 @@ }, "v1alpha1AppProject": { "type": "object", - "title": "AppProject provides a logical grouping of applications, providing controls for:\n* where the apps may deploy to (cluster whitelist)\n* what may be deployed (repository whitelist, resource whitelist/blacklist)\n* who can access these applications (roles, OIDC group claims bindings)\n* and what they can do (RBAC policies)\n* automation access to these roles (JWT tokens)\n+genclient\n+genclient:noStatus\n+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object", + "title": "AppProject provides a logical grouping of applications, providing controls for:\n* where the apps may deploy to (cluster whitelist)\n* what may be deployed (repository whitelist, resource whitelist/blacklist)\n* who can access these applications (roles, OIDC group claims bindings)\n* and what they can do (RBAC policies)\n* automation access to these roles (JWT tokens)\n+genclient\n+genclient:noStatus\n+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object\n+kubebuilder:resource:path=appprojects,shortName=appproj;appprojs", "properties": { "metadata": { "$ref": "#/definitions/v1ObjectMeta" @@ -2502,7 +2502,7 @@ }, "v1alpha1Application": { "type": "object", - "title": "Application is a definition of Application resource.\n+genclient\n+genclient:noStatus\n+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object", + "title": "Application is a definition of Application resource.\n+genclient\n+genclient:noStatus\n+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object\n+kubebuilder:resource:path=applications,shortName=app;apps", "properties": { "metadata": { "$ref": "#/definitions/v1ObjectMeta" diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index f33f61caff..6fd83770de 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -60,15 +60,7 @@ cd ~/go/src/github.com/argoproj/argo-cd Install go dependencies: ```bash -go get github.com/gobuffalo/packr/packr -go get github.com/gogo/protobuf/gogoproto -go get github.com/golang/protobuf/protoc-gen-go -go get github.com/golangci/golangci-lint/cmd/golangci-lint -go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway -go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger -go get github.com/jstemmer/go-junit-report -go get github.com/mattn/goreman -go get golang.org/x/tools/cmd/goimports +make install-dev-tools ``` ## Building diff --git a/hack/gen-crd-spec/main.go b/hack/gen-crd-spec/main.go new file mode 100644 index 0000000000..f0f62ed6b4 --- /dev/null +++ b/hack/gen-crd-spec/main.go @@ -0,0 +1,120 @@ +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "os" + "os/exec" + "strings" + + "github.com/argoproj/argo-cd/pkg/apis/application" + "github.com/argoproj/argo-cd/util/kube" + + "github.com/ghodss/yaml" + extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" +) + +var ( + kindToCRDPath = map[string]string{ + application.ApplicationFullName: "manifests/crds/application-crd.yaml", + application.AppProjectFullName: "manifests/crds/appproject-crd.yaml", + } +) + +func getCustomResourceDefinitions() map[string]*extensionsobj.CustomResourceDefinition { + crdYamlBytes, err := exec.Command( + "controller-gen", + "paths=./pkg/apis/application/...", + "crd:trivialVersions=true", + "output:crd:stdout", + ).Output() + checkErr(err) + + // clean up stuff left by controller-gen + deleteFile("config/webhook/manifests.yaml") + deleteFile("config/webhook") + deleteFile("config") + + objs, err := kube.SplitYAML(string(crdYamlBytes)) + checkErr(err) + crds := make(map[string]*extensionsobj.CustomResourceDefinition) + for i := range objs { + un := objs[i] + + // We need to completely remove validation of problematic fields such as creationTimestamp, + // which get marshalled to `null`, but are typed as as a `string` during Open API validation + removeValidataion(un, "metadata.creationTimestamp") + + crd := toCRD(un) + crd.Labels = map[string]string{ + "app.kubernetes.io/name": crd.Name, + "app.kubernetes.io/part-of": "argocd", + } + crd.Spec.Scope = "Namespaced" + crds[crd.Name] = crd + } + return crds +} + +func deleteFile(path string) { + if _, err := os.Stat(path); os.IsNotExist(err) { + return + } + checkErr(os.Remove(path)) +} + +func removeValidataion(un *unstructured.Unstructured, path string) { + schemaPath := []string{"spec", "validation", "openAPIV3Schema"} + for _, part := range strings.Split(path, ".") { + schemaPath = append(schemaPath, "properties", part) + } + unstructured.RemoveNestedField(un.Object, schemaPath...) +} + +func toCRD(un *unstructured.Unstructured) *extensionsobj.CustomResourceDefinition { + unBytes, err := json.Marshal(un) + checkErr(err) + + var crd extensionsobj.CustomResourceDefinition + err = json.Unmarshal(unBytes, &crd) + checkErr(err) + + return &crd +} + +func checkErr(err error) { + if err != nil { + panic(err) + } +} + +func main() { + crds := getCustomResourceDefinitions() + for kind, path := range kindToCRDPath { + crd := crds[kind] + if crd == nil { + panic(fmt.Sprintf("CRD of kind %s was not generated", kind)) + } + + jsonBytes, err := json.Marshal(crd) + checkErr(err) + + var r unstructured.Unstructured + err = json.Unmarshal(jsonBytes, &r.Object) + checkErr(err) + + // clean up crd yaml before marshalling + unstructured.RemoveNestedField(r.Object, "status") + unstructured.RemoveNestedField(r.Object, "metadata", "creationTimestamp") + jsonBytes, err = json.MarshalIndent(r.Object, "", " ") + checkErr(err) + + yamlBytes, err := yaml.JSONToYAML(jsonBytes) + checkErr(err) + + err = ioutil.WriteFile(path, yamlBytes, 0644) + checkErr(err) + } +} diff --git a/hack/go.mod b/hack/go.mod new file mode 100644 index 0000000000..80407c831b --- /dev/null +++ b/hack/go.mod @@ -0,0 +1,14 @@ +module _/tmp + +go 1.11 + +require ( + github.com/gobuffalo/packr v1.30.1 // indirect + github.com/golang/protobuf v1.3.1 // indirect + github.com/golangci/golangci-lint v1.17.1 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.9.2 // indirect + github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 // indirect + github.com/mattn/goreman v0.2.1 // indirect + golang.org/x/tools v0.0.0-20190627203933-19ff4fff8850 // indirect + sigs.k8s.io/controller-tools v0.2.0-beta.2 // indirect +) diff --git a/hack/go.sum b/hack/go.sum new file mode 100644 index 0000000000..326eea453e --- /dev/null +++ b/hack/go.sum @@ -0,0 +1,329 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OpenPeeDeeP/depguard v0.0.0-20180806142446-a69c782687b2 h1:HTOmFEEYrWi4MW5ZKUx6xfeyM10Sx3kQF65xiQJMPYA= +github.com/OpenPeeDeeP/depguard v0.0.0-20180806142446-a69c782687b2/go.mod h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fatih/color v1.6.0 h1:66qjqZk8kalYAvDRtM1AdAJQI0tj4Wrue3Eq3B3pmFU= +github.com/fatih/color v1.6.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-critic/go-critic v0.0.0-20181204210945-1df300866540 h1:7CU1IXBpPvxpQ/NqJrpuMXMHAw+FB2vfqtRF8tgW9fw= +github.com/go-critic/go-critic v0.0.0-20181204210945-1df300866540/go.mod h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA= +github.com/go-lintpack/lintpack v0.5.2 h1:DI5mA3+eKdWeJ40nU4d6Wc26qmdG8RCi/btYq0TuRN0= +github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-toolsmith/astcast v1.0.0 h1:JojxlmI6STnFVG9yOImLeGREv8W2ocNUM+iOhR6jE7g= +github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= +github.com/go-toolsmith/astcopy v1.0.0 h1:OMgl1b1MEpjFQ1m5ztEO06rz5CUd3oBv9RF7+DyvdG8= +github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= +github.com/go-toolsmith/astequal v0.0.0-20180903214952-dcb477bfacd6/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= +github.com/go-toolsmith/astequal v1.0.0 h1:4zxD8j3JRFNyLN46lodQuqz3xdKSrur7U/sr0SDS/gQ= +github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= +github.com/go-toolsmith/astfmt v0.0.0-20180903215011-8f8ee99c3086/go.mod h1:mP93XdblcopXwlyN4X4uodxXQhldPGZbcEJIimQHrkg= +github.com/go-toolsmith/astfmt v1.0.0 h1:A0vDDXt+vsvLEdbMFJAUBI/uTbRw1ffOPnxsILnFL6k= +github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= +github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= +github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod h1:SV2ur98SGypH1UjcPpCatrV5hPazG6+IfNHbkDXBRrk= +github.com/go-toolsmith/astp v1.0.0 h1:alXE75TXgcmupDsMK1fRAy0YUzLzqPVvBKoyWV+KPXg= +github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= +github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks= +github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= +github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4= +github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= +github.com/go-toolsmith/typep v1.0.0 h1:zKymWyA1TRYvqYrYDrfEMZULyrhcnGY3x7LDKU2XQaA= +github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= +github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/gobuffalo/envy v1.6.15 h1:OsV5vOpHYUpP7ZLS6sem1y40/lNX1BZj+ynMiRi21lQ= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/envy v1.7.0 h1:GlXgaiBkmrYMHco6t4j7SacKO4XUjvh5pwXh0f4uxXU= +github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/logger v1.0.0 h1:xw9Ko9EcC5iAFprrjJ6oZco9UpzS5MQ4jAwghsLHdy4= +github.com/gobuffalo/logger v1.0.0/go.mod h1:2zbswyIUa45I+c+FLXuWl9zSWEiVuthsk8ze5s8JvPs= +github.com/gobuffalo/packd v0.3.0 h1:eMwymTkA1uXsqxS0Tpoop3Lc0u3kTfiMBE6nKtQU4g4= +github.com/gobuffalo/packd v0.3.0/go.mod h1:zC7QkmNkYVGKPw4tHpBQ+ml7W/3tIebgeo1b36chA3Q= +github.com/gobuffalo/packr v1.30.1 h1:hu1fuVR3fXEZR7rXNW3h8rqSML8EVAf6KNm0NKO/wKg= +github.com/gobuffalo/packr v1.30.1/go.mod h1:ljMyFO2EcrnzsHsN99cvbq055Y9OhRrIaviy289eRuk= +github.com/gobuffalo/packr/v2 v2.5.1 h1:TFOeY2VoGamPjQLiNDT3mn//ytzk236VMO2j7iHxJR4= +github.com/gobuffalo/packr/v2 v2.5.1/go.mod h1:8f9c96ITobJlPzI44jj+4tHnEKNt0xXWSVlXRN9X1Iw= +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/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.0.0 h1:HzcpUG60pfl43n9d2qbdi/3l1uKpAmxlfWEPWtV/QxM= +github.com/golang/mock v1.0.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= +github.com/golangci/errcheck v0.0.0-20181003203344-ef45e06d44b6 h1:i2jIkQFb8RG45DuQs+ElyROY848cSJIoIkBM+7XXypA= +github.com/golangci/errcheck v0.0.0-20181003203344-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= +github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613 h1:9kfjN3AdxcbsZBf8NjltjWihK2QfBBBZuv91cMFfDHw= +github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= +github.com/golangci/go-tools v0.0.0-20180109140146-af6baa5dc196 h1:9rtVlONXLF1rJZzvLt4tfOXtnAFUEhxCJ64Ibzj6ECo= +github.com/golangci/go-tools v0.0.0-20180109140146-af6baa5dc196/go.mod h1:unzUULGw35sjyOYjUt0jMTXqHlZPpPc6e+xfO4cd6mM= +github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3 h1:pe9JHs3cHHDQgOFXJJdYkK6fLz2PWyYtP4hthoCMvs8= +github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o= +github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee h1:J2XAy40+7yz70uaOiMbNnluTg7gyQhtGqLQncQh+4J8= +github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= +github.com/golangci/gofmt v0.0.0-20181105071733-0b8337e80d98 h1:ir6/L2ZOJfFrJlOTsuf/hlzdPuUwXV/VzkSlgS6f1vs= +github.com/golangci/gofmt v0.0.0-20181105071733-0b8337e80d98/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= +github.com/golangci/golangci-lint v1.17.1 h1:lc8Hf9GPCjIr0hg3S/xhvFT1+Hydass8F1xchr8jkME= +github.com/golangci/golangci-lint v1.17.1/go.mod h1:+5sJSl2h3aly+fpmL2meSP8CaSKua2E4Twi9LPy7b1g= +github.com/golangci/gosec v0.0.0-20180901114220-66fb7fc33547 h1:qMomh8bv+kDazm1dSLZ9S3zZ2PJZMHL4ilfBjxFOlmI= +github.com/golangci/gosec v0.0.0-20180901114220-66fb7fc33547/go.mod h1:0qUabqiIQgfmlAmulqxyiGkkyF6/tOGSnY2cnPVwrzU= +github.com/golangci/ineffassign v0.0.0-20180808204949-42439a7714cc h1:XRFao922N8F3EcIXBSNX8Iywk+GI0dxD/8FicMX2D/c= +github.com/golangci/ineffassign v0.0.0-20180808204949-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU= +github.com/golangci/lint-1 v0.0.0-20180610141402-ee948d087217 h1:r7vyX+SN24x6+5AnpnrRn/bdwBb7U+McZqCHOVtXDuk= +github.com/golangci/lint-1 v0.0.0-20180610141402-ee948d087217/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= +github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770 h1:EL/O5HGrF7Jaq0yNhBLucz9hTuRzj2LdwGBOaENgxIk= +github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= +github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21 h1:leSNB7iYzLYSSx3J/s5sVf4Drkc68W2wm4Ixh/mr0us= +github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI= +github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0 h1:HVfrLniijszjS1aiNg8JbBMO2+E1WIQ+j/gL4SQqGPg= +github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf h1:+RRA9JqSOZFfKrOeqr2z77+8R2RKyh8PG66dcu1V0ck= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3 h1:JVnpOZS+qxli+rgVl98ILOXVNbW+kb5wcxeGx8ShUIw= +github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= +github.com/grpc-ecosystem/grpc-gateway v1.9.2 h1:S+ef0492XaIknb8LMjcwgW2i3cNTzDYMmDrOThOJNWc= +github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/hcl v0.0.0-20180404174102-ef8a98b0bbce/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/karrick/godirwalk v1.10.12 h1:BqUm+LuJcXjGv1d2mj3gBiQyrQ57a0rYoAmhvJQ7RDU= +github.com/karrick/godirwalk v1.10.12/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v0.0.0-20161130080628-0de1eaf82fa3/go.mod h1:jxZFDH7ILpTPQTk+E2s+z4CUas9lVNjIuKR4c5/zKgM= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/magiconair/properties v1.7.6/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/markbates/inflect v1.0.4 h1:5fh1gzTFhfae06u3hzHYO9xe3l3v3nW5Pwt3naLTP5g= +github.com/markbates/inflect v1.0.4/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= +github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/goreman v0.2.1 h1:6Kdjka0uWKsVM5t4d9UqzzIm2jcPJIP7QWu0ByKvlDE= +github.com/mattn/goreman v0.2.1/go.mod h1:8HCyYaC38XwX0AOu0+fuY02Y5Z7CkITW0oVJavbna4Q= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-ps v0.0.0-20170309133038-4fdf99ab2936/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= +github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mozilla/tls-observatory v0.0.0-20180409132520-8791a200eb40/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= +github.com/nbutton23/zxcvbn-go v0.0.0-20160627004424-a22cb81b2ecd/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= +github.com/nbutton23/zxcvbn-go v0.0.0-20171102151520-eafdab6b0663 h1:Ri1EhipkbhWsffPJ3IPlrb4SkTOPa2PfRXp3jchBczw= +github.com/nbutton23/zxcvbn-go v0.0.0-20171102151520-eafdab6b0663/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= +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/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pelletier/go-toml v1.1.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2 h1:J7U/N7eRtzjhs26d6GqMh2HBuXP8/Z64Densiiieafo= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sourcegraph/go-diff v0.5.1 h1:gO6i5zugwzo1RVTvgvfwCOSVegNuvnNi6bAD1QCmkHs= +github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE= +github.com/spf13/afero v1.1.0/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.2/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.0.2/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= +github.com/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/timakin/bodyclose v0.0.0-20190407043127-4a873e97b2bb h1:lI9ufgFfvuqRctP9Ny8lDDLbSWCMxBPletcSqrnyFYM= +github.com/timakin/bodyclose v0.0.0-20190407043127-4a873e97b2bb/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= +github.com/valyala/quicktemplate v1.1.1/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4 h1:ydJNl0ENAG67pFbB+9tfhiL2pYqLhfoaZFw/cjLhY4A= +golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/net v0.0.0-20170915142106-8351a756f30f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09 h1:KaQtG+aDELoNmXYas3TVkGNYRuq8JQ1aa7LJt8EXVyo= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20171026204733-164713f0dfce/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180925112736-b09afc3d579e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190515120540-06a5c4944438 h1:khxRGsvPk4n2y8I/mLLjp7e5dMTJmH75wvqS6nMwUtY= +golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.0.0-20170915090833-1cbadb444a80/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.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20170915040203-e531a2a1c15f/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181117154741-2ddaf7f79a09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190121143147-24cd39ecf745/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190501045030-23463209683d h1:D7DVZUZEUgsSIDTivnUtVeGfN5AvhDIKtdIZAqx0ieE= +golang.org/x/tools v0.0.0-20190501045030-23463209683d/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190521203540-521d6ed310dd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190624180213-70d37148ca0c h1:KfpJVdWhuRqNk4XVXzjXf2KAV4TBEP77SYdFGjeGuIE= +golang.org/x/tools v0.0.0-20190624180213-70d37148ca0c/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190627203933-19ff4fff8850 h1:fA72gpMxsjJw+HAMdKku/cilEAHBQ9yEhmYkRO3wzyM= +golang.org/x/tools v0.0.0-20190627203933-19ff4fff8850/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/api v0.0.0-20190222213804-5cb15d344471/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= +k8s.io/api v0.0.0-20190409021203-6e4e0e4f393b h1:aBGgKJUM9Hk/3AE8WaZIApnTxG35kbuQba2w+SXqezo= +k8s.io/api v0.0.0-20190409021203-6e4e0e4f393b/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= +k8s.io/apiextensions-apiserver v0.0.0-20190228180357-d002e88f6236/go.mod h1:IxkesAMoaCRoLrPJdZNZUQp9NfZnzqaVzLhb2VEQzXE= +k8s.io/apiextensions-apiserver v0.0.0-20190409022649-727a075fdec8 h1:q1Qvjzs/iEdXF6A1a8H3AKVFDzJNcJn3nXMs6R6qFtA= +k8s.io/apiextensions-apiserver v0.0.0-20190409022649-727a075fdec8/go.mod h1:IxkesAMoaCRoLrPJdZNZUQp9NfZnzqaVzLhb2VEQzXE= +k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= +k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d h1:Jmdtdt1ZnoGfWWIIik61Z7nKYgO3J+swQJtPYsP9wHA= +k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= +k8s.io/klog v0.2.0 h1:0ElL0OHzF3N+OhoJTL0uca20SxtYt4X4+bzHeqrB83c= +k8s.io/klog v0.2.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= +mvdan.cc/unparam v0.0.0-20190124213536-fbb59629db34 h1:B1LAOfRqg2QUyCdzfjf46quTSYUTAK5OCwbh6pljHbM= +mvdan.cc/unparam v0.0.0-20190124213536-fbb59629db34/go.mod h1:H6SUd1XjIs+qQCyskXg5OFSrilMRUkD8ePJpHKDPaeY= +sigs.k8s.io/controller-tools v0.2.0-alpha.1 h1:WAFYSisW4Nmp/WPCs40FfkmGMglf+QauHB8mWPpYqxM= +sigs.k8s.io/controller-tools v0.2.0-alpha.1/go.mod h1:iog+z/LWZwDaOb2rfxUBZsTTPbloVgyVdXMye0kg8H8= +sigs.k8s.io/controller-tools v0.2.0-alpha.2 h1:zrVHUPo3BCiC82uWbY7upoH88y7GScDyO+iQKXc1wCE= +sigs.k8s.io/controller-tools v0.2.0-alpha.2/go.mod h1:gC5UAnK1jbxWnDaqTi0yxKIsRsRwshzeRtTUGbM9vos= +sigs.k8s.io/controller-tools v0.2.0-beta.2 h1:ucniFzEuW7PFfFDuUxacdY4Fy4q065wPguVl+BE2/t0= +sigs.k8s.io/controller-tools v0.2.0-beta.2/go.mod h1:gC5UAnK1jbxWnDaqTi0yxKIsRsRwshzeRtTUGbM9vos= +sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4 h1:JPJh2pk3+X4lXAkZIk2RuE/7/FoK9maXw+TNPJhVS/c= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/hack/update-openapi-validation/main.go b/hack/update-openapi-validation/main.go deleted file mode 100644 index 3aa4f45563..0000000000 --- a/hack/update-openapi-validation/main.go +++ /dev/null @@ -1,63 +0,0 @@ -package main - -import ( - "encoding/json" - "io/ioutil" - "log" - "os" - - crdutil "github.com/ant31/crd-validation/pkg" - "github.com/ghodss/yaml" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - - "github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1" -) - -// Generate OpenAPI spec definitions for Rollout Resource -func main() { - if len(os.Args) != 3 { - log.Fatalf("Usage: %s CRDSPEC TYPE", os.Args[0]) - } - crdPath := os.Args[1] - typePath := os.Args[2] - - data, err := ioutil.ReadFile(crdPath) - if err != nil { - log.Fatal(err) - } - var crd apiextensions.CustomResourceDefinition - err = yaml.Unmarshal(data, &crd) - if err != nil { - log.Fatal(err) - } - crd.Spec.Validation = crdutil.GetCustomResourceValidation(typePath, v1alpha1.GetOpenAPIDefinitions) - - jsonBytes, err := json.Marshal(crd) - if err != nil { - log.Fatal(err) - } - - var r unstructured.Unstructured - if err := json.Unmarshal(jsonBytes, &r.Object); err != nil { - log.Fatal(err) - } - - unstructured.RemoveNestedField(r.Object, "status") - unstructured.RemoveNestedField(r.Object, "metadata", "creationTimestamp") - jsonBytes, err = json.MarshalIndent(r.Object, "", " ") - if err != nil { - log.Fatal(err) - } - yamlBytes, err := yaml.JSONToYAML(jsonBytes) - if err != nil { - log.Fatal(err) - } - - err = ioutil.WriteFile(crdPath, yamlBytes, 0644) - if err != nil { - panic(err) - } - os.Exit(0) - -} diff --git a/hack/update-openapi.sh b/hack/update-openapi.sh index e0e148e079..28575682c4 100755 --- a/hack/update-openapi.sh +++ b/hack/update-openapi.sh @@ -15,11 +15,4 @@ go run ${CODEGEN_PKG}/cmd/openapi-gen/openapi-gen.go \ --report-filename pkg/apis/api-rules/violation_exceptions.list \ $@ -go run ./hack/update-openapi-validation/main.go \ - ./manifests/crds/application-crd.yaml \ - github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1.Application - -go run ./hack/update-openapi-validation/main.go \ - ./manifests/crds/appproject-crd.yaml \ - github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1.AppProject - +go run ./hack/gen-crd-spec/main.go diff --git a/manifests/crds/application-crd.yaml b/manifests/crds/application-crd.yaml index edd26c338b..57a8e09e0c 100644 --- a/manifests/crds/application-crd.yaml +++ b/manifests/crds/application-crd.yaml @@ -16,6 +16,7 @@ spec: scope: Namespaced validation: openAPIV3Schema: + description: Application is a definition of Application resource. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -27,12 +28,359 @@ spec: 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/api-conventions.md#types-kinds' type: string - metadata: {} + metadata: + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + clusterName: + description: The name of the cluster which the object belongs to. This + is used to distinguish resources with same name and namespace in different + clusters. This field is not set anywhere right now and apiserver is + going to ignore it if set in create or update request. + type: string + deletionGracePeriodSeconds: + description: Number of seconds allowed for this object to gracefully + terminate before it will be removed from the system. Only set when + deletionTimestamp is also set. May only be shortened. Read-only. + format: int64 + type: integer + deletionTimestamp: + description: "DeletionTimestamp is RFC 3339 date and time at which this + resource will be deleted. This field is set by the server when a graceful + deletion is requested by the user, and is not directly settable by + a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in + this field, once the finalizers list is empty. As long as the finalizers + list contains items, deletion is blocked. Once the deletionTimestamp + is set, this value may not be unset or be set further into the future, + although it may be shortened or the resource may be deleted prior + to this time. For example, a user may request that a pod is deleted + in 30 seconds. The Kubelet will react by sending a graceful termination + signal to the containers in the pod. After that 30 seconds, the Kubelet + will send a hard termination signal (SIGKILL) to the container and + after cleanup, remove the pod from the API. In the presence of network + partitions, this object may still exist after this timestamp, until + an administrator or automated process can determine the resource is + fully terminated. If not set, graceful deletion of the object has + not been requested. \n Populated by the system when a graceful deletion + is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" + format: date-time + type: string + finalizers: + description: Must be empty before the object is deleted from the registry. + Each entry is an identifier for the responsible component that will + remove the entry from the list. If the deletionTimestamp of the object + is non-nil, entries in this list can only be removed. + items: + type: string + type: array + generateName: + description: "GenerateName is an optional prefix, used by the server, + to generate a unique name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique + suffix. The provided value has the same validation rules as the Name + field, and may be truncated by the length of the suffix required to + make the value unique on the server. \n If this field is specified + and the generated name exists, the server will NOT return a 409 - + instead, it will either return 201 Created or 500 with Reason ServerTimeout + indicating a unique name could not be found in the time allotted, + and the client should retry (optionally after the time indicated in + the Retry-After header). \n Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency" + type: string + generation: + description: A sequence number representing a specific generation of + the desired state. Populated by the system. Read-only. + format: int64 + type: integer + initializers: + description: "An initializer is a controller which enforces some system + invariant at object creation time. This field is a list of initializers + that have not yet acted on this object. If nil or empty, this object + has been completely initialized. Otherwise, the object is considered + uninitialized and is hidden (in list/watch and get calls) from clients + that haven't explicitly asked to observe uninitialized objects. \n + When an object is created, the system will populate this list with + the current set of initializers. Only privileged users may set or + modify this list. Once it is empty, it may not be modified further + by any user. \n DEPRECATED - initializers are an alpha field and will + be removed in v1.15." + properties: + pending: + description: Pending is a list of initializers that must execute + in order before this object is visible. When the last pending + initializer is removed, and no failing result is set, the initializers + struct will be set to nil and the object is considered as initialized + and visible to all clients. + items: + properties: + name: + description: name of the process that is responsible for initializing + this object. + type: string + required: + - name + type: object + type: array + result: + description: If result is set with the Failure field, the object + will be persisted to storage and then deleted, ensuring that other + clients can observe the deletion. + 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/api-conventions.md#resources' + type: string + code: + description: Suggested HTTP return code for this status, 0 if + not set. + format: int32 + type: integer + details: + description: Extended data associated with the reason. Each + reason may define its own extended details. This field is + optional and the data returned is not guaranteed to conform + to any schema except that defined by the reason type. + properties: + causes: + description: The Causes array includes more details associated + with the StatusReason failure. Not all StatusReasons may + provide detailed causes. + items: + properties: + field: + description: "The field of the resource that has caused + this error, as named by its JSON serialization. + May include dot and postfix notation for nested + attributes. Arrays are zero-indexed. Fields may + appear more than once in an array of causes due + to fields having multiple errors. Optional. \n Examples: + \ \"name\" - the field \"name\" on the current + resource \"items[0].name\" - the field \"name\" + on the first array entry in \"items\"" + type: string + message: + description: A human-readable description of the cause + of the error. This field may be presented as-is + to a reader. + type: string + reason: + description: A machine-readable description of the + cause of the error. If this value is empty there + is no information available. + type: string + type: object + type: array + group: + description: The group attribute of the resource associated + with the status StatusReason. + type: string + kind: + description: 'The kind attribute of the resource associated + with the status StatusReason. On some operations may differ + from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: The name attribute of the resource associated + with the status StatusReason (when there is a single name + which can be described). + type: string + retryAfterSeconds: + description: If specified, the time in seconds before the + operation should be retried. Some errors may indicate + the client must take an alternate action - for those errors + this field may indicate how long to wait before taking + the alternate action. + format: int32 + type: integer + uid: + description: 'UID of the resource. (when there is a single + resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + type: object + 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/api-conventions.md#types-kinds' + type: string + message: + description: A human-readable description of the status of this + operation. + type: string + metadata: + description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + properties: + continue: + description: continue may be set if the user set a limit + on the number of items returned, and indicates that the + server has more data available. The value is opaque and + may be used to issue another request to the endpoint that + served this list to retrieve the next set of available + objects. Continuing a consistent list may not be possible + if the server configuration has changed or more than a + few minutes have passed. The resourceVersion field returned + when using this continue value will be identical to the + value in the first response, unless you have received + this token from an error message. + type: string + resourceVersion: + description: 'String that identifies the server''s internal + version of this object that can be used by clients to + determine when objects have changed. Value must be treated + as opaque by clients and passed unmodified back to the + server. Populated by the system. Read-only. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency' + type: string + selfLink: + description: selfLink is a URL representing this object. + Populated by the system. Read-only. + type: string + type: object + reason: + description: A machine-readable description of why this operation + is in the "Failure" status. If this value is empty there is + no information available. A Reason clarifies an HTTP status + code but does not override it. + type: string + status: + description: 'Status of the operation. One of: "Success" or + "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' + type: string + type: object + required: + - pending + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + managedFields: + description: "ManagedFields maps workflow-id and version to the set + of fields that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or understand + this field. A workflow can be the user's name, a controller's name, + or the name of a specific apply path like \"ci-cd\". The set of fields + is always in the version that the workflow used when modifying the + object. \n This field is alpha and can be changed or removed without + notice." + items: + properties: + apiVersion: + description: APIVersion defines the version of this resource that + this field set applies to. The format is "group/version" just + like the top-level APIVersion field. It is necessary to track + the version of a field set because it cannot be automatically + converted. + type: string + fields: + additionalProperties: true + description: Fields identifies a set of fields. + type: object + manager: + description: Manager is an identifier of the workflow managing + these fields. + type: string + operation: + description: Operation is the type of operation which lead to + this ManagedFieldsEntry being created. The only valid values + for this field are 'Apply' and 'Update'. + type: string + time: + description: Time is timestamp of when these fields were set. + It should always be empty if Operation is 'Apply' + format: date-time + type: string + type: object + type: array + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within each name must be unique. + An empty namespace is equivalent to the \"default\" namespace, but + \"default\" is the canonical representation. Not all objects are required + to be scoped to a namespace - the value of this field for those objects + will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: + http://kubernetes.io/docs/user-guide/namespaces" + type: string + ownerReferences: + description: List of objects depended by this object. If ALL objects + in the list have been deleted, this object will be garbage collected. + If this object is managed by a controller, then an entry in this list + will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + items: + properties: + apiVersion: + description: API version of the referent. + type: string + blockOwnerDeletion: + description: If true, AND if the owner has the "foregroundDeletion" + finalizer, then the owner cannot be deleted from the key-value + store until this reference is removed. Defaults to false. To + set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + type: boolean + controller: + description: If true, this reference points to the managing controller. + type: boolean + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + uid: + description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + required: + - apiVersion + - kind + - name + - uid + type: object + type: array + resourceVersion: + description: "An opaque value that represents the internal version of + this object that can be used by clients to determine when objects + have changed. May be used for optimistic concurrency, change detection, + and the watch operation on a resource or set of resources. Clients + must treat these values as opaque and passed unmodified back to the + server. They may only be valid for a particular resource or set of + resources. \n Populated by the system. Read-only. Value must be treated + as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency" + type: string + selfLink: + description: SelfLink is a URL representing this object. Populated by + the system. Read-only. + type: string + uid: + description: "UID is the unique in time and space value for this object. + It is typically generated by the server on successful creation of + a resource and is not allowed to change on PUT operations. \n Populated + by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" + type: string + type: object operation: - description: Operation contains requested operation parameters. properties: sync: - description: SyncOperation contains sync operation details. properties: dryRun: description: DryRun will perform a `kubectl apply --dry-run` without @@ -51,7 +399,6 @@ spec: resources: description: Resources describes which resources to sync items: - description: SyncOperationResource contains resources to sync. properties: group: type: string @@ -69,19 +416,18 @@ spec: to. If omitted, will use the revision specified in app spec. type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application environment. + description: Source overrides the source definition set in the application. + This is typically set in a Rollback operation and nil during a + Sync operation properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -97,7 +443,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -115,12 +460,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm template properties: name: description: Name is the name of the helm parameter @@ -142,8 +486,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -153,7 +496,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -168,16 +510,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image tag properties: name: description: Name is the name of the image (e.g. nginx) @@ -203,7 +545,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -224,12 +566,11 @@ spec: - path type: object syncStrategy: - description: SyncStrategy controls the manner in which a sync is - performed + description: SyncStrategy describes how to perform the sync properties: apply: - description: SyncStrategyApply uses `kubectl apply` to perform - the apply + description: Apply wil perform a `kubectl apply` to perform + the sync. properties: force: description: Force indicates whether or not to supply the @@ -239,33 +580,24 @@ spec: type: boolean type: object hook: - description: SyncStrategyHook will perform a sync using hooks - annotations. If no hook annotation is specified falls back - to `kubectl apply`. + description: Hook will submit any referenced resources to perform + the sync. This is the default strategy properties: - SyncStrategyApply: - description: SyncStrategyApply uses `kubectl apply` to perform - the apply - 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. - type: boolean - type: object + 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. + 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. properties: destination: - description: ApplicationDestination contains deployment destination - information + description: Destination overrides the kubernetes server and namespace + defined in the environment ksonnet app.yaml properties: namespace: description: Namespace overrides the environment namespace value @@ -280,9 +612,6 @@ spec: 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 @@ -321,19 +650,17 @@ spec: that application belongs to 'default' project. type: string source: - description: ApplicationSource contains information about github repository, - path within repository and target application environment. + description: Source is a reference to the location ksonnet application + definition properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -349,7 +676,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -367,12 +693,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm template properties: name: description: Name is the name of the helm parameter @@ -394,7 +719,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -404,7 +729,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -419,16 +743,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image tag properties: name: description: Name is the name of the image (e.g. nginx) @@ -454,7 +778,7 @@ spec: a type: string plugin: - description: ApplicationSourcePlugin holds config management plugin + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -474,12 +798,11 @@ spec: - path type: object syncPolicy: - description: SyncPolicy controls when a sync will be performed in response - to updates in git + description: SyncPolicy controls when a sync will be performed properties: automated: - description: SyncPolicyAutomated controls the behavior of an automated - sync + description: Automated will keep an application synced to the target + revision properties: prune: description: 'Prune will prune resources automatically as part @@ -493,13 +816,9 @@ spec: - project type: object status: - description: ApplicationStatus contains information about application sync, - health status properties: conditions: items: - description: ApplicationCondition contains details about current application - condition properties: message: description: Message contains human-readable message indicating @@ -522,30 +841,26 @@ spec: type: object history: items: - description: RevisionHistory contains information relevant to an application - deployment properties: - deployedAt: {} + deployedAt: + format: date-time + type: string id: format: int64 type: integer revision: type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application environment. properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -561,7 +876,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -579,13 +893,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -607,8 +919,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -618,8 +929,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -634,17 +943,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -671,7 +979,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -697,21 +1005,23 @@ spec: - id type: object type: array - observedAt: {} + observedAt: + format: date-time + type: string operationState: - description: OperationState contains information about state of currently - performing operation on application. properties: - finishedAt: {} + finishedAt: + description: FinishedAt contains time of operation completion + format: date-time + type: string message: description: Message hold any pertinent messages when attempting to perform operation (typically errors). type: string operation: - description: Operation contains requested operation parameters. + description: Operation is the original requested operation properties: sync: - description: SyncOperation contains sync operation details. properties: dryRun: description: DryRun will perform a `kubectl apply --dry-run` @@ -730,8 +1040,6 @@ spec: resources: description: Resources describes which resources to sync items: - description: SyncOperationResource contains resources - to sync. properties: group: type: string @@ -750,21 +1058,20 @@ spec: specified in app spec. type: string source: - description: ApplicationSource contains information about - github repository, path within repository and target application - environment. + description: Source overrides the source definition set + in the application. This is typically set in a Rollback + operation and nil during a Sync operation properties: directory: + description: Directory holds path/directory specific + options properties: 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 @@ -781,7 +1088,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -799,15 +1105,12 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific - options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a - helm template properties: name: description: Name is the name of the helm @@ -831,8 +1134,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet - specific options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application @@ -842,8 +1144,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -858,10 +1158,11 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object @@ -869,8 +1170,6 @@ spec: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize - image tag properties: name: description: Name is the name of the image @@ -897,7 +1196,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -918,12 +1217,11 @@ spec: - path type: object syncStrategy: - description: SyncStrategy controls the manner in which a - sync is performed + description: SyncStrategy describes how to perform the sync properties: apply: - description: SyncStrategyApply uses `kubectl apply` - to perform the apply + description: Apply wil perform a `kubectl apply` to + perform the sync. properties: force: description: Force indicates whether or not to supply @@ -934,22 +1232,16 @@ spec: type: boolean type: object hook: - description: SyncStrategyHook will perform a sync using - hooks annotations. If no hook annotation is specified - falls back to `kubectl apply`. + description: Hook will submit any referenced resources + to perform the sync. This is the default strategy properties: - SyncStrategyApply: - description: SyncStrategyApply uses `kubectl apply` - to perform the apply - 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. - type: boolean - type: object + 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. + type: boolean type: object type: object type: object @@ -957,16 +1249,17 @@ spec: phase: description: Phase is the current phase of the operation type: string - startedAt: {} + startedAt: + description: StartedAt contains time of operation start + format: date-time + type: string syncResult: - description: SyncOperationResult represent result of sync operation + description: SyncResult is the result of a Sync operation properties: resources: description: Resources holds the sync result of each individual resource items: - description: ResourceResult holds the operation result details - of a specific resource properties: group: type: string @@ -1011,21 +1304,18 @@ spec: description: Revision holds the git commit SHA of the sync type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application - environment. + description: Source records the application source information + of the sync, used for comparing auto-sync properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -1042,7 +1332,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1060,13 +1349,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -1088,8 +1375,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -1099,8 +1385,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -1115,18 +1399,17 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -1153,7 +1436,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -1181,11 +1464,11 @@ spec: - phase - startedAt type: object - reconciledAt: {} + reconciledAt: + format: date-time + type: string resources: items: - description: ResourceStatus holds the current sync and health status - of a resource properties: group: type: string @@ -1227,16 +1510,10 @@ spec: type: array type: object sync: - description: SyncStatus is a comparison result of application spec and - deployed application. properties: comparedTo: - description: ComparedTo contains application source and target which - was used for resources comparison properties: destination: - description: ApplicationDestination contains deployment destination - information properties: namespace: description: Namespace overrides the environment namespace @@ -1248,21 +1525,16 @@ spec: type: string type: object source: - description: ApplicationSource contains information about github - repository, path within repository and target application - environment. properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -1279,7 +1551,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1297,13 +1568,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -1325,8 +1594,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -1336,8 +1604,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -1352,18 +1618,17 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -1390,7 +1655,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -1422,5 +1687,11 @@ spec: - status type: object type: object + required: + - metadata + - spec type: object - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true diff --git a/manifests/crds/appproject-crd.yaml b/manifests/crds/appproject-crd.yaml index e4bd45fa54..fc35fa987d 100644 --- a/manifests/crds/appproject-crd.yaml +++ b/manifests/crds/appproject-crd.yaml @@ -16,6 +16,11 @@ spec: scope: Namespaced validation: 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)' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -27,14 +32,371 @@ spec: 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/api-conventions.md#types-kinds' type: string - metadata: {} + metadata: + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + clusterName: + description: The name of the cluster which the object belongs to. This + is used to distinguish resources with same name and namespace in different + clusters. This field is not set anywhere right now and apiserver is + going to ignore it if set in create or update request. + type: string + deletionGracePeriodSeconds: + description: Number of seconds allowed for this object to gracefully + terminate before it will be removed from the system. Only set when + deletionTimestamp is also set. May only be shortened. Read-only. + format: int64 + type: integer + deletionTimestamp: + description: "DeletionTimestamp is RFC 3339 date and time at which this + resource will be deleted. This field is set by the server when a graceful + deletion is requested by the user, and is not directly settable by + a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in + this field, once the finalizers list is empty. As long as the finalizers + list contains items, deletion is blocked. Once the deletionTimestamp + is set, this value may not be unset or be set further into the future, + although it may be shortened or the resource may be deleted prior + to this time. For example, a user may request that a pod is deleted + in 30 seconds. The Kubelet will react by sending a graceful termination + signal to the containers in the pod. After that 30 seconds, the Kubelet + will send a hard termination signal (SIGKILL) to the container and + after cleanup, remove the pod from the API. In the presence of network + partitions, this object may still exist after this timestamp, until + an administrator or automated process can determine the resource is + fully terminated. If not set, graceful deletion of the object has + not been requested. \n Populated by the system when a graceful deletion + is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" + format: date-time + type: string + finalizers: + description: Must be empty before the object is deleted from the registry. + Each entry is an identifier for the responsible component that will + remove the entry from the list. If the deletionTimestamp of the object + is non-nil, entries in this list can only be removed. + items: + type: string + type: array + generateName: + description: "GenerateName is an optional prefix, used by the server, + to generate a unique name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique + suffix. The provided value has the same validation rules as the Name + field, and may be truncated by the length of the suffix required to + make the value unique on the server. \n If this field is specified + and the generated name exists, the server will NOT return a 409 - + instead, it will either return 201 Created or 500 with Reason ServerTimeout + indicating a unique name could not be found in the time allotted, + and the client should retry (optionally after the time indicated in + the Retry-After header). \n Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency" + type: string + generation: + description: A sequence number representing a specific generation of + the desired state. Populated by the system. Read-only. + format: int64 + type: integer + initializers: + description: "An initializer is a controller which enforces some system + invariant at object creation time. This field is a list of initializers + that have not yet acted on this object. If nil or empty, this object + has been completely initialized. Otherwise, the object is considered + uninitialized and is hidden (in list/watch and get calls) from clients + that haven't explicitly asked to observe uninitialized objects. \n + When an object is created, the system will populate this list with + the current set of initializers. Only privileged users may set or + modify this list. Once it is empty, it may not be modified further + by any user. \n DEPRECATED - initializers are an alpha field and will + be removed in v1.15." + properties: + pending: + description: Pending is a list of initializers that must execute + in order before this object is visible. When the last pending + initializer is removed, and no failing result is set, the initializers + struct will be set to nil and the object is considered as initialized + and visible to all clients. + items: + properties: + name: + description: name of the process that is responsible for initializing + this object. + type: string + required: + - name + type: object + type: array + result: + description: If result is set with the Failure field, the object + will be persisted to storage and then deleted, ensuring that other + clients can observe the deletion. + 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/api-conventions.md#resources' + type: string + code: + description: Suggested HTTP return code for this status, 0 if + not set. + format: int32 + type: integer + details: + description: Extended data associated with the reason. Each + reason may define its own extended details. This field is + optional and the data returned is not guaranteed to conform + to any schema except that defined by the reason type. + properties: + causes: + description: The Causes array includes more details associated + with the StatusReason failure. Not all StatusReasons may + provide detailed causes. + items: + properties: + field: + description: "The field of the resource that has caused + this error, as named by its JSON serialization. + May include dot and postfix notation for nested + attributes. Arrays are zero-indexed. Fields may + appear more than once in an array of causes due + to fields having multiple errors. Optional. \n Examples: + \ \"name\" - the field \"name\" on the current + resource \"items[0].name\" - the field \"name\" + on the first array entry in \"items\"" + type: string + message: + description: A human-readable description of the cause + of the error. This field may be presented as-is + to a reader. + type: string + reason: + description: A machine-readable description of the + cause of the error. If this value is empty there + is no information available. + type: string + type: object + type: array + group: + description: The group attribute of the resource associated + with the status StatusReason. + type: string + kind: + description: 'The kind attribute of the resource associated + with the status StatusReason. On some operations may differ + from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: The name attribute of the resource associated + with the status StatusReason (when there is a single name + which can be described). + type: string + retryAfterSeconds: + description: If specified, the time in seconds before the + operation should be retried. Some errors may indicate + the client must take an alternate action - for those errors + this field may indicate how long to wait before taking + the alternate action. + format: int32 + type: integer + uid: + description: 'UID of the resource. (when there is a single + resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + type: object + 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/api-conventions.md#types-kinds' + type: string + message: + description: A human-readable description of the status of this + operation. + type: string + metadata: + description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + properties: + continue: + description: continue may be set if the user set a limit + on the number of items returned, and indicates that the + server has more data available. The value is opaque and + may be used to issue another request to the endpoint that + served this list to retrieve the next set of available + objects. Continuing a consistent list may not be possible + if the server configuration has changed or more than a + few minutes have passed. The resourceVersion field returned + when using this continue value will be identical to the + value in the first response, unless you have received + this token from an error message. + type: string + resourceVersion: + description: 'String that identifies the server''s internal + version of this object that can be used by clients to + determine when objects have changed. Value must be treated + as opaque by clients and passed unmodified back to the + server. Populated by the system. Read-only. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency' + type: string + selfLink: + description: selfLink is a URL representing this object. + Populated by the system. Read-only. + type: string + type: object + reason: + description: A machine-readable description of why this operation + is in the "Failure" status. If this value is empty there is + no information available. A Reason clarifies an HTTP status + code but does not override it. + type: string + status: + description: 'Status of the operation. One of: "Success" or + "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' + type: string + type: object + required: + - pending + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + managedFields: + description: "ManagedFields maps workflow-id and version to the set + of fields that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or understand + this field. A workflow can be the user's name, a controller's name, + or the name of a specific apply path like \"ci-cd\". The set of fields + is always in the version that the workflow used when modifying the + object. \n This field is alpha and can be changed or removed without + notice." + items: + properties: + apiVersion: + description: APIVersion defines the version of this resource that + this field set applies to. The format is "group/version" just + like the top-level APIVersion field. It is necessary to track + the version of a field set because it cannot be automatically + converted. + type: string + fields: + additionalProperties: true + description: Fields identifies a set of fields. + type: object + manager: + description: Manager is an identifier of the workflow managing + these fields. + type: string + operation: + description: Operation is the type of operation which lead to + this ManagedFieldsEntry being created. The only valid values + for this field are 'Apply' and 'Update'. + type: string + time: + description: Time is timestamp of when these fields were set. + It should always be empty if Operation is 'Apply' + format: date-time + type: string + type: object + type: array + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within each name must be unique. + An empty namespace is equivalent to the \"default\" namespace, but + \"default\" is the canonical representation. Not all objects are required + to be scoped to a namespace - the value of this field for those objects + will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: + http://kubernetes.io/docs/user-guide/namespaces" + type: string + ownerReferences: + description: List of objects depended by this object. If ALL objects + in the list have been deleted, this object will be garbage collected. + If this object is managed by a controller, then an entry in this list + will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + items: + properties: + apiVersion: + description: API version of the referent. + type: string + blockOwnerDeletion: + description: If true, AND if the owner has the "foregroundDeletion" + finalizer, then the owner cannot be deleted from the key-value + store until this reference is removed. Defaults to false. To + set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + type: boolean + controller: + description: If true, this reference points to the managing controller. + type: boolean + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + uid: + description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + required: + - apiVersion + - kind + - name + - uid + type: object + type: array + resourceVersion: + description: "An opaque value that represents the internal version of + this object that can be used by clients to determine when objects + have changed. May be used for optimistic concurrency, change detection, + and the watch operation on a resource or set of resources. Clients + must treat these values as opaque and passed unmodified back to the + server. They may only be valid for a particular resource or set of + resources. \n Populated by the system. Read-only. Value must be treated + as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency" + type: string + selfLink: + description: SelfLink is a URL representing this object. Populated by + the system. Read-only. + type: string + uid: + description: "UID is the unique in time and space value for this object. + It is typically generated by the server on successful creation of + a resource and is not allowed to change on PUT operations. \n Populated + by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" + type: string + type: object spec: - description: AppProjectSpec is the specification of an AppProject properties: clusterResourceWhitelist: description: ClusterResourceWhitelist contains list of whitelisted cluster level resources - items: {} + items: + properties: + group: + type: string + kind: + type: string + required: + - group + - kind + type: object type: array description: description: Description contains optional project description @@ -43,8 +405,6 @@ spec: description: Destinations contains list of destinations available for deployment items: - description: ApplicationDestination contains deployment destination - information properties: namespace: description: Namespace overrides the environment namespace value @@ -59,13 +419,21 @@ spec: namespaceResourceBlacklist: description: NamespaceResourceBlacklist contains list of blacklisted namespace level resources - items: {} + items: + properties: + group: + type: string + kind: + type: string + required: + - group + - kind + type: object type: array roles: description: Roles are user defined RBAC roles associated with this project items: - description: ProjectRole represents a role that has access to a project properties: description: description: Description is a description of the role @@ -80,8 +448,6 @@ spec: 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 properties: exp: format: int64 @@ -113,5 +479,11 @@ spec: type: string type: array type: object + required: + - metadata + - spec type: object - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true diff --git a/manifests/ha/install.yaml b/manifests/ha/install.yaml index cbe1e079ea..994fa9dc8a 100644 --- a/manifests/ha/install.yaml +++ b/manifests/ha/install.yaml @@ -17,6 +17,7 @@ spec: scope: Namespaced validation: openAPIV3Schema: + description: Application is a definition of Application resource. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -28,12 +29,359 @@ spec: 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/api-conventions.md#types-kinds' type: string - metadata: {} + metadata: + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + clusterName: + description: The name of the cluster which the object belongs to. This + is used to distinguish resources with same name and namespace in different + clusters. This field is not set anywhere right now and apiserver is + going to ignore it if set in create or update request. + type: string + deletionGracePeriodSeconds: + description: Number of seconds allowed for this object to gracefully + terminate before it will be removed from the system. Only set when + deletionTimestamp is also set. May only be shortened. Read-only. + format: int64 + type: integer + deletionTimestamp: + description: "DeletionTimestamp is RFC 3339 date and time at which this + resource will be deleted. This field is set by the server when a graceful + deletion is requested by the user, and is not directly settable by + a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in + this field, once the finalizers list is empty. As long as the finalizers + list contains items, deletion is blocked. Once the deletionTimestamp + is set, this value may not be unset or be set further into the future, + although it may be shortened or the resource may be deleted prior + to this time. For example, a user may request that a pod is deleted + in 30 seconds. The Kubelet will react by sending a graceful termination + signal to the containers in the pod. After that 30 seconds, the Kubelet + will send a hard termination signal (SIGKILL) to the container and + after cleanup, remove the pod from the API. In the presence of network + partitions, this object may still exist after this timestamp, until + an administrator or automated process can determine the resource is + fully terminated. If not set, graceful deletion of the object has + not been requested. \n Populated by the system when a graceful deletion + is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" + format: date-time + type: string + finalizers: + description: Must be empty before the object is deleted from the registry. + Each entry is an identifier for the responsible component that will + remove the entry from the list. If the deletionTimestamp of the object + is non-nil, entries in this list can only be removed. + items: + type: string + type: array + generateName: + description: "GenerateName is an optional prefix, used by the server, + to generate a unique name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique + suffix. The provided value has the same validation rules as the Name + field, and may be truncated by the length of the suffix required to + make the value unique on the server. \n If this field is specified + and the generated name exists, the server will NOT return a 409 - + instead, it will either return 201 Created or 500 with Reason ServerTimeout + indicating a unique name could not be found in the time allotted, + and the client should retry (optionally after the time indicated in + the Retry-After header). \n Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency" + type: string + generation: + description: A sequence number representing a specific generation of + the desired state. Populated by the system. Read-only. + format: int64 + type: integer + initializers: + description: "An initializer is a controller which enforces some system + invariant at object creation time. This field is a list of initializers + that have not yet acted on this object. If nil or empty, this object + has been completely initialized. Otherwise, the object is considered + uninitialized and is hidden (in list/watch and get calls) from clients + that haven't explicitly asked to observe uninitialized objects. \n + When an object is created, the system will populate this list with + the current set of initializers. Only privileged users may set or + modify this list. Once it is empty, it may not be modified further + by any user. \n DEPRECATED - initializers are an alpha field and will + be removed in v1.15." + properties: + pending: + description: Pending is a list of initializers that must execute + in order before this object is visible. When the last pending + initializer is removed, and no failing result is set, the initializers + struct will be set to nil and the object is considered as initialized + and visible to all clients. + items: + properties: + name: + description: name of the process that is responsible for initializing + this object. + type: string + required: + - name + type: object + type: array + result: + description: If result is set with the Failure field, the object + will be persisted to storage and then deleted, ensuring that other + clients can observe the deletion. + 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/api-conventions.md#resources' + type: string + code: + description: Suggested HTTP return code for this status, 0 if + not set. + format: int32 + type: integer + details: + description: Extended data associated with the reason. Each + reason may define its own extended details. This field is + optional and the data returned is not guaranteed to conform + to any schema except that defined by the reason type. + properties: + causes: + description: The Causes array includes more details associated + with the StatusReason failure. Not all StatusReasons may + provide detailed causes. + items: + properties: + field: + description: "The field of the resource that has caused + this error, as named by its JSON serialization. + May include dot and postfix notation for nested + attributes. Arrays are zero-indexed. Fields may + appear more than once in an array of causes due + to fields having multiple errors. Optional. \n Examples: + \ \"name\" - the field \"name\" on the current + resource \"items[0].name\" - the field \"name\" + on the first array entry in \"items\"" + type: string + message: + description: A human-readable description of the cause + of the error. This field may be presented as-is + to a reader. + type: string + reason: + description: A machine-readable description of the + cause of the error. If this value is empty there + is no information available. + type: string + type: object + type: array + group: + description: The group attribute of the resource associated + with the status StatusReason. + type: string + kind: + description: 'The kind attribute of the resource associated + with the status StatusReason. On some operations may differ + from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: The name attribute of the resource associated + with the status StatusReason (when there is a single name + which can be described). + type: string + retryAfterSeconds: + description: If specified, the time in seconds before the + operation should be retried. Some errors may indicate + the client must take an alternate action - for those errors + this field may indicate how long to wait before taking + the alternate action. + format: int32 + type: integer + uid: + description: 'UID of the resource. (when there is a single + resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + type: object + 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/api-conventions.md#types-kinds' + type: string + message: + description: A human-readable description of the status of this + operation. + type: string + metadata: + description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + properties: + continue: + description: continue may be set if the user set a limit + on the number of items returned, and indicates that the + server has more data available. The value is opaque and + may be used to issue another request to the endpoint that + served this list to retrieve the next set of available + objects. Continuing a consistent list may not be possible + if the server configuration has changed or more than a + few minutes have passed. The resourceVersion field returned + when using this continue value will be identical to the + value in the first response, unless you have received + this token from an error message. + type: string + resourceVersion: + description: 'String that identifies the server''s internal + version of this object that can be used by clients to + determine when objects have changed. Value must be treated + as opaque by clients and passed unmodified back to the + server. Populated by the system. Read-only. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency' + type: string + selfLink: + description: selfLink is a URL representing this object. + Populated by the system. Read-only. + type: string + type: object + reason: + description: A machine-readable description of why this operation + is in the "Failure" status. If this value is empty there is + no information available. A Reason clarifies an HTTP status + code but does not override it. + type: string + status: + description: 'Status of the operation. One of: "Success" or + "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' + type: string + type: object + required: + - pending + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + managedFields: + description: "ManagedFields maps workflow-id and version to the set + of fields that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or understand + this field. A workflow can be the user's name, a controller's name, + or the name of a specific apply path like \"ci-cd\". The set of fields + is always in the version that the workflow used when modifying the + object. \n This field is alpha and can be changed or removed without + notice." + items: + properties: + apiVersion: + description: APIVersion defines the version of this resource that + this field set applies to. The format is "group/version" just + like the top-level APIVersion field. It is necessary to track + the version of a field set because it cannot be automatically + converted. + type: string + fields: + additionalProperties: true + description: Fields identifies a set of fields. + type: object + manager: + description: Manager is an identifier of the workflow managing + these fields. + type: string + operation: + description: Operation is the type of operation which lead to + this ManagedFieldsEntry being created. The only valid values + for this field are 'Apply' and 'Update'. + type: string + time: + description: Time is timestamp of when these fields were set. + It should always be empty if Operation is 'Apply' + format: date-time + type: string + type: object + type: array + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within each name must be unique. + An empty namespace is equivalent to the \"default\" namespace, but + \"default\" is the canonical representation. Not all objects are required + to be scoped to a namespace - the value of this field for those objects + will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: + http://kubernetes.io/docs/user-guide/namespaces" + type: string + ownerReferences: + description: List of objects depended by this object. If ALL objects + in the list have been deleted, this object will be garbage collected. + If this object is managed by a controller, then an entry in this list + will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + items: + properties: + apiVersion: + description: API version of the referent. + type: string + blockOwnerDeletion: + description: If true, AND if the owner has the "foregroundDeletion" + finalizer, then the owner cannot be deleted from the key-value + store until this reference is removed. Defaults to false. To + set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + type: boolean + controller: + description: If true, this reference points to the managing controller. + type: boolean + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + uid: + description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + required: + - apiVersion + - kind + - name + - uid + type: object + type: array + resourceVersion: + description: "An opaque value that represents the internal version of + this object that can be used by clients to determine when objects + have changed. May be used for optimistic concurrency, change detection, + and the watch operation on a resource or set of resources. Clients + must treat these values as opaque and passed unmodified back to the + server. They may only be valid for a particular resource or set of + resources. \n Populated by the system. Read-only. Value must be treated + as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency" + type: string + selfLink: + description: SelfLink is a URL representing this object. Populated by + the system. Read-only. + type: string + uid: + description: "UID is the unique in time and space value for this object. + It is typically generated by the server on successful creation of + a resource and is not allowed to change on PUT operations. \n Populated + by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" + type: string + type: object operation: - description: Operation contains requested operation parameters. properties: sync: - description: SyncOperation contains sync operation details. properties: dryRun: description: DryRun will perform a `kubectl apply --dry-run` without @@ -52,7 +400,6 @@ spec: resources: description: Resources describes which resources to sync items: - description: SyncOperationResource contains resources to sync. properties: group: type: string @@ -70,19 +417,18 @@ spec: to. If omitted, will use the revision specified in app spec. type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application environment. + description: Source overrides the source definition set in the application. + This is typically set in a Rollback operation and nil during a + Sync operation properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -98,7 +444,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -116,12 +461,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm template properties: name: description: Name is the name of the helm parameter @@ -143,8 +487,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -154,7 +497,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -169,16 +511,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image tag properties: name: description: Name is the name of the image (e.g. nginx) @@ -204,7 +546,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -225,12 +567,11 @@ spec: - path type: object syncStrategy: - description: SyncStrategy controls the manner in which a sync is - performed + description: SyncStrategy describes how to perform the sync properties: apply: - description: SyncStrategyApply uses `kubectl apply` to perform - the apply + description: Apply wil perform a `kubectl apply` to perform + the sync. properties: force: description: Force indicates whether or not to supply the @@ -240,33 +581,24 @@ spec: type: boolean type: object hook: - description: SyncStrategyHook will perform a sync using hooks - annotations. If no hook annotation is specified falls back - to `kubectl apply`. + description: Hook will submit any referenced resources to perform + the sync. This is the default strategy properties: - SyncStrategyApply: - description: SyncStrategyApply uses `kubectl apply` to perform - the apply - 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. - type: boolean - type: object + 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. + 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. properties: destination: - description: ApplicationDestination contains deployment destination - information + description: Destination overrides the kubernetes server and namespace + defined in the environment ksonnet app.yaml properties: namespace: description: Namespace overrides the environment namespace value @@ -281,9 +613,6 @@ spec: 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 @@ -322,19 +651,17 @@ spec: that application belongs to 'default' project. type: string source: - description: ApplicationSource contains information about github repository, - path within repository and target application environment. + description: Source is a reference to the location ksonnet application + definition properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -350,7 +677,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -368,12 +694,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm template properties: name: description: Name is the name of the helm parameter @@ -395,7 +720,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -405,7 +730,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -420,16 +744,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image tag properties: name: description: Name is the name of the image (e.g. nginx) @@ -455,7 +779,7 @@ spec: a type: string plugin: - description: ApplicationSourcePlugin holds config management plugin + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -475,12 +799,11 @@ spec: - path type: object syncPolicy: - description: SyncPolicy controls when a sync will be performed in response - to updates in git + description: SyncPolicy controls when a sync will be performed properties: automated: - description: SyncPolicyAutomated controls the behavior of an automated - sync + description: Automated will keep an application synced to the target + revision properties: prune: description: 'Prune will prune resources automatically as part @@ -494,13 +817,9 @@ spec: - project type: object status: - description: ApplicationStatus contains information about application sync, - health status properties: conditions: items: - description: ApplicationCondition contains details about current application - condition properties: message: description: Message contains human-readable message indicating @@ -523,30 +842,26 @@ spec: type: object history: items: - description: RevisionHistory contains information relevant to an application - deployment properties: - deployedAt: {} + deployedAt: + format: date-time + type: string id: format: int64 type: integer revision: type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application environment. properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -562,7 +877,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -580,13 +894,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -608,8 +920,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -619,8 +930,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -635,17 +944,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -672,7 +980,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -698,21 +1006,23 @@ spec: - id type: object type: array - observedAt: {} + observedAt: + format: date-time + type: string operationState: - description: OperationState contains information about state of currently - performing operation on application. properties: - finishedAt: {} + finishedAt: + description: FinishedAt contains time of operation completion + format: date-time + type: string message: description: Message hold any pertinent messages when attempting to perform operation (typically errors). type: string operation: - description: Operation contains requested operation parameters. + description: Operation is the original requested operation properties: sync: - description: SyncOperation contains sync operation details. properties: dryRun: description: DryRun will perform a `kubectl apply --dry-run` @@ -731,8 +1041,6 @@ spec: resources: description: Resources describes which resources to sync items: - description: SyncOperationResource contains resources - to sync. properties: group: type: string @@ -751,21 +1059,20 @@ spec: specified in app spec. type: string source: - description: ApplicationSource contains information about - github repository, path within repository and target application - environment. + description: Source overrides the source definition set + in the application. This is typically set in a Rollback + operation and nil during a Sync operation properties: directory: + description: Directory holds path/directory specific + options properties: 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 @@ -782,7 +1089,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -800,15 +1106,12 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific - options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a - helm template properties: name: description: Name is the name of the helm @@ -832,8 +1135,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet - specific options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application @@ -843,8 +1145,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -859,10 +1159,11 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object @@ -870,8 +1171,6 @@ spec: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize - image tag properties: name: description: Name is the name of the image @@ -898,7 +1197,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -919,12 +1218,11 @@ spec: - path type: object syncStrategy: - description: SyncStrategy controls the manner in which a - sync is performed + description: SyncStrategy describes how to perform the sync properties: apply: - description: SyncStrategyApply uses `kubectl apply` - to perform the apply + description: Apply wil perform a `kubectl apply` to + perform the sync. properties: force: description: Force indicates whether or not to supply @@ -935,22 +1233,16 @@ spec: type: boolean type: object hook: - description: SyncStrategyHook will perform a sync using - hooks annotations. If no hook annotation is specified - falls back to `kubectl apply`. + description: Hook will submit any referenced resources + to perform the sync. This is the default strategy properties: - SyncStrategyApply: - description: SyncStrategyApply uses `kubectl apply` - to perform the apply - 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. - type: boolean - type: object + 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. + type: boolean type: object type: object type: object @@ -958,16 +1250,17 @@ spec: phase: description: Phase is the current phase of the operation type: string - startedAt: {} + startedAt: + description: StartedAt contains time of operation start + format: date-time + type: string syncResult: - description: SyncOperationResult represent result of sync operation + description: SyncResult is the result of a Sync operation properties: resources: description: Resources holds the sync result of each individual resource items: - description: ResourceResult holds the operation result details - of a specific resource properties: group: type: string @@ -1012,21 +1305,18 @@ spec: description: Revision holds the git commit SHA of the sync type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application - environment. + description: Source records the application source information + of the sync, used for comparing auto-sync properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -1043,7 +1333,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1061,13 +1350,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -1089,8 +1376,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -1100,8 +1386,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -1116,18 +1400,17 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -1154,7 +1437,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -1182,11 +1465,11 @@ spec: - phase - startedAt type: object - reconciledAt: {} + reconciledAt: + format: date-time + type: string resources: items: - description: ResourceStatus holds the current sync and health status - of a resource properties: group: type: string @@ -1228,16 +1511,10 @@ spec: type: array type: object sync: - description: SyncStatus is a comparison result of application spec and - deployed application. properties: comparedTo: - description: ComparedTo contains application source and target which - was used for resources comparison properties: destination: - description: ApplicationDestination contains deployment destination - information properties: namespace: description: Namespace overrides the environment namespace @@ -1249,21 +1526,16 @@ spec: type: string type: object source: - description: ApplicationSource contains information about github - repository, path within repository and target application - environment. properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -1280,7 +1552,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1298,13 +1569,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -1326,8 +1595,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -1337,8 +1605,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -1353,18 +1619,17 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -1391,7 +1656,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -1423,8 +1688,14 @@ spec: - status type: object type: object + required: + - metadata + - spec type: object - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition @@ -1444,6 +1715,11 @@ spec: scope: Namespaced validation: 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)' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -1455,14 +1731,371 @@ spec: 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/api-conventions.md#types-kinds' type: string - metadata: {} + metadata: + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + clusterName: + description: The name of the cluster which the object belongs to. This + is used to distinguish resources with same name and namespace in different + clusters. This field is not set anywhere right now and apiserver is + going to ignore it if set in create or update request. + type: string + deletionGracePeriodSeconds: + description: Number of seconds allowed for this object to gracefully + terminate before it will be removed from the system. Only set when + deletionTimestamp is also set. May only be shortened. Read-only. + format: int64 + type: integer + deletionTimestamp: + description: "DeletionTimestamp is RFC 3339 date and time at which this + resource will be deleted. This field is set by the server when a graceful + deletion is requested by the user, and is not directly settable by + a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in + this field, once the finalizers list is empty. As long as the finalizers + list contains items, deletion is blocked. Once the deletionTimestamp + is set, this value may not be unset or be set further into the future, + although it may be shortened or the resource may be deleted prior + to this time. For example, a user may request that a pod is deleted + in 30 seconds. The Kubelet will react by sending a graceful termination + signal to the containers in the pod. After that 30 seconds, the Kubelet + will send a hard termination signal (SIGKILL) to the container and + after cleanup, remove the pod from the API. In the presence of network + partitions, this object may still exist after this timestamp, until + an administrator or automated process can determine the resource is + fully terminated. If not set, graceful deletion of the object has + not been requested. \n Populated by the system when a graceful deletion + is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" + format: date-time + type: string + finalizers: + description: Must be empty before the object is deleted from the registry. + Each entry is an identifier for the responsible component that will + remove the entry from the list. If the deletionTimestamp of the object + is non-nil, entries in this list can only be removed. + items: + type: string + type: array + generateName: + description: "GenerateName is an optional prefix, used by the server, + to generate a unique name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique + suffix. The provided value has the same validation rules as the Name + field, and may be truncated by the length of the suffix required to + make the value unique on the server. \n If this field is specified + and the generated name exists, the server will NOT return a 409 - + instead, it will either return 201 Created or 500 with Reason ServerTimeout + indicating a unique name could not be found in the time allotted, + and the client should retry (optionally after the time indicated in + the Retry-After header). \n Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency" + type: string + generation: + description: A sequence number representing a specific generation of + the desired state. Populated by the system. Read-only. + format: int64 + type: integer + initializers: + description: "An initializer is a controller which enforces some system + invariant at object creation time. This field is a list of initializers + that have not yet acted on this object. If nil or empty, this object + has been completely initialized. Otherwise, the object is considered + uninitialized and is hidden (in list/watch and get calls) from clients + that haven't explicitly asked to observe uninitialized objects. \n + When an object is created, the system will populate this list with + the current set of initializers. Only privileged users may set or + modify this list. Once it is empty, it may not be modified further + by any user. \n DEPRECATED - initializers are an alpha field and will + be removed in v1.15." + properties: + pending: + description: Pending is a list of initializers that must execute + in order before this object is visible. When the last pending + initializer is removed, and no failing result is set, the initializers + struct will be set to nil and the object is considered as initialized + and visible to all clients. + items: + properties: + name: + description: name of the process that is responsible for initializing + this object. + type: string + required: + - name + type: object + type: array + result: + description: If result is set with the Failure field, the object + will be persisted to storage and then deleted, ensuring that other + clients can observe the deletion. + 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/api-conventions.md#resources' + type: string + code: + description: Suggested HTTP return code for this status, 0 if + not set. + format: int32 + type: integer + details: + description: Extended data associated with the reason. Each + reason may define its own extended details. This field is + optional and the data returned is not guaranteed to conform + to any schema except that defined by the reason type. + properties: + causes: + description: The Causes array includes more details associated + with the StatusReason failure. Not all StatusReasons may + provide detailed causes. + items: + properties: + field: + description: "The field of the resource that has caused + this error, as named by its JSON serialization. + May include dot and postfix notation for nested + attributes. Arrays are zero-indexed. Fields may + appear more than once in an array of causes due + to fields having multiple errors. Optional. \n Examples: + \ \"name\" - the field \"name\" on the current + resource \"items[0].name\" - the field \"name\" + on the first array entry in \"items\"" + type: string + message: + description: A human-readable description of the cause + of the error. This field may be presented as-is + to a reader. + type: string + reason: + description: A machine-readable description of the + cause of the error. If this value is empty there + is no information available. + type: string + type: object + type: array + group: + description: The group attribute of the resource associated + with the status StatusReason. + type: string + kind: + description: 'The kind attribute of the resource associated + with the status StatusReason. On some operations may differ + from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: The name attribute of the resource associated + with the status StatusReason (when there is a single name + which can be described). + type: string + retryAfterSeconds: + description: If specified, the time in seconds before the + operation should be retried. Some errors may indicate + the client must take an alternate action - for those errors + this field may indicate how long to wait before taking + the alternate action. + format: int32 + type: integer + uid: + description: 'UID of the resource. (when there is a single + resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + type: object + 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/api-conventions.md#types-kinds' + type: string + message: + description: A human-readable description of the status of this + operation. + type: string + metadata: + description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + properties: + continue: + description: continue may be set if the user set a limit + on the number of items returned, and indicates that the + server has more data available. The value is opaque and + may be used to issue another request to the endpoint that + served this list to retrieve the next set of available + objects. Continuing a consistent list may not be possible + if the server configuration has changed or more than a + few minutes have passed. The resourceVersion field returned + when using this continue value will be identical to the + value in the first response, unless you have received + this token from an error message. + type: string + resourceVersion: + description: 'String that identifies the server''s internal + version of this object that can be used by clients to + determine when objects have changed. Value must be treated + as opaque by clients and passed unmodified back to the + server. Populated by the system. Read-only. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency' + type: string + selfLink: + description: selfLink is a URL representing this object. + Populated by the system. Read-only. + type: string + type: object + reason: + description: A machine-readable description of why this operation + is in the "Failure" status. If this value is empty there is + no information available. A Reason clarifies an HTTP status + code but does not override it. + type: string + status: + description: 'Status of the operation. One of: "Success" or + "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' + type: string + type: object + required: + - pending + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + managedFields: + description: "ManagedFields maps workflow-id and version to the set + of fields that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or understand + this field. A workflow can be the user's name, a controller's name, + or the name of a specific apply path like \"ci-cd\". The set of fields + is always in the version that the workflow used when modifying the + object. \n This field is alpha and can be changed or removed without + notice." + items: + properties: + apiVersion: + description: APIVersion defines the version of this resource that + this field set applies to. The format is "group/version" just + like the top-level APIVersion field. It is necessary to track + the version of a field set because it cannot be automatically + converted. + type: string + fields: + additionalProperties: true + description: Fields identifies a set of fields. + type: object + manager: + description: Manager is an identifier of the workflow managing + these fields. + type: string + operation: + description: Operation is the type of operation which lead to + this ManagedFieldsEntry being created. The only valid values + for this field are 'Apply' and 'Update'. + type: string + time: + description: Time is timestamp of when these fields were set. + It should always be empty if Operation is 'Apply' + format: date-time + type: string + type: object + type: array + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within each name must be unique. + An empty namespace is equivalent to the \"default\" namespace, but + \"default\" is the canonical representation. Not all objects are required + to be scoped to a namespace - the value of this field for those objects + will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: + http://kubernetes.io/docs/user-guide/namespaces" + type: string + ownerReferences: + description: List of objects depended by this object. If ALL objects + in the list have been deleted, this object will be garbage collected. + If this object is managed by a controller, then an entry in this list + will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + items: + properties: + apiVersion: + description: API version of the referent. + type: string + blockOwnerDeletion: + description: If true, AND if the owner has the "foregroundDeletion" + finalizer, then the owner cannot be deleted from the key-value + store until this reference is removed. Defaults to false. To + set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + type: boolean + controller: + description: If true, this reference points to the managing controller. + type: boolean + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + uid: + description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + required: + - apiVersion + - kind + - name + - uid + type: object + type: array + resourceVersion: + description: "An opaque value that represents the internal version of + this object that can be used by clients to determine when objects + have changed. May be used for optimistic concurrency, change detection, + and the watch operation on a resource or set of resources. Clients + must treat these values as opaque and passed unmodified back to the + server. They may only be valid for a particular resource or set of + resources. \n Populated by the system. Read-only. Value must be treated + as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency" + type: string + selfLink: + description: SelfLink is a URL representing this object. Populated by + the system. Read-only. + type: string + uid: + description: "UID is the unique in time and space value for this object. + It is typically generated by the server on successful creation of + a resource and is not allowed to change on PUT operations. \n Populated + by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" + type: string + type: object spec: - description: AppProjectSpec is the specification of an AppProject properties: clusterResourceWhitelist: description: ClusterResourceWhitelist contains list of whitelisted cluster level resources - items: {} + items: + properties: + group: + type: string + kind: + type: string + required: + - group + - kind + type: object type: array description: description: Description contains optional project description @@ -1471,8 +2104,6 @@ spec: description: Destinations contains list of destinations available for deployment items: - description: ApplicationDestination contains deployment destination - information properties: namespace: description: Namespace overrides the environment namespace value @@ -1487,13 +2118,21 @@ spec: namespaceResourceBlacklist: description: NamespaceResourceBlacklist contains list of blacklisted namespace level resources - items: {} + items: + properties: + group: + type: string + kind: + type: string + required: + - group + - kind + type: object type: array roles: description: Roles are user defined RBAC roles associated with this project items: - description: ProjectRole represents a role that has access to a project properties: description: description: Description is a description of the role @@ -1508,8 +2147,6 @@ spec: 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 properties: exp: format: int64 @@ -1541,8 +2178,14 @@ spec: type: string type: array type: object + required: + - metadata + - spec type: object - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- apiVersion: v1 kind: ServiceAccount diff --git a/manifests/ha/namespace-install.yaml b/manifests/ha/namespace-install.yaml index 2f05ad2add..2b38483376 100644 --- a/manifests/ha/namespace-install.yaml +++ b/manifests/ha/namespace-install.yaml @@ -17,6 +17,7 @@ spec: scope: Namespaced validation: openAPIV3Schema: + description: Application is a definition of Application resource. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -28,12 +29,359 @@ spec: 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/api-conventions.md#types-kinds' type: string - metadata: {} + metadata: + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + clusterName: + description: The name of the cluster which the object belongs to. This + is used to distinguish resources with same name and namespace in different + clusters. This field is not set anywhere right now and apiserver is + going to ignore it if set in create or update request. + type: string + deletionGracePeriodSeconds: + description: Number of seconds allowed for this object to gracefully + terminate before it will be removed from the system. Only set when + deletionTimestamp is also set. May only be shortened. Read-only. + format: int64 + type: integer + deletionTimestamp: + description: "DeletionTimestamp is RFC 3339 date and time at which this + resource will be deleted. This field is set by the server when a graceful + deletion is requested by the user, and is not directly settable by + a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in + this field, once the finalizers list is empty. As long as the finalizers + list contains items, deletion is blocked. Once the deletionTimestamp + is set, this value may not be unset or be set further into the future, + although it may be shortened or the resource may be deleted prior + to this time. For example, a user may request that a pod is deleted + in 30 seconds. The Kubelet will react by sending a graceful termination + signal to the containers in the pod. After that 30 seconds, the Kubelet + will send a hard termination signal (SIGKILL) to the container and + after cleanup, remove the pod from the API. In the presence of network + partitions, this object may still exist after this timestamp, until + an administrator or automated process can determine the resource is + fully terminated. If not set, graceful deletion of the object has + not been requested. \n Populated by the system when a graceful deletion + is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" + format: date-time + type: string + finalizers: + description: Must be empty before the object is deleted from the registry. + Each entry is an identifier for the responsible component that will + remove the entry from the list. If the deletionTimestamp of the object + is non-nil, entries in this list can only be removed. + items: + type: string + type: array + generateName: + description: "GenerateName is an optional prefix, used by the server, + to generate a unique name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique + suffix. The provided value has the same validation rules as the Name + field, and may be truncated by the length of the suffix required to + make the value unique on the server. \n If this field is specified + and the generated name exists, the server will NOT return a 409 - + instead, it will either return 201 Created or 500 with Reason ServerTimeout + indicating a unique name could not be found in the time allotted, + and the client should retry (optionally after the time indicated in + the Retry-After header). \n Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency" + type: string + generation: + description: A sequence number representing a specific generation of + the desired state. Populated by the system. Read-only. + format: int64 + type: integer + initializers: + description: "An initializer is a controller which enforces some system + invariant at object creation time. This field is a list of initializers + that have not yet acted on this object. If nil or empty, this object + has been completely initialized. Otherwise, the object is considered + uninitialized and is hidden (in list/watch and get calls) from clients + that haven't explicitly asked to observe uninitialized objects. \n + When an object is created, the system will populate this list with + the current set of initializers. Only privileged users may set or + modify this list. Once it is empty, it may not be modified further + by any user. \n DEPRECATED - initializers are an alpha field and will + be removed in v1.15." + properties: + pending: + description: Pending is a list of initializers that must execute + in order before this object is visible. When the last pending + initializer is removed, and no failing result is set, the initializers + struct will be set to nil and the object is considered as initialized + and visible to all clients. + items: + properties: + name: + description: name of the process that is responsible for initializing + this object. + type: string + required: + - name + type: object + type: array + result: + description: If result is set with the Failure field, the object + will be persisted to storage and then deleted, ensuring that other + clients can observe the deletion. + 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/api-conventions.md#resources' + type: string + code: + description: Suggested HTTP return code for this status, 0 if + not set. + format: int32 + type: integer + details: + description: Extended data associated with the reason. Each + reason may define its own extended details. This field is + optional and the data returned is not guaranteed to conform + to any schema except that defined by the reason type. + properties: + causes: + description: The Causes array includes more details associated + with the StatusReason failure. Not all StatusReasons may + provide detailed causes. + items: + properties: + field: + description: "The field of the resource that has caused + this error, as named by its JSON serialization. + May include dot and postfix notation for nested + attributes. Arrays are zero-indexed. Fields may + appear more than once in an array of causes due + to fields having multiple errors. Optional. \n Examples: + \ \"name\" - the field \"name\" on the current + resource \"items[0].name\" - the field \"name\" + on the first array entry in \"items\"" + type: string + message: + description: A human-readable description of the cause + of the error. This field may be presented as-is + to a reader. + type: string + reason: + description: A machine-readable description of the + cause of the error. If this value is empty there + is no information available. + type: string + type: object + type: array + group: + description: The group attribute of the resource associated + with the status StatusReason. + type: string + kind: + description: 'The kind attribute of the resource associated + with the status StatusReason. On some operations may differ + from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: The name attribute of the resource associated + with the status StatusReason (when there is a single name + which can be described). + type: string + retryAfterSeconds: + description: If specified, the time in seconds before the + operation should be retried. Some errors may indicate + the client must take an alternate action - for those errors + this field may indicate how long to wait before taking + the alternate action. + format: int32 + type: integer + uid: + description: 'UID of the resource. (when there is a single + resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + type: object + 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/api-conventions.md#types-kinds' + type: string + message: + description: A human-readable description of the status of this + operation. + type: string + metadata: + description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + properties: + continue: + description: continue may be set if the user set a limit + on the number of items returned, and indicates that the + server has more data available. The value is opaque and + may be used to issue another request to the endpoint that + served this list to retrieve the next set of available + objects. Continuing a consistent list may not be possible + if the server configuration has changed or more than a + few minutes have passed. The resourceVersion field returned + when using this continue value will be identical to the + value in the first response, unless you have received + this token from an error message. + type: string + resourceVersion: + description: 'String that identifies the server''s internal + version of this object that can be used by clients to + determine when objects have changed. Value must be treated + as opaque by clients and passed unmodified back to the + server. Populated by the system. Read-only. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency' + type: string + selfLink: + description: selfLink is a URL representing this object. + Populated by the system. Read-only. + type: string + type: object + reason: + description: A machine-readable description of why this operation + is in the "Failure" status. If this value is empty there is + no information available. A Reason clarifies an HTTP status + code but does not override it. + type: string + status: + description: 'Status of the operation. One of: "Success" or + "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' + type: string + type: object + required: + - pending + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + managedFields: + description: "ManagedFields maps workflow-id and version to the set + of fields that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or understand + this field. A workflow can be the user's name, a controller's name, + or the name of a specific apply path like \"ci-cd\". The set of fields + is always in the version that the workflow used when modifying the + object. \n This field is alpha and can be changed or removed without + notice." + items: + properties: + apiVersion: + description: APIVersion defines the version of this resource that + this field set applies to. The format is "group/version" just + like the top-level APIVersion field. It is necessary to track + the version of a field set because it cannot be automatically + converted. + type: string + fields: + additionalProperties: true + description: Fields identifies a set of fields. + type: object + manager: + description: Manager is an identifier of the workflow managing + these fields. + type: string + operation: + description: Operation is the type of operation which lead to + this ManagedFieldsEntry being created. The only valid values + for this field are 'Apply' and 'Update'. + type: string + time: + description: Time is timestamp of when these fields were set. + It should always be empty if Operation is 'Apply' + format: date-time + type: string + type: object + type: array + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within each name must be unique. + An empty namespace is equivalent to the \"default\" namespace, but + \"default\" is the canonical representation. Not all objects are required + to be scoped to a namespace - the value of this field for those objects + will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: + http://kubernetes.io/docs/user-guide/namespaces" + type: string + ownerReferences: + description: List of objects depended by this object. If ALL objects + in the list have been deleted, this object will be garbage collected. + If this object is managed by a controller, then an entry in this list + will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + items: + properties: + apiVersion: + description: API version of the referent. + type: string + blockOwnerDeletion: + description: If true, AND if the owner has the "foregroundDeletion" + finalizer, then the owner cannot be deleted from the key-value + store until this reference is removed. Defaults to false. To + set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + type: boolean + controller: + description: If true, this reference points to the managing controller. + type: boolean + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + uid: + description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + required: + - apiVersion + - kind + - name + - uid + type: object + type: array + resourceVersion: + description: "An opaque value that represents the internal version of + this object that can be used by clients to determine when objects + have changed. May be used for optimistic concurrency, change detection, + and the watch operation on a resource or set of resources. Clients + must treat these values as opaque and passed unmodified back to the + server. They may only be valid for a particular resource or set of + resources. \n Populated by the system. Read-only. Value must be treated + as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency" + type: string + selfLink: + description: SelfLink is a URL representing this object. Populated by + the system. Read-only. + type: string + uid: + description: "UID is the unique in time and space value for this object. + It is typically generated by the server on successful creation of + a resource and is not allowed to change on PUT operations. \n Populated + by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" + type: string + type: object operation: - description: Operation contains requested operation parameters. properties: sync: - description: SyncOperation contains sync operation details. properties: dryRun: description: DryRun will perform a `kubectl apply --dry-run` without @@ -52,7 +400,6 @@ spec: resources: description: Resources describes which resources to sync items: - description: SyncOperationResource contains resources to sync. properties: group: type: string @@ -70,19 +417,18 @@ spec: to. If omitted, will use the revision specified in app spec. type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application environment. + description: Source overrides the source definition set in the application. + This is typically set in a Rollback operation and nil during a + Sync operation properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -98,7 +444,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -116,12 +461,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm template properties: name: description: Name is the name of the helm parameter @@ -143,8 +487,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -154,7 +497,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -169,16 +511,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image tag properties: name: description: Name is the name of the image (e.g. nginx) @@ -204,7 +546,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -225,12 +567,11 @@ spec: - path type: object syncStrategy: - description: SyncStrategy controls the manner in which a sync is - performed + description: SyncStrategy describes how to perform the sync properties: apply: - description: SyncStrategyApply uses `kubectl apply` to perform - the apply + description: Apply wil perform a `kubectl apply` to perform + the sync. properties: force: description: Force indicates whether or not to supply the @@ -240,33 +581,24 @@ spec: type: boolean type: object hook: - description: SyncStrategyHook will perform a sync using hooks - annotations. If no hook annotation is specified falls back - to `kubectl apply`. + description: Hook will submit any referenced resources to perform + the sync. This is the default strategy properties: - SyncStrategyApply: - description: SyncStrategyApply uses `kubectl apply` to perform - the apply - 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. - type: boolean - type: object + 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. + 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. properties: destination: - description: ApplicationDestination contains deployment destination - information + description: Destination overrides the kubernetes server and namespace + defined in the environment ksonnet app.yaml properties: namespace: description: Namespace overrides the environment namespace value @@ -281,9 +613,6 @@ spec: 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 @@ -322,19 +651,17 @@ spec: that application belongs to 'default' project. type: string source: - description: ApplicationSource contains information about github repository, - path within repository and target application environment. + description: Source is a reference to the location ksonnet application + definition properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -350,7 +677,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -368,12 +694,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm template properties: name: description: Name is the name of the helm parameter @@ -395,7 +720,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -405,7 +730,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -420,16 +744,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image tag properties: name: description: Name is the name of the image (e.g. nginx) @@ -455,7 +779,7 @@ spec: a type: string plugin: - description: ApplicationSourcePlugin holds config management plugin + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -475,12 +799,11 @@ spec: - path type: object syncPolicy: - description: SyncPolicy controls when a sync will be performed in response - to updates in git + description: SyncPolicy controls when a sync will be performed properties: automated: - description: SyncPolicyAutomated controls the behavior of an automated - sync + description: Automated will keep an application synced to the target + revision properties: prune: description: 'Prune will prune resources automatically as part @@ -494,13 +817,9 @@ spec: - project type: object status: - description: ApplicationStatus contains information about application sync, - health status properties: conditions: items: - description: ApplicationCondition contains details about current application - condition properties: message: description: Message contains human-readable message indicating @@ -523,30 +842,26 @@ spec: type: object history: items: - description: RevisionHistory contains information relevant to an application - deployment properties: - deployedAt: {} + deployedAt: + format: date-time + type: string id: format: int64 type: integer revision: type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application environment. properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -562,7 +877,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -580,13 +894,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -608,8 +920,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -619,8 +930,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -635,17 +944,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -672,7 +980,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -698,21 +1006,23 @@ spec: - id type: object type: array - observedAt: {} + observedAt: + format: date-time + type: string operationState: - description: OperationState contains information about state of currently - performing operation on application. properties: - finishedAt: {} + finishedAt: + description: FinishedAt contains time of operation completion + format: date-time + type: string message: description: Message hold any pertinent messages when attempting to perform operation (typically errors). type: string operation: - description: Operation contains requested operation parameters. + description: Operation is the original requested operation properties: sync: - description: SyncOperation contains sync operation details. properties: dryRun: description: DryRun will perform a `kubectl apply --dry-run` @@ -731,8 +1041,6 @@ spec: resources: description: Resources describes which resources to sync items: - description: SyncOperationResource contains resources - to sync. properties: group: type: string @@ -751,21 +1059,20 @@ spec: specified in app spec. type: string source: - description: ApplicationSource contains information about - github repository, path within repository and target application - environment. + description: Source overrides the source definition set + in the application. This is typically set in a Rollback + operation and nil during a Sync operation properties: directory: + description: Directory holds path/directory specific + options properties: 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 @@ -782,7 +1089,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -800,15 +1106,12 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific - options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a - helm template properties: name: description: Name is the name of the helm @@ -832,8 +1135,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet - specific options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application @@ -843,8 +1145,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -859,10 +1159,11 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object @@ -870,8 +1171,6 @@ spec: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize - image tag properties: name: description: Name is the name of the image @@ -898,7 +1197,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -919,12 +1218,11 @@ spec: - path type: object syncStrategy: - description: SyncStrategy controls the manner in which a - sync is performed + description: SyncStrategy describes how to perform the sync properties: apply: - description: SyncStrategyApply uses `kubectl apply` - to perform the apply + description: Apply wil perform a `kubectl apply` to + perform the sync. properties: force: description: Force indicates whether or not to supply @@ -935,22 +1233,16 @@ spec: type: boolean type: object hook: - description: SyncStrategyHook will perform a sync using - hooks annotations. If no hook annotation is specified - falls back to `kubectl apply`. + description: Hook will submit any referenced resources + to perform the sync. This is the default strategy properties: - SyncStrategyApply: - description: SyncStrategyApply uses `kubectl apply` - to perform the apply - 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. - type: boolean - type: object + 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. + type: boolean type: object type: object type: object @@ -958,16 +1250,17 @@ spec: phase: description: Phase is the current phase of the operation type: string - startedAt: {} + startedAt: + description: StartedAt contains time of operation start + format: date-time + type: string syncResult: - description: SyncOperationResult represent result of sync operation + description: SyncResult is the result of a Sync operation properties: resources: description: Resources holds the sync result of each individual resource items: - description: ResourceResult holds the operation result details - of a specific resource properties: group: type: string @@ -1012,21 +1305,18 @@ spec: description: Revision holds the git commit SHA of the sync type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application - environment. + description: Source records the application source information + of the sync, used for comparing auto-sync properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -1043,7 +1333,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1061,13 +1350,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -1089,8 +1376,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -1100,8 +1386,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -1116,18 +1400,17 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -1154,7 +1437,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -1182,11 +1465,11 @@ spec: - phase - startedAt type: object - reconciledAt: {} + reconciledAt: + format: date-time + type: string resources: items: - description: ResourceStatus holds the current sync and health status - of a resource properties: group: type: string @@ -1228,16 +1511,10 @@ spec: type: array type: object sync: - description: SyncStatus is a comparison result of application spec and - deployed application. properties: comparedTo: - description: ComparedTo contains application source and target which - was used for resources comparison properties: destination: - description: ApplicationDestination contains deployment destination - information properties: namespace: description: Namespace overrides the environment namespace @@ -1249,21 +1526,16 @@ spec: type: string type: object source: - description: ApplicationSource contains information about github - repository, path within repository and target application - environment. properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -1280,7 +1552,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1298,13 +1569,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -1326,8 +1595,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -1337,8 +1605,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -1353,18 +1619,17 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -1391,7 +1656,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -1423,8 +1688,14 @@ spec: - status type: object type: object + required: + - metadata + - spec type: object - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition @@ -1444,6 +1715,11 @@ spec: scope: Namespaced validation: 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)' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -1455,14 +1731,371 @@ spec: 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/api-conventions.md#types-kinds' type: string - metadata: {} + metadata: + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + clusterName: + description: The name of the cluster which the object belongs to. This + is used to distinguish resources with same name and namespace in different + clusters. This field is not set anywhere right now and apiserver is + going to ignore it if set in create or update request. + type: string + deletionGracePeriodSeconds: + description: Number of seconds allowed for this object to gracefully + terminate before it will be removed from the system. Only set when + deletionTimestamp is also set. May only be shortened. Read-only. + format: int64 + type: integer + deletionTimestamp: + description: "DeletionTimestamp is RFC 3339 date and time at which this + resource will be deleted. This field is set by the server when a graceful + deletion is requested by the user, and is not directly settable by + a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in + this field, once the finalizers list is empty. As long as the finalizers + list contains items, deletion is blocked. Once the deletionTimestamp + is set, this value may not be unset or be set further into the future, + although it may be shortened or the resource may be deleted prior + to this time. For example, a user may request that a pod is deleted + in 30 seconds. The Kubelet will react by sending a graceful termination + signal to the containers in the pod. After that 30 seconds, the Kubelet + will send a hard termination signal (SIGKILL) to the container and + after cleanup, remove the pod from the API. In the presence of network + partitions, this object may still exist after this timestamp, until + an administrator or automated process can determine the resource is + fully terminated. If not set, graceful deletion of the object has + not been requested. \n Populated by the system when a graceful deletion + is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" + format: date-time + type: string + finalizers: + description: Must be empty before the object is deleted from the registry. + Each entry is an identifier for the responsible component that will + remove the entry from the list. If the deletionTimestamp of the object + is non-nil, entries in this list can only be removed. + items: + type: string + type: array + generateName: + description: "GenerateName is an optional prefix, used by the server, + to generate a unique name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique + suffix. The provided value has the same validation rules as the Name + field, and may be truncated by the length of the suffix required to + make the value unique on the server. \n If this field is specified + and the generated name exists, the server will NOT return a 409 - + instead, it will either return 201 Created or 500 with Reason ServerTimeout + indicating a unique name could not be found in the time allotted, + and the client should retry (optionally after the time indicated in + the Retry-After header). \n Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency" + type: string + generation: + description: A sequence number representing a specific generation of + the desired state. Populated by the system. Read-only. + format: int64 + type: integer + initializers: + description: "An initializer is a controller which enforces some system + invariant at object creation time. This field is a list of initializers + that have not yet acted on this object. If nil or empty, this object + has been completely initialized. Otherwise, the object is considered + uninitialized and is hidden (in list/watch and get calls) from clients + that haven't explicitly asked to observe uninitialized objects. \n + When an object is created, the system will populate this list with + the current set of initializers. Only privileged users may set or + modify this list. Once it is empty, it may not be modified further + by any user. \n DEPRECATED - initializers are an alpha field and will + be removed in v1.15." + properties: + pending: + description: Pending is a list of initializers that must execute + in order before this object is visible. When the last pending + initializer is removed, and no failing result is set, the initializers + struct will be set to nil and the object is considered as initialized + and visible to all clients. + items: + properties: + name: + description: name of the process that is responsible for initializing + this object. + type: string + required: + - name + type: object + type: array + result: + description: If result is set with the Failure field, the object + will be persisted to storage and then deleted, ensuring that other + clients can observe the deletion. + 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/api-conventions.md#resources' + type: string + code: + description: Suggested HTTP return code for this status, 0 if + not set. + format: int32 + type: integer + details: + description: Extended data associated with the reason. Each + reason may define its own extended details. This field is + optional and the data returned is not guaranteed to conform + to any schema except that defined by the reason type. + properties: + causes: + description: The Causes array includes more details associated + with the StatusReason failure. Not all StatusReasons may + provide detailed causes. + items: + properties: + field: + description: "The field of the resource that has caused + this error, as named by its JSON serialization. + May include dot and postfix notation for nested + attributes. Arrays are zero-indexed. Fields may + appear more than once in an array of causes due + to fields having multiple errors. Optional. \n Examples: + \ \"name\" - the field \"name\" on the current + resource \"items[0].name\" - the field \"name\" + on the first array entry in \"items\"" + type: string + message: + description: A human-readable description of the cause + of the error. This field may be presented as-is + to a reader. + type: string + reason: + description: A machine-readable description of the + cause of the error. If this value is empty there + is no information available. + type: string + type: object + type: array + group: + description: The group attribute of the resource associated + with the status StatusReason. + type: string + kind: + description: 'The kind attribute of the resource associated + with the status StatusReason. On some operations may differ + from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: The name attribute of the resource associated + with the status StatusReason (when there is a single name + which can be described). + type: string + retryAfterSeconds: + description: If specified, the time in seconds before the + operation should be retried. Some errors may indicate + the client must take an alternate action - for those errors + this field may indicate how long to wait before taking + the alternate action. + format: int32 + type: integer + uid: + description: 'UID of the resource. (when there is a single + resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + type: object + 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/api-conventions.md#types-kinds' + type: string + message: + description: A human-readable description of the status of this + operation. + type: string + metadata: + description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + properties: + continue: + description: continue may be set if the user set a limit + on the number of items returned, and indicates that the + server has more data available. The value is opaque and + may be used to issue another request to the endpoint that + served this list to retrieve the next set of available + objects. Continuing a consistent list may not be possible + if the server configuration has changed or more than a + few minutes have passed. The resourceVersion field returned + when using this continue value will be identical to the + value in the first response, unless you have received + this token from an error message. + type: string + resourceVersion: + description: 'String that identifies the server''s internal + version of this object that can be used by clients to + determine when objects have changed. Value must be treated + as opaque by clients and passed unmodified back to the + server. Populated by the system. Read-only. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency' + type: string + selfLink: + description: selfLink is a URL representing this object. + Populated by the system. Read-only. + type: string + type: object + reason: + description: A machine-readable description of why this operation + is in the "Failure" status. If this value is empty there is + no information available. A Reason clarifies an HTTP status + code but does not override it. + type: string + status: + description: 'Status of the operation. One of: "Success" or + "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' + type: string + type: object + required: + - pending + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + managedFields: + description: "ManagedFields maps workflow-id and version to the set + of fields that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or understand + this field. A workflow can be the user's name, a controller's name, + or the name of a specific apply path like \"ci-cd\". The set of fields + is always in the version that the workflow used when modifying the + object. \n This field is alpha and can be changed or removed without + notice." + items: + properties: + apiVersion: + description: APIVersion defines the version of this resource that + this field set applies to. The format is "group/version" just + like the top-level APIVersion field. It is necessary to track + the version of a field set because it cannot be automatically + converted. + type: string + fields: + additionalProperties: true + description: Fields identifies a set of fields. + type: object + manager: + description: Manager is an identifier of the workflow managing + these fields. + type: string + operation: + description: Operation is the type of operation which lead to + this ManagedFieldsEntry being created. The only valid values + for this field are 'Apply' and 'Update'. + type: string + time: + description: Time is timestamp of when these fields were set. + It should always be empty if Operation is 'Apply' + format: date-time + type: string + type: object + type: array + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within each name must be unique. + An empty namespace is equivalent to the \"default\" namespace, but + \"default\" is the canonical representation. Not all objects are required + to be scoped to a namespace - the value of this field for those objects + will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: + http://kubernetes.io/docs/user-guide/namespaces" + type: string + ownerReferences: + description: List of objects depended by this object. If ALL objects + in the list have been deleted, this object will be garbage collected. + If this object is managed by a controller, then an entry in this list + will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + items: + properties: + apiVersion: + description: API version of the referent. + type: string + blockOwnerDeletion: + description: If true, AND if the owner has the "foregroundDeletion" + finalizer, then the owner cannot be deleted from the key-value + store until this reference is removed. Defaults to false. To + set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + type: boolean + controller: + description: If true, this reference points to the managing controller. + type: boolean + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + uid: + description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + required: + - apiVersion + - kind + - name + - uid + type: object + type: array + resourceVersion: + description: "An opaque value that represents the internal version of + this object that can be used by clients to determine when objects + have changed. May be used for optimistic concurrency, change detection, + and the watch operation on a resource or set of resources. Clients + must treat these values as opaque and passed unmodified back to the + server. They may only be valid for a particular resource or set of + resources. \n Populated by the system. Read-only. Value must be treated + as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency" + type: string + selfLink: + description: SelfLink is a URL representing this object. Populated by + the system. Read-only. + type: string + uid: + description: "UID is the unique in time and space value for this object. + It is typically generated by the server on successful creation of + a resource and is not allowed to change on PUT operations. \n Populated + by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" + type: string + type: object spec: - description: AppProjectSpec is the specification of an AppProject properties: clusterResourceWhitelist: description: ClusterResourceWhitelist contains list of whitelisted cluster level resources - items: {} + items: + properties: + group: + type: string + kind: + type: string + required: + - group + - kind + type: object type: array description: description: Description contains optional project description @@ -1471,8 +2104,6 @@ spec: description: Destinations contains list of destinations available for deployment items: - description: ApplicationDestination contains deployment destination - information properties: namespace: description: Namespace overrides the environment namespace value @@ -1487,13 +2118,21 @@ spec: namespaceResourceBlacklist: description: NamespaceResourceBlacklist contains list of blacklisted namespace level resources - items: {} + items: + properties: + group: + type: string + kind: + type: string + required: + - group + - kind + type: object type: array roles: description: Roles are user defined RBAC roles associated with this project items: - description: ProjectRole represents a role that has access to a project properties: description: description: Description is a description of the role @@ -1508,8 +2147,6 @@ spec: 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 properties: exp: format: int64 @@ -1541,8 +2178,14 @@ spec: type: string type: array type: object + required: + - metadata + - spec type: object - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- apiVersion: v1 kind: ServiceAccount diff --git a/manifests/install.yaml b/manifests/install.yaml index 836a6400f6..4020928863 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -17,6 +17,7 @@ spec: scope: Namespaced validation: openAPIV3Schema: + description: Application is a definition of Application resource. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -28,12 +29,359 @@ spec: 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/api-conventions.md#types-kinds' type: string - metadata: {} + metadata: + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + clusterName: + description: The name of the cluster which the object belongs to. This + is used to distinguish resources with same name and namespace in different + clusters. This field is not set anywhere right now and apiserver is + going to ignore it if set in create or update request. + type: string + deletionGracePeriodSeconds: + description: Number of seconds allowed for this object to gracefully + terminate before it will be removed from the system. Only set when + deletionTimestamp is also set. May only be shortened. Read-only. + format: int64 + type: integer + deletionTimestamp: + description: "DeletionTimestamp is RFC 3339 date and time at which this + resource will be deleted. This field is set by the server when a graceful + deletion is requested by the user, and is not directly settable by + a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in + this field, once the finalizers list is empty. As long as the finalizers + list contains items, deletion is blocked. Once the deletionTimestamp + is set, this value may not be unset or be set further into the future, + although it may be shortened or the resource may be deleted prior + to this time. For example, a user may request that a pod is deleted + in 30 seconds. The Kubelet will react by sending a graceful termination + signal to the containers in the pod. After that 30 seconds, the Kubelet + will send a hard termination signal (SIGKILL) to the container and + after cleanup, remove the pod from the API. In the presence of network + partitions, this object may still exist after this timestamp, until + an administrator or automated process can determine the resource is + fully terminated. If not set, graceful deletion of the object has + not been requested. \n Populated by the system when a graceful deletion + is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" + format: date-time + type: string + finalizers: + description: Must be empty before the object is deleted from the registry. + Each entry is an identifier for the responsible component that will + remove the entry from the list. If the deletionTimestamp of the object + is non-nil, entries in this list can only be removed. + items: + type: string + type: array + generateName: + description: "GenerateName is an optional prefix, used by the server, + to generate a unique name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique + suffix. The provided value has the same validation rules as the Name + field, and may be truncated by the length of the suffix required to + make the value unique on the server. \n If this field is specified + and the generated name exists, the server will NOT return a 409 - + instead, it will either return 201 Created or 500 with Reason ServerTimeout + indicating a unique name could not be found in the time allotted, + and the client should retry (optionally after the time indicated in + the Retry-After header). \n Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency" + type: string + generation: + description: A sequence number representing a specific generation of + the desired state. Populated by the system. Read-only. + format: int64 + type: integer + initializers: + description: "An initializer is a controller which enforces some system + invariant at object creation time. This field is a list of initializers + that have not yet acted on this object. If nil or empty, this object + has been completely initialized. Otherwise, the object is considered + uninitialized and is hidden (in list/watch and get calls) from clients + that haven't explicitly asked to observe uninitialized objects. \n + When an object is created, the system will populate this list with + the current set of initializers. Only privileged users may set or + modify this list. Once it is empty, it may not be modified further + by any user. \n DEPRECATED - initializers are an alpha field and will + be removed in v1.15." + properties: + pending: + description: Pending is a list of initializers that must execute + in order before this object is visible. When the last pending + initializer is removed, and no failing result is set, the initializers + struct will be set to nil and the object is considered as initialized + and visible to all clients. + items: + properties: + name: + description: name of the process that is responsible for initializing + this object. + type: string + required: + - name + type: object + type: array + result: + description: If result is set with the Failure field, the object + will be persisted to storage and then deleted, ensuring that other + clients can observe the deletion. + 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/api-conventions.md#resources' + type: string + code: + description: Suggested HTTP return code for this status, 0 if + not set. + format: int32 + type: integer + details: + description: Extended data associated with the reason. Each + reason may define its own extended details. This field is + optional and the data returned is not guaranteed to conform + to any schema except that defined by the reason type. + properties: + causes: + description: The Causes array includes more details associated + with the StatusReason failure. Not all StatusReasons may + provide detailed causes. + items: + properties: + field: + description: "The field of the resource that has caused + this error, as named by its JSON serialization. + May include dot and postfix notation for nested + attributes. Arrays are zero-indexed. Fields may + appear more than once in an array of causes due + to fields having multiple errors. Optional. \n Examples: + \ \"name\" - the field \"name\" on the current + resource \"items[0].name\" - the field \"name\" + on the first array entry in \"items\"" + type: string + message: + description: A human-readable description of the cause + of the error. This field may be presented as-is + to a reader. + type: string + reason: + description: A machine-readable description of the + cause of the error. If this value is empty there + is no information available. + type: string + type: object + type: array + group: + description: The group attribute of the resource associated + with the status StatusReason. + type: string + kind: + description: 'The kind attribute of the resource associated + with the status StatusReason. On some operations may differ + from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: The name attribute of the resource associated + with the status StatusReason (when there is a single name + which can be described). + type: string + retryAfterSeconds: + description: If specified, the time in seconds before the + operation should be retried. Some errors may indicate + the client must take an alternate action - for those errors + this field may indicate how long to wait before taking + the alternate action. + format: int32 + type: integer + uid: + description: 'UID of the resource. (when there is a single + resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + type: object + 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/api-conventions.md#types-kinds' + type: string + message: + description: A human-readable description of the status of this + operation. + type: string + metadata: + description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + properties: + continue: + description: continue may be set if the user set a limit + on the number of items returned, and indicates that the + server has more data available. The value is opaque and + may be used to issue another request to the endpoint that + served this list to retrieve the next set of available + objects. Continuing a consistent list may not be possible + if the server configuration has changed or more than a + few minutes have passed. The resourceVersion field returned + when using this continue value will be identical to the + value in the first response, unless you have received + this token from an error message. + type: string + resourceVersion: + description: 'String that identifies the server''s internal + version of this object that can be used by clients to + determine when objects have changed. Value must be treated + as opaque by clients and passed unmodified back to the + server. Populated by the system. Read-only. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency' + type: string + selfLink: + description: selfLink is a URL representing this object. + Populated by the system. Read-only. + type: string + type: object + reason: + description: A machine-readable description of why this operation + is in the "Failure" status. If this value is empty there is + no information available. A Reason clarifies an HTTP status + code but does not override it. + type: string + status: + description: 'Status of the operation. One of: "Success" or + "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' + type: string + type: object + required: + - pending + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + managedFields: + description: "ManagedFields maps workflow-id and version to the set + of fields that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or understand + this field. A workflow can be the user's name, a controller's name, + or the name of a specific apply path like \"ci-cd\". The set of fields + is always in the version that the workflow used when modifying the + object. \n This field is alpha and can be changed or removed without + notice." + items: + properties: + apiVersion: + description: APIVersion defines the version of this resource that + this field set applies to. The format is "group/version" just + like the top-level APIVersion field. It is necessary to track + the version of a field set because it cannot be automatically + converted. + type: string + fields: + additionalProperties: true + description: Fields identifies a set of fields. + type: object + manager: + description: Manager is an identifier of the workflow managing + these fields. + type: string + operation: + description: Operation is the type of operation which lead to + this ManagedFieldsEntry being created. The only valid values + for this field are 'Apply' and 'Update'. + type: string + time: + description: Time is timestamp of when these fields were set. + It should always be empty if Operation is 'Apply' + format: date-time + type: string + type: object + type: array + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within each name must be unique. + An empty namespace is equivalent to the \"default\" namespace, but + \"default\" is the canonical representation. Not all objects are required + to be scoped to a namespace - the value of this field for those objects + will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: + http://kubernetes.io/docs/user-guide/namespaces" + type: string + ownerReferences: + description: List of objects depended by this object. If ALL objects + in the list have been deleted, this object will be garbage collected. + If this object is managed by a controller, then an entry in this list + will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + items: + properties: + apiVersion: + description: API version of the referent. + type: string + blockOwnerDeletion: + description: If true, AND if the owner has the "foregroundDeletion" + finalizer, then the owner cannot be deleted from the key-value + store until this reference is removed. Defaults to false. To + set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + type: boolean + controller: + description: If true, this reference points to the managing controller. + type: boolean + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + uid: + description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + required: + - apiVersion + - kind + - name + - uid + type: object + type: array + resourceVersion: + description: "An opaque value that represents the internal version of + this object that can be used by clients to determine when objects + have changed. May be used for optimistic concurrency, change detection, + and the watch operation on a resource or set of resources. Clients + must treat these values as opaque and passed unmodified back to the + server. They may only be valid for a particular resource or set of + resources. \n Populated by the system. Read-only. Value must be treated + as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency" + type: string + selfLink: + description: SelfLink is a URL representing this object. Populated by + the system. Read-only. + type: string + uid: + description: "UID is the unique in time and space value for this object. + It is typically generated by the server on successful creation of + a resource and is not allowed to change on PUT operations. \n Populated + by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" + type: string + type: object operation: - description: Operation contains requested operation parameters. properties: sync: - description: SyncOperation contains sync operation details. properties: dryRun: description: DryRun will perform a `kubectl apply --dry-run` without @@ -52,7 +400,6 @@ spec: resources: description: Resources describes which resources to sync items: - description: SyncOperationResource contains resources to sync. properties: group: type: string @@ -70,19 +417,18 @@ spec: to. If omitted, will use the revision specified in app spec. type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application environment. + description: Source overrides the source definition set in the application. + This is typically set in a Rollback operation and nil during a + Sync operation properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -98,7 +444,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -116,12 +461,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm template properties: name: description: Name is the name of the helm parameter @@ -143,8 +487,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -154,7 +497,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -169,16 +511,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image tag properties: name: description: Name is the name of the image (e.g. nginx) @@ -204,7 +546,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -225,12 +567,11 @@ spec: - path type: object syncStrategy: - description: SyncStrategy controls the manner in which a sync is - performed + description: SyncStrategy describes how to perform the sync properties: apply: - description: SyncStrategyApply uses `kubectl apply` to perform - the apply + description: Apply wil perform a `kubectl apply` to perform + the sync. properties: force: description: Force indicates whether or not to supply the @@ -240,33 +581,24 @@ spec: type: boolean type: object hook: - description: SyncStrategyHook will perform a sync using hooks - annotations. If no hook annotation is specified falls back - to `kubectl apply`. + description: Hook will submit any referenced resources to perform + the sync. This is the default strategy properties: - SyncStrategyApply: - description: SyncStrategyApply uses `kubectl apply` to perform - the apply - 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. - type: boolean - type: object + 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. + 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. properties: destination: - description: ApplicationDestination contains deployment destination - information + description: Destination overrides the kubernetes server and namespace + defined in the environment ksonnet app.yaml properties: namespace: description: Namespace overrides the environment namespace value @@ -281,9 +613,6 @@ spec: 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 @@ -322,19 +651,17 @@ spec: that application belongs to 'default' project. type: string source: - description: ApplicationSource contains information about github repository, - path within repository and target application environment. + description: Source is a reference to the location ksonnet application + definition properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -350,7 +677,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -368,12 +694,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm template properties: name: description: Name is the name of the helm parameter @@ -395,7 +720,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -405,7 +730,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -420,16 +744,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image tag properties: name: description: Name is the name of the image (e.g. nginx) @@ -455,7 +779,7 @@ spec: a type: string plugin: - description: ApplicationSourcePlugin holds config management plugin + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -475,12 +799,11 @@ spec: - path type: object syncPolicy: - description: SyncPolicy controls when a sync will be performed in response - to updates in git + description: SyncPolicy controls when a sync will be performed properties: automated: - description: SyncPolicyAutomated controls the behavior of an automated - sync + description: Automated will keep an application synced to the target + revision properties: prune: description: 'Prune will prune resources automatically as part @@ -494,13 +817,9 @@ spec: - project type: object status: - description: ApplicationStatus contains information about application sync, - health status properties: conditions: items: - description: ApplicationCondition contains details about current application - condition properties: message: description: Message contains human-readable message indicating @@ -523,30 +842,26 @@ spec: type: object history: items: - description: RevisionHistory contains information relevant to an application - deployment properties: - deployedAt: {} + deployedAt: + format: date-time + type: string id: format: int64 type: integer revision: type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application environment. properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -562,7 +877,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -580,13 +894,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -608,8 +920,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -619,8 +930,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -635,17 +944,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -672,7 +980,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -698,21 +1006,23 @@ spec: - id type: object type: array - observedAt: {} + observedAt: + format: date-time + type: string operationState: - description: OperationState contains information about state of currently - performing operation on application. properties: - finishedAt: {} + finishedAt: + description: FinishedAt contains time of operation completion + format: date-time + type: string message: description: Message hold any pertinent messages when attempting to perform operation (typically errors). type: string operation: - description: Operation contains requested operation parameters. + description: Operation is the original requested operation properties: sync: - description: SyncOperation contains sync operation details. properties: dryRun: description: DryRun will perform a `kubectl apply --dry-run` @@ -731,8 +1041,6 @@ spec: resources: description: Resources describes which resources to sync items: - description: SyncOperationResource contains resources - to sync. properties: group: type: string @@ -751,21 +1059,20 @@ spec: specified in app spec. type: string source: - description: ApplicationSource contains information about - github repository, path within repository and target application - environment. + description: Source overrides the source definition set + in the application. This is typically set in a Rollback + operation and nil during a Sync operation properties: directory: + description: Directory holds path/directory specific + options properties: 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 @@ -782,7 +1089,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -800,15 +1106,12 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific - options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a - helm template properties: name: description: Name is the name of the helm @@ -832,8 +1135,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet - specific options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application @@ -843,8 +1145,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -859,10 +1159,11 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object @@ -870,8 +1171,6 @@ spec: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize - image tag properties: name: description: Name is the name of the image @@ -898,7 +1197,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -919,12 +1218,11 @@ spec: - path type: object syncStrategy: - description: SyncStrategy controls the manner in which a - sync is performed + description: SyncStrategy describes how to perform the sync properties: apply: - description: SyncStrategyApply uses `kubectl apply` - to perform the apply + description: Apply wil perform a `kubectl apply` to + perform the sync. properties: force: description: Force indicates whether or not to supply @@ -935,22 +1233,16 @@ spec: type: boolean type: object hook: - description: SyncStrategyHook will perform a sync using - hooks annotations. If no hook annotation is specified - falls back to `kubectl apply`. + description: Hook will submit any referenced resources + to perform the sync. This is the default strategy properties: - SyncStrategyApply: - description: SyncStrategyApply uses `kubectl apply` - to perform the apply - 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. - type: boolean - type: object + 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. + type: boolean type: object type: object type: object @@ -958,16 +1250,17 @@ spec: phase: description: Phase is the current phase of the operation type: string - startedAt: {} + startedAt: + description: StartedAt contains time of operation start + format: date-time + type: string syncResult: - description: SyncOperationResult represent result of sync operation + description: SyncResult is the result of a Sync operation properties: resources: description: Resources holds the sync result of each individual resource items: - description: ResourceResult holds the operation result details - of a specific resource properties: group: type: string @@ -1012,21 +1305,18 @@ spec: description: Revision holds the git commit SHA of the sync type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application - environment. + description: Source records the application source information + of the sync, used for comparing auto-sync properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -1043,7 +1333,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1061,13 +1350,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -1089,8 +1376,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -1100,8 +1386,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -1116,18 +1400,17 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -1154,7 +1437,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -1182,11 +1465,11 @@ spec: - phase - startedAt type: object - reconciledAt: {} + reconciledAt: + format: date-time + type: string resources: items: - description: ResourceStatus holds the current sync and health status - of a resource properties: group: type: string @@ -1228,16 +1511,10 @@ spec: type: array type: object sync: - description: SyncStatus is a comparison result of application spec and - deployed application. properties: comparedTo: - description: ComparedTo contains application source and target which - was used for resources comparison properties: destination: - description: ApplicationDestination contains deployment destination - information properties: namespace: description: Namespace overrides the environment namespace @@ -1249,21 +1526,16 @@ spec: type: string type: object source: - description: ApplicationSource contains information about github - repository, path within repository and target application - environment. properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -1280,7 +1552,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1298,13 +1569,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -1326,8 +1595,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -1337,8 +1605,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -1353,18 +1619,17 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -1391,7 +1656,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -1423,8 +1688,14 @@ spec: - status type: object type: object + required: + - metadata + - spec type: object - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition @@ -1444,6 +1715,11 @@ spec: scope: Namespaced validation: 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)' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -1455,14 +1731,371 @@ spec: 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/api-conventions.md#types-kinds' type: string - metadata: {} + metadata: + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + clusterName: + description: The name of the cluster which the object belongs to. This + is used to distinguish resources with same name and namespace in different + clusters. This field is not set anywhere right now and apiserver is + going to ignore it if set in create or update request. + type: string + deletionGracePeriodSeconds: + description: Number of seconds allowed for this object to gracefully + terminate before it will be removed from the system. Only set when + deletionTimestamp is also set. May only be shortened. Read-only. + format: int64 + type: integer + deletionTimestamp: + description: "DeletionTimestamp is RFC 3339 date and time at which this + resource will be deleted. This field is set by the server when a graceful + deletion is requested by the user, and is not directly settable by + a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in + this field, once the finalizers list is empty. As long as the finalizers + list contains items, deletion is blocked. Once the deletionTimestamp + is set, this value may not be unset or be set further into the future, + although it may be shortened or the resource may be deleted prior + to this time. For example, a user may request that a pod is deleted + in 30 seconds. The Kubelet will react by sending a graceful termination + signal to the containers in the pod. After that 30 seconds, the Kubelet + will send a hard termination signal (SIGKILL) to the container and + after cleanup, remove the pod from the API. In the presence of network + partitions, this object may still exist after this timestamp, until + an administrator or automated process can determine the resource is + fully terminated. If not set, graceful deletion of the object has + not been requested. \n Populated by the system when a graceful deletion + is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" + format: date-time + type: string + finalizers: + description: Must be empty before the object is deleted from the registry. + Each entry is an identifier for the responsible component that will + remove the entry from the list. If the deletionTimestamp of the object + is non-nil, entries in this list can only be removed. + items: + type: string + type: array + generateName: + description: "GenerateName is an optional prefix, used by the server, + to generate a unique name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique + suffix. The provided value has the same validation rules as the Name + field, and may be truncated by the length of the suffix required to + make the value unique on the server. \n If this field is specified + and the generated name exists, the server will NOT return a 409 - + instead, it will either return 201 Created or 500 with Reason ServerTimeout + indicating a unique name could not be found in the time allotted, + and the client should retry (optionally after the time indicated in + the Retry-After header). \n Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency" + type: string + generation: + description: A sequence number representing a specific generation of + the desired state. Populated by the system. Read-only. + format: int64 + type: integer + initializers: + description: "An initializer is a controller which enforces some system + invariant at object creation time. This field is a list of initializers + that have not yet acted on this object. If nil or empty, this object + has been completely initialized. Otherwise, the object is considered + uninitialized and is hidden (in list/watch and get calls) from clients + that haven't explicitly asked to observe uninitialized objects. \n + When an object is created, the system will populate this list with + the current set of initializers. Only privileged users may set or + modify this list. Once it is empty, it may not be modified further + by any user. \n DEPRECATED - initializers are an alpha field and will + be removed in v1.15." + properties: + pending: + description: Pending is a list of initializers that must execute + in order before this object is visible. When the last pending + initializer is removed, and no failing result is set, the initializers + struct will be set to nil and the object is considered as initialized + and visible to all clients. + items: + properties: + name: + description: name of the process that is responsible for initializing + this object. + type: string + required: + - name + type: object + type: array + result: + description: If result is set with the Failure field, the object + will be persisted to storage and then deleted, ensuring that other + clients can observe the deletion. + 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/api-conventions.md#resources' + type: string + code: + description: Suggested HTTP return code for this status, 0 if + not set. + format: int32 + type: integer + details: + description: Extended data associated with the reason. Each + reason may define its own extended details. This field is + optional and the data returned is not guaranteed to conform + to any schema except that defined by the reason type. + properties: + causes: + description: The Causes array includes more details associated + with the StatusReason failure. Not all StatusReasons may + provide detailed causes. + items: + properties: + field: + description: "The field of the resource that has caused + this error, as named by its JSON serialization. + May include dot and postfix notation for nested + attributes. Arrays are zero-indexed. Fields may + appear more than once in an array of causes due + to fields having multiple errors. Optional. \n Examples: + \ \"name\" - the field \"name\" on the current + resource \"items[0].name\" - the field \"name\" + on the first array entry in \"items\"" + type: string + message: + description: A human-readable description of the cause + of the error. This field may be presented as-is + to a reader. + type: string + reason: + description: A machine-readable description of the + cause of the error. If this value is empty there + is no information available. + type: string + type: object + type: array + group: + description: The group attribute of the resource associated + with the status StatusReason. + type: string + kind: + description: 'The kind attribute of the resource associated + with the status StatusReason. On some operations may differ + from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: The name attribute of the resource associated + with the status StatusReason (when there is a single name + which can be described). + type: string + retryAfterSeconds: + description: If specified, the time in seconds before the + operation should be retried. Some errors may indicate + the client must take an alternate action - for those errors + this field may indicate how long to wait before taking + the alternate action. + format: int32 + type: integer + uid: + description: 'UID of the resource. (when there is a single + resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + type: object + 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/api-conventions.md#types-kinds' + type: string + message: + description: A human-readable description of the status of this + operation. + type: string + metadata: + description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + properties: + continue: + description: continue may be set if the user set a limit + on the number of items returned, and indicates that the + server has more data available. The value is opaque and + may be used to issue another request to the endpoint that + served this list to retrieve the next set of available + objects. Continuing a consistent list may not be possible + if the server configuration has changed or more than a + few minutes have passed. The resourceVersion field returned + when using this continue value will be identical to the + value in the first response, unless you have received + this token from an error message. + type: string + resourceVersion: + description: 'String that identifies the server''s internal + version of this object that can be used by clients to + determine when objects have changed. Value must be treated + as opaque by clients and passed unmodified back to the + server. Populated by the system. Read-only. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency' + type: string + selfLink: + description: selfLink is a URL representing this object. + Populated by the system. Read-only. + type: string + type: object + reason: + description: A machine-readable description of why this operation + is in the "Failure" status. If this value is empty there is + no information available. A Reason clarifies an HTTP status + code but does not override it. + type: string + status: + description: 'Status of the operation. One of: "Success" or + "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' + type: string + type: object + required: + - pending + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + managedFields: + description: "ManagedFields maps workflow-id and version to the set + of fields that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or understand + this field. A workflow can be the user's name, a controller's name, + or the name of a specific apply path like \"ci-cd\". The set of fields + is always in the version that the workflow used when modifying the + object. \n This field is alpha and can be changed or removed without + notice." + items: + properties: + apiVersion: + description: APIVersion defines the version of this resource that + this field set applies to. The format is "group/version" just + like the top-level APIVersion field. It is necessary to track + the version of a field set because it cannot be automatically + converted. + type: string + fields: + additionalProperties: true + description: Fields identifies a set of fields. + type: object + manager: + description: Manager is an identifier of the workflow managing + these fields. + type: string + operation: + description: Operation is the type of operation which lead to + this ManagedFieldsEntry being created. The only valid values + for this field are 'Apply' and 'Update'. + type: string + time: + description: Time is timestamp of when these fields were set. + It should always be empty if Operation is 'Apply' + format: date-time + type: string + type: object + type: array + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within each name must be unique. + An empty namespace is equivalent to the \"default\" namespace, but + \"default\" is the canonical representation. Not all objects are required + to be scoped to a namespace - the value of this field for those objects + will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: + http://kubernetes.io/docs/user-guide/namespaces" + type: string + ownerReferences: + description: List of objects depended by this object. If ALL objects + in the list have been deleted, this object will be garbage collected. + If this object is managed by a controller, then an entry in this list + will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + items: + properties: + apiVersion: + description: API version of the referent. + type: string + blockOwnerDeletion: + description: If true, AND if the owner has the "foregroundDeletion" + finalizer, then the owner cannot be deleted from the key-value + store until this reference is removed. Defaults to false. To + set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + type: boolean + controller: + description: If true, this reference points to the managing controller. + type: boolean + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + uid: + description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + required: + - apiVersion + - kind + - name + - uid + type: object + type: array + resourceVersion: + description: "An opaque value that represents the internal version of + this object that can be used by clients to determine when objects + have changed. May be used for optimistic concurrency, change detection, + and the watch operation on a resource or set of resources. Clients + must treat these values as opaque and passed unmodified back to the + server. They may only be valid for a particular resource or set of + resources. \n Populated by the system. Read-only. Value must be treated + as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency" + type: string + selfLink: + description: SelfLink is a URL representing this object. Populated by + the system. Read-only. + type: string + uid: + description: "UID is the unique in time and space value for this object. + It is typically generated by the server on successful creation of + a resource and is not allowed to change on PUT operations. \n Populated + by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" + type: string + type: object spec: - description: AppProjectSpec is the specification of an AppProject properties: clusterResourceWhitelist: description: ClusterResourceWhitelist contains list of whitelisted cluster level resources - items: {} + items: + properties: + group: + type: string + kind: + type: string + required: + - group + - kind + type: object type: array description: description: Description contains optional project description @@ -1471,8 +2104,6 @@ spec: description: Destinations contains list of destinations available for deployment items: - description: ApplicationDestination contains deployment destination - information properties: namespace: description: Namespace overrides the environment namespace value @@ -1487,13 +2118,21 @@ spec: namespaceResourceBlacklist: description: NamespaceResourceBlacklist contains list of blacklisted namespace level resources - items: {} + items: + properties: + group: + type: string + kind: + type: string + required: + - group + - kind + type: object type: array roles: description: Roles are user defined RBAC roles associated with this project items: - description: ProjectRole represents a role that has access to a project properties: description: description: Description is a description of the role @@ -1508,8 +2147,6 @@ spec: 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 properties: exp: format: int64 @@ -1541,8 +2178,14 @@ spec: type: string type: array type: object + required: + - metadata + - spec type: object - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- apiVersion: v1 kind: ServiceAccount diff --git a/manifests/namespace-install.yaml b/manifests/namespace-install.yaml index 8dce2ef902..b211706787 100644 --- a/manifests/namespace-install.yaml +++ b/manifests/namespace-install.yaml @@ -17,6 +17,7 @@ spec: scope: Namespaced validation: openAPIV3Schema: + description: Application is a definition of Application resource. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -28,12 +29,359 @@ spec: 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/api-conventions.md#types-kinds' type: string - metadata: {} + metadata: + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + clusterName: + description: The name of the cluster which the object belongs to. This + is used to distinguish resources with same name and namespace in different + clusters. This field is not set anywhere right now and apiserver is + going to ignore it if set in create or update request. + type: string + deletionGracePeriodSeconds: + description: Number of seconds allowed for this object to gracefully + terminate before it will be removed from the system. Only set when + deletionTimestamp is also set. May only be shortened. Read-only. + format: int64 + type: integer + deletionTimestamp: + description: "DeletionTimestamp is RFC 3339 date and time at which this + resource will be deleted. This field is set by the server when a graceful + deletion is requested by the user, and is not directly settable by + a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in + this field, once the finalizers list is empty. As long as the finalizers + list contains items, deletion is blocked. Once the deletionTimestamp + is set, this value may not be unset or be set further into the future, + although it may be shortened or the resource may be deleted prior + to this time. For example, a user may request that a pod is deleted + in 30 seconds. The Kubelet will react by sending a graceful termination + signal to the containers in the pod. After that 30 seconds, the Kubelet + will send a hard termination signal (SIGKILL) to the container and + after cleanup, remove the pod from the API. In the presence of network + partitions, this object may still exist after this timestamp, until + an administrator or automated process can determine the resource is + fully terminated. If not set, graceful deletion of the object has + not been requested. \n Populated by the system when a graceful deletion + is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" + format: date-time + type: string + finalizers: + description: Must be empty before the object is deleted from the registry. + Each entry is an identifier for the responsible component that will + remove the entry from the list. If the deletionTimestamp of the object + is non-nil, entries in this list can only be removed. + items: + type: string + type: array + generateName: + description: "GenerateName is an optional prefix, used by the server, + to generate a unique name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique + suffix. The provided value has the same validation rules as the Name + field, and may be truncated by the length of the suffix required to + make the value unique on the server. \n If this field is specified + and the generated name exists, the server will NOT return a 409 - + instead, it will either return 201 Created or 500 with Reason ServerTimeout + indicating a unique name could not be found in the time allotted, + and the client should retry (optionally after the time indicated in + the Retry-After header). \n Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency" + type: string + generation: + description: A sequence number representing a specific generation of + the desired state. Populated by the system. Read-only. + format: int64 + type: integer + initializers: + description: "An initializer is a controller which enforces some system + invariant at object creation time. This field is a list of initializers + that have not yet acted on this object. If nil or empty, this object + has been completely initialized. Otherwise, the object is considered + uninitialized and is hidden (in list/watch and get calls) from clients + that haven't explicitly asked to observe uninitialized objects. \n + When an object is created, the system will populate this list with + the current set of initializers. Only privileged users may set or + modify this list. Once it is empty, it may not be modified further + by any user. \n DEPRECATED - initializers are an alpha field and will + be removed in v1.15." + properties: + pending: + description: Pending is a list of initializers that must execute + in order before this object is visible. When the last pending + initializer is removed, and no failing result is set, the initializers + struct will be set to nil and the object is considered as initialized + and visible to all clients. + items: + properties: + name: + description: name of the process that is responsible for initializing + this object. + type: string + required: + - name + type: object + type: array + result: + description: If result is set with the Failure field, the object + will be persisted to storage and then deleted, ensuring that other + clients can observe the deletion. + 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/api-conventions.md#resources' + type: string + code: + description: Suggested HTTP return code for this status, 0 if + not set. + format: int32 + type: integer + details: + description: Extended data associated with the reason. Each + reason may define its own extended details. This field is + optional and the data returned is not guaranteed to conform + to any schema except that defined by the reason type. + properties: + causes: + description: The Causes array includes more details associated + with the StatusReason failure. Not all StatusReasons may + provide detailed causes. + items: + properties: + field: + description: "The field of the resource that has caused + this error, as named by its JSON serialization. + May include dot and postfix notation for nested + attributes. Arrays are zero-indexed. Fields may + appear more than once in an array of causes due + to fields having multiple errors. Optional. \n Examples: + \ \"name\" - the field \"name\" on the current + resource \"items[0].name\" - the field \"name\" + on the first array entry in \"items\"" + type: string + message: + description: A human-readable description of the cause + of the error. This field may be presented as-is + to a reader. + type: string + reason: + description: A machine-readable description of the + cause of the error. If this value is empty there + is no information available. + type: string + type: object + type: array + group: + description: The group attribute of the resource associated + with the status StatusReason. + type: string + kind: + description: 'The kind attribute of the resource associated + with the status StatusReason. On some operations may differ + from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: The name attribute of the resource associated + with the status StatusReason (when there is a single name + which can be described). + type: string + retryAfterSeconds: + description: If specified, the time in seconds before the + operation should be retried. Some errors may indicate + the client must take an alternate action - for those errors + this field may indicate how long to wait before taking + the alternate action. + format: int32 + type: integer + uid: + description: 'UID of the resource. (when there is a single + resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + type: object + 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/api-conventions.md#types-kinds' + type: string + message: + description: A human-readable description of the status of this + operation. + type: string + metadata: + description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + properties: + continue: + description: continue may be set if the user set a limit + on the number of items returned, and indicates that the + server has more data available. The value is opaque and + may be used to issue another request to the endpoint that + served this list to retrieve the next set of available + objects. Continuing a consistent list may not be possible + if the server configuration has changed or more than a + few minutes have passed. The resourceVersion field returned + when using this continue value will be identical to the + value in the first response, unless you have received + this token from an error message. + type: string + resourceVersion: + description: 'String that identifies the server''s internal + version of this object that can be used by clients to + determine when objects have changed. Value must be treated + as opaque by clients and passed unmodified back to the + server. Populated by the system. Read-only. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency' + type: string + selfLink: + description: selfLink is a URL representing this object. + Populated by the system. Read-only. + type: string + type: object + reason: + description: A machine-readable description of why this operation + is in the "Failure" status. If this value is empty there is + no information available. A Reason clarifies an HTTP status + code but does not override it. + type: string + status: + description: 'Status of the operation. One of: "Success" or + "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' + type: string + type: object + required: + - pending + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + managedFields: + description: "ManagedFields maps workflow-id and version to the set + of fields that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or understand + this field. A workflow can be the user's name, a controller's name, + or the name of a specific apply path like \"ci-cd\". The set of fields + is always in the version that the workflow used when modifying the + object. \n This field is alpha and can be changed or removed without + notice." + items: + properties: + apiVersion: + description: APIVersion defines the version of this resource that + this field set applies to. The format is "group/version" just + like the top-level APIVersion field. It is necessary to track + the version of a field set because it cannot be automatically + converted. + type: string + fields: + additionalProperties: true + description: Fields identifies a set of fields. + type: object + manager: + description: Manager is an identifier of the workflow managing + these fields. + type: string + operation: + description: Operation is the type of operation which lead to + this ManagedFieldsEntry being created. The only valid values + for this field are 'Apply' and 'Update'. + type: string + time: + description: Time is timestamp of when these fields were set. + It should always be empty if Operation is 'Apply' + format: date-time + type: string + type: object + type: array + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within each name must be unique. + An empty namespace is equivalent to the \"default\" namespace, but + \"default\" is the canonical representation. Not all objects are required + to be scoped to a namespace - the value of this field for those objects + will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: + http://kubernetes.io/docs/user-guide/namespaces" + type: string + ownerReferences: + description: List of objects depended by this object. If ALL objects + in the list have been deleted, this object will be garbage collected. + If this object is managed by a controller, then an entry in this list + will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + items: + properties: + apiVersion: + description: API version of the referent. + type: string + blockOwnerDeletion: + description: If true, AND if the owner has the "foregroundDeletion" + finalizer, then the owner cannot be deleted from the key-value + store until this reference is removed. Defaults to false. To + set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + type: boolean + controller: + description: If true, this reference points to the managing controller. + type: boolean + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + uid: + description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + required: + - apiVersion + - kind + - name + - uid + type: object + type: array + resourceVersion: + description: "An opaque value that represents the internal version of + this object that can be used by clients to determine when objects + have changed. May be used for optimistic concurrency, change detection, + and the watch operation on a resource or set of resources. Clients + must treat these values as opaque and passed unmodified back to the + server. They may only be valid for a particular resource or set of + resources. \n Populated by the system. Read-only. Value must be treated + as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency" + type: string + selfLink: + description: SelfLink is a URL representing this object. Populated by + the system. Read-only. + type: string + uid: + description: "UID is the unique in time and space value for this object. + It is typically generated by the server on successful creation of + a resource and is not allowed to change on PUT operations. \n Populated + by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" + type: string + type: object operation: - description: Operation contains requested operation parameters. properties: sync: - description: SyncOperation contains sync operation details. properties: dryRun: description: DryRun will perform a `kubectl apply --dry-run` without @@ -52,7 +400,6 @@ spec: resources: description: Resources describes which resources to sync items: - description: SyncOperationResource contains resources to sync. properties: group: type: string @@ -70,19 +417,18 @@ spec: to. If omitted, will use the revision specified in app spec. type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application environment. + description: Source overrides the source definition set in the application. + This is typically set in a Rollback operation and nil during a + Sync operation properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -98,7 +444,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -116,12 +461,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm template properties: name: description: Name is the name of the helm parameter @@ -143,8 +487,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -154,7 +497,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -169,16 +511,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image tag properties: name: description: Name is the name of the image (e.g. nginx) @@ -204,7 +546,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -225,12 +567,11 @@ spec: - path type: object syncStrategy: - description: SyncStrategy controls the manner in which a sync is - performed + description: SyncStrategy describes how to perform the sync properties: apply: - description: SyncStrategyApply uses `kubectl apply` to perform - the apply + description: Apply wil perform a `kubectl apply` to perform + the sync. properties: force: description: Force indicates whether or not to supply the @@ -240,33 +581,24 @@ spec: type: boolean type: object hook: - description: SyncStrategyHook will perform a sync using hooks - annotations. If no hook annotation is specified falls back - to `kubectl apply`. + description: Hook will submit any referenced resources to perform + the sync. This is the default strategy properties: - SyncStrategyApply: - description: SyncStrategyApply uses `kubectl apply` to perform - the apply - 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. - type: boolean - type: object + 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. + 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. properties: destination: - description: ApplicationDestination contains deployment destination - information + description: Destination overrides the kubernetes server and namespace + defined in the environment ksonnet app.yaml properties: namespace: description: Namespace overrides the environment namespace value @@ -281,9 +613,6 @@ spec: 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 @@ -322,19 +651,17 @@ spec: that application belongs to 'default' project. type: string source: - description: ApplicationSource contains information about github repository, - path within repository and target application environment. + description: Source is a reference to the location ksonnet application + definition properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -350,7 +677,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -368,12 +694,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm template properties: name: description: Name is the name of the helm parameter @@ -395,7 +720,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -405,7 +730,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component parameter properties: component: type: string @@ -420,16 +744,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image tag properties: name: description: Name is the name of the image (e.g. nginx) @@ -455,7 +779,7 @@ spec: a type: string plugin: - description: ApplicationSourcePlugin holds config management plugin + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -475,12 +799,11 @@ spec: - path type: object syncPolicy: - description: SyncPolicy controls when a sync will be performed in response - to updates in git + description: SyncPolicy controls when a sync will be performed properties: automated: - description: SyncPolicyAutomated controls the behavior of an automated - sync + description: Automated will keep an application synced to the target + revision properties: prune: description: 'Prune will prune resources automatically as part @@ -494,13 +817,9 @@ spec: - project type: object status: - description: ApplicationStatus contains information about application sync, - health status properties: conditions: items: - description: ApplicationCondition contains details about current application - condition properties: message: description: Message contains human-readable message indicating @@ -523,30 +842,26 @@ spec: type: object history: items: - description: RevisionHistory contains information relevant to an application - deployment properties: - deployedAt: {} + deployedAt: + format: date-time + type: string id: format: int64 type: integer revision: type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application environment. properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -562,7 +877,6 @@ spec: tlas: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -580,13 +894,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -608,8 +920,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -619,8 +930,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -635,17 +944,16 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize specific - options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -672,7 +980,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -698,21 +1006,23 @@ spec: - id type: object type: array - observedAt: {} + observedAt: + format: date-time + type: string operationState: - description: OperationState contains information about state of currently - performing operation on application. properties: - finishedAt: {} + finishedAt: + description: FinishedAt contains time of operation completion + format: date-time + type: string message: description: Message hold any pertinent messages when attempting to perform operation (typically errors). type: string operation: - description: Operation contains requested operation parameters. + description: Operation is the original requested operation properties: sync: - description: SyncOperation contains sync operation details. properties: dryRun: description: DryRun will perform a `kubectl apply --dry-run` @@ -731,8 +1041,6 @@ spec: resources: description: Resources describes which resources to sync items: - description: SyncOperationResource contains resources - to sync. properties: group: type: string @@ -751,21 +1059,20 @@ spec: specified in app spec. type: string source: - description: ApplicationSource contains information about - github repository, path within repository and target application - environment. + description: Source overrides the source definition set + in the application. This is typically set in a Rollback + operation and nil during a Sync operation properties: directory: + description: Directory holds path/directory specific + options properties: 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 @@ -782,7 +1089,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -800,15 +1106,12 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific - options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a - helm template properties: name: description: Name is the name of the helm @@ -832,8 +1135,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet - specific options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application @@ -843,8 +1145,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -859,10 +1159,11 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object @@ -870,8 +1171,6 @@ spec: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize - image tag properties: name: description: Name is the name of the image @@ -898,7 +1197,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -919,12 +1218,11 @@ spec: - path type: object syncStrategy: - description: SyncStrategy controls the manner in which a - sync is performed + description: SyncStrategy describes how to perform the sync properties: apply: - description: SyncStrategyApply uses `kubectl apply` - to perform the apply + description: Apply wil perform a `kubectl apply` to + perform the sync. properties: force: description: Force indicates whether or not to supply @@ -935,22 +1233,16 @@ spec: type: boolean type: object hook: - description: SyncStrategyHook will perform a sync using - hooks annotations. If no hook annotation is specified - falls back to `kubectl apply`. + description: Hook will submit any referenced resources + to perform the sync. This is the default strategy properties: - SyncStrategyApply: - description: SyncStrategyApply uses `kubectl apply` - to perform the apply - 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. - type: boolean - type: object + 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. + type: boolean type: object type: object type: object @@ -958,16 +1250,17 @@ spec: phase: description: Phase is the current phase of the operation type: string - startedAt: {} + startedAt: + description: StartedAt contains time of operation start + format: date-time + type: string syncResult: - description: SyncOperationResult represent result of sync operation + description: SyncResult is the result of a Sync operation properties: resources: description: Resources holds the sync result of each individual resource items: - description: ResourceResult holds the operation result details - of a specific resource properties: group: type: string @@ -1012,21 +1305,18 @@ spec: description: Revision holds the git commit SHA of the sync type: string source: - description: ApplicationSource contains information about github - repository, path within repository and target application - environment. + description: Source records the application source information + of the sync, used for comparing auto-sync properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -1043,7 +1333,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1061,13 +1350,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -1089,8 +1376,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -1100,8 +1386,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -1116,18 +1400,17 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -1154,7 +1437,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -1182,11 +1465,11 @@ spec: - phase - startedAt type: object - reconciledAt: {} + reconciledAt: + format: date-time + type: string resources: items: - description: ResourceStatus holds the current sync and health status - of a resource properties: group: type: string @@ -1228,16 +1511,10 @@ spec: type: array type: object sync: - description: SyncStatus is a comparison result of application spec and - deployed application. properties: comparedTo: - description: ComparedTo contains application source and target which - was used for resources comparison properties: destination: - description: ApplicationDestination contains deployment destination - information properties: namespace: description: Namespace overrides the environment namespace @@ -1249,21 +1526,16 @@ spec: type: string type: object source: - description: ApplicationSource contains information about github - repository, path within repository and target application - environment. properties: directory: + description: Directory holds path/directory specific options properties: 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 @@ -1280,7 +1552,6 @@ spec: description: TLAS is a list of Jsonnet Top-level Arguments items: - description: JsonnetVar is a jsonnet variable properties: code: type: boolean @@ -1298,13 +1569,11 @@ spec: type: boolean type: object helm: - description: ApplicationSourceHelm holds helm specific options + description: Helm holds helm specific options properties: parameters: description: Parameters are parameters to the helm template items: - description: HelmParameter is a parameter to a helm - template properties: name: description: Name is the name of the helm parameter @@ -1326,8 +1595,7 @@ spec: type: array type: object ksonnet: - description: ApplicationSourceKsonnet holds ksonnet specific - options + description: Ksonnet holds ksonnet specific options properties: environment: description: Environment is a ksonnet application environment @@ -1337,8 +1605,6 @@ spec: description: Parameters are a list of ksonnet component parameter override values items: - description: KsonnetParameter is a ksonnet component - parameter properties: component: type: string @@ -1353,18 +1619,17 @@ spec: type: array type: object kustomize: - description: ApplicationSourceKustomize holds kustomize - specific options + description: Kustomize holds kustomize specific options properties: commonLabels: + additionalProperties: + type: string description: CommonLabels adds additional kustomize commonLabels type: object imageTags: description: ImageTags are kustomize 1.0 image tag overrides items: - description: KustomizeImageTag is a kustomize image - tag properties: name: description: Name is the name of the image (e.g. @@ -1391,7 +1656,7 @@ spec: containing a type: string plugin: - description: ApplicationSourcePlugin holds config management + description: ConfigManagementPlugin holds config management plugin specific options properties: name: @@ -1423,8 +1688,14 @@ spec: - status type: object type: object + required: + - metadata + - spec type: object - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition @@ -1444,6 +1715,11 @@ spec: scope: Namespaced validation: 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)' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -1455,14 +1731,371 @@ spec: 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/api-conventions.md#types-kinds' type: string - metadata: {} + metadata: + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + clusterName: + description: The name of the cluster which the object belongs to. This + is used to distinguish resources with same name and namespace in different + clusters. This field is not set anywhere right now and apiserver is + going to ignore it if set in create or update request. + type: string + deletionGracePeriodSeconds: + description: Number of seconds allowed for this object to gracefully + terminate before it will be removed from the system. Only set when + deletionTimestamp is also set. May only be shortened. Read-only. + format: int64 + type: integer + deletionTimestamp: + description: "DeletionTimestamp is RFC 3339 date and time at which this + resource will be deleted. This field is set by the server when a graceful + deletion is requested by the user, and is not directly settable by + a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in + this field, once the finalizers list is empty. As long as the finalizers + list contains items, deletion is blocked. Once the deletionTimestamp + is set, this value may not be unset or be set further into the future, + although it may be shortened or the resource may be deleted prior + to this time. For example, a user may request that a pod is deleted + in 30 seconds. The Kubelet will react by sending a graceful termination + signal to the containers in the pod. After that 30 seconds, the Kubelet + will send a hard termination signal (SIGKILL) to the container and + after cleanup, remove the pod from the API. In the presence of network + partitions, this object may still exist after this timestamp, until + an administrator or automated process can determine the resource is + fully terminated. If not set, graceful deletion of the object has + not been requested. \n Populated by the system when a graceful deletion + is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" + format: date-time + type: string + finalizers: + description: Must be empty before the object is deleted from the registry. + Each entry is an identifier for the responsible component that will + remove the entry from the list. If the deletionTimestamp of the object + is non-nil, entries in this list can only be removed. + items: + type: string + type: array + generateName: + description: "GenerateName is an optional prefix, used by the server, + to generate a unique name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique + suffix. The provided value has the same validation rules as the Name + field, and may be truncated by the length of the suffix required to + make the value unique on the server. \n If this field is specified + and the generated name exists, the server will NOT return a 409 - + instead, it will either return 201 Created or 500 with Reason ServerTimeout + indicating a unique name could not be found in the time allotted, + and the client should retry (optionally after the time indicated in + the Retry-After header). \n Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency" + type: string + generation: + description: A sequence number representing a specific generation of + the desired state. Populated by the system. Read-only. + format: int64 + type: integer + initializers: + description: "An initializer is a controller which enforces some system + invariant at object creation time. This field is a list of initializers + that have not yet acted on this object. If nil or empty, this object + has been completely initialized. Otherwise, the object is considered + uninitialized and is hidden (in list/watch and get calls) from clients + that haven't explicitly asked to observe uninitialized objects. \n + When an object is created, the system will populate this list with + the current set of initializers. Only privileged users may set or + modify this list. Once it is empty, it may not be modified further + by any user. \n DEPRECATED - initializers are an alpha field and will + be removed in v1.15." + properties: + pending: + description: Pending is a list of initializers that must execute + in order before this object is visible. When the last pending + initializer is removed, and no failing result is set, the initializers + struct will be set to nil and the object is considered as initialized + and visible to all clients. + items: + properties: + name: + description: name of the process that is responsible for initializing + this object. + type: string + required: + - name + type: object + type: array + result: + description: If result is set with the Failure field, the object + will be persisted to storage and then deleted, ensuring that other + clients can observe the deletion. + 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/api-conventions.md#resources' + type: string + code: + description: Suggested HTTP return code for this status, 0 if + not set. + format: int32 + type: integer + details: + description: Extended data associated with the reason. Each + reason may define its own extended details. This field is + optional and the data returned is not guaranteed to conform + to any schema except that defined by the reason type. + properties: + causes: + description: The Causes array includes more details associated + with the StatusReason failure. Not all StatusReasons may + provide detailed causes. + items: + properties: + field: + description: "The field of the resource that has caused + this error, as named by its JSON serialization. + May include dot and postfix notation for nested + attributes. Arrays are zero-indexed. Fields may + appear more than once in an array of causes due + to fields having multiple errors. Optional. \n Examples: + \ \"name\" - the field \"name\" on the current + resource \"items[0].name\" - the field \"name\" + on the first array entry in \"items\"" + type: string + message: + description: A human-readable description of the cause + of the error. This field may be presented as-is + to a reader. + type: string + reason: + description: A machine-readable description of the + cause of the error. If this value is empty there + is no information available. + type: string + type: object + type: array + group: + description: The group attribute of the resource associated + with the status StatusReason. + type: string + kind: + description: 'The kind attribute of the resource associated + with the status StatusReason. On some operations may differ + from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: The name attribute of the resource associated + with the status StatusReason (when there is a single name + which can be described). + type: string + retryAfterSeconds: + description: If specified, the time in seconds before the + operation should be retried. Some errors may indicate + the client must take an alternate action - for those errors + this field may indicate how long to wait before taking + the alternate action. + format: int32 + type: integer + uid: + description: 'UID of the resource. (when there is a single + resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + type: object + 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/api-conventions.md#types-kinds' + type: string + message: + description: A human-readable description of the status of this + operation. + type: string + metadata: + description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + properties: + continue: + description: continue may be set if the user set a limit + on the number of items returned, and indicates that the + server has more data available. The value is opaque and + may be used to issue another request to the endpoint that + served this list to retrieve the next set of available + objects. Continuing a consistent list may not be possible + if the server configuration has changed or more than a + few minutes have passed. The resourceVersion field returned + when using this continue value will be identical to the + value in the first response, unless you have received + this token from an error message. + type: string + resourceVersion: + description: 'String that identifies the server''s internal + version of this object that can be used by clients to + determine when objects have changed. Value must be treated + as opaque by clients and passed unmodified back to the + server. Populated by the system. Read-only. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency' + type: string + selfLink: + description: selfLink is a URL representing this object. + Populated by the system. Read-only. + type: string + type: object + reason: + description: A machine-readable description of why this operation + is in the "Failure" status. If this value is empty there is + no information available. A Reason clarifies an HTTP status + code but does not override it. + type: string + status: + description: 'Status of the operation. One of: "Success" or + "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' + type: string + type: object + required: + - pending + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + managedFields: + description: "ManagedFields maps workflow-id and version to the set + of fields that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or understand + this field. A workflow can be the user's name, a controller's name, + or the name of a specific apply path like \"ci-cd\". The set of fields + is always in the version that the workflow used when modifying the + object. \n This field is alpha and can be changed or removed without + notice." + items: + properties: + apiVersion: + description: APIVersion defines the version of this resource that + this field set applies to. The format is "group/version" just + like the top-level APIVersion field. It is necessary to track + the version of a field set because it cannot be automatically + converted. + type: string + fields: + additionalProperties: true + description: Fields identifies a set of fields. + type: object + manager: + description: Manager is an identifier of the workflow managing + these fields. + type: string + operation: + description: Operation is the type of operation which lead to + this ManagedFieldsEntry being created. The only valid values + for this field are 'Apply' and 'Update'. + type: string + time: + description: Time is timestamp of when these fields were set. + It should always be empty if Operation is 'Apply' + format: date-time + type: string + type: object + type: array + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + namespace: + description: "Namespace defines the space within each name must be unique. + An empty namespace is equivalent to the \"default\" namespace, but + \"default\" is the canonical representation. Not all objects are required + to be scoped to a namespace - the value of this field for those objects + will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: + http://kubernetes.io/docs/user-guide/namespaces" + type: string + ownerReferences: + description: List of objects depended by this object. If ALL objects + in the list have been deleted, this object will be garbage collected. + If this object is managed by a controller, then an entry in this list + will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + items: + properties: + apiVersion: + description: API version of the referent. + type: string + blockOwnerDeletion: + description: If true, AND if the owner has the "foregroundDeletion" + finalizer, then the owner cannot be deleted from the key-value + store until this reference is removed. Defaults to false. To + set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + type: boolean + controller: + description: If true, this reference points to the managing controller. + type: boolean + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + uid: + description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids' + type: string + required: + - apiVersion + - kind + - name + - uid + type: object + type: array + resourceVersion: + description: "An opaque value that represents the internal version of + this object that can be used by clients to determine when objects + have changed. May be used for optimistic concurrency, change detection, + and the watch operation on a resource or set of resources. Clients + must treat these values as opaque and passed unmodified back to the + server. They may only be valid for a particular resource or set of + resources. \n Populated by the system. Read-only. Value must be treated + as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency" + type: string + selfLink: + description: SelfLink is a URL representing this object. Populated by + the system. Read-only. + type: string + uid: + description: "UID is the unique in time and space value for this object. + It is typically generated by the server on successful creation of + a resource and is not allowed to change on PUT operations. \n Populated + by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" + type: string + type: object spec: - description: AppProjectSpec is the specification of an AppProject properties: clusterResourceWhitelist: description: ClusterResourceWhitelist contains list of whitelisted cluster level resources - items: {} + items: + properties: + group: + type: string + kind: + type: string + required: + - group + - kind + type: object type: array description: description: Description contains optional project description @@ -1471,8 +2104,6 @@ spec: description: Destinations contains list of destinations available for deployment items: - description: ApplicationDestination contains deployment destination - information properties: namespace: description: Namespace overrides the environment namespace value @@ -1487,13 +2118,21 @@ spec: namespaceResourceBlacklist: description: NamespaceResourceBlacklist contains list of blacklisted namespace level resources - items: {} + items: + properties: + group: + type: string + kind: + type: string + required: + - group + - kind + type: object type: array roles: description: Roles are user defined RBAC roles associated with this project items: - description: ProjectRole represents a role that has access to a project properties: description: description: Description is a description of the role @@ -1508,8 +2147,6 @@ spec: 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 properties: exp: format: int64 @@ -1541,8 +2178,14 @@ spec: type: string type: array type: object + required: + - metadata + - spec type: object - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- apiVersion: v1 kind: ServiceAccount diff --git a/pkg/apis/api-rules/violation_exceptions.list b/pkg/apis/api-rules/violation_exceptions.list index aba7fb05a5..7ab8779398 100644 --- a/pkg/apis/api-rules/violation_exceptions.list +++ b/pkg/apis/api-rules/violation_exceptions.list @@ -5,6 +5,5 @@ API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,ResourceActionDefinition,ActionLua API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,ResourceActions,ActionDiscoveryLua API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,ResourceOverride,HealthLua -API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,SyncStrategyHook,SyncStrategyApply API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,objectMeta,Name API rule violation: omitempty_match_case,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,ResourceActions,Definitions diff --git a/pkg/apis/application/v1alpha1/generated.pb.go b/pkg/apis/application/v1alpha1/generated.pb.go index d310831581..04534741e5 100644 --- a/pkg/apis/application/v1alpha1/generated.pb.go +++ b/pkg/apis/application/v1alpha1/generated.pb.go @@ -33,7 +33,7 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package func (m *AWSAuthConfig) Reset() { *m = AWSAuthConfig{} } func (*AWSAuthConfig) ProtoMessage() {} func (*AWSAuthConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{0} + return fileDescriptor_generated_a944424ef4c6c52f, []int{0} } func (m *AWSAuthConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -61,7 +61,7 @@ var xxx_messageInfo_AWSAuthConfig proto.InternalMessageInfo func (m *AppProject) Reset() { *m = AppProject{} } func (*AppProject) ProtoMessage() {} func (*AppProject) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{1} + return fileDescriptor_generated_a944424ef4c6c52f, []int{1} } func (m *AppProject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -89,7 +89,7 @@ var xxx_messageInfo_AppProject proto.InternalMessageInfo func (m *AppProjectList) Reset() { *m = AppProjectList{} } func (*AppProjectList) ProtoMessage() {} func (*AppProjectList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{2} + return fileDescriptor_generated_a944424ef4c6c52f, []int{2} } func (m *AppProjectList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -117,7 +117,7 @@ var xxx_messageInfo_AppProjectList proto.InternalMessageInfo func (m *AppProjectSpec) Reset() { *m = AppProjectSpec{} } func (*AppProjectSpec) ProtoMessage() {} func (*AppProjectSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{3} + return fileDescriptor_generated_a944424ef4c6c52f, []int{3} } func (m *AppProjectSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -145,7 +145,7 @@ var xxx_messageInfo_AppProjectSpec proto.InternalMessageInfo func (m *Application) Reset() { *m = Application{} } func (*Application) ProtoMessage() {} func (*Application) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{4} + return fileDescriptor_generated_a944424ef4c6c52f, []int{4} } func (m *Application) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -173,7 +173,7 @@ var xxx_messageInfo_Application proto.InternalMessageInfo func (m *ApplicationCondition) Reset() { *m = ApplicationCondition{} } func (*ApplicationCondition) ProtoMessage() {} func (*ApplicationCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{5} + return fileDescriptor_generated_a944424ef4c6c52f, []int{5} } func (m *ApplicationCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -201,7 +201,7 @@ var xxx_messageInfo_ApplicationCondition proto.InternalMessageInfo func (m *ApplicationDestination) Reset() { *m = ApplicationDestination{} } func (*ApplicationDestination) ProtoMessage() {} func (*ApplicationDestination) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{6} + return fileDescriptor_generated_a944424ef4c6c52f, []int{6} } func (m *ApplicationDestination) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -229,7 +229,7 @@ var xxx_messageInfo_ApplicationDestination proto.InternalMessageInfo func (m *ApplicationList) Reset() { *m = ApplicationList{} } func (*ApplicationList) ProtoMessage() {} func (*ApplicationList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{7} + return fileDescriptor_generated_a944424ef4c6c52f, []int{7} } func (m *ApplicationList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -257,7 +257,7 @@ var xxx_messageInfo_ApplicationList proto.InternalMessageInfo func (m *ApplicationSource) Reset() { *m = ApplicationSource{} } func (*ApplicationSource) ProtoMessage() {} func (*ApplicationSource) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{8} + return fileDescriptor_generated_a944424ef4c6c52f, []int{8} } func (m *ApplicationSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -285,7 +285,7 @@ var xxx_messageInfo_ApplicationSource proto.InternalMessageInfo func (m *ApplicationSourceDirectory) Reset() { *m = ApplicationSourceDirectory{} } func (*ApplicationSourceDirectory) ProtoMessage() {} func (*ApplicationSourceDirectory) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{9} + return fileDescriptor_generated_a944424ef4c6c52f, []int{9} } func (m *ApplicationSourceDirectory) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -313,7 +313,7 @@ var xxx_messageInfo_ApplicationSourceDirectory proto.InternalMessageInfo func (m *ApplicationSourceHelm) Reset() { *m = ApplicationSourceHelm{} } func (*ApplicationSourceHelm) ProtoMessage() {} func (*ApplicationSourceHelm) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{10} + return fileDescriptor_generated_a944424ef4c6c52f, []int{10} } func (m *ApplicationSourceHelm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -341,7 +341,7 @@ var xxx_messageInfo_ApplicationSourceHelm proto.InternalMessageInfo func (m *ApplicationSourceJsonnet) Reset() { *m = ApplicationSourceJsonnet{} } func (*ApplicationSourceJsonnet) ProtoMessage() {} func (*ApplicationSourceJsonnet) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{11} + return fileDescriptor_generated_a944424ef4c6c52f, []int{11} } func (m *ApplicationSourceJsonnet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -369,7 +369,7 @@ var xxx_messageInfo_ApplicationSourceJsonnet proto.InternalMessageInfo func (m *ApplicationSourceKsonnet) Reset() { *m = ApplicationSourceKsonnet{} } func (*ApplicationSourceKsonnet) ProtoMessage() {} func (*ApplicationSourceKsonnet) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{12} + return fileDescriptor_generated_a944424ef4c6c52f, []int{12} } func (m *ApplicationSourceKsonnet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -397,7 +397,7 @@ var xxx_messageInfo_ApplicationSourceKsonnet proto.InternalMessageInfo func (m *ApplicationSourceKustomize) Reset() { *m = ApplicationSourceKustomize{} } func (*ApplicationSourceKustomize) ProtoMessage() {} func (*ApplicationSourceKustomize) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{13} + return fileDescriptor_generated_a944424ef4c6c52f, []int{13} } func (m *ApplicationSourceKustomize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -425,7 +425,7 @@ var xxx_messageInfo_ApplicationSourceKustomize proto.InternalMessageInfo func (m *ApplicationSourcePlugin) Reset() { *m = ApplicationSourcePlugin{} } func (*ApplicationSourcePlugin) ProtoMessage() {} func (*ApplicationSourcePlugin) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{14} + return fileDescriptor_generated_a944424ef4c6c52f, []int{14} } func (m *ApplicationSourcePlugin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -453,7 +453,7 @@ var xxx_messageInfo_ApplicationSourcePlugin proto.InternalMessageInfo func (m *ApplicationSpec) Reset() { *m = ApplicationSpec{} } func (*ApplicationSpec) ProtoMessage() {} func (*ApplicationSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{15} + return fileDescriptor_generated_a944424ef4c6c52f, []int{15} } func (m *ApplicationSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -481,7 +481,7 @@ var xxx_messageInfo_ApplicationSpec proto.InternalMessageInfo func (m *ApplicationStatus) Reset() { *m = ApplicationStatus{} } func (*ApplicationStatus) ProtoMessage() {} func (*ApplicationStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{16} + return fileDescriptor_generated_a944424ef4c6c52f, []int{16} } func (m *ApplicationStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -509,7 +509,7 @@ var xxx_messageInfo_ApplicationStatus proto.InternalMessageInfo func (m *ApplicationSummary) Reset() { *m = ApplicationSummary{} } func (*ApplicationSummary) ProtoMessage() {} func (*ApplicationSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{17} + return fileDescriptor_generated_a944424ef4c6c52f, []int{17} } func (m *ApplicationSummary) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -537,7 +537,7 @@ var xxx_messageInfo_ApplicationSummary proto.InternalMessageInfo func (m *ApplicationTree) Reset() { *m = ApplicationTree{} } func (*ApplicationTree) ProtoMessage() {} func (*ApplicationTree) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{18} + return fileDescriptor_generated_a944424ef4c6c52f, []int{18} } func (m *ApplicationTree) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -565,7 +565,7 @@ var xxx_messageInfo_ApplicationTree proto.InternalMessageInfo func (m *ApplicationWatchEvent) Reset() { *m = ApplicationWatchEvent{} } func (*ApplicationWatchEvent) ProtoMessage() {} func (*ApplicationWatchEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{19} + return fileDescriptor_generated_a944424ef4c6c52f, []int{19} } func (m *ApplicationWatchEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -593,7 +593,7 @@ var xxx_messageInfo_ApplicationWatchEvent proto.InternalMessageInfo func (m *Cluster) Reset() { *m = Cluster{} } func (*Cluster) ProtoMessage() {} func (*Cluster) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{20} + return fileDescriptor_generated_a944424ef4c6c52f, []int{20} } func (m *Cluster) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -621,7 +621,7 @@ var xxx_messageInfo_Cluster proto.InternalMessageInfo func (m *ClusterConfig) Reset() { *m = ClusterConfig{} } func (*ClusterConfig) ProtoMessage() {} func (*ClusterConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{21} + return fileDescriptor_generated_a944424ef4c6c52f, []int{21} } func (m *ClusterConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -649,7 +649,7 @@ var xxx_messageInfo_ClusterConfig proto.InternalMessageInfo func (m *ClusterList) Reset() { *m = ClusterList{} } func (*ClusterList) ProtoMessage() {} func (*ClusterList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{22} + return fileDescriptor_generated_a944424ef4c6c52f, []int{22} } func (m *ClusterList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -677,7 +677,7 @@ var xxx_messageInfo_ClusterList proto.InternalMessageInfo func (m *Command) Reset() { *m = Command{} } func (*Command) ProtoMessage() {} func (*Command) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{23} + return fileDescriptor_generated_a944424ef4c6c52f, []int{23} } func (m *Command) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -705,7 +705,7 @@ var xxx_messageInfo_Command proto.InternalMessageInfo func (m *ComparedTo) Reset() { *m = ComparedTo{} } func (*ComparedTo) ProtoMessage() {} func (*ComparedTo) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{24} + return fileDescriptor_generated_a944424ef4c6c52f, []int{24} } func (m *ComparedTo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -733,7 +733,7 @@ var xxx_messageInfo_ComparedTo proto.InternalMessageInfo func (m *ComponentParameter) Reset() { *m = ComponentParameter{} } func (*ComponentParameter) ProtoMessage() {} func (*ComponentParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{25} + return fileDescriptor_generated_a944424ef4c6c52f, []int{25} } func (m *ComponentParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -761,7 +761,7 @@ var xxx_messageInfo_ComponentParameter proto.InternalMessageInfo func (m *ConfigManagementPlugin) Reset() { *m = ConfigManagementPlugin{} } func (*ConfigManagementPlugin) ProtoMessage() {} func (*ConfigManagementPlugin) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{26} + return fileDescriptor_generated_a944424ef4c6c52f, []int{26} } func (m *ConfigManagementPlugin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -789,7 +789,7 @@ var xxx_messageInfo_ConfigManagementPlugin proto.InternalMessageInfo func (m *ConnectionState) Reset() { *m = ConnectionState{} } func (*ConnectionState) ProtoMessage() {} func (*ConnectionState) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{27} + return fileDescriptor_generated_a944424ef4c6c52f, []int{27} } func (m *ConnectionState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -817,7 +817,7 @@ var xxx_messageInfo_ConnectionState proto.InternalMessageInfo func (m *HealthStatus) Reset() { *m = HealthStatus{} } func (*HealthStatus) ProtoMessage() {} func (*HealthStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{28} + return fileDescriptor_generated_a944424ef4c6c52f, []int{28} } func (m *HealthStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -845,7 +845,7 @@ var xxx_messageInfo_HealthStatus proto.InternalMessageInfo func (m *HelmParameter) Reset() { *m = HelmParameter{} } func (*HelmParameter) ProtoMessage() {} func (*HelmParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{29} + return fileDescriptor_generated_a944424ef4c6c52f, []int{29} } func (m *HelmParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -873,7 +873,7 @@ var xxx_messageInfo_HelmParameter proto.InternalMessageInfo func (m *HelmRepository) Reset() { *m = HelmRepository{} } func (*HelmRepository) ProtoMessage() {} func (*HelmRepository) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{30} + return fileDescriptor_generated_a944424ef4c6c52f, []int{30} } func (m *HelmRepository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -901,7 +901,7 @@ var xxx_messageInfo_HelmRepository proto.InternalMessageInfo func (m *Info) Reset() { *m = Info{} } func (*Info) ProtoMessage() {} func (*Info) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{31} + return fileDescriptor_generated_a944424ef4c6c52f, []int{31} } func (m *Info) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -929,7 +929,7 @@ var xxx_messageInfo_Info proto.InternalMessageInfo func (m *InfoItem) Reset() { *m = InfoItem{} } func (*InfoItem) ProtoMessage() {} func (*InfoItem) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{32} + return fileDescriptor_generated_a944424ef4c6c52f, []int{32} } func (m *InfoItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -957,7 +957,7 @@ var xxx_messageInfo_InfoItem proto.InternalMessageInfo func (m *JWTToken) Reset() { *m = JWTToken{} } func (*JWTToken) ProtoMessage() {} func (*JWTToken) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{33} + return fileDescriptor_generated_a944424ef4c6c52f, []int{33} } func (m *JWTToken) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -985,7 +985,7 @@ var xxx_messageInfo_JWTToken proto.InternalMessageInfo func (m *JsonnetVar) Reset() { *m = JsonnetVar{} } func (*JsonnetVar) ProtoMessage() {} func (*JsonnetVar) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{34} + return fileDescriptor_generated_a944424ef4c6c52f, []int{34} } func (m *JsonnetVar) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1013,7 +1013,7 @@ var xxx_messageInfo_JsonnetVar proto.InternalMessageInfo func (m *KsonnetParameter) Reset() { *m = KsonnetParameter{} } func (*KsonnetParameter) ProtoMessage() {} func (*KsonnetParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{35} + return fileDescriptor_generated_a944424ef4c6c52f, []int{35} } func (m *KsonnetParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1041,7 +1041,7 @@ var xxx_messageInfo_KsonnetParameter proto.InternalMessageInfo func (m *KustomizeImageTag) Reset() { *m = KustomizeImageTag{} } func (*KustomizeImageTag) ProtoMessage() {} func (*KustomizeImageTag) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{36} + return fileDescriptor_generated_a944424ef4c6c52f, []int{36} } func (m *KustomizeImageTag) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1069,7 +1069,7 @@ var xxx_messageInfo_KustomizeImageTag proto.InternalMessageInfo func (m *Operation) Reset() { *m = Operation{} } func (*Operation) ProtoMessage() {} func (*Operation) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{37} + return fileDescriptor_generated_a944424ef4c6c52f, []int{37} } func (m *Operation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1097,7 +1097,7 @@ var xxx_messageInfo_Operation proto.InternalMessageInfo func (m *OperationState) Reset() { *m = OperationState{} } func (*OperationState) ProtoMessage() {} func (*OperationState) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{38} + return fileDescriptor_generated_a944424ef4c6c52f, []int{38} } func (m *OperationState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1125,7 +1125,7 @@ var xxx_messageInfo_OperationState proto.InternalMessageInfo func (m *ProjectRole) Reset() { *m = ProjectRole{} } func (*ProjectRole) ProtoMessage() {} func (*ProjectRole) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{39} + return fileDescriptor_generated_a944424ef4c6c52f, []int{39} } func (m *ProjectRole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1153,7 +1153,7 @@ var xxx_messageInfo_ProjectRole proto.InternalMessageInfo func (m *Repository) Reset() { *m = Repository{} } func (*Repository) ProtoMessage() {} func (*Repository) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{40} + return fileDescriptor_generated_a944424ef4c6c52f, []int{40} } func (m *Repository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1181,7 +1181,7 @@ var xxx_messageInfo_Repository proto.InternalMessageInfo func (m *RepositoryList) Reset() { *m = RepositoryList{} } func (*RepositoryList) ProtoMessage() {} func (*RepositoryList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{41} + return fileDescriptor_generated_a944424ef4c6c52f, []int{41} } func (m *RepositoryList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1209,7 +1209,7 @@ var xxx_messageInfo_RepositoryList proto.InternalMessageInfo func (m *ResourceAction) Reset() { *m = ResourceAction{} } func (*ResourceAction) ProtoMessage() {} func (*ResourceAction) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{42} + return fileDescriptor_generated_a944424ef4c6c52f, []int{42} } func (m *ResourceAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1237,7 +1237,7 @@ var xxx_messageInfo_ResourceAction proto.InternalMessageInfo func (m *ResourceActionDefinition) Reset() { *m = ResourceActionDefinition{} } func (*ResourceActionDefinition) ProtoMessage() {} func (*ResourceActionDefinition) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{43} + return fileDescriptor_generated_a944424ef4c6c52f, []int{43} } func (m *ResourceActionDefinition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1265,7 +1265,7 @@ var xxx_messageInfo_ResourceActionDefinition proto.InternalMessageInfo func (m *ResourceActionParam) Reset() { *m = ResourceActionParam{} } func (*ResourceActionParam) ProtoMessage() {} func (*ResourceActionParam) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{44} + return fileDescriptor_generated_a944424ef4c6c52f, []int{44} } func (m *ResourceActionParam) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1293,7 +1293,7 @@ var xxx_messageInfo_ResourceActionParam proto.InternalMessageInfo func (m *ResourceActions) Reset() { *m = ResourceActions{} } func (*ResourceActions) ProtoMessage() {} func (*ResourceActions) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{45} + return fileDescriptor_generated_a944424ef4c6c52f, []int{45} } func (m *ResourceActions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1321,7 +1321,7 @@ var xxx_messageInfo_ResourceActions proto.InternalMessageInfo func (m *ResourceDiff) Reset() { *m = ResourceDiff{} } func (*ResourceDiff) ProtoMessage() {} func (*ResourceDiff) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{46} + return fileDescriptor_generated_a944424ef4c6c52f, []int{46} } func (m *ResourceDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1349,7 +1349,7 @@ var xxx_messageInfo_ResourceDiff proto.InternalMessageInfo func (m *ResourceIgnoreDifferences) Reset() { *m = ResourceIgnoreDifferences{} } func (*ResourceIgnoreDifferences) ProtoMessage() {} func (*ResourceIgnoreDifferences) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{47} + return fileDescriptor_generated_a944424ef4c6c52f, []int{47} } func (m *ResourceIgnoreDifferences) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1377,7 +1377,7 @@ var xxx_messageInfo_ResourceIgnoreDifferences proto.InternalMessageInfo func (m *ResourceNetworkingInfo) Reset() { *m = ResourceNetworkingInfo{} } func (*ResourceNetworkingInfo) ProtoMessage() {} func (*ResourceNetworkingInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{48} + return fileDescriptor_generated_a944424ef4c6c52f, []int{48} } func (m *ResourceNetworkingInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1405,7 +1405,7 @@ var xxx_messageInfo_ResourceNetworkingInfo proto.InternalMessageInfo func (m *ResourceNode) Reset() { *m = ResourceNode{} } func (*ResourceNode) ProtoMessage() {} func (*ResourceNode) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{49} + return fileDescriptor_generated_a944424ef4c6c52f, []int{49} } func (m *ResourceNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1433,7 +1433,7 @@ var xxx_messageInfo_ResourceNode proto.InternalMessageInfo func (m *ResourceOverride) Reset() { *m = ResourceOverride{} } func (*ResourceOverride) ProtoMessage() {} func (*ResourceOverride) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{50} + return fileDescriptor_generated_a944424ef4c6c52f, []int{50} } func (m *ResourceOverride) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1461,7 +1461,7 @@ var xxx_messageInfo_ResourceOverride proto.InternalMessageInfo func (m *ResourceRef) Reset() { *m = ResourceRef{} } func (*ResourceRef) ProtoMessage() {} func (*ResourceRef) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{51} + return fileDescriptor_generated_a944424ef4c6c52f, []int{51} } func (m *ResourceRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1489,7 +1489,7 @@ var xxx_messageInfo_ResourceRef proto.InternalMessageInfo func (m *ResourceResult) Reset() { *m = ResourceResult{} } func (*ResourceResult) ProtoMessage() {} func (*ResourceResult) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{52} + return fileDescriptor_generated_a944424ef4c6c52f, []int{52} } func (m *ResourceResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1517,7 +1517,7 @@ var xxx_messageInfo_ResourceResult proto.InternalMessageInfo func (m *ResourceStatus) Reset() { *m = ResourceStatus{} } func (*ResourceStatus) ProtoMessage() {} func (*ResourceStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{53} + return fileDescriptor_generated_a944424ef4c6c52f, []int{53} } func (m *ResourceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1545,7 +1545,7 @@ var xxx_messageInfo_ResourceStatus proto.InternalMessageInfo func (m *RevisionHistory) Reset() { *m = RevisionHistory{} } func (*RevisionHistory) ProtoMessage() {} func (*RevisionHistory) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{54} + return fileDescriptor_generated_a944424ef4c6c52f, []int{54} } func (m *RevisionHistory) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1573,7 +1573,7 @@ var xxx_messageInfo_RevisionHistory proto.InternalMessageInfo func (m *RevisionMetadata) Reset() { *m = RevisionMetadata{} } func (*RevisionMetadata) ProtoMessage() {} func (*RevisionMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{55} + return fileDescriptor_generated_a944424ef4c6c52f, []int{55} } func (m *RevisionMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1601,7 +1601,7 @@ var xxx_messageInfo_RevisionMetadata proto.InternalMessageInfo func (m *SyncOperation) Reset() { *m = SyncOperation{} } func (*SyncOperation) ProtoMessage() {} func (*SyncOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{56} + return fileDescriptor_generated_a944424ef4c6c52f, []int{56} } func (m *SyncOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1629,7 +1629,7 @@ var xxx_messageInfo_SyncOperation proto.InternalMessageInfo func (m *SyncOperationResource) Reset() { *m = SyncOperationResource{} } func (*SyncOperationResource) ProtoMessage() {} func (*SyncOperationResource) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{57} + return fileDescriptor_generated_a944424ef4c6c52f, []int{57} } func (m *SyncOperationResource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1657,7 +1657,7 @@ var xxx_messageInfo_SyncOperationResource proto.InternalMessageInfo func (m *SyncOperationResult) Reset() { *m = SyncOperationResult{} } func (*SyncOperationResult) ProtoMessage() {} func (*SyncOperationResult) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{58} + return fileDescriptor_generated_a944424ef4c6c52f, []int{58} } func (m *SyncOperationResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1685,7 +1685,7 @@ var xxx_messageInfo_SyncOperationResult proto.InternalMessageInfo func (m *SyncPolicy) Reset() { *m = SyncPolicy{} } func (*SyncPolicy) ProtoMessage() {} func (*SyncPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{59} + return fileDescriptor_generated_a944424ef4c6c52f, []int{59} } func (m *SyncPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1713,7 +1713,7 @@ var xxx_messageInfo_SyncPolicy proto.InternalMessageInfo func (m *SyncPolicyAutomated) Reset() { *m = SyncPolicyAutomated{} } func (*SyncPolicyAutomated) ProtoMessage() {} func (*SyncPolicyAutomated) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{60} + return fileDescriptor_generated_a944424ef4c6c52f, []int{60} } func (m *SyncPolicyAutomated) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1741,7 +1741,7 @@ var xxx_messageInfo_SyncPolicyAutomated proto.InternalMessageInfo func (m *SyncStatus) Reset() { *m = SyncStatus{} } func (*SyncStatus) ProtoMessage() {} func (*SyncStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{61} + return fileDescriptor_generated_a944424ef4c6c52f, []int{61} } func (m *SyncStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1769,7 +1769,7 @@ var xxx_messageInfo_SyncStatus proto.InternalMessageInfo func (m *SyncStrategy) Reset() { *m = SyncStrategy{} } func (*SyncStrategy) ProtoMessage() {} func (*SyncStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{62} + return fileDescriptor_generated_a944424ef4c6c52f, []int{62} } func (m *SyncStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1797,7 +1797,7 @@ var xxx_messageInfo_SyncStrategy proto.InternalMessageInfo func (m *SyncStrategyApply) Reset() { *m = SyncStrategyApply{} } func (*SyncStrategyApply) ProtoMessage() {} func (*SyncStrategyApply) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{63} + return fileDescriptor_generated_a944424ef4c6c52f, []int{63} } func (m *SyncStrategyApply) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1825,7 +1825,7 @@ var xxx_messageInfo_SyncStrategyApply proto.InternalMessageInfo func (m *SyncStrategyHook) Reset() { *m = SyncStrategyHook{} } func (*SyncStrategyHook) ProtoMessage() {} func (*SyncStrategyHook) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{64} + return fileDescriptor_generated_a944424ef4c6c52f, []int{64} } func (m *SyncStrategyHook) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1853,7 +1853,7 @@ var xxx_messageInfo_SyncStrategyHook proto.InternalMessageInfo func (m *TLSClientConfig) Reset() { *m = TLSClientConfig{} } func (*TLSClientConfig) ProtoMessage() {} func (*TLSClientConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_26dd7e81734de097, []int{65} + return fileDescriptor_generated_a944424ef4c6c52f, []int{65} } func (m *TLSClientConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17194,10 +17194,10 @@ var ( ) func init() { - proto.RegisterFile("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1/generated.proto", fileDescriptor_generated_26dd7e81734de097) + proto.RegisterFile("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1/generated.proto", fileDescriptor_generated_a944424ef4c6c52f) } -var fileDescriptor_generated_26dd7e81734de097 = []byte{ +var fileDescriptor_generated_a944424ef4c6c52f = []byte{ // 4155 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3b, 0x5b, 0x8c, 0x1c, 0xd9, 0x55, 0xae, 0x7e, 0xf7, 0x99, 0x87, 0x3d, 0x77, 0xd7, 0x9b, 0xce, 0x68, 0x77, 0x6c, 0x95, 0x45, diff --git a/pkg/apis/application/v1alpha1/generated.proto b/pkg/apis/application/v1alpha1/generated.proto index afc0b1c7f5..533f913e5b 100644 --- a/pkg/apis/application/v1alpha1/generated.proto +++ b/pkg/apis/application/v1alpha1/generated.proto @@ -31,6 +31,7 @@ message AWSAuthConfig { // +genclient // +genclient:noStatus // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:resource:path=appprojects,shortName=appproj;appprojs message AppProject { optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; @@ -70,6 +71,7 @@ message AppProjectSpec { // +genclient // +genclient:noStatus // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:resource:path=applications,shortName=app;apps message Application { optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; diff --git a/pkg/apis/application/v1alpha1/openapi_generated.go b/pkg/apis/application/v1alpha1/openapi_generated.go index fcc726fd5a..b8340d33a1 100644 --- a/pkg/apis/application/v1alpha1/openapi_generated.go +++ b/pkg/apis/application/v1alpha1/openapi_generated.go @@ -2778,17 +2778,16 @@ func schema_pkg_apis_application_v1alpha1_SyncStrategyHook(ref common.ReferenceC Description: "SyncStrategyHook will perform a sync using hooks annotations. If no hook annotation is specified falls back to `kubectl apply`.", Type: []string{"object"}, Properties: map[string]spec.Schema{ - "SyncStrategyApply": { + "force": { SchemaProps: spec.SchemaProps{ - Description: "Embed SyncStrategyApply type to inherit any `apply` options", - Ref: ref("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1.SyncStrategyApply"), + 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: []string{"boolean"}, + Format: "", }, }, }, }, }, - Dependencies: []string{ - "github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1.SyncStrategyApply"}, } } diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index 222281878a..b5c72bc3e6 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -26,6 +26,7 @@ import ( // +genclient // +genclient:noStatus // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:resource:path=applications,shortName=app;apps type Application struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"` @@ -365,7 +366,7 @@ type SyncStrategyApply struct { type SyncStrategyHook struct { // Embed SyncStrategyApply type to inherit any `apply` options // +optional - SyncStrategyApply `protobuf:"bytes,1,opt,name=syncStrategyApply"` + SyncStrategyApply `json:",inline" protobuf:"bytes,1,opt,name=syncStrategyApply"` } type HookType string @@ -888,6 +889,7 @@ type AppProjectList struct { // +genclient // +genclient:noStatus // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:resource:path=appprojects,shortName=appproj;appprojs type AppProject struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"`