diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 72411362..c0728ddb 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,10 +5,10 @@ updates: schedule: interval: "daily" reviewers: - - "weaveworks/pesto" + - "@bigkevmcd" - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" reviewers: - - "weaveworks/pesto" + - "@bigkevmcd" diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9783bfd1..14c78e15 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -32,24 +32,27 @@ jobs: run: git config --global url."https://${GITHUB_BUILD_USERNAME}:${GITHUB_BUILD_TOKEN}@github.com".insteadOf "https://github.com" - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: - go-version: 1.20.x + go-version: 1.22.x cache: true - name: Test run: make test + - name: e2e Tests + run: make e2e-tests + build-docs: runs-on: ubuntu-latest permissions: contents: read # for actions/checkout to fetch code steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 # for git describe ref: ${{ github.event.pull_request.head.sha || github.sha }} @@ -74,7 +77,7 @@ jobs: packages: write steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 # for git describe ref: ${{ github.event.pull_request.head.sha || github.sha }} @@ -84,7 +87,7 @@ jobs: run: echo "::set-output name=VERSION::$(make version)" - name: Log in to the Container registry - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -92,7 +95,7 @@ jobs: - name: Extract metadata (tags, labels) for Docker id: meta - uses: docker/metadata-action@dbef88086f6cef02e264edb7dbf63250c17cef6c # v5.5.0 + uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} @@ -102,11 +105,8 @@ jobs: GITHUB_BUILD_TOKEN: ${{ secrets.BUILD_BOT_PERSONAL_ACCESS_TOKEN }} run: git config --global url."https://${GITHUB_BUILD_USERNAME}:${GITHUB_BUILD_TOKEN}@github.com".insteadOf "https://github.com" - - name: go mod vendor - run: go mod vendor - - name: Build and push Docker image - uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 + uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0 with: context: . push: true @@ -123,26 +123,20 @@ jobs: contents: read # for actions/checkout to fetch code steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 # for git describe ref: ${{ github.event.pull_request.head.sha || github.sha }} - - name: Configure git for private modules - env: - GITHUB_BUILD_USERNAME: ${{ secrets.BUILD_BOT_USER }} - GITHUB_BUILD_TOKEN: ${{ secrets.BUILD_BOT_PERSONAL_ACCESS_TOKEN }} - run: git config --global url."https://${GITHUB_BUILD_USERNAME}:${GITHUB_BUILD_TOKEN}@github.com".insteadOf "https://github.com" - - name: Install Helm run: | wget --no-verbose https://get.helm.sh/helm-v3.12.1-linux-amd64.tar.gz - tar -zxvf helm-v3.12.1-linux-amd64.tar.gz + tar -zxvf helm-v3.14.2-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/helm helm version - name: Login to GitHub Container Registry - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/Dockerfile b/Dockerfile index bbd5735b..497ceed9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,11 @@ # Build the manager binary -FROM golang:1.20 as builder -ARG TARGETOS -ARG TARGETARCH +FROM golang:1.23 as builder ARG VERSION WORKDIR /workspace # Copy the Go Modules manifests COPY go.mod go.mod COPY go.sum go.sum -COPY vendor vendor # Copy the go source COPY main.go main.go @@ -17,12 +14,7 @@ COPY api/ api/ COPY controllers/ controllers/ COPY pkg/ pkg/ -# Build -# the GOARCH has not a default value to allow the binary be built according to the host where the command -# was called. For example, if we call make docker-build in a local env which has the Apple Silicon M1 SO -# the docker BUILDPLATFORM arg will be linux/arm64 when for Apple x86 it will be linux/amd64. Therefore, -# by leaving it empty we can ensure that the container and binary shipped on it will have the same platform. -RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager -ldflags "-X main.Version=${VERSION}" main.go version.go +RUN CGO_ENABLED=0 GOOS=linux go build -a -o manager -ldflags "-X main.Version=${VERSION}" main.go version.go # Use distroless as minimal base image to package the manager binary # Refer to https://github.com/GoogleContainerTools/distroless for more details diff --git a/Makefile b/Makefile index 09d01e57..46157c4f 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ CHART_VERSION := $(shell echo $(VERSION) | sed 's/^v//') # Image URL to use all building/pushing image targets IMG ?= ghcr.io/weaveworks/gitopssets-controller:${VERSION} # ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. -ENVTEST_K8S_VERSION = 1.25.0 +ENVTEST_K8S_VERSION = 1.31.0 GEN_API_REF_DOCS_VERSION ?= e327d0730470cbd61b06300f81c5fcf91c23c113 CHART_REGISTRY ?= ghcr.io/weaveworks/charts @@ -63,7 +63,7 @@ vet: ## Run go vet against code. .PHONY: test test: manifests generate fmt vet envtest ## Run tests. - KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test ./... -coverprofile cover.out + KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test $(go list ./... | grep -v tests\/e2e) -coverprofile cover.out .PHONY: e2e-tests e2e-tests: manifests generate fmt vet envtest ## Run tests. @@ -80,11 +80,6 @@ build: manifests generate fmt vet ## Build manager binary. run: manifests generate fmt vet ## Run a controller from your host. go run ./main.go ./version.go ${RUN_ARGS} -.PHONY: vendor -vendor: ## Update vendor directory. - go mod tidy - go mod vendor - version: @echo $(VERSION) @@ -92,7 +87,7 @@ version: # (i.e. docker build --platform linux/arm64 ). However, you must enable docker buildKit for it. # More info: https://docs.docker.com/develop/develop-images/build_enhancements/ .PHONY: docker-build -docker-build: test vendor ## Build docker image with the manager. +docker-build: ## Build docker image with the manager. docker build -t ${IMG} --build-arg VERSION=${VERSION} . .PHONY: docker-push @@ -158,7 +153,7 @@ ENVTEST ?= $(LOCALBIN)/setup-envtest ## Tool Versions KUSTOMIZE_VERSION ?= v3.8.7 -CONTROLLER_TOOLS_VERSION ?= v0.10.0 +CONTROLLER_TOOLS_VERSION ?= v0.16.1 KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" .PHONY: kustomize @@ -238,4 +233,4 @@ echo "Downloading $(2)" ;\ GOBIN=$(PROJECT_DIR)/bin go install $(2) ;\ rm -rf $$TMP_DIR ;\ } -endef \ No newline at end of file +endef diff --git a/PROJECT b/PROJECT index 40523415..2510847d 100644 --- a/PROJECT +++ b/PROJECT @@ -1,16 +1,16 @@ -domain: weave.works +domain: gitops.pro layout: - go.kubebuilder.io/v3 projectName: gitopssets-controller -repo: github.com/weaveworks/gitopssets-controller +repo: github.com/gitops-tools/gitopssets-controller resources: - api: crdVersion: v1 namespaced: true controller: true - domain: weave.works + domain: gitops.pro group: templates kind: GitOpsSet - path: github.com/weaveworks/gitopssets-controller/api/v1alpha1 + path: github.com/gitops-tools/gitopssets-controller/api/v1alpha1 version: v1alpha1 version: "3" diff --git a/README.md b/README.md index ba2ca05d..0f449f92 100644 --- a/README.md +++ b/README.md @@ -126,4 +126,4 @@ More information can be found via the [Kubebuilder Documentation](https://book.k ## License -Copyright 2023. +Copyright 2025. diff --git a/api/v1alpha1/doc.go b/api/v1alpha1/doc.go index 8d5684f3..6c8247a4 100644 --- a/api/v1alpha1/doc.go +++ b/api/v1alpha1/doc.go @@ -1,3 +1,3 @@ // Package v1alpha1 contains API Schema definitions for the gitopssets v1alpha1 API group -// +groupName=templates.weave.works +// +groupName=sets.gitops.pro package v1alpha1 diff --git a/api/v1alpha1/gitopsset_types.go b/api/v1alpha1/gitopsset_types.go index ea828736..d4ab5758 100644 --- a/api/v1alpha1/gitopsset_types.go +++ b/api/v1alpha1/gitopsset_types.go @@ -2,7 +2,6 @@ package v1alpha1 import ( "github.com/fluxcd/pkg/apis/meta" - corev1 "k8s.io/api/core/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" @@ -10,7 +9,14 @@ import ( // GitOpsSetFinalizer is the finalizer added to GitOpsSets to allow us to clean // up resources. -const GitOpsSetFinalizer = "finalizers.templates.weave.works" +const GitOpsSetFinalizer = "finalizers.sets.gitops.pro" + +// LocalObjectReference contains enough information to locate the referenced Kubernetes resource object. +type LocalObjectReference struct { + // Name of the referent. + // +required + Name string `json:"name"` +} // GitOpsSetTemplate describes a resource to create type GitOpsSetTemplate struct { @@ -73,7 +79,7 @@ type PullRequestGenerator struct { // Reference to Secret in same namespace with a field "password" which is an // auth token that can query the Git Provider API. - SecretRef *corev1.LocalObjectReference `json:"secretRef,omitempty"` + SecretRef *LocalObjectReference `json:"secretRef,omitempty"` // Labels is used to filter the PRs that you want to target. // This may be applied on the server. @@ -137,7 +143,7 @@ type APIClientGenerator struct { // Reference to Secret in same namespace with a field "caFile" which // provides the Certificate Authority to trust when making API calls. - SecretRef *corev1.LocalObjectReference `json:"secretRef,omitempty"` + SecretRef *LocalObjectReference `json:"secretRef,omitempty"` } // HeadersReference references either a Secret or ConfigMap to be used for diff --git a/api/v1alpha1/groupversion_info.go b/api/v1alpha1/groupversion_info.go index 0f9c419a..971fd001 100644 --- a/api/v1alpha1/groupversion_info.go +++ b/api/v1alpha1/groupversion_info.go @@ -1,6 +1,6 @@ // Package v1alpha1 contains API Schema definitions for the templates v1alpha1 API group // +kubebuilder:object:generate=true -// +groupName=templates.weave.works +// +groupName=sets.gitops.pro package v1alpha1 import ( @@ -10,7 +10,7 @@ import ( var ( // GroupVersion is group version used to register these objects - GroupVersion = schema.GroupVersion{Group: "templates.weave.works", Version: "v1alpha1"} + GroupVersion = schema.GroupVersion{Group: "sets.gitops.pro", Version: "v1alpha1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 0daf46c1..a42f91f8 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -1,8 +1,7 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* -Copyright 2023. +Copyright 2025. */ // Code generated by controller-gen. DO NOT EDIT. @@ -10,7 +9,6 @@ Copyright 2023. package v1alpha1 import ( - corev1 "k8s.io/api/core/v1" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -32,7 +30,7 @@ func (in *APIClientGenerator) DeepCopyInto(out *APIClientGenerator) { } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(corev1.LocalObjectReference) + *out = new(LocalObjectReference) **out = **in } } @@ -402,6 +400,21 @@ func (in *ListGenerator) DeepCopy() *ListGenerator { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LocalObjectReference) DeepCopyInto(out *LocalObjectReference) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalObjectReference. +func (in *LocalObjectReference) DeepCopy() *LocalObjectReference { + if in == nil { + return nil + } + out := new(LocalObjectReference) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MatrixGenerator) DeepCopyInto(out *MatrixGenerator) { *out = *in @@ -455,7 +468,7 @@ func (in *PullRequestGenerator) DeepCopyInto(out *PullRequestGenerator) { out.Interval = in.Interval if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(corev1.LocalObjectReference) + *out = new(LocalObjectReference) **out = **in } if in.Labels != nil { diff --git a/cmd/gitopssets-cli/main.go b/cmd/gitopssets-cli/main.go index 8bf0e6e8..1c6e6375 100644 --- a/cmd/gitopssets-cli/main.go +++ b/cmd/gitopssets-cli/main.go @@ -1,8 +1,8 @@ package main import ( + "github.com/gitops-tools/gitopssets-controller/pkg/cmd" "github.com/spf13/cobra" - "github.com/weaveworks/gitopssets-controller/pkg/cmd" ) func main() { diff --git a/config/crd/bases/templates.weave.works_gitopssets.yaml b/config/crd/bases/sets.gitops.pro_gitopssets.yaml similarity index 60% rename from config/crd/bases/templates.weave.works_gitopssets.yaml rename to config/crd/bases/sets.gitops.pro_gitopssets.yaml index f82b32f7..5ff4c106 100644 --- a/config/crd/bases/templates.weave.works_gitopssets.yaml +++ b/config/crd/bases/sets.gitops.pro_gitopssets.yaml @@ -3,11 +3,10 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.10.0 - creationTimestamp: null - name: gitopssets.templates.weave.works + controller-gen.kubebuilder.io/version: v0.16.1 + name: gitopssets.sets.gitops.pro spec: - group: templates.weave.works + group: sets.gitops.pro names: kind: GitOpsSet listKind: GitOpsSetList @@ -33,14 +32,19 @@ spec: description: GitOpsSet is the Schema for the gitopssets API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -55,23 +59,27 @@ spec: for this GitOpsSet. properties: apiClient: - description: APIClientGenerator defines a generator that queries - an API endpoint and uses that to generate data. + description: |- + APIClientGenerator defines a generator that queries an API endpoint and uses + that to generate data. properties: body: - description: "Body is set as the body in a POST request. - \n If set, this will configure the Method to be POST automatically." + description: |- + Body is set as the body in a POST request. + + If set, this will configure the Method to be POST automatically. x-kubernetes-preserve-unknown-fields: true endpoint: description: This is the API endpoint to use. pattern: ^(http|https):// type: string headersRef: - description: "HeadersRef allows optional configuration of - a Secret or ConfigMap to add additional headers to an - outgoing request. \n For example, a Secret with a key - Authorization: Bearer abc123 could be used to configure - an authorization header." + description: |- + HeadersRef allows optional configuration of a Secret or ConfigMap to add + additional headers to an outgoing request. + + For example, a Secret with a key Authorization: Bearer abc123 could be + used to configure an authorization header. properties: kind: description: The resource kind to get headers from. @@ -91,9 +99,12 @@ spec: description: The interval at which to poll the API endpoint. type: string jsonPath: - description: "JSONPath is string that is used to modify - the result of the API call. \n This can be used to extract - a repeating element from a response. https://kubernetes.io/docs/reference/kubectl/jsonpath/" + description: |- + JSONPath is string that is used to modify the result of the API + call. + + This can be used to extract a repeating element from a response. + https://kubernetes.io/docs/reference/kubectl/jsonpath/ type: string method: default: GET @@ -104,41 +115,45 @@ spec: - POST type: string secretRef: - description: Reference to Secret in same namespace with - a field "caFile" which provides the Certificate Authority - to trust when making API calls. + description: |- + Reference to Secret in same namespace with a field "caFile" which + provides the Certificate Authority to trust when making API calls. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' + description: Name of the referent. type: string + required: + - name type: object - x-kubernetes-map-type: atomic singleElement: - description: "SingleElement means generate a single element - with the result of the API call. \n When true, the response - must be a JSON object and will be returned as a single - element, i.e. only one element will be generated containing - the entire object." + description: |- + SingleElement means generate a single element with the result of the API + call. + + When true, the response must be a JSON object and will be returned as a + single element, i.e. only one element will be generated containing the + entire object. type: boolean required: - interval type: object cluster: - description: ClusterGenerator defines a generator that queries - the cluster API for relevant clusters. + description: |- + ClusterGenerator defines a generator that queries the cluster API for + relevant clusters. properties: selector: - description: "Selector is used to filter the clusters that - you want to target. \n If no selector is provided, no - clusters will be matched." + description: |- + Selector is used to filter the clusters that you want to target. + + If no selector is provided, no clusters will be matched. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -146,39 +161,40 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic type: object config: - description: ConfigGenerator loads a referenced ConfigMap or + description: |- + ConfigGenerator loads a referenced ConfigMap or Secret from the Cluster and makes it available as a resource. properties: kind: @@ -199,12 +215,13 @@ spec: a Flux GitRepository resource. properties: directories: - description: Directories is a set of rules for identifying - directories to be generated. + description: |- + Directories is a set of rules for identifying directories to be + generated. items: - description: RepositoryGeneratorDirectoryItem stores the - information about a specific directory to be generated - from. + description: |- + RepositoryGeneratorDirectoryItem stores the information about a specific + directory to be generated from. properties: exclude: type: boolean @@ -251,37 +268,39 @@ spec: type: array type: object matrix: - description: MatrixGenerator defines a matrix that combines - generators. The matrix is a cartesian product of the generators. + description: |- + MatrixGenerator defines a matrix that combines generators. + The matrix is a cartesian product of the generators. properties: generators: description: Generators is a list of generators to be combined. items: - description: GitOpsSetNestedGenerator describes the generators - usable by the MatrixGenerator. This is a subset of the - generators allowed by the GitOpsSetGenerator because - the CRD format doesn't support recursive declarations. + description: |- + GitOpsSetNestedGenerator describes the generators usable by the MatrixGenerator. + This is a subset of the generators allowed by the GitOpsSetGenerator because the CRD format doesn't support recursive declarations. properties: apiClient: - description: APIClientGenerator defines a generator - that queries an API endpoint and uses that to generate - data. + description: |- + APIClientGenerator defines a generator that queries an API endpoint and uses + that to generate data. properties: body: - description: "Body is set as the body in a POST - request. \n If set, this will configure the - Method to be POST automatically." + description: |- + Body is set as the body in a POST request. + + If set, this will configure the Method to be POST automatically. x-kubernetes-preserve-unknown-fields: true endpoint: description: This is the API endpoint to use. pattern: ^(http|https):// type: string headersRef: - description: "HeadersRef allows optional configuration - of a Secret or ConfigMap to add additional headers - to an outgoing request. \n For example, a Secret - with a key Authorization: Bearer abc123 could - be used to configure an authorization header." + description: |- + HeadersRef allows optional configuration of a Secret or ConfigMap to add + additional headers to an outgoing request. + + For example, a Secret with a key Authorization: Bearer abc123 could be + used to configure an authorization header. properties: kind: description: The resource kind to get headers @@ -303,10 +322,12 @@ spec: API endpoint. type: string jsonPath: - description: "JSONPath is string that is used - to modify the result of the API call. \n This - can be used to extract a repeating element from - a response. https://kubernetes.io/docs/reference/kubectl/jsonpath/" + description: |- + JSONPath is string that is used to modify the result of the API + call. + + This can be used to extract a repeating element from a response. + https://kubernetes.io/docs/reference/kubectl/jsonpath/ type: string method: default: GET @@ -317,91 +338,88 @@ spec: - POST type: string secretRef: - description: Reference to Secret in same namespace - with a field "caFile" which provides the Certificate - Authority to trust when making API calls. + description: |- + Reference to Secret in same namespace with a field "caFile" which + provides the Certificate Authority to trust when making API calls. properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: Name of the referent. type: string + required: + - name type: object - x-kubernetes-map-type: atomic singleElement: - description: "SingleElement means generate a single - element with the result of the API call. \n - When true, the response must be a JSON object - and will be returned as a single element, i.e. - only one element will be generated containing - the entire object." + description: |- + SingleElement means generate a single element with the result of the API + call. + + When true, the response must be a JSON object and will be returned as a + single element, i.e. only one element will be generated containing the + entire object. type: boolean required: - interval type: object cluster: - description: ClusterGenerator defines a generator - that queries the cluster API for relevant clusters. + description: |- + ClusterGenerator defines a generator that queries the cluster API for + relevant clusters. properties: selector: - description: "Selector is used to filter the clusters - that you want to target. \n If no selector is - provided, no clusters will be matched." + description: |- + Selector is used to filter the clusters that you want to target. + + If no selector is provided, no clusters will be matched. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic type: object config: - description: ConfigGenerator loads a referenced ConfigMap - or Secret from the Cluster and makes it available - as a resource. + description: |- + ConfigGenerator loads a referenced ConfigMap or + Secret from the Cluster and makes it available as a resource. properties: kind: description: Kind of the referent. @@ -421,12 +439,13 @@ spec: files in a Flux GitRepository resource. properties: directories: - description: Directories is a set of rules for - identifying directories to be generated. + description: |- + Directories is a set of rules for identifying directories to be + generated. items: - description: RepositoryGeneratorDirectoryItem - stores the information about a specific directory - to be generated from. + description: |- + RepositoryGeneratorDirectoryItem stores the information about a specific + directory to be generated from. properties: exclude: type: boolean @@ -476,22 +495,23 @@ spec: type: array type: object name: - description: Name is an optional field that will be - used to prefix the values generated by the nested - generators, this allows multiple generators of the - same type in a single Matrix generator. + description: |- + Name is an optional field that will be used to prefix the values generated + by the nested generators, this allows multiple generators of the same + type in a single Matrix generator. type: string ociRepository: description: OCIRepositoryGenerator generates from files in a Flux OCIRepository resource. properties: directories: - description: Directories is a set of rules for - identifying directories to be generated. + description: |- + Directories is a set of rules for identifying directories to be + generated. items: - description: RepositoryGeneratorDirectoryItem - stores the information about a specific directory - to be generated from. + description: |- + RepositoryGeneratorDirectoryItem stores the information about a specific + directory to be generated from. properties: exclude: type: boolean @@ -523,9 +543,9 @@ spec: type: string type: object pullRequests: - description: PullRequestGenerator defines a generator - that queries a Git hosting service for relevant - PRs. + description: |- + PullRequestGenerator defines a generator that queries a Git hosting service + for relevant PRs. properties: driver: description: Determines which git-api protocol @@ -536,38 +556,37 @@ spec: - bitbucketserver type: string forks: - description: Fork is used to filter out forks - from the target PRs if false, or to include - forks if true + description: |- + Fork is used to filter out forks from the target PRs if false, + or to include forks if true type: boolean interval: description: The interval at which to check for repository updates. type: string labels: - description: Labels is used to filter the PRs - that you want to target. This may be applied - on the server. + description: |- + Labels is used to filter the PRs that you want to target. + This may be applied on the server. items: type: string type: array repo: - description: This should be the Repo you want - to query. e.g. my-org/my-repo + description: |- + This should be the Repo you want to query. + e.g. my-org/my-repo type: string secretRef: - description: Reference to Secret in same namespace - with a field "password" which is an auth token - that can query the Git Provider API. + description: |- + Reference to Secret in same namespace with a field "password" which is an + auth token that can query the Git Provider API. properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' + description: Name of the referent. type: string + required: + - name type: object - x-kubernetes-map-type: atomic serverURL: description: This is the API endpoint to use. pattern: ^https:// @@ -580,11 +599,13 @@ spec: type: object type: array singleElement: - description: "SingleElement means generate a single element - with the result of the merged generator elements. \n When - true, the matrix elements will be merged to a single element, - with whatever prefixes they have. It's recommended that - you use the Name field to separate out elements." + description: |- + SingleElement means generate a single element with the result of the + merged generator elements. + + When true, the matrix elements will be merged to a single element, with + whatever prefixes they have. + It's recommended that you use the Name field to separate out elements. type: boolean type: object ociRepository: @@ -592,12 +613,13 @@ spec: a Flux OCIRepository resource. properties: directories: - description: Directories is a set of rules for identifying - directories to be generated. + description: |- + Directories is a set of rules for identifying directories to be + generated. items: - description: RepositoryGeneratorDirectoryItem stores the - information about a specific directory to be generated - from. + description: |- + RepositoryGeneratorDirectoryItem stores the information about a specific + directory to be generated from. properties: exclude: type: boolean @@ -628,8 +650,9 @@ spec: type: string type: object pullRequests: - description: PullRequestGenerator defines a generator that queries - a Git hosting service for relevant PRs. + description: |- + PullRequestGenerator defines a generator that queries a Git hosting service + for relevant PRs. properties: driver: description: Determines which git-api protocol to use. @@ -639,34 +662,37 @@ spec: - bitbucketserver type: string forks: - description: Fork is used to filter out forks from the target - PRs if false, or to include forks if true + description: |- + Fork is used to filter out forks from the target PRs if false, + or to include forks if true type: boolean interval: description: The interval at which to check for repository updates. type: string labels: - description: Labels is used to filter the PRs that you want - to target. This may be applied on the server. + description: |- + Labels is used to filter the PRs that you want to target. + This may be applied on the server. items: type: string type: array repo: - description: This should be the Repo you want to query. + description: |- + This should be the Repo you want to query. e.g. my-org/my-repo type: string secretRef: - description: Reference to Secret in same namespace with - a field "password" which is an auth token that can query - the Git Provider API. + description: |- + Reference to Secret in same namespace with a field "password" which is an + auth token that can query the Git Provider API. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' + description: Name of the referent. type: string + required: + - name type: object - x-kubernetes-map-type: atomic serverURL: description: This is the API endpoint to use. pattern: ^https:// @@ -679,16 +705,19 @@ spec: type: object type: array serviceAccountName: - description: The name of the Kubernetes service account to impersonate + description: |- + The name of the Kubernetes service account to impersonate when reconciling this Kustomization. type: string suspend: - description: Suspend tells the controller to suspend the reconciliation - of this GitOpsSet. + description: |- + Suspend tells the controller to suspend the reconciliation of this + GitOpsSet. type: boolean templates: - description: Templates are a set of YAML templates that are rendered - into resources from the data supplied by the generators. + description: |- + Templates are a set of YAML templates that are rendered into resources + from the data supplied by the generators. items: description: GitOpsSetTemplate describes a resource to create properties: @@ -697,9 +726,10 @@ spec: type: object x-kubernetes-preserve-unknown-fields: true repeat: - description: Repeat is a JSONPath string defining that the template - content should be repeated for each of the matching elements - in the JSONPath expression. https://kubernetes.io/docs/reference/kubectl/jsonpath/ + description: |- + Repeat is a JSONPath string defining that the template content should be + repeated for each of the matching elements in the JSONPath expression. + https://kubernetes.io/docs/reference/kubectl/jsonpath/ type: string required: - content @@ -712,43 +742,35 @@ spec: conditions: description: Conditions holds the conditions for the GitOpsSet items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + description: Condition contains details for one aspect of the current + state of this API Resource. properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -763,10 +785,6 @@ spec: type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -779,8 +797,9 @@ spec: type: object type: array inventory: - description: Inventory contains the list of Kubernetes resource object - references that have been successfully applied + description: |- + Inventory contains the list of Kubernetes resource object references that + have been successfully applied properties: entries: description: Entries of Kubernetes resource object references. @@ -789,8 +808,9 @@ spec: to locate a resource within a cluster. properties: id: - description: ID is the string representation of the Kubernetes - resource object's metadata, in the format '___'. + description: |- + ID is the string representation of the Kubernetes resource object's metadata, + in the format '___'. type: string v: description: Version is the API version of the Kubernetes @@ -803,13 +823,15 @@ spec: type: array type: object lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. + description: |- + LastHandledReconcileAt holds the value of the most recent + reconcile request value, so a change of the annotation value + can be detected. type: string observedGeneration: - description: ObservedGeneration is the last observed generation of - the HelmRepository object. + description: |- + ObservedGeneration is the last observed generation of the HelmRepository + object. format: int64 type: integer type: object diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml index 803780f1..3caac936 100644 --- a/config/crd/kustomization.yaml +++ b/config/crd/kustomization.yaml @@ -2,7 +2,7 @@ # since it depends on service name and namespace that are out of this kustomize package. # It should be run by config/default resources: -- bases/templates.weave.works_gitopssets.yaml +- bases/sets.gitops.pro_gitopssets.yaml #+kubebuilder:scaffold:crdkustomizeresource patchesStrategicMerge: diff --git a/config/crd/patches/cainjection_in_gitopssets.yaml b/config/crd/patches/cainjection_in_gitopssets.yaml index b6075b54..1dcdd075 100644 --- a/config/crd/patches/cainjection_in_gitopssets.yaml +++ b/config/crd/patches/cainjection_in_gitopssets.yaml @@ -4,4 +4,4 @@ kind: CustomResourceDefinition metadata: annotations: cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) - name: gitopssets.templates.weave.works + name: gitopssets.sets.gitops.pro diff --git a/config/crd/patches/webhook_in_gitopssets.yaml b/config/crd/patches/webhook_in_gitopssets.yaml index 5d8c8758..1a5a1950 100644 --- a/config/crd/patches/webhook_in_gitopssets.yaml +++ b/config/crd/patches/webhook_in_gitopssets.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: - name: gitopssets.templates.weave.works + name: gitopssets.sets.gitops.pro spec: conversion: strategy: Webhook diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index 1590bfdd..742c79d5 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -4,5 +4,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization images: - name: controller - newName: ghcr.io/weaveworks/gitopssets-controller + newName: ghcr.io/gitops-tools/gitopssets-controller newTag: latest diff --git a/config/rbac/gitopsset_editor_role.yaml b/config/rbac/gitopsset_editor_role.yaml index c50b5bd2..f21402b7 100644 --- a/config/rbac/gitopsset_editor_role.yaml +++ b/config/rbac/gitopsset_editor_role.yaml @@ -12,7 +12,7 @@ metadata: name: gitopsset-editor-role rules: - apiGroups: - - templates.weave.works + - sets.gitops.pro resources: - gitopssets verbs: @@ -24,7 +24,7 @@ rules: - update - watch - apiGroups: - - templates.weave.works + - sets.gitops.pro resources: - gitopssets/status verbs: diff --git a/config/rbac/gitopsset_viewer_role.yaml b/config/rbac/gitopsset_viewer_role.yaml index 0ec4bd32..621a2488 100644 --- a/config/rbac/gitopsset_viewer_role.yaml +++ b/config/rbac/gitopsset_viewer_role.yaml @@ -12,7 +12,7 @@ metadata: name: gitopsset-viewer-role rules: - apiGroups: - - templates.weave.works + - sets.gitops.pro resources: - gitopssets verbs: @@ -20,7 +20,7 @@ rules: - list - watch - apiGroups: - - templates.weave.works + - sets.gitops.pro resources: - gitopssets/status verbs: diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index b7ab2027..0be750f1 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -2,13 +2,13 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - creationTimestamp: null name: manager-role rules: - apiGroups: - "" resources: - configmaps + - secrets verbs: - get - list @@ -20,14 +20,6 @@ rules: verbs: - create - patch -- apiGroups: - - "" - resources: - - secrets - verbs: - - get - - list - - watch - apiGroups: - "" resources: @@ -51,23 +43,7 @@ rules: - list - watch - apiGroups: - - source.toolkit.fluxcd.io - resources: - - gitrepositories - verbs: - - get - - list - - watch -- apiGroups: - - source.toolkit.fluxcd.io - resources: - - ocirepositories - verbs: - - get - - list - - watch -- apiGroups: - - templates.weave.works + - sets.gitops.pro resources: - gitopssets verbs: @@ -79,16 +55,25 @@ rules: - update - watch - apiGroups: - - templates.weave.works + - sets.gitops.pro resources: - gitopssets/finalizers verbs: - update - apiGroups: - - templates.weave.works + - sets.gitops.pro resources: - gitopssets/status verbs: - get - patch - update +- apiGroups: + - source.toolkit.fluxcd.io + resources: + - gitrepositories + - ocirepositories + verbs: + - get + - list + - watch diff --git a/config/samples/templates_v1alpha1_gitopsset.yaml b/config/samples/templates_v1alpha1_gitopsset.yaml index 85192c52..29d50e61 100644 --- a/config/samples/templates_v1alpha1_gitopsset.yaml +++ b/config/samples/templates_v1alpha1_gitopsset.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/contrib/pipelines/pipelines.yaml b/contrib/pipelines/pipelines.yaml index 17672a90..8d6e4ea5 100644 --- a/contrib/pipelines/pipelines.yaml +++ b/contrib/pipelines/pipelines.yaml @@ -1,5 +1,5 @@ --- -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: pipeline-gitopssets @@ -87,4 +87,4 @@ spec: kind: Pipeline sourceRef: kind: GitRepository - name: flux-system \ No newline at end of file + name: flux-system diff --git a/contrib/prometheus/dynamic-memory-reservations.yaml b/contrib/prometheus/dynamic-memory-reservations.yaml index 2a01b5f5..f29e93bd 100644 --- a/contrib/prometheus/dynamic-memory-reservations.yaml +++ b/contrib/prometheus/dynamic-memory-reservations.yaml @@ -1,5 +1,5 @@ --- -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: dynamic-memory-reservations @@ -36,4 +36,4 @@ spec: sourceRef: kind: GitRepository name: flux-system - namespace: flux-system \ No newline at end of file + namespace: flux-system diff --git a/controllers/gitopsset_controller.go b/controllers/gitopsset_controller.go index af7a7bb2..6d594597 100644 --- a/controllers/gitopsset_controller.go +++ b/controllers/gitopsset_controller.go @@ -13,7 +13,8 @@ import ( "github.com/fluxcd/pkg/runtime/conditions" runtimeCtrl "github.com/fluxcd/pkg/runtime/controller" "github.com/fluxcd/pkg/runtime/predicates" - sourcev1 "github.com/fluxcd/source-controller/api/v1beta2" + sourcev1 "github.com/fluxcd/source-controller/api/v1" + sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" "github.com/gitops-tools/pkg/sets" "github.com/go-logr/logr" corev1 "k8s.io/api/core/v1" @@ -34,10 +35,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/predicate" "sigs.k8s.io/controller-runtime/pkg/reconcile" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/controllers/templates" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" clustersv1 "github.com/weaveworks/cluster-controller/api/v1alpha1" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" ) var accessor = meta.NewAccessor() @@ -83,9 +84,9 @@ func (r *GitOpsSetReconciler) event(obj *templatesv1.GitOpsSet, severity, msg st r.EventRecorder.Event(obj, eventType, reason, msg) } -//+kubebuilder:rbac:groups=templates.weave.works,resources=gitopssets,verbs=get;list;watch;create;update;patch;delete -//+kubebuilder:rbac:groups=templates.weave.works,resources=gitopssets/status,verbs=get;update;patch -//+kubebuilder:rbac:groups=templates.weave.works,resources=gitopssets/finalizers,verbs=update +//+kubebuilder:rbac:groups=sets.gitops.pro,resources=gitopssets,verbs=get;list;watch;create;update;patch;delete +//+kubebuilder:rbac:groups=sets.gitops.pro,resources=gitopssets/status,verbs=get;update;patch +//+kubebuilder:rbac:groups=sets.gitops.pro,resources=gitopssets/finalizers,verbs=update //+kubebuilder:rbac:groups=source.toolkit.fluxcd.io,resources=gitrepositories,verbs=get;list;watch //+kubebuilder:rbac:groups=source.toolkit.fluxcd.io,resources=ocirepositories,verbs=get;list;watch //+kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch @@ -116,7 +117,11 @@ func (r *GitOpsSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( if !controllerutil.ContainsFinalizer(&gitOpsSet, templatesv1.GitOpsSetFinalizer) { controllerutil.AddFinalizer(&gitOpsSet, templatesv1.GitOpsSetFinalizer) - return ctrl.Result{Requeue: true}, r.Update(ctx, &gitOpsSet) + if err := r.Update(ctx, &gitOpsSet); err != nil { + return ctrl.Result{}, err + } + + return ctrl.Result{Requeue: true}, nil } // Skip reconciliation if the GitOpsSet is suspended. @@ -376,7 +381,7 @@ func (r *GitOpsSetReconciler) SetupWithManager(mgr ctrl.Manager) error { if r.Generators["OCIRepository"] != nil { builder.Watches( - &sourcev1.OCIRepository{}, + &sourcev1beta2.OCIRepository{}, handler.EnqueueRequestsFromMapFunc(r.ociRepositoryToGitOpsSet), ) } diff --git a/controllers/gitopsset_controller_test.go b/controllers/gitopsset_controller_test.go index 3dda867e..020cdac3 100644 --- a/controllers/gitopsset_controller_test.go +++ b/controllers/gitopsset_controller_test.go @@ -11,6 +11,7 @@ import ( kustomizev1 "github.com/fluxcd/kustomize-controller/api/v1beta2" "github.com/fluxcd/pkg/apis/meta" fluxMeta "github.com/fluxcd/pkg/apis/meta" + sourcev1 "github.com/fluxcd/source-controller/api/v1" sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" @@ -30,12 +31,12 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/envtest" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/gitrepository" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/list" + "github.com/gitops-tools/gitopssets-controller/test" clustersv1 "github.com/weaveworks/cluster-controller/api/v1alpha1" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/gitrepository" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/list" - "github.com/weaveworks/gitopssets-controller/test" ) var kustomizationGVK = schema.GroupVersionKind{ @@ -77,6 +78,7 @@ func TestReconciliation(t *testing.T) { test.AssertNoError(t, clientgoscheme.AddToScheme(scheme)) test.AssertNoError(t, templatesv1.AddToScheme(scheme)) test.AssertNoError(t, sourcev1beta2.AddToScheme(scheme)) + test.AssertNoError(t, sourcev1.AddToScheme(scheme)) k8sClient, err := client.New(cfg, client.Options{Scheme: scheme}) test.AssertNoError(t, err) @@ -333,8 +335,8 @@ func TestReconciliation(t *testing.T) { "testing": "newVersion", } k.ObjectMeta.Labels = map[string]string{ - "templates.weave.works/name": "demo-set", - "templates.weave.works/namespace": "default", + "sets.gitops.pro/name": "demo-set", + "sets.gitops.pro/namespace": "default", } k.Spec.Path = "./templated/clusters/engineering-dev/" k.Spec.KubeConfig = &meta.KubeConfigReference{SecretRef: meta.SecretKeyReference{Name: "engineering-dev"}} @@ -393,8 +395,8 @@ func TestReconciliation(t *testing.T) { } wantCM := test.NewConfigMap(func(c *corev1.ConfigMap) { c.ObjectMeta.Labels = map[string]string{ - "templates.weave.works/name": "demo-set", - "templates.weave.works/namespace": "default", + "sets.gitops.pro/name": "demo-set", + "sets.gitops.pro/namespace": "default", } c.Data = map[string]string{ "testing": "test-value1", @@ -430,8 +432,8 @@ func TestReconciliation(t *testing.T) { wantCM = test.NewConfigMap(func(c *corev1.ConfigMap) { c.ObjectMeta.Labels = map[string]string{ - "templates.weave.works/name": "demo-set", - "templates.weave.works/namespace": "default", + "sets.gitops.pro/name": "demo-set", + "sets.gitops.pro/namespace": "default", } c.Data = map[string]string{ "testing": "test-value2", @@ -676,8 +678,8 @@ func TestReconciliation(t *testing.T) { } wantUpdated := test.MakeTestKustomization(nsn("default", "engineering-dev-demo"), func(k *kustomizev1.Kustomization) { k.ObjectMeta.Labels = map[string]string{ - "templates.weave.works/name": "demo-set", - "templates.weave.works/namespace": "default", + "sets.gitops.pro/name": "demo-set", + "sets.gitops.pro/namespace": "default", } k.Spec.Path = "./templated/clusters/engineering-dev/" k.Spec.Force = true diff --git a/controllers/templates/renderer.go b/controllers/templates/renderer.go index eed2db71..626d8d91 100644 --- a/controllers/templates/renderer.go +++ b/controllers/templates/renderer.go @@ -18,8 +18,8 @@ import ( "k8s.io/client-go/util/jsonpath" syaml "sigs.k8s.io/yaml" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" ) // TemplateDelimiterAnnotation can be added to a Template to change the Go @@ -28,7 +28,7 @@ import ( // It's assumed to be a string with "left,right" // By default the delimiters are the standard Go templating delimiters: // {{ and }}. -const TemplateDelimiterAnnotation string = "templates.weave.works/delimiters" +const TemplateDelimiterAnnotation string = "sets.gitops.pro/delimiters" var templateFuncs template.FuncMap = makeTemplateFunctions() @@ -171,8 +171,8 @@ func renderTemplateParams(index int, tmpl templatesv1.GitOpsSetTemplate, params // Add source labels labels := map[string]string{ - "templates.weave.works/name": gs.GetName(), - "templates.weave.works/namespace": gs.GetNamespace(), + "sets.gitops.pro/name": gs.GetName(), + "sets.gitops.pro/namespace": gs.GetNamespace(), } renderedLabels := uns.GetLabels() diff --git a/controllers/templates/renderer_test.go b/controllers/templates/renderer_test.go index 1b16a4d5..aeded35b 100644 --- a/controllers/templates/renderer_test.go +++ b/controllers/templates/renderer_test.go @@ -18,11 +18,11 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/intstr" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/list" - "github.com/weaveworks/gitopssets-controller/pkg/setup" - "github.com/weaveworks/gitopssets-controller/test" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/list" + "github.com/gitops-tools/gitopssets-controller/pkg/setup" + "github.com/gitops-tools/gitopssets-controller/test" ) const ( @@ -51,13 +51,13 @@ func TestRender(t *testing.T) { want: []*unstructured.Unstructured{ test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-dev-demo"), setClusterIP("192.168.50.50"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-dev"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-prod-demo"), setClusterIP("192.168.100.20"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-prod"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-preprod-demo"), setClusterIP("192.168.150.30"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-preprod"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), }, }, { @@ -80,7 +80,7 @@ func TestRender(t *testing.T) { test.ToUnstructured(t, makeTestService(nsn(testNS, "engineeringdev-demo"), setClusterIP("192.168.50.50"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering dev"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), }, }, { @@ -91,7 +91,7 @@ func TestRender(t *testing.T) { setOptions: []func(*templatesv1.GitOpsSet){ func(s *templatesv1.GitOpsSet) { s.ObjectMeta.Annotations = map[string]string{ - "templates.weave.works/delimiters": "$[,]", + "sets.gitops.pro/delimiters": "$[,]", } s.Spec.Templates = []templatesv1.GitOpsSetTemplate{ { @@ -111,7 +111,7 @@ func TestRender(t *testing.T) { test.ToUnstructured(t, makeTestService(nsn("demo", "engineering-demo"), setClusterIP("192.168.50.50"), addAnnotations(map[string]string{"app.kubernetes.io/instance": string("engineering")}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": string("test-gitops-set"), "templates.weave.works/namespace": string("demo")}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": string("test-gitops-set"), "sets.gitops.pro/namespace": string("demo")}))), }, }, { @@ -139,16 +139,16 @@ func TestRender(t *testing.T) { want: []*unstructured.Unstructured{ test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-dev-demo1"), setClusterIP("192.168.50.50"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-dev"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-dev-demo2"), setClusterIP("192.168.50.50"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-dev"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-prod-demo1"), setClusterIP("192.168.100.20"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-prod"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-prod-demo2"), setClusterIP("192.168.100.20"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-prod"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), }, }, { @@ -170,8 +170,8 @@ func TestRender(t *testing.T) { want: []*unstructured.Unstructured{ test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-dev-demo1"), setClusterIP("192.168.0.252"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-dev"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", - "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", + "sets.gitops.pro/namespace": testNS}))), }, }, { @@ -199,11 +199,11 @@ func TestRender(t *testing.T) { want: []*unstructured.Unstructured{ test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-dev-demo1"), setClusterIP("192.168.50.50"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-dev"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), test.ToUnstructured(t, makeTestNamespace("testing1-engineering-dev", - addLabels[*corev1.Namespace](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Namespace](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), test.ToUnstructured(t, makeTestNamespace("testing2-engineering-dev", - addLabels[*corev1.Namespace](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Namespace](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), }, }, { @@ -231,7 +231,7 @@ func TestRender(t *testing.T) { want: []*unstructured.Unstructured{ test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-dev-demo1"), setClusterIP("192.168.50.50"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-dev"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), }, }, { @@ -253,8 +253,8 @@ func TestRender(t *testing.T) { }, want: []*unstructured.Unstructured{ test.ToUnstructured(t, makeTestNamespace("nested-cluster", addLabels[*corev1.Namespace](map[string]string{ - "templates.weave.works/name": "test-gitops-set", - "templates.weave.works/namespace": "demo", + "sets.gitops.pro/name": "test-gitops-set", + "sets.gitops.pro/namespace": "demo", }, ))), }, @@ -271,7 +271,7 @@ func TestRender(t *testing.T) { { Content: runtime.RawExtension{ Raw: mustMarshalJSON(t, makeTestService(types.NamespacedName{Name: "{{ .Element.env }}-demo1", Namespace: testNS}, - addLabels[*corev1.Service](map[string]string{"templates.weave.works/test": "test-value"}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/test": "test-value"}))), }, }, } @@ -280,10 +280,10 @@ func TestRender(t *testing.T) { want: []*unstructured.Unstructured{ test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-dev-demo1"), setClusterIP("192.168.50.50"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-dev"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS, "templates.weave.works/test": "test-value"}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS, "sets.gitops.pro/test": "test-value"}))), test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-prod-demo1"), setClusterIP("192.168.100.20"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-prod"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS, "templates.weave.works/test": "test-value"}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS, "sets.gitops.pro/test": "test-value"}))), }, }, { @@ -298,7 +298,7 @@ func TestRender(t *testing.T) { { Content: runtime.RawExtension{ Raw: mustMarshalJSON(t, makeTestService(types.NamespacedName{Name: "{{ .Element.env }}-demo1", Namespace: testNS}, - addLabels[*corev1.Service](map[string]string{"templates.weave.works/namespace": "new-ns"}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/namespace": "new-ns"}))), }, }, } @@ -307,10 +307,10 @@ func TestRender(t *testing.T) { want: []*unstructured.Unstructured{ test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-dev-demo1"), setClusterIP("192.168.50.50"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-dev"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": "new-ns"}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": "new-ns"}))), test.ToUnstructured(t, makeTestService(nsn(testNS, "engineering-prod-demo1"), setClusterIP("192.168.100.20"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering-prod"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": "new-ns"}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": "new-ns"}))), }, }, { @@ -333,7 +333,7 @@ func TestRender(t *testing.T) { test.ToUnstructured(t, makeTestService(nsn("testing", "defaulted-demo"), setClusterIP("192.168.50.50"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering dev"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": testNS}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": testNS}))), }, }, { @@ -358,7 +358,7 @@ func TestRender(t *testing.T) { test.ToUnstructured(t, makeTestService(nsn("template-ns", "testing-no-ns"), setClusterIP("192.168.50.50"), addAnnotations(map[string]string{"app.kubernetes.io/instance": "engineering dev"}), - addLabels[*corev1.Service](map[string]string{"templates.weave.works/name": "test-gitops-set", "templates.weave.works/namespace": "template-ns"}))), + addLabels[*corev1.Service](map[string]string{"sets.gitops.pro/name": "test-gitops-set", "sets.gitops.pro/namespace": "template-ns"}))), }, }, { @@ -369,7 +369,7 @@ func TestRender(t *testing.T) { setOptions: []func(*templatesv1.GitOpsSet){ func(s *templatesv1.GitOpsSet) { s.ObjectMeta.Annotations = map[string]string{ - "templates.weave.works/delimiters": "${{,}}", + "sets.gitops.pro/delimiters": "${{,}}", } s.Spec.Templates = []templatesv1.GitOpsSetTemplate{ { @@ -389,8 +389,8 @@ func TestRender(t *testing.T) { "name": "engineering-dev-demo", "namespace": "demo", "labels": map[string]interface{}{ - "templates.weave.works/name": "test-gitops-set", - "templates.weave.works/namespace": "demo", + "sets.gitops.pro/name": "test-gitops-set", + "sets.gitops.pro/namespace": "demo", }, }, "spec": map[string]interface{}{ @@ -413,7 +413,7 @@ func TestRender(t *testing.T) { setOptions: []func(*templatesv1.GitOpsSet){ func(s *templatesv1.GitOpsSet) { s.ObjectMeta.Annotations = map[string]string{ - "templates.weave.works/delimiters": "${{,}}", + "sets.gitops.pro/delimiters": "${{,}}", } s.Spec.Templates = []templatesv1.GitOpsSetTemplate{ { @@ -432,8 +432,8 @@ func TestRender(t *testing.T) { "name": "engineering-dev-demo", "namespace": "demo", "labels": map[string]interface{}{ - "templates.weave.works/name": "test-gitops-set", - "templates.weave.works/namespace": "demo", + "sets.gitops.pro/name": "test-gitops-set", + "sets.gitops.pro/namespace": "demo", }, }, "spec": map[string]interface{}{ @@ -454,7 +454,7 @@ func TestRender(t *testing.T) { setOptions: []func(*templatesv1.GitOpsSet){ func(s *templatesv1.GitOpsSet) { s.ObjectMeta.Annotations = map[string]string{ - "templates.weave.works/delimiters": "((,))", + "sets.gitops.pro/delimiters": "((,))", } s.Spec.Templates = []templatesv1.GitOpsSetTemplate{ { @@ -474,8 +474,8 @@ func TestRender(t *testing.T) { "name": "testing-demo", "namespace": "demo", "labels": map[string]interface{}{ - "templates.weave.works/name": "test-gitops-set", - "templates.weave.works/namespace": "demo", + "sets.gitops.pro/name": "test-gitops-set", + "sets.gitops.pro/namespace": "demo", }, }, "spec": map[string]interface{}{ diff --git a/controllers/templates/testdata/template-with-element-index-rendered.yaml b/controllers/templates/testdata/template-with-element-index-rendered.yaml index a1075f84..44c74ec2 100644 --- a/controllers/templates/testdata/template-with-element-index-rendered.yaml +++ b/controllers/templates/testdata/template-with-element-index-rendered.yaml @@ -4,21 +4,21 @@ apiVersion: v1 metadata: name: ns-0-engineering-dev labels: - templates.weave.works/name: namespaces-from-elements - templates.weave.works/namespace: wge + sets.gitops.pro/name: namespaces-from-elements + sets.gitops.pro/namespace: wge --- kind: Namespace apiVersion: v1 metadata: name: ns-1-engineering-prod labels: - templates.weave.works/name: namespaces-from-elements - templates.weave.works/namespace: wge + sets.gitops.pro/name: namespaces-from-elements + sets.gitops.pro/namespace: wge --- kind: Namespace apiVersion: v1 metadata: name: ns-2-engineering-preprod labels: - templates.weave.works/name: namespaces-from-elements - templates.weave.works/namespace: wge + sets.gitops.pro/name: namespaces-from-elements + sets.gitops.pro/namespace: wge diff --git a/controllers/templates/testdata/template-with-element-index.yaml b/controllers/templates/testdata/template-with-element-index.yaml index 0bc533cf..5123069d 100644 --- a/controllers/templates/testdata/template-with-element-index.yaml +++ b/controllers/templates/testdata/template-with-element-index.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/controllers/templates/testdata/template-with-repeat-index-rendered.yaml b/controllers/templates/testdata/template-with-repeat-index-rendered.yaml index 5a982ff8..df4ea865 100644 --- a/controllers/templates/testdata/template-with-repeat-index-rendered.yaml +++ b/controllers/templates/testdata/template-with-repeat-index-rendered.yaml @@ -5,8 +5,8 @@ data: kind: ConfigMap metadata: labels: - templates.weave.works/name: config-maps - templates.weave.works/namespace: wge + sets.gitops.pro/name: config-maps + sets.gitops.pro/namespace: wge name: team1-team namespace: wge --- @@ -16,8 +16,8 @@ data: kind: ConfigMap metadata: labels: - templates.weave.works/name: config-maps - templates.weave.works/namespace: wge + sets.gitops.pro/name: config-maps + sets.gitops.pro/namespace: wge name: team2-team namespace: wge --- @@ -27,8 +27,8 @@ data: kind: ConfigMap metadata: labels: - templates.weave.works/name: config-maps - templates.weave.works/namespace: wge + sets.gitops.pro/name: config-maps + sets.gitops.pro/namespace: wge name: c1-customer namespace: wge --- @@ -38,8 +38,8 @@ data: kind: ConfigMap metadata: labels: - templates.weave.works/name: config-maps - templates.weave.works/namespace: wge + sets.gitops.pro/name: config-maps + sets.gitops.pro/namespace: wge name: c2-customer namespace: wge --- @@ -49,8 +49,8 @@ data: kind: ConfigMap metadata: labels: - templates.weave.works/name: config-maps - templates.weave.works/namespace: wge + sets.gitops.pro/name: config-maps + sets.gitops.pro/namespace: wge name: team4-team namespace: wge --- @@ -60,8 +60,8 @@ data: kind: ConfigMap metadata: labels: - templates.weave.works/name: config-maps - templates.weave.works/namespace: wge + sets.gitops.pro/name: config-maps + sets.gitops.pro/namespace: wge name: team5-team namespace: wge --- @@ -71,8 +71,8 @@ data: kind: ConfigMap metadata: labels: - templates.weave.works/name: config-maps - templates.weave.works/namespace: wge + sets.gitops.pro/name: config-maps + sets.gitops.pro/namespace: wge name: c4-customer namespace: wge --- @@ -82,7 +82,7 @@ data: kind: ConfigMap metadata: labels: - templates.weave.works/name: config-maps - templates.weave.works/namespace: wge + sets.gitops.pro/name: config-maps + sets.gitops.pro/namespace: wge name: c5-customer namespace: wge diff --git a/controllers/templates/testdata/template-with-repeat-index.yaml b/controllers/templates/testdata/template-with-repeat-index.yaml index a7f05746..ca891dc2 100644 --- a/controllers/templates/testdata/template-with-repeat-index.yaml +++ b/controllers/templates/testdata/template-with-repeat-index.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/controllers/templates/testdata/template-with-top-level-elements-rendered.yaml b/controllers/templates/testdata/template-with-top-level-elements-rendered.yaml index 0f423ba6..f440afbd 100644 --- a/controllers/templates/testdata/template-with-top-level-elements-rendered.yaml +++ b/controllers/templates/testdata/template-with-top-level-elements-rendered.yaml @@ -4,13 +4,13 @@ apiVersion: v1 metadata: name: ns-0-engineering-dev labels: - templates.weave.works/name: namespaces-from-elements - templates.weave.works/namespace: wge + sets.gitops.pro/name: namespaces-from-elements + sets.gitops.pro/namespace: wge --- kind: Namespace apiVersion: v1 metadata: name: ns-1-engineering-prod labels: - templates.weave.works/name: namespaces-from-elements - templates.weave.works/namespace: wge + sets.gitops.pro/name: namespaces-from-elements + sets.gitops.pro/namespace: wge diff --git a/controllers/templates/testdata/template-with-top-level-elements.yaml b/controllers/templates/testdata/template-with-top-level-elements.yaml index 3f714f63..d20c7909 100644 --- a/controllers/templates/testdata/template-with-top-level-elements.yaml +++ b/controllers/templates/testdata/template-with-top-level-elements.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/docs/README.md b/docs/README.md index 69da3b34..e869fe1f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -24,7 +24,7 @@ with the `reconcile.fluxcd.io/requestedAt` annotation. The simplest generator is the `List` generator. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: gitopsset-sample @@ -53,7 +53,7 @@ Templates are Kubernetes resources in YAML format. Each template is rendered for each element generated by the generators. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: gitopsset-sample @@ -110,7 +110,7 @@ It can be desirable to repeat a template for a repeated element in a generated value. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: repeated-gitopsset-sample @@ -157,12 +157,12 @@ The default delimiters for the template engine are `{{` and `}}`, which is the s These can be changed by adding an annotation to the `GitOpsSet`: ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: gitopsset-sample annotations: - templates.weave.works/delimiters: "${{,}}" + sets.gitops.pro/delimiters: "${{,}}" ``` Changing the delimiters can useful for: @@ -181,12 +181,12 @@ In yaml `{{` is invalid syntax and needs to be quoted. If you need to provide a Unquoted values allow you to include objects in your templates too. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: gitopsset-sample annotations: - templates.weave.works/delimiters: "${{,}}" + sets.gitops.pro/delimiters: "${{,}}" spec: generators: - list: @@ -248,7 +248,7 @@ The generator operates in two different ways, you can parse files (YAML or JSON) #### Generation from files ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: repository-sample @@ -297,7 +297,7 @@ For security reasons, you need to explicitly list out the files that the generat #### Generation from directories ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: @@ -339,7 +339,7 @@ Each generated element has two keys, `.Element.Directory` which will be a repo-r It is also possible to exclude paths from the generated list, for example, if you do not want to generate for a directory you can exclude it with: ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: repository-sample @@ -372,7 +372,7 @@ The `OCIRepository` generator operates in exactly the same way as the [GitReposi #### Generation from files ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: oci-repository-sample @@ -412,7 +412,7 @@ It does only require read-only access, but all API tokens should be guarded as c _There have been many security compromises using API access tokens, do not let this happen to you!_ ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: pull-requests-sample @@ -498,7 +498,7 @@ The matrix generator doesn't generate resources by itself. It combines the resul generation from other generators e.g.: ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: matrix-sample @@ -545,7 +545,7 @@ This will result in three sets of generated parameters, which are a combination These can be referenced in the templates, note that all keys in the merged generators from the Matrix are contained in the `Element` scope. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: matrix-sample @@ -593,7 +593,7 @@ field, if you have two, they will collide. You can provide a name for the generator in the Matrix: ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: matrix-sample @@ -664,7 +664,7 @@ A matrix generator will normally generate a cartesian result, but you can also generate a single result. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: single-element-matrix-sample @@ -792,7 +792,7 @@ curl \ This can be translated into... ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: @@ -885,7 +885,7 @@ Not all APIs return an array of JSON objects, sometimes it's nested within a res You can use JSONPath to extract the fields from this data... ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: @@ -911,7 +911,7 @@ Another piece of functionality in the APIClient generator is the ability to POST JSON to the API. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: @@ -945,7 +945,7 @@ The JSON body sent will look like this: Instead of using the JSONPath to extract from a complex structure, you can configure the result to be a single element. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: @@ -972,7 +972,7 @@ If the API endpoint you are accessing requires a custom CA you can provide this via the secret field. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: @@ -1013,7 +1013,7 @@ The cluster generator generates from in-cluster GitOpsCluster resources. For example, this `GitOpsSet` will generate a `Kustomization` resource for each cluster matching the [Label selector](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: cluster-sample @@ -1053,7 +1053,7 @@ The following fields are generated for each GitOpsCluster. If the selector is not provided, all clusters from all namespaces will be returned: ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: cluster-sample @@ -1065,7 +1065,7 @@ spec: Otherwise if the selector is empty, no clusters will be generated: ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: cluster-sample @@ -1090,7 +1090,7 @@ The generated elements have the following fields: This can be used simply, to create a deployment with an image...or, combined with a Matrix generator, to manage multiple workloads with the same image. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: imagepolicy-example @@ -1114,7 +1114,7 @@ In this example, a `ConfigMap` is generated containing the latest image whenever Combined in a Matrix, like this, it will generate two `ConfigMaps` with the values. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: imagepolicy-matrix-example @@ -1198,7 +1198,7 @@ data: ``` And the GitOpsSet below ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: config-sample @@ -1225,7 +1225,7 @@ As with the other generators, the `Config` generator can be combined with other This will generate two `ConfigMaps` with the values. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: imagepolicy-matrix-example @@ -1360,7 +1360,7 @@ It is not recommended that you create a role with blanket permissions, under the You can configure the service-account that is used to create resources. ```yaml -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: matrix-sample diff --git a/docs/api/gitopsset.md b/docs/api/gitopsset.md index 2825df79..8d0ab951 100644 --- a/docs/api/gitopsset.md +++ b/docs/api/gitopsset.md @@ -1,16 +1,16 @@

Packages:

-

templates.weave.works/v1alpha1

+

sets.gitops.pro/v1alpha1

Package v1alpha1 contains API Schema definitions for the gitopssets v1alpha1 API group

Resource Types: -

GitOpsSet +

GitOpsSet

GitOpsSet is the Schema for the gitopssets API

@@ -26,7 +26,7 @@ Resource Types: apiVersion
string @@ -56,7 +56,7 @@ Refer to the Kubernetes API documentation for the fields of the
-templates.weave.works/v1alpha1 +sets.gitops.pro/v1alpha1
spec
- + GitOpsSetSpec @@ -83,7 +83,7 @@ GitOpsSet.

generators
- + []GitOpsSetGenerator @@ -96,7 +96,7 @@ GitOpsSet.

templates
- + []GitOpsSetTemplate @@ -127,7 +127,7 @@ when reconciling this Kustomization.

status
- + GitOpsSetStatus @@ -137,12 +137,12 @@ GitOpsSetStatus
-

APIClientGenerator +

APIClientGenerator

(Appears on: -GitOpsSetGenerator, -GitOpsSetNestedGenerator) +GitOpsSetGenerator, +GitOpsSetNestedGenerator)

APIClientGenerator defines a generator that queries an API endpoint and uses that to generate data.

@@ -208,7 +208,7 @@ call.

headersRef
- + HeadersReference @@ -256,8 +256,8 @@ entire object.

secretRef
- -Kubernetes core/v1.LocalObjectReference + +LocalObjectReference @@ -268,12 +268,12 @@ provides the Certificate Authority to trust when making API calls.

-

ClusterGenerator +

ClusterGenerator

(Appears on: -GitOpsSetGenerator, -GitOpsSetNestedGenerator) +GitOpsSetGenerator, +GitOpsSetNestedGenerator)

ClusterGenerator defines a generator that queries the cluster API for relevant clusters.

@@ -302,12 +302,12 @@ Kubernetes meta/v1.LabelSelector -

ConfigGenerator +

ConfigGenerator

(Appears on: -GitOpsSetGenerator, -GitOpsSetNestedGenerator) +GitOpsSetGenerator, +GitOpsSetNestedGenerator)

ConfigGenerator loads a referenced ConfigMap or Secret from the Cluster and makes it available as a resource.

@@ -343,11 +343,11 @@ string -

GitOpsSetGenerator +

GitOpsSetGenerator

(Appears on: -GitOpsSetSpec) +GitOpsSetSpec)

GitOpsSetGenerator is the top-level set of generators for this GitOpsSet.

@@ -362,7 +362,7 @@ string
list
- + ListGenerator @@ -374,7 +374,7 @@ ListGenerator
pullRequests
- + PullRequestGenerator @@ -386,7 +386,7 @@ PullRequestGenerator
gitRepository
- + GitRepositoryGenerator @@ -398,7 +398,7 @@ GitRepositoryGenerator
ociRepository
- + OCIRepositoryGenerator @@ -410,7 +410,7 @@ OCIRepositoryGenerator
matrix
- + MatrixGenerator @@ -422,7 +422,7 @@ MatrixGenerator
cluster
- + ClusterGenerator @@ -434,7 +434,7 @@ ClusterGenerator
apiClient
- + APIClientGenerator @@ -446,7 +446,7 @@ APIClientGenerator
imagePolicy
- + ImagePolicyGenerator @@ -458,7 +458,7 @@ ImagePolicyGenerator
config
- + ConfigGenerator @@ -468,11 +468,11 @@ ConfigGenerator
-

GitOpsSetNestedGenerator +

GitOpsSetNestedGenerator

(Appears on: -MatrixGenerator) +MatrixGenerator)

GitOpsSetNestedGenerator describes the generators usable by the MatrixGenerator. This is a subset of the generators allowed by the GitOpsSetGenerator because the CRD format doesn’t support recursive declarations.

@@ -502,7 +502,7 @@ type in a single Matrix generator.

list
- + ListGenerator @@ -514,7 +514,7 @@ ListGenerator gitRepository
- + GitRepositoryGenerator @@ -526,7 +526,7 @@ GitRepositoryGenerator ociRepository
- + OCIRepositoryGenerator @@ -538,7 +538,7 @@ OCIRepositoryGenerator pullRequests
- + PullRequestGenerator @@ -550,7 +550,7 @@ PullRequestGenerator cluster
- + ClusterGenerator @@ -562,7 +562,7 @@ ClusterGenerator apiClient
- + APIClientGenerator @@ -574,7 +574,7 @@ APIClientGenerator imagePolicy
- + ImagePolicyGenerator @@ -586,7 +586,7 @@ ImagePolicyGenerator config
- + ConfigGenerator @@ -596,11 +596,11 @@ ConfigGenerator -

GitOpsSetSpec +

GitOpsSetSpec

(Appears on: -GitOpsSet) +GitOpsSet)

GitOpsSetSpec defines the desired state of GitOpsSet

@@ -628,7 +628,7 @@ GitOpsSet.

generators
- + []GitOpsSetGenerator @@ -641,7 +641,7 @@ GitOpsSet.

templates
- + []GitOpsSetTemplate @@ -666,11 +666,11 @@ when reconciling this Kustomization.

-

GitOpsSetStatus +

GitOpsSetStatus

(Appears on: -GitOpsSet) +GitOpsSet)

GitOpsSetStatus defines the observed state of GitOpsSet

@@ -727,7 +727,7 @@ object.

inventory
- + ResourceInventory @@ -740,11 +740,11 @@ have been successfully applied

-

GitOpsSetTemplate +

GitOpsSetTemplate

(Appears on: -GitOpsSetSpec) +GitOpsSetSpec)

GitOpsSetTemplate describes a resource to create

@@ -783,12 +783,12 @@ k8s.io/apimachinery/pkg/runtime.RawExtension
-

GitRepositoryGenerator +

GitRepositoryGenerator

(Appears on: -GitOpsSetGenerator, -GitOpsSetNestedGenerator) +GitOpsSetGenerator, +GitOpsSetNestedGenerator)

GitRepositoryGenerator generates from files in a Flux GitRepository resource.

@@ -814,7 +814,7 @@ string
files
- + []RepositoryGeneratorFileItem @@ -827,7 +827,7 @@ string
directories
- + []RepositoryGeneratorDirectoryItem @@ -839,11 +839,11 @@ generated.

-

HeadersReference +

HeadersReference

(Appears on: -APIClientGenerator) +APIClientGenerator)

HeadersReference references either a Secret or ConfigMap to be used for additional request headers.

@@ -879,12 +879,12 @@ string -

ImagePolicyGenerator +

ImagePolicyGenerator

(Appears on: -GitOpsSetGenerator, -GitOpsSetNestedGenerator) +GitOpsSetGenerator, +GitOpsSetNestedGenerator)

ImagePolicyGenerator generates from the ImagePolicy.

@@ -908,12 +908,12 @@ string
-

ListGenerator +

ListGenerator

(Appears on: -GitOpsSetGenerator, -GitOpsSetNestedGenerator) +GitOpsSetGenerator, +GitOpsSetNestedGenerator)

ListGenerator generates from a hard-coded list.

@@ -938,11 +938,40 @@ string
-

MatrixGenerator +

LocalObjectReference

(Appears on: -GitOpsSetGenerator) +APIClientGenerator, +PullRequestGenerator) +

+

LocalObjectReference contains enough information to locate the referenced Kubernetes resource object.

+ + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+

Name of the referent.

+
+

MatrixGenerator +

+

+(Appears on: +GitOpsSetGenerator)

MatrixGenerator defines a matrix that combines generators. The matrix is a cartesian product of the generators.

@@ -958,7 +987,7 @@ The matrix is a cartesian product of the generators.

generators
- + []GitOpsSetNestedGenerator @@ -985,12 +1014,12 @@ It’s recommended that you use the Name field to separate out elements.

-

OCIRepositoryGenerator +

OCIRepositoryGenerator

(Appears on: -GitOpsSetGenerator, -GitOpsSetNestedGenerator) +GitOpsSetGenerator, +GitOpsSetNestedGenerator)

OCIRepositoryGenerator generates from files in a Flux OCIRepository resource.

@@ -1016,7 +1045,7 @@ string
files
- + []RepositoryGeneratorFileItem @@ -1029,7 +1058,7 @@ string
directories
- + []RepositoryGeneratorDirectoryItem @@ -1041,12 +1070,12 @@ generated.

-

PullRequestGenerator +

PullRequestGenerator

(Appears on: -GitOpsSetGenerator, -GitOpsSetNestedGenerator) +GitOpsSetGenerator, +GitOpsSetNestedGenerator)

PullRequestGenerator defines a generator that queries a Git hosting service for relevant PRs.

@@ -1110,8 +1139,8 @@ e.g. my-org/my-repo

secretRef
- -Kubernetes core/v1.LocalObjectReference + +LocalObjectReference @@ -1148,12 +1177,12 @@ or to include forks if true

-

RepositoryGeneratorDirectoryItem +

RepositoryGeneratorDirectoryItem

(Appears on: -GitRepositoryGenerator, -OCIRepositoryGenerator) +GitRepositoryGenerator, +OCIRepositoryGenerator)

RepositoryGeneratorDirectoryItem stores the information about a specific directory to be generated from.

@@ -1187,12 +1216,12 @@ bool -

RepositoryGeneratorFileItem +

RepositoryGeneratorFileItem

(Appears on: -GitRepositoryGenerator, -OCIRepositoryGenerator) +GitRepositoryGenerator, +OCIRepositoryGenerator)

RepositoryGeneratorFileItem defines a path to a file to be parsed when generating.

@@ -1216,11 +1245,11 @@ string
-

ResourceInventory +

ResourceInventory

(Appears on: -GitOpsSetStatus) +GitOpsSetStatus)

ResourceInventory contains a list of Kubernetes resource object references that have been applied by a Kustomization.

@@ -1235,7 +1264,7 @@ string
entries
- + []ResourceRef @@ -1246,11 +1275,11 @@ string
-

ResourceRef +

ResourceRef

(Appears on: -ResourceInventory) +ResourceInventory)

ResourceRef contains the information necessary to locate a resource within a cluster.

diff --git a/examples/apiclient/api-client-generator.yaml b/examples/apiclient/api-client-generator.yaml index 2cc30d30..edf48e45 100644 --- a/examples/apiclient/api-client-generator.yaml +++ b/examples/apiclient/api-client-generator.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: @@ -16,7 +16,7 @@ spec: templates: - content: kind: Kustomization - apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 + apiVersion: kustomize.toolkit.fluxcd.io/v1 metadata: name: "{{ .Element.env }}-demo" labels: diff --git a/examples/base/go-demo-gitrepository.yaml b/examples/base/go-demo-gitrepository.yaml index c68b4cbe..07b1ced3 100644 --- a/examples/base/go-demo-gitrepository.yaml +++ b/examples/base/go-demo-gitrepository.yaml @@ -1,4 +1,4 @@ -apiVersion: source.toolkit.fluxcd.io/v1beta1 +apiVersion: source.toolkit.fluxcd.io/v1 kind: GitRepository metadata: name: go-demo-repo diff --git a/examples/cluster-generator/cluster-generator.yaml b/examples/cluster-generator/cluster-generator.yaml index 19086084..3d5493d4 100644 --- a/examples/cluster-generator/cluster-generator.yaml +++ b/examples/cluster-generator/cluster-generator.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/examples/config/config-generator.yaml b/examples/config/config-generator.yaml index 5746e594..5bf1dad0 100644 --- a/examples/config/config-generator.yaml +++ b/examples/config/config-generator.yaml @@ -1,5 +1,5 @@ --- -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/examples/gitrepository-with-dirs/repository-generator.yaml b/examples/gitrepository-with-dirs/repository-generator.yaml index 73524661..fe13f370 100644 --- a/examples/gitrepository-with-dirs/repository-generator.yaml +++ b/examples/gitrepository-with-dirs/repository-generator.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/examples/gitrepository/repository-generator.yaml b/examples/gitrepository/repository-generator.yaml index 1d7562d6..14036ac1 100644 --- a/examples/gitrepository/repository-generator.yaml +++ b/examples/gitrepository/repository-generator.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/examples/imagepolicy/imagepolicy-generator.yaml b/examples/imagepolicy/imagepolicy-generator.yaml index c57c58ba..042e10f5 100644 --- a/examples/imagepolicy/imagepolicy-generator.yaml +++ b/examples/imagepolicy/imagepolicy-generator.yaml @@ -1,5 +1,5 @@ --- -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: @@ -33,7 +33,7 @@ spec: cluster: "{{ .Element.cluster }}" version: "{{ .Element.version }}" --- -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/examples/list-generator/list-generator.yaml b/examples/list-generator/list-generator.yaml index 59e5ba64..35256740 100644 --- a/examples/list-generator/list-generator.yaml +++ b/examples/list-generator/list-generator.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/examples/matrix-generator/matrix-generator.yaml b/examples/matrix-generator/matrix-generator.yaml index 49503510..24649901 100644 --- a/examples/matrix-generator/matrix-generator.yaml +++ b/examples/matrix-generator/matrix-generator.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/examples/matrix-generator/matrix-single-element.yaml b/examples/matrix-generator/matrix-single-element.yaml index 231f8678..183382f3 100644 --- a/examples/matrix-generator/matrix-single-element.yaml +++ b/examples/matrix-generator/matrix-single-element.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/examples/ocirepository/oci-repository-generator.yaml b/examples/ocirepository/oci-repository-generator.yaml index b358ab5f..05a27a76 100644 --- a/examples/ocirepository/oci-repository-generator.yaml +++ b/examples/ocirepository/oci-repository-generator.yaml @@ -1,5 +1,5 @@ --- -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/examples/pull-requests/pull-requests-generator.yaml b/examples/pull-requests/pull-requests-generator.yaml index 0eceee9a..e9c79c76 100644 --- a/examples/pull-requests/pull-requests-generator.yaml +++ b/examples/pull-requests/pull-requests-generator.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: @@ -19,7 +19,7 @@ spec: forks: false templates: - content: - apiVersion: source.toolkit.fluxcd.io/v1beta2 + apiVersion: source.toolkit.fluxcd.io/v1 kind: GitRepository metadata: name: "pr-{{ .Element.Number }}-gitrepository" diff --git a/examples/repeated-list/repeated-list-generator.yaml b/examples/repeated-list/repeated-list-generator.yaml index bbd9bbd0..91c8f3ef 100644 --- a/examples/repeated-list/repeated-list-generator.yaml +++ b/examples/repeated-list/repeated-list-generator.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: name: repeated-gitopsset-sample diff --git a/examples/serviceaccount/list-generator.yaml b/examples/serviceaccount/list-generator.yaml index fbed46c5..301c7cad 100644 --- a/examples/serviceaccount/list-generator.yaml +++ b/examples/serviceaccount/list-generator.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/go.mod b/go.mod index 5593fcd5..8226c1d7 100644 --- a/go.mod +++ b/go.mod @@ -1,138 +1,140 @@ -module github.com/weaveworks/gitopssets-controller +module github.com/gitops-tools/gitopssets-controller -go 1.20 +go 1.23.0 + +toolchain go1.23.4 require ( - dario.cat/mergo v1.0.0 - github.com/Masterminds/sprig/v3 v3.2.3 - github.com/cyphar/filepath-securejoin v0.2.4 - github.com/fluxcd/image-reflector-controller/api v0.31.1 - github.com/fluxcd/kustomize-controller/api v1.2.1 - github.com/fluxcd/pkg/apis/event v0.6.0 - github.com/fluxcd/pkg/apis/meta v1.2.0 - github.com/fluxcd/pkg/http/fetch v0.8.0 - github.com/fluxcd/pkg/runtime v0.43.3 - github.com/fluxcd/pkg/tar v0.4.0 - github.com/fluxcd/source-controller/api v1.2.3 - github.com/gitops-tools/pkg v0.1.0 - github.com/go-logr/logr v1.4.1 + dario.cat/mergo v1.0.1 + github.com/Masterminds/sprig/v3 v3.3.0 + github.com/cyphar/filepath-securejoin v0.4.1 + github.com/fluxcd/image-reflector-controller/api v0.33.0 + github.com/fluxcd/kustomize-controller/api v1.4.0 + github.com/fluxcd/pkg/apis/event v0.16.0 + github.com/fluxcd/pkg/apis/meta v1.10.0 + github.com/fluxcd/pkg/http/fetch v0.15.0 + github.com/fluxcd/pkg/runtime v0.53.0 + github.com/fluxcd/pkg/tar v0.11.0 + github.com/fluxcd/source-controller/api v1.4.1 + github.com/gitops-tools/pkg v0.2.0 + github.com/go-logr/logr v1.4.2 github.com/go-logr/zapr v1.3.0 github.com/google/go-cmp v0.6.0 github.com/google/go-containerregistry v0.12.0 - github.com/jenkins-x/go-scm v1.14.21 - github.com/onsi/gomega v1.30.0 - github.com/spf13/cobra v1.8.0 - github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.8.4 + github.com/jenkins-x/go-scm v1.14.55 + github.com/onsi/gomega v1.36.2 + github.com/spf13/cobra v1.8.1 + github.com/spf13/pflag v1.0.6 + github.com/stretchr/testify v1.10.0 github.com/weaveworks/cluster-controller v1.6.0 - go.uber.org/zap v1.26.0 - golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb - k8s.io/api v0.28.4 - k8s.io/apiextensions-apiserver v0.28.4 - k8s.io/apimachinery v0.28.4 - k8s.io/client-go v0.28.4 - sigs.k8s.io/cli-utils v0.35.0 - sigs.k8s.io/controller-runtime v0.16.3 + go.uber.org/zap v1.27.0 + golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa + k8s.io/api v0.32.1 + k8s.io/apiextensions-apiserver v0.32.1 + k8s.io/apimachinery v0.32.1 + k8s.io/client-go v0.32.1 + sigs.k8s.io/cli-utils v0.37.2 + sigs.k8s.io/controller-runtime v0.20.1 sigs.k8s.io/yaml v1.4.0 ) require ( code.gitea.io/sdk/gitea v0.14.0 // indirect + fortio.org/safecast v1.0.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect - github.com/Masterminds/semver/v3 v3.2.0 // indirect + github.com/Masterminds/semver/v3 v3.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bluekeyes/go-gitdiff v0.7.1 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/blang/semver/v4 v4.0.0 // indirect + github.com/bluekeyes/go-gitdiff v0.8.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/evanphx/json-patch v5.7.0+incompatible // indirect - github.com/evanphx/json-patch/v5 v5.7.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/emicklei/go-restful/v3 v3.12.1 // indirect + github.com/evanphx/json-patch/v5 v5.9.11 // indirect github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect - github.com/fluxcd/cli-utils v0.36.0-flux.2 // indirect - github.com/fluxcd/pkg/apis/acl v0.1.0 // indirect - github.com/fluxcd/pkg/apis/kustomize v1.2.0 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fluxcd/cli-utils v0.36.0-flux.12 // indirect + github.com/fluxcd/pkg/apis/acl v0.6.0 // indirect + github.com/fluxcd/pkg/apis/kustomize v1.9.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/go-errors/errors v1.5.1 // indirect - github.com/go-openapi/jsonpointer v0.20.0 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/swag v0.22.4 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect - github.com/google/btree v1.1.2 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/gnostic-models v0.6.9 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/google/uuid v1.4.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-retryablehttp v0.7.5 // indirect + github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-version v1.3.0 // indirect - github.com/huandu/xstrings v1.3.3 // indirect - github.com/imdario/mergo v0.3.16 // indirect + github.com/huandu/xstrings v1.5.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/klauspost/compress v1.17.11 // indirect + github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect - github.com/mailru/easyjson v0.7.7 // indirect - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect + github.com/mailru/easyjson v0.9.0 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/moby/spdystream v0.2.0 // indirect + github.com/moby/spdystream v0.5.0 // indirect github.com/moby/term v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/go-digest/blake3 v0.0.0-20231025023718-d50d2fec9c98 // indirect + github.com/opencontainers/go-digest/blake3 v0.0.0-20240426182413-22b78e47854a // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.17.0 // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.45.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.20.5 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/shopspring/decimal v1.3.1 // indirect + github.com/shopspring/decimal v1.4.0 // indirect github.com/shurcooL/githubv4 v0.0.0-20190718010115-4ba037080260 // indirect github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/cast v1.7.0 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xlab/treeprint v1.2.0 // indirect - github.com/zeebo/blake3 v0.2.3 // indirect - go.starlark.net v0.0.0-20231121155337-90ade8b19d09 // indirect + github.com/zeebo/blake3 v0.2.4 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.17.0 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/oauth2 v0.15.0 // indirect - golang.org/x/sync v0.5.0 // indirect - golang.org/x/sys v0.15.0 // indirect - golang.org/x/term v0.15.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.5.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/oauth2 v0.25.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.29.0 // indirect + golang.org/x/term v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + golang.org/x/time v0.9.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/protobuf v1.31.0 // indirect - gopkg.in/evanphx/json-patch.v5 v5.7.0 // indirect + google.golang.org/protobuf v1.36.4 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/cli-runtime v0.28.4 // indirect - k8s.io/component-base v0.28.4 // indirect - k8s.io/klog/v2 v2.110.1 // indirect - k8s.io/kube-openapi v0.0.0-20231206194836-bf4651e18aa8 // indirect - k8s.io/kubectl v0.28.4 // indirect - k8s.io/utils v0.0.0-20231127182322-b307cd553661 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/api v0.16.0 // indirect - sigs.k8s.io/kustomize/kyaml v0.16.0 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect + k8s.io/cli-runtime v0.32.1 // indirect + k8s.io/component-base v0.32.1 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect + k8s.io/kubectl v0.32.1 // indirect + k8s.io/utils v0.0.0-20241210054802-24370beab758 // indirect + sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect + sigs.k8s.io/kustomize/api v0.19.0 // indirect + sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.5.0 // indirect ) // Replace digest lib to master to gather access to BLAKE3. diff --git a/go.sum b/go.sum index 4d703a26..bc4f0492 100644 --- a/go.sum +++ b/go.sum @@ -1,100 +1,106 @@ code.gitea.io/sdk/gitea v0.14.0 h1:m4J352I3p9+bmJUfS+g0odeQzBY/5OXP91Gv6D4fnJ0= code.gitea.io/sdk/gitea v0.14.0/go.mod h1:89WiyOX1KEcvjP66sRHdu0RafojGo60bT9UqW17VbWs= -dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= -dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= +dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= +dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +fortio.org/safecast v1.0.0 h1:dr3131WPX8iS1pTf76+39WeXbTrerDYLvi9s7Oi3wiY= +fortio.org/safecast v1.0.0/go.mod h1:xZmcPk3vi4kuUFf+tq4SvnlVdwViqf6ZSZl91Jr9Jdg= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= -github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= -github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= +github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= +github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= +github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bluekeyes/go-gitdiff v0.7.1 h1:graP4ElLRshr8ecu0UtqfNTCHrtSyZd3DABQm/DWesQ= -github.com/bluekeyes/go-gitdiff v0.7.1/go.mod h1:QpfYYO1E0fTVHVZAZKiRjtSGY9823iCdvGXBcEzHGbM= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bluekeyes/go-gitdiff v0.8.0 h1:Nn1wfw3/XeKoc3lWk+2bEXGUHIx36kj80FM1gVcBk+o= +github.com/bluekeyes/go-gitdiff v0.8.0/go.mod h1:WWAk1Mc6EgWarCrPFO+xeYlujPu98VuLW3Tu+B/85AE= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= -github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= -github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= +github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= +github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= +github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc= -github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU= +github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM= github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4= github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc= -github.com/fluxcd/cli-utils v0.36.0-flux.2 h1:7nlXfAJ7iaDF34IdbyId+wBf7beL2qvzDBLmVBJSDVo= -github.com/fluxcd/cli-utils v0.36.0-flux.2/go.mod h1:TQtgRf9OjQBzE5FJ9UDV6WNz9Po3pzAtk3NQmQEN5l8= -github.com/fluxcd/image-reflector-controller/api v0.31.1 h1:nc44G0JjLgSvqglJSiXQJZcrRw+eY01j7fHRUDB3FMw= -github.com/fluxcd/image-reflector-controller/api v0.31.1/go.mod h1:KopMbC92Cw2ypZZeMytzTLr3EfOj2hoL6MizrdpBDhc= -github.com/fluxcd/kustomize-controller/api v1.2.1 h1:+WgQOU7jpqz9bA4djPWmaeYAp9cG7c/TdcIYku3Jrzk= -github.com/fluxcd/kustomize-controller/api v1.2.1/go.mod h1:0Kgc4uYnr5jCm4H8JwArkR0v4WTmXeX/9KgoDbxluVc= -github.com/fluxcd/pkg/apis/acl v0.1.0 h1:EoAl377hDQYL3WqanWCdifauXqXbMyFuK82NnX6pH4Q= -github.com/fluxcd/pkg/apis/acl v0.1.0/go.mod h1:zfEZzz169Oap034EsDhmCAGgnWlcWmIObZjYMusoXS8= -github.com/fluxcd/pkg/apis/event v0.6.0 h1:AUaeee1CGWb65BLqVximHXG8Gcu6vWuYONIq6tVpjgo= -github.com/fluxcd/pkg/apis/event v0.6.0/go.mod h1:OEzWcX/oPbMmkCvC9QGoK27JXFvUZgBhLD+zgxZe47A= -github.com/fluxcd/pkg/apis/kustomize v1.2.0 h1:vkVs+OumxaWso0jNCqdgFFfMHdh+qtZhykTkjl7OgmA= -github.com/fluxcd/pkg/apis/kustomize v1.2.0/go.mod h1:VF7tR/WuVFeum+HaMTHwp+eCtsHiiQlY6ihgqtAnW/M= -github.com/fluxcd/pkg/apis/meta v1.2.0 h1:O766PzGAdMdQKybSflGL8oV0+GgCNIkdsxfalRyzeO8= -github.com/fluxcd/pkg/apis/meta v1.2.0/go.mod h1:fU/Az9AoVyIxC0oI4ihG0NVMNnvrcCzdEym3wxjIQsc= -github.com/fluxcd/pkg/http/fetch v0.8.0 h1:GWiX93y6JaoS0Bm2qy0fo2OeY3xTXP8dME/Ce1iEt8A= -github.com/fluxcd/pkg/http/fetch v0.8.0/go.mod h1:Rj2b8OVDgbPzeLxt+goa9+qDJDAwC7+jNdgyXsaBglQ= -github.com/fluxcd/pkg/runtime v0.43.3 h1:z6umKKONWvuxy0TWbeDUJOI30FTbS1P7QrK2J+NjLsM= -github.com/fluxcd/pkg/runtime v0.43.3/go.mod h1:dhhNV45B3tekg7qPzATFTuWOulvUzMoO1bV+vc2pSts= -github.com/fluxcd/pkg/tar v0.4.0 h1:SuXpfXBIcSJ5R/yqQi2CBxBmV/i/LH0agqNAh2PWBZg= -github.com/fluxcd/pkg/tar v0.4.0/go.mod h1:SyJBaQvuv2VA/rv4d1OHhCV6R8+9QKc9np193EzNHBc= -github.com/fluxcd/pkg/testserver v0.5.0 h1:n/Iskk0tXNt2AgIgjz9qeFK/VhEXGfqeazABXZmO2Es= -github.com/fluxcd/source-controller/api v1.2.3 h1:71mXv3Qg9HEhcpqOq1ObmoE+P/HuZNaAvxfI7dqZMo8= -github.com/fluxcd/source-controller/api v1.2.3/go.mod h1:5gaIVVH7hgb8p3HKFp8P6hGmZEC8fKSt4EcrG3g5vZI= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/gitops-tools/pkg v0.1.0 h1:atKTGUjGEEvkSX+HGCzI76rHRB84+nr77ll8kyJY3Nk= -github.com/gitops-tools/pkg v0.1.0/go.mod h1:c+ZMQS6qVn3+HfJ3Hl04ARo7zxD30ackJnV60UlLC5s= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fluxcd/cli-utils v0.36.0-flux.12 h1:8cD6SmaKa/lGo0KCu0XWiGrXJMLMBQwSsnoP0cG+Gjw= +github.com/fluxcd/cli-utils v0.36.0-flux.12/go.mod h1:Nb/zMqsJAzjz4/HIsEc2LTqxC6eC0rV26t4hkJT/F9o= +github.com/fluxcd/image-reflector-controller/api v0.33.0 h1:9EqxdtK8V+GcHA0anGh4ec6Kp55rVur4rlR9E0P495w= +github.com/fluxcd/image-reflector-controller/api v0.33.0/go.mod h1:BXMR6jCw/VzYS8utplzLx0G1mc3H+56xuQVal5qgfo0= +github.com/fluxcd/kustomize-controller/api v1.4.0 h1:QReBAuNAlrAez4aLkbYjVlWDCIZABFsKPgRa9W05VCQ= +github.com/fluxcd/kustomize-controller/api v1.4.0/go.mod h1:z1SD5EJS+vbGmF6B17x8aJfT5nnzGVEQ+3WGquOmhwA= +github.com/fluxcd/pkg/apis/acl v0.6.0 h1:rllf5uQLzTow81ZCslkQ6LPpDNqVQr6/fWaNksdUEtc= +github.com/fluxcd/pkg/apis/acl v0.6.0/go.mod h1:IVDZx3MAoDWjlLrJHMF9Z27huFuXAEQlnbWw0M6EcTs= +github.com/fluxcd/pkg/apis/event v0.16.0 h1:ffKc/3erowPnh72lFszz7sPQhLZ7bhqNrq+pu1Pb+JE= +github.com/fluxcd/pkg/apis/event v0.16.0/go.mod h1:D/QQi5lHT9/Ur3OMFLJO71D4KDQHbJ5s8dQV3h1ZAT0= +github.com/fluxcd/pkg/apis/kustomize v1.9.0 h1:SJpT1CK58AnTvCpDKeGfMNA0Xud/4VReZNvPe8XkTxo= +github.com/fluxcd/pkg/apis/kustomize v1.9.0/go.mod h1:AZl2GU03oPVue6SUivdiIYd/3mvF94j7t1G2JO26d4s= +github.com/fluxcd/pkg/apis/meta v1.10.0 h1:rqbAuyl5ug7A5jjRf/rNwBXmNl6tJ9wG2iIsriwnQUk= +github.com/fluxcd/pkg/apis/meta v1.10.0/go.mod h1:n7NstXHDaleAUMajcXTVkhz0MYkvEXy1C/eLI/t1xoI= +github.com/fluxcd/pkg/http/fetch v0.15.0 h1:AJ1JuE2asuK4QMfbHjxctFURke5FvZtyljjI1Qv4ArQ= +github.com/fluxcd/pkg/http/fetch v0.15.0/go.mod h1:feTESfETKU14jq+e/Ce8QnMBTCh9O79bLMSMe5t55fQ= +github.com/fluxcd/pkg/runtime v0.53.0 h1:IgDSLVQtgyXvZWIeDy1I+0EgzgUHNwEegSyI5UMObhw= +github.com/fluxcd/pkg/runtime v0.53.0/go.mod h1:8vkIhS1AhkmjC98LRm5xM+CRG5KySFTXpJWk+ZdtT4I= +github.com/fluxcd/pkg/tar v0.11.0 h1:pjf/rzr6HNAPiuxT59mtba9tfBtdNiSQ/UqduG8vZ2I= +github.com/fluxcd/pkg/tar v0.11.0/go.mod h1:+kiP25NqibWMpFWgizyPEMqnMJIux7bCgEy+4pfxyI4= +github.com/fluxcd/pkg/testserver v0.9.0 h1:UD6gyT1KXXbl5BbuE7o+UdxKeuYd7/CePAUdULokJbc= +github.com/fluxcd/pkg/testserver v0.9.0/go.mod h1:dqpWALgSYdcmPS9OXq165s4OjUexVysl++EZJ8uZVkw= +github.com/fluxcd/source-controller/api v1.4.1 h1:zV01D7xzHOXWbYXr36lXHWWYS7POARsjLt61Nbh3kVY= +github.com/fluxcd/source-controller/api v1.4.1/go.mod h1:gSjg57T+IG66SsBR0aquv+DFrm4YyBNpKIJVDnu3Ya8= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/gitops-tools/pkg v0.2.0 h1:YAyTKuLaHkP19cIWjXDbAqdvGXokDpcy8DcRtta9zwI= +github.com/gitops-tools/pkg v0.2.0/go.mod h1:O07f01ZC6aQ4iWukGF9LLgwa8bRe5U2yhJOuTrjKNk8= github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk= github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ= -github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= -github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -103,65 +109,65 @@ github.com/google/go-containerregistry v0.12.0/go.mod h1:sdIK+oHQO7B93xI8UweYdl8 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= +github.com/google/pprof v0.0.0-20250128161936-077ca0a936bf h1:BvBLUD2hkvLI3dJTJMiopAq8/wp43AAZKTP7qdpptbU= +github.com/google/pprof v0.0.0-20250128161936-077ca0a936bf/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI= -github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M= -github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= +github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw= github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= -github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= -github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= +github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jenkins-x/go-scm v1.14.21 h1:jXHg8vHXQnEj2vV0YcNIYMTTvFg4cEtMbVimtmmYke8= -github.com/jenkins-x/go-scm v1.14.21/go.mod h1:hE3p9HN+S6GNrunLq0RfNv75kA5KJCrD9GNyfhgWu6Y= +github.com/jenkins-x/go-scm v1.14.55 h1:bNBt2vjhkOouU1DLEXYUjuVtDpDLv8BTBtF1nb819nE= +github.com/jenkins-x/go-scm v1.14.55/go.mod h1:1RPxLZndnvu31XhFZ+RTvXiHmMX70HkQ17bRupTQxGs= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= -github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= -github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= +github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -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/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= +github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -173,203 +179,176 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.13.2 h1:Bi2gGVkfn6gQcjNjZJVO8Gf0FHzMPf2phUei9tejVMs= -github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= -github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= +github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= +github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= +github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/opencontainers/go-digest v1.0.1-0.20220411205349-bde1400a84be h1:f2PlhC9pm5sqpBZFvnAoKj+KzXRzbjFMA+TqXfJdgho= github.com/opencontainers/go-digest v1.0.1-0.20220411205349-bde1400a84be/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/go-digest/blake3 v0.0.0-20231025023718-d50d2fec9c98 h1:LTxrNWOPwquJy9Cu3oz6QHJIO5M5gNyOZtSybXdyLA4= -github.com/opencontainers/go-digest/blake3 v0.0.0-20231025023718-d50d2fec9c98/go.mod h1:kqQaIc6bZstKgnGpL7GD5dWoLKbA6mH1Y9ULjGImBnM= +github.com/opencontainers/go-digest/blake3 v0.0.0-20240426182413-22b78e47854a h1:xwooQrLddjfeKhucuLS4ElD3TtuuRwF8QWC9eHrnbxY= +github.com/opencontainers/go-digest/blake3 v0.0.0-20240426182413-22b78e47854a/go.mod h1:kqQaIc6bZstKgnGpL7GD5dWoLKbA6mH1Y9ULjGImBnM= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= -github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= -github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= +github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= -github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= -github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= +github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= +github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/shurcooL/githubv4 v0.0.0-20190718010115-4ba037080260 h1:xKXiRdBUtMVp64NaxACcyX4kvfmHJ9KrLU+JvyB1mdM= github.com/shurcooL/githubv4 v0.0.0-20190718010115-4ba037080260/go.mod h1:hAF0iLZy4td2EX+/8Tw+4nodhlMrwN3HupfaXj3zkGo= github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f h1:tygelZueB1EtXkPI6mQ4o9DQ0+FKW41hTbunoXZCTqk= github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= +github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/weaveworks/cluster-controller v1.6.0 h1:lPYAD9kgV3QwC1vslQ5RuqA/awoAOZo2PeH/ou+qaMo= github.com/weaveworks/cluster-controller v1.6.0/go.mod h1:x441gDOG1WfxZ7bzQz5OFph5RbU11SQC+INtNOyHd9w= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zeebo/assert v1.1.0 h1:hU1L1vLTHsnO8x8c9KAR5GmM5QscxHg5RNU5z5qbUWY= github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= -github.com/zeebo/blake3 v0.2.3 h1:TFoLXsjeXqRNFxSbk35Dk4YtszE/MQQGK10BH4ptoTg= -github.com/zeebo/blake3 v0.2.3/go.mod h1:mjJjZpnsyIVtVgTOSpJ9vmRE4wgDeyt2HU3qXvvKCaQ= +github.com/zeebo/blake3 v0.2.4 h1:KYQPkhpRtcqh0ssGYcKLG1JYvddkEA8QwCM/yBqhaZI= +github.com/zeebo/blake3 v0.2.4/go.mod h1:7eeQ6d2iXWRGF6npfaxl2CU+xy2Fjo2gxeyZGCRUjcE= github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= -go.starlark.net v0.0.0-20231121155337-90ade8b19d09 h1:hzy3LFnSN8kuQK8h9tHl4ndF6UruMj47OqwqsS+/Ai4= -go.starlark.net v0.0.0-20231121155337-90ade8b19d09/go.mod h1:LcLNIzVOMp4oV+uusnpk+VU+SzXaJakUuBjoCSWH5dM= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb h1:c0vyKkb6yr3KR7jEfJaOSv4lG7xPkbN6r52aJz1d8a8= -golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= -golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= -golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= +golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= +golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM= +golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/evanphx/json-patch.v5 v5.7.0 h1:dGKGylPlZ/jus2g1YqhhyzfH0gPy2R8/MYUpW/OslTY= -gopkg.in/evanphx/json-patch.v5 v5.7.0/go.mod h1:/kvTRh1TVm5wuM6OkHxqXtE/1nUZZpihg29RtuIyfvk= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY= +gopkg.in/h2non/gock.v1 v1.1.2/go.mod h1:n7UGz/ckNChHiK05rDoiC4MYSunEC/lyaUm2WWaDva0= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.28.4 h1:8ZBrLjwosLl/NYgv1P7EQLqoO8MGQApnbgH8tu3BMzY= -k8s.io/api v0.28.4/go.mod h1:axWTGrY88s/5YE+JSt4uUi6NMM+gur1en2REMR7IRj0= -k8s.io/apiextensions-apiserver v0.28.4 h1:AZpKY/7wQ8n+ZYDtNHbAJBb+N4AXXJvyZx6ww6yAJvU= -k8s.io/apiextensions-apiserver v0.28.4/go.mod h1:pgQIZ1U8eJSMQcENew/0ShUTlePcSGFq6dxSxf2mwPM= -k8s.io/apimachinery v0.28.4 h1:zOSJe1mc+GxuMnFzD4Z/U1wst50X28ZNsn5bhgIIao8= -k8s.io/apimachinery v0.28.4/go.mod h1:wI37ncBvfAoswfq626yPTe6Bz1c22L7uaJ8dho83mgg= -k8s.io/cli-runtime v0.28.4 h1:IW3aqSNFXiGDllJF4KVYM90YX4cXPGxuCxCVqCD8X+Q= -k8s.io/cli-runtime v0.28.4/go.mod h1:MLGRB7LWTIYyYR3d/DOgtUC8ihsAPA3P8K8FDNIqJ0k= -k8s.io/client-go v0.28.4 h1:Np5ocjlZcTrkyRJ3+T3PkXDpe4UpatQxj85+xjaD2wY= -k8s.io/client-go v0.28.4/go.mod h1:0VDZFpgoZfelyP5Wqu0/r/TRYcLYuJ2U1KEeoaPa1N4= -k8s.io/component-base v0.28.4 h1:c/iQLWPdUgI90O+T9TeECg8o7N3YJTiuz2sKxILYcYo= -k8s.io/component-base v0.28.4/go.mod h1:m9hR0uvqXDybiGL2nf/3Lf0MerAfQXzkfWhUY58JUbU= -k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= -k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= -k8s.io/kube-openapi v0.0.0-20231206194836-bf4651e18aa8 h1:vzKzxN5uyJZLY8HL1/OovW7BJefnsBIWt8T7Gjh2boQ= -k8s.io/kube-openapi v0.0.0-20231206194836-bf4651e18aa8/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= -k8s.io/kubectl v0.28.4 h1:gWpUXW/T7aFne+rchYeHkyB8eVDl5UZce8G4X//kjUQ= -k8s.io/kubectl v0.28.4/go.mod h1:CKOccVx3l+3MmDbkXtIUtibq93nN2hkDR99XDCn7c/c= -k8s.io/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6RxQGZDnzuLcrUTI= -k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/cli-utils v0.35.0 h1:dfSJaF1W0frW74PtjwiyoB4cwdRygbHnC7qe7HF0g/Y= -sigs.k8s.io/cli-utils v0.35.0/go.mod h1:ITitykCJxP1vaj1Cew/FZEaVJ2YsTN9Q71m02jebkoE= -sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigwG62c4= -sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/api v0.16.0 h1:/zAR4FOQDCkgSDmVzV2uiFbuy9bhu3jEzthrHCuvm1g= -sigs.k8s.io/kustomize/api v0.16.0/go.mod h1:MnFZ7IP2YqVyVwMWoRxPtgl/5hpA+eCCrQR/866cm5c= -sigs.k8s.io/kustomize/kyaml v0.16.0 h1:6J33uKSoATlKZH16unr2XOhDI+otoe2sR3M8PDzW3K0= -sigs.k8s.io/kustomize/kyaml v0.16.0/go.mod h1:xOK/7i+vmE14N2FdFyugIshB8eF6ALpy7jI87Q2nRh4= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= +k8s.io/api v0.32.1 h1:f562zw9cy+GvXzXf0CKlVQ7yHJVYzLfL6JAS4kOAaOc= +k8s.io/api v0.32.1/go.mod h1:/Yi/BqkuueW1BgpoePYBRdDYfjPF5sgTr5+YqDZra5k= +k8s.io/apiextensions-apiserver v0.32.1 h1:hjkALhRUeCariC8DiVmb5jj0VjIc1N0DREP32+6UXZw= +k8s.io/apiextensions-apiserver v0.32.1/go.mod h1:sxWIGuGiYov7Io1fAS2X06NjMIk5CbRHc2StSmbaQto= +k8s.io/apimachinery v0.32.1 h1:683ENpaCBjma4CYqsmZyhEzrGz6cjn1MY/X2jB2hkZs= +k8s.io/apimachinery v0.32.1/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/cli-runtime v0.32.1 h1:19nwZPlYGJPUDbhAxDIS2/oydCikvKMHsxroKNGA2mM= +k8s.io/cli-runtime v0.32.1/go.mod h1:NJPbeadVFnV2E7B7vF+FvU09mpwYlZCu8PqjzfuOnkY= +k8s.io/client-go v0.32.1 h1:otM0AxdhdBIaQh7l1Q0jQpmo7WOFIk5FFa4bg6YMdUU= +k8s.io/client-go v0.32.1/go.mod h1:aTTKZY7MdxUaJ/KiUs8D+GssR9zJZi77ZqtzcGXIiDg= +k8s.io/component-base v0.32.1 h1:/5IfJ0dHIKBWysGV0yKTFfacZ5yNV1sulPh3ilJjRZk= +k8s.io/component-base v0.32.1/go.mod h1:j1iMMHi/sqAHeG5z+O9BFNCF698a1u0186zkjMZQ28w= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= +k8s.io/kubectl v0.32.1 h1:/btLtXLQUU1rWx8AEvX9jrb9LaI6yeezt3sFALhB8M8= +k8s.io/kubectl v0.32.1/go.mod h1:sezNuyWi1STk4ZNPVRIFfgjqMI6XMf+oCVLjZen/pFQ= +k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0= +k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/cli-utils v0.37.2 h1:GOfKw5RV2HDQZDJlru5KkfLO1tbxqMoyn1IYUxqBpNg= +sigs.k8s.io/cli-utils v0.37.2/go.mod h1:V+IZZr4UoGj7gMJXklWBg6t5xbdThFBcpj4MrZuCYco= +sigs.k8s.io/controller-runtime v0.20.1 h1:JbGMAG/X94NeM3xvjenVUaBjy6Ui4Ogd/J5ZtjZnHaE= +sigs.k8s.io/controller-runtime v0.20.1/go.mod h1:BrP3w158MwvB3ZbNpaAcIKkHQ7YGpYnzpoSTZ8E14WU= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= +sigs.k8s.io/kustomize/api v0.19.0 h1:F+2HB2mU1MSiR9Hp1NEgoU2q9ItNOaBJl0I4Dlus5SQ= +sigs.k8s.io/kustomize/api v0.19.0/go.mod h1:/BbwnivGVcBh1r+8m3tH1VNxJmHSk1PzP5fkP6lbL1o= +sigs.k8s.io/kustomize/kyaml v0.19.0 h1:RFge5qsO1uHhwJsu3ipV7RNolC7Uozc0jUBC/61XSlA= +sigs.k8s.io/kustomize/kyaml v0.19.0/go.mod h1:FeKD5jEOH+FbZPpqUghBP8mrLjJ3+zD3/rf9NNu1cwY= +sigs.k8s.io/structured-merge-diff/v4 v4.5.0 h1:nbCitCK2hfnhyiKo6uf2HxUPTCodY6Qaf85SbDIaMBk= +sigs.k8s.io/structured-merge-diff/v4 v4.5.0/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/hack/boilerplate.go.txt b/hack/boilerplate.go.txt index 9dd792f0..fad42c91 100644 --- a/hack/boilerplate.go.txt +++ b/hack/boilerplate.go.txt @@ -1,3 +1,3 @@ /* -Copyright 2023. -*/ \ No newline at end of file +Copyright 2025. +*/ diff --git a/ideas.md b/ideas.md new file mode 100644 index 00000000..759e4481 --- /dev/null +++ b/ideas.md @@ -0,0 +1,7 @@ +Future ideas for new generators + + * [ ] External generators! Tho', what's the difference between this and the APIClient generator? + * [ ] Keycloak generator - Can we talk OpenLDAP too? + * [ ] Rancher resources generator + * [ ] Generic K8s query generator + * [ ] CEL Filtering (branch already exists). diff --git a/main.go b/main.go index c5bf6e7d..4bee4931 100644 --- a/main.go +++ b/main.go @@ -16,9 +16,9 @@ import ( "github.com/fluxcd/pkg/runtime/metrics" "github.com/fluxcd/pkg/runtime/pprof" "github.com/fluxcd/pkg/tar" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/apiclient" + "github.com/gitops-tools/gitopssets-controller/pkg/setup" flag "github.com/spf13/pflag" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/apiclient" - "github.com/weaveworks/gitopssets-controller/pkg/setup" corev1 "k8s.io/api/core/v1" ctrl "sigs.k8s.io/controller-runtime" ctrlcache "sigs.k8s.io/controller-runtime/pkg/cache" @@ -27,8 +27,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/healthz" metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/controllers" ) var ( diff --git a/pkg/cmd/command.go b/pkg/cmd/command.go index 35d94bf2..4f7a7c51 100644 --- a/pkg/cmd/command.go +++ b/pkg/cmd/command.go @@ -23,12 +23,12 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client/fake" "sigs.k8s.io/yaml" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/apiclient" - "github.com/weaveworks/gitopssets-controller/pkg/parser" - "github.com/weaveworks/gitopssets-controller/pkg/setup" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/controllers/templates" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/apiclient" + "github.com/gitops-tools/gitopssets-controller/pkg/parser" + "github.com/gitops-tools/gitopssets-controller/pkg/setup" ) // NewGenerateCommand creates and returns a new Command that renders GitOpsSets. diff --git a/pkg/cmd/command_test.go b/pkg/cmd/command_test.go index e2fc0e26..4875a3f5 100644 --- a/pkg/cmd/command_test.go +++ b/pkg/cmd/command_test.go @@ -4,8 +4,8 @@ import ( "strings" "testing" + "github.com/gitops-tools/gitopssets-controller/pkg/setup" "github.com/google/go-cmp/cmp" - "github.com/weaveworks/gitopssets-controller/pkg/setup" ) func TestRenderGitOpsSet(t *testing.T) { @@ -24,8 +24,8 @@ metadata: app.kubernetes.io/instance: dev app.kubernetes.io/name: go-demo com.example/team: dev-team - templates.weave.works/name: gitopsset-sample - templates.weave.works/namespace: "" + sets.gitops.pro/name: gitopsset-sample + sets.gitops.pro/namespace: "" name: dev-demo namespace: default spec: @@ -57,8 +57,8 @@ metadata: app.kubernetes.io/instance: dev app.kubernetes.io/name: go-demo com.example/team: dev-team - templates.weave.works/name: gitopsset-sample - templates.weave.works/namespace: "" + sets.gitops.pro/name: gitopsset-sample + sets.gitops.pro/namespace: "" name: dev-demo namespace: default spec: @@ -76,8 +76,8 @@ metadata: app.kubernetes.io/instance: dev app.kubernetes.io/name: go-demo com.example/team: dev-team - templates.weave.works/name: second-gitopsset-sample - templates.weave.works/namespace: "" + sets.gitops.pro/name: second-gitopsset-sample + sets.gitops.pro/namespace: "" name: dev-demo-2 namespace: default spec: diff --git a/pkg/cmd/local_client_test.go b/pkg/cmd/local_client_test.go index 1ca6af0f..525a903e 100644 --- a/pkg/cmd/local_client_test.go +++ b/pkg/cmd/local_client_test.go @@ -7,8 +7,8 @@ import ( sourcev1 "github.com/fluxcd/source-controller/api/v1" "github.com/fluxcd/source-controller/api/v1beta2" + "github.com/gitops-tools/gitopssets-controller/test" "github.com/go-logr/logr" - "github.com/weaveworks/gitopssets-controller/test" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/pkg/cmd/testdata/list_set.yaml b/pkg/cmd/testdata/list_set.yaml index efb2d12c..4aae0e1b 100644 --- a/pkg/cmd/testdata/list_set.yaml +++ b/pkg/cmd/testdata/list_set.yaml @@ -1,4 +1,4 @@ -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/pkg/cmd/testdata/list_sets.yaml b/pkg/cmd/testdata/list_sets.yaml index a1350b41..477e155a 100644 --- a/pkg/cmd/testdata/list_sets.yaml +++ b/pkg/cmd/testdata/list_sets.yaml @@ -1,5 +1,5 @@ --- -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: @@ -34,7 +34,7 @@ spec: kind: GitRepository name: go-demo-repo --- -apiVersion: templates.weave.works/v1alpha1 +apiVersion: sets.gitops.pro/v1alpha1 kind: GitOpsSet metadata: labels: diff --git a/controllers/templates/generators/apiclient/api_client.go b/pkg/generators/apiclient/api_client.go similarity index 98% rename from controllers/templates/generators/apiclient/api_client.go rename to pkg/generators/apiclient/api_client.go index 7664f0dc..82e51c80 100644 --- a/controllers/templates/generators/apiclient/api_client.go +++ b/pkg/generators/apiclient/api_client.go @@ -11,9 +11,9 @@ import ( "net/http" "time" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" "github.com/go-logr/logr" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" corev1 "k8s.io/api/core/v1" "k8s.io/client-go/util/jsonpath" "sigs.k8s.io/controller-runtime/pkg/client" diff --git a/controllers/templates/generators/apiclient/api_client_test.go b/pkg/generators/apiclient/api_client_test.go similarity index 98% rename from controllers/templates/generators/apiclient/api_client_test.go rename to pkg/generators/apiclient/api_client_test.go index 444489e7..e8182c64 100644 --- a/controllers/templates/generators/apiclient/api_client_test.go +++ b/pkg/generators/apiclient/api_client_test.go @@ -22,9 +22,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/test" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/test" ) var _ generators.Generator = (*APIClientGenerator)(nil) @@ -190,7 +190,7 @@ func TestGenerate(t *testing.T) { apiClient: &templatesv1.APIClientGenerator{ Endpoint: ts.URL + "/api/get-testing", Method: http.MethodGet, - SecretRef: &corev1.LocalObjectReference{ + SecretRef: &templatesv1.LocalObjectReference{ Name: "https-ca-credentials", }, }, diff --git a/controllers/templates/generators/cluster/cluster.go b/pkg/generators/cluster/cluster.go similarity index 93% rename from controllers/templates/generators/cluster/cluster.go rename to pkg/generators/cluster/cluster.go index d07a87a2..cbb3167d 100644 --- a/controllers/templates/generators/cluster/cluster.go +++ b/pkg/generators/cluster/cluster.go @@ -5,10 +5,10 @@ import ( "fmt" "time" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" "github.com/go-logr/logr" clustersv1 "github.com/weaveworks/cluster-controller/api/v1alpha1" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/controllers/templates/generators/cluster/cluster_test.go b/pkg/generators/cluster/cluster_test.go similarity index 96% rename from controllers/templates/generators/cluster/cluster_test.go rename to pkg/generators/cluster/cluster_test.go index 0500ce98..a85d22bd 100644 --- a/controllers/templates/generators/cluster/cluster_test.go +++ b/pkg/generators/cluster/cluster_test.go @@ -11,9 +11,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" clustersv1 "github.com/weaveworks/cluster-controller/api/v1alpha1" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" ) func TestClusterGenerator_Generate(t *testing.T) { diff --git a/controllers/templates/generators/config/config.go b/pkg/generators/config/config.go similarity index 94% rename from controllers/templates/generators/config/config.go rename to pkg/generators/config/config.go index d57ecb31..93f93d33 100644 --- a/controllers/templates/generators/config/config.go +++ b/pkg/generators/config/config.go @@ -5,9 +5,9 @@ import ( "fmt" "time" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" "github.com/go-logr/logr" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" corev1 "k8s.io/api/core/v1" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/controllers/templates/generators/config/config_test.go b/pkg/generators/config/config_test.go similarity index 95% rename from controllers/templates/generators/config/config_test.go rename to pkg/generators/config/config_test.go index 359f40fb..7d5294b6 100644 --- a/controllers/templates/generators/config/config_test.go +++ b/pkg/generators/config/config_test.go @@ -14,9 +14,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/test" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/test" ) func TestGenerate_with_no_Config(t *testing.T) { diff --git a/controllers/templates/generators/errors.go b/pkg/generators/errors.go similarity index 100% rename from controllers/templates/generators/errors.go rename to pkg/generators/errors.go diff --git a/controllers/templates/generators/gitrepository/git_repository.go b/pkg/generators/gitrepository/git_repository.go similarity index 93% rename from controllers/templates/generators/gitrepository/git_repository.go rename to pkg/generators/gitrepository/git_repository.go index d59aee14..c7f2adca 100644 --- a/controllers/templates/generators/gitrepository/git_repository.go +++ b/pkg/generators/gitrepository/git_repository.go @@ -5,11 +5,11 @@ import ( "fmt" "time" - sourcev1 "github.com/fluxcd/source-controller/api/v1beta2" + sourcev1 "github.com/fluxcd/source-controller/api/v1" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/pkg/parser" "github.com/go-logr/logr" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/pkg/parser" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/controllers/templates/generators/gitrepository/git_repository_test.go b/pkg/generators/gitrepository/git_repository_test.go similarity index 93% rename from controllers/templates/generators/gitrepository/git_repository_test.go rename to pkg/generators/gitrepository/git_repository_test.go index 9f9cdbfd..d870e8e7 100644 --- a/controllers/templates/generators/gitrepository/git_repository_test.go +++ b/pkg/generators/gitrepository/git_repository_test.go @@ -7,7 +7,6 @@ import ( "github.com/fluxcd/pkg/http/fetch" "github.com/fluxcd/pkg/tar" sourcev1 "github.com/fluxcd/source-controller/api/v1" - sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" "github.com/go-logr/logr" "github.com/google/go-cmp/cmp" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -15,9 +14,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/test" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/test" ) const testRetries int = 3 @@ -199,8 +198,8 @@ func TestGenerate_errors(t *testing.T) { } } -func withArchiveURLAndChecksum(archiveURL, xsum string) func(*sourcev1beta2.GitRepository) { - return func(gr *sourcev1beta2.GitRepository) { +func withArchiveURLAndChecksum(archiveURL, xsum string) func(*sourcev1.GitRepository) { + return func(gr *sourcev1.GitRepository) { gr.Status.Artifact = &sourcev1.Artifact{ URL: archiveURL, Digest: xsum, @@ -211,7 +210,7 @@ func withArchiveURLAndChecksum(archiveURL, xsum string) func(*sourcev1beta2.GitR func newFakeClient(t *testing.T, objs ...runtime.Object) client.WithWatch { t.Helper() scheme := runtime.NewScheme() - if err := sourcev1beta2.AddToScheme(scheme); err != nil { + if err := sourcev1.AddToScheme(scheme); err != nil { t.Fatal(err) } if err := templatesv1.AddToScheme(scheme); err != nil { diff --git a/controllers/templates/generators/gitrepository/testdata/directories.tar.gz b/pkg/generators/gitrepository/testdata/directories.tar.gz similarity index 100% rename from controllers/templates/generators/gitrepository/testdata/directories.tar.gz rename to pkg/generators/gitrepository/testdata/directories.tar.gz diff --git a/controllers/templates/generators/gitrepository/testdata/directories.tar.gz.sum b/pkg/generators/gitrepository/testdata/directories.tar.gz.sum similarity index 100% rename from controllers/templates/generators/gitrepository/testdata/directories.tar.gz.sum rename to pkg/generators/gitrepository/testdata/directories.tar.gz.sum diff --git a/controllers/templates/generators/gitrepository/testdata/files.tar.gz b/pkg/generators/gitrepository/testdata/files.tar.gz similarity index 100% rename from controllers/templates/generators/gitrepository/testdata/files.tar.gz rename to pkg/generators/gitrepository/testdata/files.tar.gz diff --git a/controllers/templates/generators/gitrepository/testdata/files.tar.gz.sum b/pkg/generators/gitrepository/testdata/files.tar.gz.sum similarity index 100% rename from controllers/templates/generators/gitrepository/testdata/files.tar.gz.sum rename to pkg/generators/gitrepository/testdata/files.tar.gz.sum diff --git a/controllers/templates/generators/gitrepository/testdata/json_files.tar.gz b/pkg/generators/gitrepository/testdata/json_files.tar.gz similarity index 100% rename from controllers/templates/generators/gitrepository/testdata/json_files.tar.gz rename to pkg/generators/gitrepository/testdata/json_files.tar.gz diff --git a/controllers/templates/generators/gitrepository/testdata/json_files.tar.gz.sum b/pkg/generators/gitrepository/testdata/json_files.tar.gz.sum similarity index 100% rename from controllers/templates/generators/gitrepository/testdata/json_files.tar.gz.sum rename to pkg/generators/gitrepository/testdata/json_files.tar.gz.sum diff --git a/controllers/templates/generators/imagepolicy/image_policy.go b/pkg/generators/imagepolicy/image_policy.go similarity index 95% rename from controllers/templates/generators/imagepolicy/image_policy.go rename to pkg/generators/imagepolicy/image_policy.go index 01c97127..826895e5 100644 --- a/controllers/templates/generators/imagepolicy/image_policy.go +++ b/pkg/generators/imagepolicy/image_policy.go @@ -6,10 +6,10 @@ import ( "time" imagev1 "github.com/fluxcd/image-reflector-controller/api/v1beta2" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" "github.com/go-logr/logr" "github.com/google/go-containerregistry/pkg/name" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/controllers/templates/generators/imagepolicy/image_policy_test.go b/pkg/generators/imagepolicy/image_policy_test.go similarity index 96% rename from controllers/templates/generators/imagepolicy/image_policy_test.go rename to pkg/generators/imagepolicy/image_policy_test.go index b38882f7..07618126 100644 --- a/controllers/templates/generators/imagepolicy/image_policy_test.go +++ b/pkg/generators/imagepolicy/image_policy_test.go @@ -12,9 +12,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/test" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/test" ) var _ generators.Generator = (*ImagePolicyGenerator)(nil) diff --git a/controllers/templates/generators/interface.go b/pkg/generators/interface.go similarity index 94% rename from controllers/templates/generators/interface.go rename to pkg/generators/interface.go index e43b48cb..54856652 100644 --- a/controllers/templates/generators/interface.go +++ b/pkg/generators/interface.go @@ -5,8 +5,8 @@ import ( "errors" "time" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" "github.com/go-logr/logr" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/controllers/templates/generators/list/list.go b/pkg/generators/list/list.go similarity index 90% rename from controllers/templates/generators/list/list.go rename to pkg/generators/list/list.go index e6a96e6e..ec1677b3 100644 --- a/controllers/templates/generators/list/list.go +++ b/pkg/generators/list/list.go @@ -6,9 +6,9 @@ import ( "fmt" "time" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" "github.com/go-logr/logr" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/controllers/templates/generators/list/list_test.go b/pkg/generators/list/list_test.go similarity index 93% rename from controllers/templates/generators/list/list_test.go rename to pkg/generators/list/list_test.go index d147426d..0c009e1f 100644 --- a/controllers/templates/generators/list/list_test.go +++ b/pkg/generators/list/list_test.go @@ -4,11 +4,11 @@ import ( "context" "testing" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/test" "github.com/go-logr/logr" "github.com/google/go-cmp/cmp" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/test" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" ) diff --git a/controllers/templates/generators/matrix/cartesian_test.go b/pkg/generators/matrix/cartesian_test.go similarity index 99% rename from controllers/templates/generators/matrix/cartesian_test.go rename to pkg/generators/matrix/cartesian_test.go index 180da80b..19ff3d9d 100644 --- a/controllers/templates/generators/matrix/cartesian_test.go +++ b/pkg/generators/matrix/cartesian_test.go @@ -3,8 +3,8 @@ package matrix import ( "testing" + "github.com/gitops-tools/gitopssets-controller/test" "github.com/google/go-cmp/cmp" - "github.com/weaveworks/gitopssets-controller/test" ) func TestCartesian(t *testing.T) { diff --git a/controllers/templates/generators/matrix/matrix.go b/pkg/generators/matrix/matrix.go similarity index 98% rename from controllers/templates/generators/matrix/matrix.go rename to pkg/generators/matrix/matrix.go index 68a7edb8..feeef44f 100644 --- a/controllers/templates/generators/matrix/matrix.go +++ b/pkg/generators/matrix/matrix.go @@ -9,9 +9,9 @@ import ( "time" "dario.cat/mergo" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" "github.com/go-logr/logr" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/controllers/templates/generators/matrix/matrix_test.go b/pkg/generators/matrix/matrix_test.go similarity index 97% rename from controllers/templates/generators/matrix/matrix_test.go rename to pkg/generators/matrix/matrix_test.go index a20c78d9..690afbb5 100644 --- a/controllers/templates/generators/matrix/matrix_test.go +++ b/pkg/generators/matrix/matrix_test.go @@ -9,14 +9,14 @@ import ( "github.com/fluxcd/pkg/tar" sourcev1 "github.com/fluxcd/source-controller/api/v1" sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/gitrepository" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/list" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/pullrequests" + "github.com/gitops-tools/gitopssets-controller/test" "github.com/go-logr/logr" "github.com/google/go-cmp/cmp" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/gitrepository" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/list" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/pullrequests" - "github.com/weaveworks/gitopssets-controller/test" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" diff --git a/controllers/templates/generators/matrix/testdata/files.tar.gz b/pkg/generators/matrix/testdata/files.tar.gz similarity index 100% rename from controllers/templates/generators/matrix/testdata/files.tar.gz rename to pkg/generators/matrix/testdata/files.tar.gz diff --git a/controllers/templates/generators/matrix/testdata/files.tar.gz.sum b/pkg/generators/matrix/testdata/files.tar.gz.sum similarity index 100% rename from controllers/templates/generators/matrix/testdata/files.tar.gz.sum rename to pkg/generators/matrix/testdata/files.tar.gz.sum diff --git a/controllers/templates/generators/matrix/testdata/json_files.tar.gz b/pkg/generators/matrix/testdata/json_files.tar.gz similarity index 100% rename from controllers/templates/generators/matrix/testdata/json_files.tar.gz rename to pkg/generators/matrix/testdata/json_files.tar.gz diff --git a/controllers/templates/generators/matrix/testdata/json_files.tar.gz.sum b/pkg/generators/matrix/testdata/json_files.tar.gz.sum similarity index 100% rename from controllers/templates/generators/matrix/testdata/json_files.tar.gz.sum rename to pkg/generators/matrix/testdata/json_files.tar.gz.sum diff --git a/controllers/templates/generators/ocirepository/oci_repository.go b/pkg/generators/ocirepository/oci_repository.go similarity index 95% rename from controllers/templates/generators/ocirepository/oci_repository.go rename to pkg/generators/ocirepository/oci_repository.go index a295cb1e..92986f47 100644 --- a/controllers/templates/generators/ocirepository/oci_repository.go +++ b/pkg/generators/ocirepository/oci_repository.go @@ -6,10 +6,10 @@ import ( "time" sourcev1 "github.com/fluxcd/source-controller/api/v1beta2" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/pkg/parser" "github.com/go-logr/logr" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/pkg/parser" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/controllers/templates/generators/ocirepository/oci_repository_test.go b/pkg/generators/ocirepository/oci_repository_test.go similarity index 96% rename from controllers/templates/generators/ocirepository/oci_repository_test.go rename to pkg/generators/ocirepository/oci_repository_test.go index e5d4edd2..90b0f587 100644 --- a/controllers/templates/generators/ocirepository/oci_repository_test.go +++ b/pkg/generators/ocirepository/oci_repository_test.go @@ -15,9 +15,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/test" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/test" ) const testRetries int = 3 diff --git a/controllers/templates/generators/ocirepository/testdata/directories.tar.gz b/pkg/generators/ocirepository/testdata/directories.tar.gz similarity index 100% rename from controllers/templates/generators/ocirepository/testdata/directories.tar.gz rename to pkg/generators/ocirepository/testdata/directories.tar.gz diff --git a/controllers/templates/generators/ocirepository/testdata/directories.tar.gz.sum b/pkg/generators/ocirepository/testdata/directories.tar.gz.sum similarity index 100% rename from controllers/templates/generators/ocirepository/testdata/directories.tar.gz.sum rename to pkg/generators/ocirepository/testdata/directories.tar.gz.sum diff --git a/controllers/templates/generators/ocirepository/testdata/files.tar.gz b/pkg/generators/ocirepository/testdata/files.tar.gz similarity index 100% rename from controllers/templates/generators/ocirepository/testdata/files.tar.gz rename to pkg/generators/ocirepository/testdata/files.tar.gz diff --git a/controllers/templates/generators/ocirepository/testdata/files.tar.gz.sum b/pkg/generators/ocirepository/testdata/files.tar.gz.sum similarity index 100% rename from controllers/templates/generators/ocirepository/testdata/files.tar.gz.sum rename to pkg/generators/ocirepository/testdata/files.tar.gz.sum diff --git a/controllers/templates/generators/ocirepository/testdata/json_files.tar.gz b/pkg/generators/ocirepository/testdata/json_files.tar.gz similarity index 100% rename from controllers/templates/generators/ocirepository/testdata/json_files.tar.gz rename to pkg/generators/ocirepository/testdata/json_files.tar.gz diff --git a/controllers/templates/generators/ocirepository/testdata/json_files.tar.gz.sum b/pkg/generators/ocirepository/testdata/json_files.tar.gz.sum similarity index 100% rename from controllers/templates/generators/ocirepository/testdata/json_files.tar.gz.sum rename to pkg/generators/ocirepository/testdata/json_files.tar.gz.sum diff --git a/controllers/templates/generators/pullrequests/pull_requests.go b/pkg/generators/pullrequests/pull_requests.go similarity index 96% rename from controllers/templates/generators/pullrequests/pull_requests.go rename to pkg/generators/pullrequests/pull_requests.go index e0ba4909..7c2cf893 100644 --- a/controllers/templates/generators/pullrequests/pull_requests.go +++ b/pkg/generators/pullrequests/pull_requests.go @@ -6,11 +6,11 @@ import ( "strconv" "time" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" "github.com/go-logr/logr" "github.com/jenkins-x/go-scm/scm" "github.com/jenkins-x/go-scm/scm/factory" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" diff --git a/controllers/templates/generators/pullrequests/pull_requests_test.go b/pkg/generators/pullrequests/pull_requests_test.go similarity index 96% rename from controllers/templates/generators/pullrequests/pull_requests_test.go rename to pkg/generators/pullrequests/pull_requests_test.go index b8909c0d..89ec01e9 100644 --- a/controllers/templates/generators/pullrequests/pull_requests_test.go +++ b/pkg/generators/pullrequests/pull_requests_test.go @@ -6,14 +6,14 @@ import ( "testing" "time" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/test" "github.com/go-logr/logr" "github.com/google/go-cmp/cmp" "github.com/jenkins-x/go-scm/scm" fakescm "github.com/jenkins-x/go-scm/scm/driver/fake" "github.com/jenkins-x/go-scm/scm/factory" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/test" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -49,7 +49,7 @@ func TestGenerate(t *testing.T) { name string dataFunc func(*fakescm.Data) initObjs []runtime.Object - secretRef *corev1.LocalObjectReference + secretRef *templatesv1.LocalObjectReference labels []string forks bool clientFactory func(*scm.Client) clientFactoryFunc @@ -183,7 +183,7 @@ func TestGenerate(t *testing.T) { Fork: "test-org/my-repo", } }, - secretRef: &corev1.LocalObjectReference{ + secretRef: &templatesv1.LocalObjectReference{ Name: "test-secret", }, want: []map[string]any{ @@ -331,14 +331,14 @@ func TestGenerate_errors(t *testing.T) { testCases := []struct { name string initObjs []runtime.Object - secretRef *corev1.LocalObjectReference + secretRef *templatesv1.LocalObjectReference clientFactory func(*scm.Client) clientFactoryFunc wantErr string }{ { name: "generator with missing secret", clientFactory: defaultClientFactory, - secretRef: &corev1.LocalObjectReference{ + secretRef: &templatesv1.LocalObjectReference{ Name: "test-secret", }, wantErr: `failed to load repository generator credentials: secrets "test-secret" not found`, @@ -352,7 +352,7 @@ func TestGenerate_errors(t *testing.T) { }, func(c *corev1.Secret) { c.Data = map[string][]byte{} })}, - secretRef: &corev1.LocalObjectReference{ + secretRef: &templatesv1.LocalObjectReference{ Name: "test-secret", }, wantErr: `secret default/test-secret does not contain required field 'password'`, diff --git a/controllers/templates/generators/relevant.go b/pkg/generators/relevant.go similarity index 100% rename from controllers/templates/generators/relevant.go rename to pkg/generators/relevant.go diff --git a/controllers/templates/generators/relevant_test.go b/pkg/generators/relevant_test.go similarity index 86% rename from controllers/templates/generators/relevant_test.go rename to pkg/generators/relevant_test.go index 76ac3546..80f5792e 100644 --- a/controllers/templates/generators/relevant_test.go +++ b/pkg/generators/relevant_test.go @@ -5,11 +5,11 @@ import ( "reflect" "testing" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/list" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/matrix" - "github.com/weaveworks/gitopssets-controller/test" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/list" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/matrix" + "github.com/gitops-tools/gitopssets-controller/test" ) func TestFindRelevantGenerators(t *testing.T) { diff --git a/pkg/parser/repository_parser.go b/pkg/parser/repository_parser.go index dfbd7b5f..88eb29d0 100644 --- a/pkg/parser/repository_parser.go +++ b/pkg/parser/repository_parser.go @@ -8,9 +8,10 @@ import ( securejoin "github.com/cyphar/filepath-securejoin" "github.com/go-logr/logr" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" "k8s.io/apimachinery/pkg/util/sets" "sigs.k8s.io/yaml" + + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" ) // ArchiveFetcher implementations should get the URL, validate the contents diff --git a/pkg/parser/repository_parser_test.go b/pkg/parser/repository_parser_test.go index 0d3e887f..5ea6465a 100644 --- a/pkg/parser/repository_parser_test.go +++ b/pkg/parser/repository_parser_test.go @@ -11,8 +11,9 @@ import ( "github.com/fluxcd/pkg/tar" "github.com/go-logr/logr" "github.com/google/go-cmp/cmp" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/test" + + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/test" ) func TestGenerateFromFiles(t *testing.T) { diff --git a/pkg/setup/generators.go b/pkg/setup/generators.go index ef7d52cf..9501507a 100644 --- a/pkg/setup/generators.go +++ b/pkg/setup/generators.go @@ -9,23 +9,24 @@ import ( _ "k8s.io/client-go/plugin/pkg/client/auth" imagev1 "github.com/fluxcd/image-reflector-controller/api/v1beta2" - sourcev1 "github.com/fluxcd/source-controller/api/v1beta2" + sourcev1 "github.com/fluxcd/source-controller/api/v1" + sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" clustersv1 "github.com/weaveworks/cluster-controller/api/v1alpha1" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/pkg/parser" "k8s.io/apimachinery/pkg/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/apiclient" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/cluster" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/config" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/gitrepository" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/imagepolicy" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/list" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/matrix" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/ocirepository" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/pullrequests" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/apiclient" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/cluster" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/config" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/gitrepository" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/imagepolicy" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/list" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/matrix" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/ocirepository" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/pullrequests" + "github.com/gitops-tools/gitopssets-controller/pkg/parser" //+kubebuilder:scaffold:imports ) @@ -42,6 +43,7 @@ func NewSchemeForGenerators(enabledGenerators []string) (*runtime.Scheme, error) builder := runtime.SchemeBuilder{ clientgoscheme.AddToScheme, sourcev1.AddToScheme, + sourcev1beta2.AddToScheme, templatesv1.AddToScheme, } diff --git a/pkg/setup/generators_test.go b/pkg/setup/generators_test.go index 125229fe..fb2cb5ce 100644 --- a/pkg/setup/generators_test.go +++ b/pkg/setup/generators_test.go @@ -11,10 +11,10 @@ import ( imagev1 "github.com/fluxcd/image-reflector-controller/api/v1beta2" sourcev1 "github.com/fluxcd/source-controller/api/v1beta2" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" clustersv1 "github.com/weaveworks/cluster-controller/api/v1alpha1" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/test" + "github.com/gitops-tools/gitopssets-controller/test" ) func TestNewSchemeForGenerators(t *testing.T) { diff --git a/test/inventory.go b/test/inventory.go index fc77a8f2..a7a90a12 100644 --- a/test/inventory.go +++ b/test/inventory.go @@ -7,7 +7,7 @@ import ( "github.com/google/go-cmp/cmp" "k8s.io/apimachinery/pkg/runtime" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" ) // AssertInventoryHasItems will ensure that each of the provided objects is diff --git a/test/resources.go b/test/resources.go index 09f95f54..ba739795 100644 --- a/test/resources.go +++ b/test/resources.go @@ -2,7 +2,7 @@ package test import ( imagev1 "github.com/fluxcd/image-reflector-controller/api/v1beta2" - sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" + sourcev1 "github.com/fluxcd/source-controller/api/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -76,18 +76,18 @@ func NewSecret(opts ...func(*corev1.Secret)) *corev1.Secret { } // NewGitRepository creates and returns a new GitRepository. -func NewGitRepository(opts ...func(*sourcev1beta2.GitRepository)) *sourcev1beta2.GitRepository { - gr := &sourcev1beta2.GitRepository{ +func NewGitRepository(opts ...func(*sourcev1.GitRepository)) *sourcev1.GitRepository { + gr := &sourcev1.GitRepository{ TypeMeta: metav1.TypeMeta{ - APIVersion: "source.toolkit.fluxcd.io/v1beta2", + APIVersion: "source.toolkit.fluxcd.io/v1", Kind: "GitRepository", }, ObjectMeta: metav1.ObjectMeta{ Name: "test-repository", Namespace: testNamespace, }, - Spec: sourcev1beta2.GitRepositorySpec{ - URL: "https://github.com/weaveworks/gitopssets-controller", + Spec: sourcev1.GitRepositorySpec{ + URL: "https://github.com/gitops-tools/gitopssets-controller", }, } diff --git a/tests/e2e/gitopsset_controller_test.go b/tests/e2e/gitopsset_controller_test.go index c97b4846..bd9359d0 100644 --- a/tests/e2e/gitopsset_controller_test.go +++ b/tests/e2e/gitopsset_controller_test.go @@ -21,22 +21,15 @@ import ( apimeta "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" - templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/test" + templatesv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/test" clustersv1 "github.com/weaveworks/cluster-controller/api/v1alpha1" ) -var kustomizationGVK = schema.GroupVersionKind{ - Group: "kustomize.toolkit.fluxcd.io", - Kind: "Kustomization", - Version: "v1beta2", -} - func TestReconcilingNewCluster(t *testing.T) { ctx := context.TODO() // Create a new GitopsCluster object and ensure it is created @@ -112,11 +105,11 @@ func TestReconcilingNewCluster(t *testing.T) { test.AssertNoError(t, testEnv.Get(ctx, client.ObjectKey{Name: "test-gc-demo", Namespace: "default"}, &kust)) wantLabels := map[string]string{ - "app.kubernetes.io/instance": "test-gc", - "com.example/new": "tricky-label", - "com.example/team": "engineering", - "templates.weave.works/name": "demo-set", - "templates.weave.works/namespace": "default", + "app.kubernetes.io/instance": "test-gc", + "com.example/new": "tricky-label", + "com.example/team": "engineering", + "sets.gitops.pro/name": "demo-set", + "sets.gitops.pro/namespace": "default", } if diff := cmp.Diff(wantLabels, kust.ObjectMeta.Labels); diff != "" { t.Fatalf("failed to generate labels:\n%s", diff) diff --git a/tests/e2e/main_test.go b/tests/e2e/main_test.go index 3f2f7609..816bbaf5 100644 --- a/tests/e2e/main_test.go +++ b/tests/e2e/main_test.go @@ -13,25 +13,26 @@ import ( "github.com/fluxcd/pkg/http/fetch" "github.com/fluxcd/pkg/runtime/testenv" "github.com/fluxcd/pkg/tar" - sourcev1 "github.com/fluxcd/source-controller/api/v1beta2" + sourcev1 "github.com/fluxcd/source-controller/api/v1" + sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" + "github.com/gitops-tools/gitopssets-controller/test" clustersv1 "github.com/weaveworks/cluster-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/test" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" - gitopssetsv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1" - "github.com/weaveworks/gitopssets-controller/controllers" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/cluster" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/config" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/gitrepository" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/imagepolicy" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/list" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/matrix" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/ocirepository" - "github.com/weaveworks/gitopssets-controller/controllers/templates/generators/pullrequests" + gitopssetsv1 "github.com/gitops-tools/gitopssets-controller/api/v1alpha1" + "github.com/gitops-tools/gitopssets-controller/controllers" + "github.com/gitops-tools/gitopssets-controller/pkg/generators" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/cluster" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/config" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/gitrepository" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/imagepolicy" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/list" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/matrix" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/ocirepository" + "github.com/gitops-tools/gitopssets-controller/pkg/generators/pullrequests" // +kubebuilder:scaffold:imports ) @@ -49,6 +50,7 @@ func TestMain(m *testing.M) { utilruntime.Must(gitopssetsv1.AddToScheme(scheme.Scheme)) utilruntime.Must(clustersv1.AddToScheme(scheme.Scheme)) utilruntime.Must(sourcev1.AddToScheme(scheme.Scheme)) + utilruntime.Must(sourcev1beta2.AddToScheme(scheme.Scheme)) utilruntime.Must(imagev1.AddToScheme(scheme.Scheme)) utilruntime.Must(kustomizev1.AddToScheme(scheme.Scheme)) fetcher := fetch.NewArchiveFetcher(1, tar.UnlimitedUntarSize, tar.UnlimitedUntarSize, "") diff --git a/tests/e2e/testdata/crds/image.toolkit.fluxcd.io_imagepolicies.yaml b/tests/e2e/testdata/crds/image.toolkit.fluxcd.io_imagepolicies.yaml index 74af4e42..915c5d77 100644 --- a/tests/e2e/testdata/crds/image.toolkit.fluxcd.io_imagepolicies.yaml +++ b/tests/e2e/testdata/crds/image.toolkit.fluxcd.io_imagepolicies.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.16.1 name: imagepolicies.image.toolkit.fluxcd.io spec: group: image.toolkit.fluxcd.io @@ -24,39 +24,48 @@ spec: description: ImagePolicy is the Schema for the imagepolicies API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: ImagePolicySpec defines the parameters for calculating the + description: |- + ImagePolicySpec defines the parameters for calculating the ImagePolicy properties: filterTags: - description: FilterTags enables filtering for only a subset of tags - based on a set of rules. If no rules are provided, all the tags - from the repository will be ordered and compared. + description: |- + FilterTags enables filtering for only a subset of tags based on a set of + rules. If no rules are provided, all the tags from the repository will be + ordered and compared. properties: extract: - description: Extract allows a capture group to be extracted from - the specified regular expression pattern, useful before tag - evaluation. + description: |- + Extract allows a capture group to be extracted from the specified regular + expression pattern, useful before tag evaluation. type: string pattern: - description: Pattern specifies a regular expression pattern used - to filter for image tags. + description: |- + Pattern specifies a regular expression pattern used to filter for image + tags. type: string type: object imageRepositoryRef: - description: ImageRepositoryRef points at the object specifying the - image being scanned + description: |- + ImageRepositoryRef points at the object specifying the image + being scanned properties: name: description: Name of the referent. @@ -69,8 +78,9 @@ spec: - name type: object policy: - description: Policy gives the particulars of the policy to be followed - in selecting the most recent image + description: |- + Policy gives the particulars of the policy to be followed in + selecting the most recent image properties: alphabetical: description: Alphabetical set of rules to use for alphabetical @@ -78,9 +88,10 @@ spec: properties: order: default: asc - description: Order specifies the sorting order of the tags. - Given the letters of the alphabet as tags, ascending order - would select Z, and descending order would select A. + description: |- + Order specifies the sorting order of the tags. Given the letters of the + alphabet as tags, ascending order would select Z, and descending order + would select A. enum: - asc - desc @@ -92,23 +103,24 @@ spec: properties: order: default: asc - description: Order specifies the sorting order of the tags. - Given the integer values from 0 to 9 as tags, ascending - order would select 9, and descending order would select - 0. + description: |- + Order specifies the sorting order of the tags. Given the integer values + from 0 to 9 as tags, ascending order would select 9, and descending order + would select 0. enum: - asc - desc type: string type: object semver: - description: SemVer gives a semantic version range to check against - the tags available. + description: |- + SemVer gives a semantic version range to check against the tags + available. properties: range: - description: Range gives a semver range for the image tag; - the highest version within the range that's a tag yields - the latest image. + description: |- + Range gives a semver range for the image tag; the highest + version within the range that's a tag yields the latest image. type: string required: - range @@ -125,43 +137,35 @@ spec: properties: conditions: items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + description: Condition contains details for one aspect of the current + state of this API Resource. properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -176,10 +180,6 @@ spec: type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -192,8 +192,9 @@ spec: type: object type: array latestImage: - description: LatestImage gives the first in the list of images scanned - by the image repository, when filtered and ordered according to + description: |- + LatestImage gives the first in the list of images scanned by + the image repository, when filtered and ordered according to the policy. type: string observedGeneration: @@ -215,39 +216,48 @@ spec: description: ImagePolicy is the Schema for the imagepolicies API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: ImagePolicySpec defines the parameters for calculating the + description: |- + ImagePolicySpec defines the parameters for calculating the ImagePolicy. properties: filterTags: - description: FilterTags enables filtering for only a subset of tags - based on a set of rules. If no rules are provided, all the tags - from the repository will be ordered and compared. + description: |- + FilterTags enables filtering for only a subset of tags based on a set of + rules. If no rules are provided, all the tags from the repository will be + ordered and compared. properties: extract: - description: Extract allows a capture group to be extracted from - the specified regular expression pattern, useful before tag - evaluation. + description: |- + Extract allows a capture group to be extracted from the specified regular + expression pattern, useful before tag evaluation. type: string pattern: - description: Pattern specifies a regular expression pattern used - to filter for image tags. + description: |- + Pattern specifies a regular expression pattern used to filter for image + tags. type: string type: object imageRepositoryRef: - description: ImageRepositoryRef points at the object specifying the - image being scanned + description: |- + ImageRepositoryRef points at the object specifying the image + being scanned properties: name: description: Name of the referent. @@ -260,8 +270,9 @@ spec: - name type: object policy: - description: Policy gives the particulars of the policy to be followed - in selecting the most recent image + description: |- + Policy gives the particulars of the policy to be followed in + selecting the most recent image properties: alphabetical: description: Alphabetical set of rules to use for alphabetical @@ -269,9 +280,10 @@ spec: properties: order: default: asc - description: Order specifies the sorting order of the tags. - Given the letters of the alphabet as tags, ascending order - would select Z, and descending order would select A. + description: |- + Order specifies the sorting order of the tags. Given the letters of the + alphabet as tags, ascending order would select Z, and descending order + would select A. enum: - asc - desc @@ -283,23 +295,24 @@ spec: properties: order: default: asc - description: Order specifies the sorting order of the tags. - Given the integer values from 0 to 9 as tags, ascending - order would select 9, and descending order would select - 0. + description: |- + Order specifies the sorting order of the tags. Given the integer values + from 0 to 9 as tags, ascending order would select 9, and descending order + would select 0. enum: - asc - desc type: string type: object semver: - description: SemVer gives a semantic version range to check against - the tags available. + description: |- + SemVer gives a semantic version range to check against the tags + available. properties: range: - description: Range gives a semver range for the image tag; - the highest version within the range that's a tag yields - the latest image. + description: |- + Range gives a semver range for the image tag; the highest + version within the range that's a tag yields the latest image. type: string required: - range @@ -316,43 +329,35 @@ spec: properties: conditions: items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + description: Condition contains details for one aspect of the current + state of this API Resource. properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -367,10 +372,6 @@ spec: type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -383,16 +384,18 @@ spec: type: object type: array latestImage: - description: LatestImage gives the first in the list of images scanned - by the image repository, when filtered and ordered according to + description: |- + LatestImage gives the first in the list of images scanned by + the image repository, when filtered and ordered according to the policy. type: string observedGeneration: format: int64 type: integer observedPreviousImage: - description: ObservedPreviousImage is the observed previous LatestImage. - It is used to keep track of the previous and current images. + description: |- + ObservedPreviousImage is the observed previous LatestImage. It is used + to keep track of the previous and current images. type: string type: object type: object diff --git a/tests/e2e/testdata/crds/source.toolkit.fluxcd.io_gitrepositories.yaml b/tests/e2e/testdata/crds/source.toolkit.fluxcd.io_gitrepositories.yaml index c0612400..9d01fbd5 100644 --- a/tests/e2e/testdata/crds/source.toolkit.fluxcd.io_gitrepositories.yaml +++ b/tests/e2e/testdata/crds/source.toolkit.fluxcd.io_gitrepositories.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.16.1 name: gitrepositories.source.toolkit.fluxcd.io spec: group: source.toolkit.fluxcd.io @@ -35,42 +35,51 @@ spec: description: GitRepository is the Schema for the gitrepositories API. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: GitRepositorySpec specifies the required configuration to - produce an Artifact for a Git repository. + description: |- + GitRepositorySpec specifies the required configuration to produce an + Artifact for a Git repository. properties: ignore: - description: Ignore overrides the set of excluded patterns in the - .sourceignore format (which is the same as .gitignore). If not provided, - a default will be used, consult the documentation for your version - to find out what those are. + description: |- + Ignore overrides the set of excluded patterns in the .sourceignore format + (which is the same as .gitignore). If not provided, a default will be used, + consult the documentation for your version to find out what those are. type: string include: - description: Include specifies a list of GitRepository resources which - Artifacts should be included in the Artifact produced for this GitRepository. + description: |- + Include specifies a list of GitRepository resources which Artifacts + should be included in the Artifact produced for this GitRepository. items: - description: GitRepositoryInclude specifies a local reference to - a GitRepository which Artifact (sub-)contents must be included, - and where they should be placed. + description: |- + GitRepositoryInclude specifies a local reference to a GitRepository which + Artifact (sub-)contents must be included, and where they should be placed. properties: fromPath: - description: FromPath specifies the path to copy contents from, - defaults to the root of the Artifact. + description: |- + FromPath specifies the path to copy contents from, defaults to the root + of the Artifact. type: string repository: - description: GitRepositoryRef specifies the GitRepository which - Artifact contents must be included. + description: |- + GitRepositoryRef specifies the GitRepository which Artifact contents + must be included. properties: name: description: Name of the referent. @@ -79,22 +88,33 @@ spec: - name type: object toPath: - description: ToPath specifies the path to copy contents to, - defaults to the name of the GitRepositoryRef. + description: |- + ToPath specifies the path to copy contents to, defaults to the name of + the GitRepositoryRef. type: string required: - repository type: object type: array interval: - description: Interval at which the GitRepository URL is checked for - updates. This interval is approximate and may be subject to jitter - to ensure efficient use of resources. + description: |- + Interval at which the GitRepository URL is checked for updates. + This interval is approximate and may be subject to jitter to ensure + efficient use of resources. pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ type: string + provider: + description: |- + Provider used for authentication, can be 'azure', 'generic'. + When not specified, defaults to 'generic'. + enum: + - generic + - azure + type: string proxySecretRef: - description: ProxySecretRef specifies the Secret containing the proxy - configuration to use while communicating with the Git server. + description: |- + ProxySecretRef specifies the Secret containing the proxy configuration + to use while communicating with the Git server. properties: name: description: Name of the referent. @@ -103,29 +123,32 @@ spec: - name type: object recurseSubmodules: - description: RecurseSubmodules enables the initialization of all submodules - within the GitRepository as cloned from the URL, using their default - settings. + description: |- + RecurseSubmodules enables the initialization of all submodules within + the GitRepository as cloned from the URL, using their default settings. type: boolean ref: - description: Reference specifies the Git reference to resolve and - monitor for changes, defaults to the 'master' branch. + description: |- + Reference specifies the Git reference to resolve and monitor for + changes, defaults to the 'master' branch. properties: branch: description: Branch to check out, defaults to 'master' if no other field is defined. type: string commit: - description: "Commit SHA to check out, takes precedence over all - reference fields. \n This can be combined with Branch to shallow - clone the branch, in which the commit is expected to exist." + description: |- + Commit SHA to check out, takes precedence over all reference fields. + + This can be combined with Branch to shallow clone the branch, in which + the commit is expected to exist. type: string name: - description: "Name of the reference to check out; takes precedence - over Branch, Tag and SemVer. \n It must be a valid Git reference: - https://git-scm.com/docs/git-check-ref-format#_description Examples: - \"refs/heads/main\", \"refs/tags/v0.1.0\", \"refs/pull/420/head\", - \"refs/merge-requests/1/head\"" + description: |- + Name of the reference to check out; takes precedence over Branch, Tag and SemVer. + + It must be a valid Git reference: https://git-scm.com/docs/git-check-ref-format#_description + Examples: "refs/heads/main", "refs/tags/v0.1.0", "refs/pull/420/head", "refs/merge-requests/1/head" type: string semver: description: SemVer tag expression to check out, takes precedence @@ -136,11 +159,13 @@ spec: type: string type: object secretRef: - description: SecretRef specifies the Secret containing authentication - credentials for the GitRepository. For HTTPS repositories the Secret - must contain 'username' and 'password' fields for basic auth or - 'bearerToken' field for token auth. For SSH repositories the Secret - must contain 'identity' and 'known_hosts' fields. + description: |- + SecretRef specifies the Secret containing authentication credentials for + the GitRepository. + For HTTPS repositories the Secret must contain 'username' and 'password' + fields for basic auth or 'bearerToken' field for token auth. + For SSH repositories the Secret must contain 'identity' + and 'known_hosts' fields. properties: name: description: Name of the referent. @@ -149,8 +174,9 @@ spec: - name type: object suspend: - description: Suspend tells the controller to suspend the reconciliation - of this GitRepository. + description: |- + Suspend tells the controller to suspend the reconciliation of this + GitRepository. type: boolean timeout: default: 60s @@ -164,15 +190,18 @@ spec: pattern: ^(http|https|ssh)://.*$ type: string verify: - description: Verification specifies the configuration to verify the - Git commit signature(s). + description: |- + Verification specifies the configuration to verify the Git commit + signature(s). properties: mode: default: HEAD - description: "Mode specifies which Git object(s) should be verified. - \n The variants \"head\" and \"HEAD\" both imply the same thing, - i.e. verify the commit that the HEAD of the Git repository points - to. The variant \"head\" solely exists to ensure backwards compatibility." + description: |- + Mode specifies which Git object(s) should be verified. + + The variants "head" and "HEAD" both imply the same thing, i.e. verify + the commit that the HEAD of the Git repository points to. The variant + "head" solely exists to ensure backwards compatibility. enum: - head - HEAD @@ -180,8 +209,9 @@ spec: - TagAndHEAD type: string secretRef: - description: SecretRef specifies the Secret containing the public - keys of trusted Git authors. + description: |- + SecretRef specifies the Secret containing the public keys of trusted Git + authors. properties: name: description: Name of the referent. @@ -210,8 +240,9 @@ spec: pattern: ^[a-z0-9]+(?:[.+_-][a-z0-9]+)*:[a-zA-Z0-9=_-]+$ type: string lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of the Artifact. + description: |- + LastUpdateTime is the timestamp corresponding to the last update of the + Artifact. format: date-time type: string metadata: @@ -220,24 +251,25 @@ spec: description: Metadata holds upstream information such as OCI annotations. type: object path: - description: Path is the relative file path of the Artifact. It - can be used to locate the file in the root of the Artifact storage - on the local file system of the controller managing the Source. + description: |- + Path is the relative file path of the Artifact. It can be used to locate + the file in the root of the Artifact storage on the local file system of + the controller managing the Source. type: string revision: - description: Revision is a human-readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm chart version, etc. + description: |- + Revision is a human-readable identifier traceable in the origin source + system. It can be a Git commit SHA, Git tag, a Helm chart version, etc. type: string size: description: Size is the number of bytes in the file. format: int64 type: integer url: - description: URL is the HTTP address of the Artifact as exposed - by the controller managing the Source. It can be used to retrieve - the Artifact for consumption, e.g. by another controller applying - the Artifact contents. + description: |- + URL is the HTTP address of the Artifact as exposed by the controller + managing the Source. It can be used to retrieve the Artifact for + consumption, e.g. by another controller applying the Artifact contents. type: string required: - lastUpdateTime @@ -248,43 +280,35 @@ spec: conditions: description: Conditions holds the conditions for the GitRepository. items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + description: Condition contains details for one aspect of the current + state of this API Resource. properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -299,10 +323,6 @@ spec: type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -315,8 +335,9 @@ spec: type: object type: array includedArtifacts: - description: IncludedArtifacts contains a list of the last successfully - included Artifacts as instructed by GitRepositorySpec.Include. + description: |- + IncludedArtifacts contains a list of the last successfully included + Artifacts as instructed by GitRepositorySpec.Include. items: description: Artifact represents the output of a Source reconciliation. properties: @@ -326,8 +347,9 @@ spec: pattern: ^[a-z0-9]+(?:[.+_-][a-z0-9]+)*:[a-zA-Z0-9=_-]+$ type: string lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of the Artifact. + description: |- + LastUpdateTime is the timestamp corresponding to the last update of the + Artifact. format: date-time type: string metadata: @@ -337,25 +359,25 @@ spec: annotations. type: object path: - description: Path is the relative file path of the Artifact. - It can be used to locate the file in the root of the Artifact - storage on the local file system of the controller managing - the Source. + description: |- + Path is the relative file path of the Artifact. It can be used to locate + the file in the root of the Artifact storage on the local file system of + the controller managing the Source. type: string revision: - description: Revision is a human-readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm chart version, etc. + description: |- + Revision is a human-readable identifier traceable in the origin source + system. It can be a Git commit SHA, Git tag, a Helm chart version, etc. type: string size: description: Size is the number of bytes in the file. format: int64 type: integer url: - description: URL is the HTTP address of the Artifact as exposed - by the controller managing the Source. It can be used to retrieve - the Artifact for consumption, e.g. by another controller applying - the Artifact contents. + description: |- + URL is the HTTP address of the Artifact as exposed by the controller + managing the Source. It can be used to retrieve the Artifact for + consumption, e.g. by another controller applying the Artifact contents. type: string required: - lastUpdateTime @@ -365,34 +387,40 @@ spec: type: object type: array lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. + description: |- + LastHandledReconcileAt holds the value of the most recent + reconcile request value, so a change of the annotation value + can be detected. type: string observedGeneration: - description: ObservedGeneration is the last observed generation of - the GitRepository object. + description: |- + ObservedGeneration is the last observed generation of the GitRepository + object. format: int64 type: integer observedIgnore: - description: ObservedIgnore is the observed exclusion patterns used - for constructing the source artifact. + description: |- + ObservedIgnore is the observed exclusion patterns used for constructing + the source artifact. type: string observedInclude: - description: ObservedInclude is the observed list of GitRepository - resources used to produce the current Artifact. + description: |- + ObservedInclude is the observed list of GitRepository resources used to + produce the current Artifact. items: - description: GitRepositoryInclude specifies a local reference to - a GitRepository which Artifact (sub-)contents must be included, - and where they should be placed. + description: |- + GitRepositoryInclude specifies a local reference to a GitRepository which + Artifact (sub-)contents must be included, and where they should be placed. properties: fromPath: - description: FromPath specifies the path to copy contents from, - defaults to the root of the Artifact. + description: |- + FromPath specifies the path to copy contents from, defaults to the root + of the Artifact. type: string repository: - description: GitRepositoryRef specifies the GitRepository which - Artifact contents must be included. + description: |- + GitRepositoryRef specifies the GitRepository which Artifact contents + must be included. properties: name: description: Name of the referent. @@ -401,20 +429,23 @@ spec: - name type: object toPath: - description: ToPath specifies the path to copy contents to, - defaults to the name of the GitRepositoryRef. + description: |- + ToPath specifies the path to copy contents to, defaults to the name of + the GitRepositoryRef. type: string required: - repository type: object type: array observedRecurseSubmodules: - description: ObservedRecurseSubmodules is the observed resource submodules + description: |- + ObservedRecurseSubmodules is the observed resource submodules configuration used to produce the current Artifact. type: boolean sourceVerificationMode: - description: SourceVerificationMode is the last used verification - mode indicating which Git object(s) have been verified. + description: |- + SourceVerificationMode is the last used verification mode indicating + which Git object(s) have been verified. type: string type: object type: object @@ -443,14 +474,19 @@ spec: description: GitRepository is the Schema for the gitrepositories API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -462,22 +498,21 @@ spec: cross-namespace references to this object. properties: namespaceSelectors: - description: NamespaceSelectors is the list of namespace selectors - to which this ACL applies. Items in this list are evaluated - using a logical OR operation. + description: |- + NamespaceSelectors is the list of namespace selectors to which this ACL applies. + Items in this list are evaluated using a logical OR operation. items: - description: NamespaceSelector selects the namespaces to which - this ACL applies. An empty map of MatchLabels matches all - namespaces in a cluster. + description: |- + NamespaceSelector selects the namespaces to which this ACL applies. + An empty map of MatchLabels matches all namespaces in a cluster. properties: matchLabels: additionalProperties: type: string - description: MatchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. + description: |- + MatchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object type: array @@ -486,17 +521,18 @@ spec: type: object gitImplementation: default: go-git - description: Determines which git client library to use. Defaults - to go-git, valid values are ('go-git', 'libgit2'). + description: |- + Determines which git client library to use. + Defaults to go-git, valid values are ('go-git', 'libgit2'). enum: - go-git - libgit2 type: string ignore: - description: Ignore overrides the set of excluded patterns in the - .sourceignore format (which is the same as .gitignore). If not provided, - a default will be used, consult the documentation for your version - to find out what those are. + description: |- + Ignore overrides the set of excluded patterns in the .sourceignore format + (which is the same as .gitignore). If not provided, a default will be used, + consult the documentation for your version to find out what those are. type: string include: description: Extra git repositories to map into the repository @@ -529,13 +565,15 @@ spec: description: The interval at which to check for repository updates. type: string recurseSubmodules: - description: When enabled, after the clone is created, initializes - all submodules within, using their default settings. This option - is available only when using the 'go-git' GitImplementation. + description: |- + When enabled, after the clone is created, initializes all submodules within, + using their default settings. + This option is available only when using the 'go-git' GitImplementation. type: boolean ref: - description: The Git reference to checkout and monitor for changes, - defaults to master branch. + description: |- + The Git reference to checkout and monitor for changes, defaults to + master branch. properties: branch: description: The Git branch to checkout, defaults to master. @@ -553,8 +591,10 @@ spec: type: string type: object secretRef: - description: The secret name containing the Git credentials. For HTTPS - repositories the secret must contain username and password fields. + description: |- + The secret name containing the Git credentials. + For HTTPS repositories the secret must contain username and password + fields. For SSH repositories the secret must contain identity and known_hosts fields. properties: @@ -617,65 +657,60 @@ spec: description: Checksum is the SHA256 checksum of the artifact. type: string lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of this artifact. + description: |- + LastUpdateTime is the timestamp corresponding to the last update of this + artifact. format: date-time type: string path: description: Path is the relative file path of this artifact. type: string revision: - description: Revision is a human readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm index timestamp, a Helm chart version, etc. + description: |- + Revision is a human readable identifier traceable in the origin source + system. It can be a Git commit SHA, Git tag, a Helm index timestamp, a Helm + chart version, etc. type: string url: description: URL is the HTTP address of this artifact. type: string required: + - lastUpdateTime - path - url type: object conditions: description: Conditions holds the conditions for the GitRepository. items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + description: Condition contains details for one aspect of the current + state of this API Resource. properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -690,10 +725,6 @@ spec: type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -715,38 +746,43 @@ spec: description: Checksum is the SHA256 checksum of the artifact. type: string lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of this artifact. + description: |- + LastUpdateTime is the timestamp corresponding to the last update of this + artifact. format: date-time type: string path: description: Path is the relative file path of this artifact. type: string revision: - description: Revision is a human readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm index timestamp, a Helm chart version, etc. + description: |- + Revision is a human readable identifier traceable in the origin source + system. It can be a Git commit SHA, Git tag, a Helm index timestamp, a Helm + chart version, etc. type: string url: description: URL is the HTTP address of this artifact. type: string required: + - lastUpdateTime - path - url type: object type: array lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. + description: |- + LastHandledReconcileAt holds the value of the most recent + reconcile request value, so a change of the annotation value + can be detected. type: string observedGeneration: description: ObservedGeneration is the last observed generation. format: int64 type: integer url: - description: URL is the download link for the artifact output of the - last repository sync. + description: |- + URL is the download link for the artifact output of the last repository + sync. type: string type: object type: object @@ -775,43 +811,49 @@ spec: description: GitRepository is the Schema for the gitrepositories API. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: - description: GitRepositorySpec specifies the required configuration to - produce an Artifact for a Git repository. + description: |- + GitRepositorySpec specifies the required configuration to produce an + Artifact for a Git repository. properties: accessFrom: - description: 'AccessFrom specifies an Access Control List for allowing - cross-namespace references to this object. NOTE: Not implemented, - provisional as of https://github.com/fluxcd/flux2/pull/2092' + description: |- + AccessFrom specifies an Access Control List for allowing cross-namespace + references to this object. + NOTE: Not implemented, provisional as of https://github.com/fluxcd/flux2/pull/2092 properties: namespaceSelectors: - description: NamespaceSelectors is the list of namespace selectors - to which this ACL applies. Items in this list are evaluated - using a logical OR operation. + description: |- + NamespaceSelectors is the list of namespace selectors to which this ACL applies. + Items in this list are evaluated using a logical OR operation. items: - description: NamespaceSelector selects the namespaces to which - this ACL applies. An empty map of MatchLabels matches all - namespaces in a cluster. + description: |- + NamespaceSelector selects the namespaces to which this ACL applies. + An empty map of MatchLabels matches all namespaces in a cluster. properties: matchLabels: additionalProperties: type: string - description: MatchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. + description: |- + MatchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object type: array @@ -820,35 +862,39 @@ spec: type: object gitImplementation: default: go-git - description: 'GitImplementation specifies which Git client library - implementation to use. Defaults to ''go-git'', valid values are - (''go-git'', ''libgit2''). Deprecated: gitImplementation is deprecated - now that ''go-git'' is the only supported implementation.' + description: |- + GitImplementation specifies which Git client library implementation to + use. Defaults to 'go-git', valid values are ('go-git', 'libgit2'). + Deprecated: gitImplementation is deprecated now that 'go-git' is the + only supported implementation. enum: - go-git - libgit2 type: string ignore: - description: Ignore overrides the set of excluded patterns in the - .sourceignore format (which is the same as .gitignore). If not provided, - a default will be used, consult the documentation for your version - to find out what those are. + description: |- + Ignore overrides the set of excluded patterns in the .sourceignore format + (which is the same as .gitignore). If not provided, a default will be used, + consult the documentation for your version to find out what those are. type: string include: - description: Include specifies a list of GitRepository resources which - Artifacts should be included in the Artifact produced for this GitRepository. + description: |- + Include specifies a list of GitRepository resources which Artifacts + should be included in the Artifact produced for this GitRepository. items: - description: GitRepositoryInclude specifies a local reference to - a GitRepository which Artifact (sub-)contents must be included, - and where they should be placed. + description: |- + GitRepositoryInclude specifies a local reference to a GitRepository which + Artifact (sub-)contents must be included, and where they should be placed. properties: fromPath: - description: FromPath specifies the path to copy contents from, - defaults to the root of the Artifact. + description: |- + FromPath specifies the path to copy contents from, defaults to the root + of the Artifact. type: string repository: - description: GitRepositoryRef specifies the GitRepository which - Artifact contents must be included. + description: |- + GitRepositoryRef specifies the GitRepository which Artifact contents + must be included. properties: name: description: Name of the referent. @@ -857,8 +903,9 @@ spec: - name type: object toPath: - description: ToPath specifies the path to copy contents to, - defaults to the name of the GitRepositoryRef. + description: |- + ToPath specifies the path to copy contents to, defaults to the name of + the GitRepositoryRef. type: string required: - repository @@ -869,29 +916,32 @@ spec: pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ type: string recurseSubmodules: - description: RecurseSubmodules enables the initialization of all submodules - within the GitRepository as cloned from the URL, using their default - settings. + description: |- + RecurseSubmodules enables the initialization of all submodules within + the GitRepository as cloned from the URL, using their default settings. type: boolean ref: - description: Reference specifies the Git reference to resolve and - monitor for changes, defaults to the 'master' branch. + description: |- + Reference specifies the Git reference to resolve and monitor for + changes, defaults to the 'master' branch. properties: branch: description: Branch to check out, defaults to 'master' if no other field is defined. type: string commit: - description: "Commit SHA to check out, takes precedence over all - reference fields. \n This can be combined with Branch to shallow - clone the branch, in which the commit is expected to exist." + description: |- + Commit SHA to check out, takes precedence over all reference fields. + + This can be combined with Branch to shallow clone the branch, in which + the commit is expected to exist. type: string name: - description: "Name of the reference to check out; takes precedence - over Branch, Tag and SemVer. \n It must be a valid Git reference: - https://git-scm.com/docs/git-check-ref-format#_description Examples: - \"refs/heads/main\", \"refs/tags/v0.1.0\", \"refs/pull/420/head\", - \"refs/merge-requests/1/head\"" + description: |- + Name of the reference to check out; takes precedence over Branch, Tag and SemVer. + + It must be a valid Git reference: https://git-scm.com/docs/git-check-ref-format#_description + Examples: "refs/heads/main", "refs/tags/v0.1.0", "refs/pull/420/head", "refs/merge-requests/1/head" type: string semver: description: SemVer tag expression to check out, takes precedence @@ -902,11 +952,13 @@ spec: type: string type: object secretRef: - description: SecretRef specifies the Secret containing authentication - credentials for the GitRepository. For HTTPS repositories the Secret - must contain 'username' and 'password' fields for basic auth or - 'bearerToken' field for token auth. For SSH repositories the Secret - must contain 'identity' and 'known_hosts' fields. + description: |- + SecretRef specifies the Secret containing authentication credentials for + the GitRepository. + For HTTPS repositories the Secret must contain 'username' and 'password' + fields for basic auth or 'bearerToken' field for token auth. + For SSH repositories the Secret must contain 'identity' + and 'known_hosts' fields. properties: name: description: Name of the referent. @@ -915,8 +967,9 @@ spec: - name type: object suspend: - description: Suspend tells the controller to suspend the reconciliation - of this GitRepository. + description: |- + Suspend tells the controller to suspend the reconciliation of this + GitRepository. type: boolean timeout: default: 60s @@ -930,8 +983,9 @@ spec: pattern: ^(http|https|ssh)://.*$ type: string verify: - description: Verification specifies the configuration to verify the - Git commit signature(s). + description: |- + Verification specifies the configuration to verify the Git commit + signature(s). properties: mode: description: Mode specifies what Git object should be verified, @@ -940,8 +994,9 @@ spec: - head type: string secretRef: - description: SecretRef specifies the Secret containing the public - keys of trusted Git authors. + description: |- + SecretRef specifies the Secret containing the public keys of trusted Git + authors. properties: name: description: Name of the referent. @@ -971,8 +1026,9 @@ spec: pattern: ^[a-z0-9]+(?:[.+_-][a-z0-9]+)*:[a-zA-Z0-9=_-]+$ type: string lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of the Artifact. + description: |- + LastUpdateTime is the timestamp corresponding to the last update of the + Artifact. format: date-time type: string metadata: @@ -981,24 +1037,25 @@ spec: description: Metadata holds upstream information such as OCI annotations. type: object path: - description: Path is the relative file path of the Artifact. It - can be used to locate the file in the root of the Artifact storage - on the local file system of the controller managing the Source. + description: |- + Path is the relative file path of the Artifact. It can be used to locate + the file in the root of the Artifact storage on the local file system of + the controller managing the Source. type: string revision: - description: Revision is a human-readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm chart version, etc. + description: |- + Revision is a human-readable identifier traceable in the origin source + system. It can be a Git commit SHA, Git tag, a Helm chart version, etc. type: string size: description: Size is the number of bytes in the file. format: int64 type: integer url: - description: URL is the HTTP address of the Artifact as exposed - by the controller managing the Source. It can be used to retrieve - the Artifact for consumption, e.g. by another controller applying - the Artifact contents. + description: |- + URL is the HTTP address of the Artifact as exposed by the controller + managing the Source. It can be used to retrieve the Artifact for + consumption, e.g. by another controller applying the Artifact contents. type: string required: - lastUpdateTime @@ -1009,43 +1066,35 @@ spec: conditions: description: Conditions holds the conditions for the GitRepository. items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + description: Condition contains details for one aspect of the current + state of this API Resource. properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -1060,10 +1109,6 @@ spec: type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -1076,18 +1121,24 @@ spec: type: object type: array contentConfigChecksum: - description: "ContentConfigChecksum is a checksum of all the configurations - related to the content of the source artifact: - .spec.ignore - - .spec.recurseSubmodules - .spec.included and the checksum of the - included artifacts observed in .status.observedGeneration version - of the object. This can be used to determine if the content of the - included repository has changed. It has the format of `:`, - for example: `sha256:`. \n Deprecated: Replaced with explicit - fields for observed artifact content config in the status." + description: |- + ContentConfigChecksum is a checksum of all the configurations related to + the content of the source artifact: + - .spec.ignore + - .spec.recurseSubmodules + - .spec.included and the checksum of the included artifacts + observed in .status.observedGeneration version of the object. This can + be used to determine if the content of the included repository has + changed. + It has the format of `:`, for example: `sha256:`. + + Deprecated: Replaced with explicit fields for observed artifact content + config in the status. type: string includedArtifacts: - description: IncludedArtifacts contains a list of the last successfully - included Artifacts as instructed by GitRepositorySpec.Include. + description: |- + IncludedArtifacts contains a list of the last successfully included + Artifacts as instructed by GitRepositorySpec.Include. items: description: Artifact represents the output of a Source reconciliation. properties: @@ -1097,8 +1148,9 @@ spec: pattern: ^[a-z0-9]+(?:[.+_-][a-z0-9]+)*:[a-zA-Z0-9=_-]+$ type: string lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of the Artifact. + description: |- + LastUpdateTime is the timestamp corresponding to the last update of the + Artifact. format: date-time type: string metadata: @@ -1108,25 +1160,25 @@ spec: annotations. type: object path: - description: Path is the relative file path of the Artifact. - It can be used to locate the file in the root of the Artifact - storage on the local file system of the controller managing - the Source. + description: |- + Path is the relative file path of the Artifact. It can be used to locate + the file in the root of the Artifact storage on the local file system of + the controller managing the Source. type: string revision: - description: Revision is a human-readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm chart version, etc. + description: |- + Revision is a human-readable identifier traceable in the origin source + system. It can be a Git commit SHA, Git tag, a Helm chart version, etc. type: string size: description: Size is the number of bytes in the file. format: int64 type: integer url: - description: URL is the HTTP address of the Artifact as exposed - by the controller managing the Source. It can be used to retrieve - the Artifact for consumption, e.g. by another controller applying - the Artifact contents. + description: |- + URL is the HTTP address of the Artifact as exposed by the controller + managing the Source. It can be used to retrieve the Artifact for + consumption, e.g. by another controller applying the Artifact contents. type: string required: - lastUpdateTime @@ -1136,34 +1188,40 @@ spec: type: object type: array lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. + description: |- + LastHandledReconcileAt holds the value of the most recent + reconcile request value, so a change of the annotation value + can be detected. type: string observedGeneration: - description: ObservedGeneration is the last observed generation of - the GitRepository object. + description: |- + ObservedGeneration is the last observed generation of the GitRepository + object. format: int64 type: integer observedIgnore: - description: ObservedIgnore is the observed exclusion patterns used - for constructing the source artifact. + description: |- + ObservedIgnore is the observed exclusion patterns used for constructing + the source artifact. type: string observedInclude: - description: ObservedInclude is the observed list of GitRepository - resources used to to produce the current Artifact. + description: |- + ObservedInclude is the observed list of GitRepository resources used to + to produce the current Artifact. items: - description: GitRepositoryInclude specifies a local reference to - a GitRepository which Artifact (sub-)contents must be included, - and where they should be placed. + description: |- + GitRepositoryInclude specifies a local reference to a GitRepository which + Artifact (sub-)contents must be included, and where they should be placed. properties: fromPath: - description: FromPath specifies the path to copy contents from, - defaults to the root of the Artifact. + description: |- + FromPath specifies the path to copy contents from, defaults to the root + of the Artifact. type: string repository: - description: GitRepositoryRef specifies the GitRepository which - Artifact contents must be included. + description: |- + GitRepositoryRef specifies the GitRepository which Artifact contents + must be included. properties: name: description: Name of the referent. @@ -1172,21 +1230,24 @@ spec: - name type: object toPath: - description: ToPath specifies the path to copy contents to, - defaults to the name of the GitRepositoryRef. + description: |- + ToPath specifies the path to copy contents to, defaults to the name of + the GitRepositoryRef. type: string required: - repository type: object type: array observedRecurseSubmodules: - description: ObservedRecurseSubmodules is the observed resource submodules + description: |- + ObservedRecurseSubmodules is the observed resource submodules configuration used to produce the current Artifact. type: boolean url: - description: URL is the dynamic fetch link for the latest Artifact. - It is provided on a "best effort" basis, and using the precise GitRepositoryStatus.Artifact - data is recommended. + description: |- + URL is the dynamic fetch link for the latest Artifact. + It is provided on a "best effort" basis, and using the precise + GitRepositoryStatus.Artifact data is recommended. type: string type: object type: object diff --git a/tests/e2e/testdata/crds/source.toolkit.fluxcd.io_ocirepositories.yaml b/tests/e2e/testdata/crds/source.toolkit.fluxcd.io_ocirepositories.yaml index b795c8fd..a60b7b41 100644 --- a/tests/e2e/testdata/crds/source.toolkit.fluxcd.io_ocirepositories.yaml +++ b/tests/e2e/testdata/crds/source.toolkit.fluxcd.io_ocirepositories.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.16.1 name: ocirepositories.source.toolkit.fluxcd.io spec: group: source.toolkit.fluxcd.io @@ -35,14 +35,19 @@ spec: description: OCIRepository is the Schema for the ocirepositories API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -50,15 +55,22 @@ spec: description: OCIRepositorySpec defines the desired state of OCIRepository properties: certSecretRef: - description: "CertSecretRef can be given the name of a Secret containing - either or both of \n - a PEM-encoded client certificate (`tls.crt`) - and private key (`tls.key`); - a PEM-encoded CA certificate (`ca.crt`) - \n and whichever are supplied, will be used for connecting to the - registry. The client cert and key are useful if you are authenticating - with a certificate; the CA cert is useful if you are using a self-signed - server certificate. The Secret must be of type `Opaque` or `kubernetes.io/tls`. - \n Note: Support for the `caFile`, `certFile` and `keyFile` keys - have been deprecated." + description: |- + CertSecretRef can be given the name of a Secret containing + either or both of + + - a PEM-encoded client certificate (`tls.crt`) and private + key (`tls.key`); + - a PEM-encoded CA certificate (`ca.crt`) + + and whichever are supplied, will be used for connecting to the + registry. The client cert and key are useful if you are + authenticating with a certificate; the CA cert is useful if + you are using a self-signed server certificate. The Secret must + be of type `Opaque` or `kubernetes.io/tls`. + + Note: Support for the `caFile`, `certFile` and `keyFile` keys have + been deprecated. properties: name: description: Name of the referent. @@ -67,36 +79,39 @@ spec: - name type: object ignore: - description: Ignore overrides the set of excluded patterns in the - .sourceignore format (which is the same as .gitignore). If not provided, - a default will be used, consult the documentation for your version - to find out what those are. + description: |- + Ignore overrides the set of excluded patterns in the .sourceignore format + (which is the same as .gitignore). If not provided, a default will be used, + consult the documentation for your version to find out what those are. type: string insecure: description: Insecure allows connecting to a non-TLS HTTP container registry. type: boolean interval: - description: Interval at which the OCIRepository URL is checked for - updates. This interval is approximate and may be subject to jitter - to ensure efficient use of resources. + description: |- + Interval at which the OCIRepository URL is checked for updates. + This interval is approximate and may be subject to jitter to ensure + efficient use of resources. pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ type: string layerSelector: - description: LayerSelector specifies which layer should be extracted - from the OCI artifact. When not specified, the first layer found - in the artifact is selected. + description: |- + LayerSelector specifies which layer should be extracted from the OCI artifact. + When not specified, the first layer found in the artifact is selected. properties: mediaType: - description: MediaType specifies the OCI media type of the layer - which should be extracted from the OCI Artifact. The first layer - matching this type is selected. + description: |- + MediaType specifies the OCI media type of the layer + which should be extracted from the OCI Artifact. The + first layer matching this type is selected. type: string operation: - description: Operation specifies how the selected layer should - be processed. By default, the layer compressed content is extracted - to storage. When the operation is set to 'copy', the layer compressed - content is persisted to storage as it is. + description: |- + Operation specifies how the selected layer should be processed. + By default, the layer compressed content is extracted to storage. + When the operation is set to 'copy', the layer compressed content + is persisted to storage as it is. enum: - extract - copy @@ -104,34 +119,54 @@ spec: type: object provider: default: generic - description: The provider used for authentication, can be 'aws', 'azure', - 'gcp' or 'generic'. When not specified, defaults to 'generic'. + description: |- + The provider used for authentication, can be 'aws', 'azure', 'gcp' or 'generic'. + When not specified, defaults to 'generic'. enum: - generic - aws - azure - gcp type: string + proxySecretRef: + description: |- + ProxySecretRef specifies the Secret containing the proxy configuration + to use while communicating with the container registry. + properties: + name: + description: Name of the referent. + type: string + required: + - name + type: object ref: - description: The OCI reference to pull and monitor for changes, defaults - to the latest tag. + description: |- + The OCI reference to pull and monitor for changes, + defaults to the latest tag. properties: digest: - description: Digest is the image digest to pull, takes precedence - over SemVer. The value should be in the format 'sha256:'. + description: |- + Digest is the image digest to pull, takes precedence over SemVer. + The value should be in the format 'sha256:'. type: string semver: - description: SemVer is the range of tags to pull selecting the - latest within the range, takes precedence over Tag. + description: |- + SemVer is the range of tags to pull selecting the latest within + the range, takes precedence over Tag. + type: string + semverFilter: + description: SemverFilter is a regex pattern to filter the tags + within the SemVer range. type: string tag: description: Tag is the image tag to pull, defaults to latest. type: string type: object secretRef: - description: SecretRef contains the secret name containing the registry - login credentials to resolve image metadata. The secret must be - of type kubernetes.io/dockerconfigjson. + description: |- + SecretRef contains the secret name containing the registry login + credentials to resolve image metadata. + The secret must be of type kubernetes.io/dockerconfigjson. properties: name: description: Name of the referent. @@ -140,9 +175,10 @@ spec: - name type: object serviceAccountName: - description: 'ServiceAccountName is the name of the Kubernetes ServiceAccount - used to authenticate the image pull if the service account has attached - pull secrets. For more information: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account' + description: |- + ServiceAccountName is the name of the Kubernetes ServiceAccount used to authenticate + the image pull if the service account has attached pull secrets. For more information: + https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account type: string suspend: description: This flag tells the controller to suspend the reconciliation @@ -155,35 +191,39 @@ spec: pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m))+$ type: string url: - description: URL is a reference to an OCI artifact repository hosted + description: |- + URL is a reference to an OCI artifact repository hosted on a remote container registry. pattern: ^oci://.*$ type: string verify: - description: Verify contains the secret name containing the trusted - public keys used to verify the signature and specifies which provider - to use to check whether OCI image is authentic. + description: |- + Verify contains the secret name containing the trusted public keys + used to verify the signature and specifies which provider to use to check + whether OCI image is authentic. properties: matchOIDCIdentity: - description: MatchOIDCIdentity specifies the identity matching - criteria to use while verifying an OCI artifact which was signed - using Cosign keyless signing. The artifact's identity is deemed - to be verified if any of the specified matchers match against - the identity. + description: |- + MatchOIDCIdentity specifies the identity matching criteria to use + while verifying an OCI artifact which was signed using Cosign keyless + signing. The artifact's identity is deemed to be verified if any of the + specified matchers match against the identity. items: - description: OIDCIdentityMatch specifies options for verifying - the certificate identity, i.e. the issuer and the subject - of the certificate. + description: |- + OIDCIdentityMatch specifies options for verifying the certificate identity, + i.e. the issuer and the subject of the certificate. properties: issuer: - description: Issuer specifies the regex pattern to match - against to verify the OIDC issuer in the Fulcio certificate. - The pattern must be a valid Go regular expression. + description: |- + Issuer specifies the regex pattern to match against to verify + the OIDC issuer in the Fulcio certificate. The pattern must be a + valid Go regular expression. type: string subject: - description: Subject specifies the regex pattern to match - against to verify the identity subject in the Fulcio certificate. - The pattern must be a valid Go regular expression. + description: |- + Subject specifies the regex pattern to match against to verify + the identity subject in the Fulcio certificate. The pattern must + be a valid Go regular expression. type: string required: - issuer @@ -196,10 +236,12 @@ spec: OCI Artifact. enum: - cosign + - notation type: string secretRef: - description: SecretRef specifies the Kubernetes Secret containing - the trusted public keys. + description: |- + SecretRef specifies the Kubernetes Secret containing the + trusted public keys. properties: name: description: Name of the referent. @@ -228,8 +270,9 @@ spec: pattern: ^[a-z0-9]+(?:[.+_-][a-z0-9]+)*:[a-zA-Z0-9=_-]+$ type: string lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of the Artifact. + description: |- + LastUpdateTime is the timestamp corresponding to the last update of the + Artifact. format: date-time type: string metadata: @@ -238,24 +281,25 @@ spec: description: Metadata holds upstream information such as OCI annotations. type: object path: - description: Path is the relative file path of the Artifact. It - can be used to locate the file in the root of the Artifact storage - on the local file system of the controller managing the Source. + description: |- + Path is the relative file path of the Artifact. It can be used to locate + the file in the root of the Artifact storage on the local file system of + the controller managing the Source. type: string revision: - description: Revision is a human-readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm chart version, etc. + description: |- + Revision is a human-readable identifier traceable in the origin source + system. It can be a Git commit SHA, Git tag, a Helm chart version, etc. type: string size: description: Size is the number of bytes in the file. format: int64 type: integer url: - description: URL is the HTTP address of the Artifact as exposed - by the controller managing the Source. It can be used to retrieve - the Artifact for consumption, e.g. by another controller applying - the Artifact contents. + description: |- + URL is the HTTP address of the Artifact as exposed by the controller + managing the Source. It can be used to retrieve the Artifact for + consumption, e.g. by another controller applying the Artifact contents. type: string required: - lastUpdateTime @@ -266,43 +310,35 @@ spec: conditions: description: Conditions holds the conditions for the OCIRepository. items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + description: Condition contains details for one aspect of the current + state of this API Resource. properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -317,10 +353,6 @@ spec: type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -333,42 +365,51 @@ spec: type: object type: array contentConfigChecksum: - description: "ContentConfigChecksum is a checksum of all the configurations - related to the content of the source artifact: - .spec.ignore - - .spec.layerSelector observed in .status.observedGeneration version - of the object. This can be used to determine if the content configuration - has changed and the artifact needs to be rebuilt. It has the format - of `:`, for example: `sha256:`. \n Deprecated: - Replaced with explicit fields for observed artifact content config - in the status." + description: |- + ContentConfigChecksum is a checksum of all the configurations related to + the content of the source artifact: + - .spec.ignore + - .spec.layerSelector + observed in .status.observedGeneration version of the object. This can + be used to determine if the content configuration has changed and the + artifact needs to be rebuilt. + It has the format of `:`, for example: `sha256:`. + + Deprecated: Replaced with explicit fields for observed artifact content + config in the status. type: string lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. + description: |- + LastHandledReconcileAt holds the value of the most recent + reconcile request value, so a change of the annotation value + can be detected. type: string observedGeneration: description: ObservedGeneration is the last observed generation. format: int64 type: integer observedIgnore: - description: ObservedIgnore is the observed exclusion patterns used - for constructing the source artifact. + description: |- + ObservedIgnore is the observed exclusion patterns used for constructing + the source artifact. type: string observedLayerSelector: - description: ObservedLayerSelector is the observed layer selector - used for constructing the source artifact. + description: |- + ObservedLayerSelector is the observed layer selector used for constructing + the source artifact. properties: mediaType: - description: MediaType specifies the OCI media type of the layer - which should be extracted from the OCI Artifact. The first layer - matching this type is selected. + description: |- + MediaType specifies the OCI media type of the layer + which should be extracted from the OCI Artifact. The + first layer matching this type is selected. type: string operation: - description: Operation specifies how the selected layer should - be processed. By default, the layer compressed content is extracted - to storage. When the operation is set to 'copy', the layer compressed - content is persisted to storage as it is. + description: |- + Operation specifies how the selected layer should be processed. + By default, the layer compressed content is extracted to storage. + When the operation is set to 'copy', the layer compressed content + is persisted to storage as it is. enum: - extract - copy