[
  {
    "path": ".devcontainer/devcontainer.json",
    "content": "{\n  \"image\": \"mcr.microsoft.com/vscode/devcontainers/base:ubuntu\",\n  \"features\": {\n    \"ghcr.io/devcontainers/features/go:1\": {\n      \"version\": \"1.26\"\n    },\n    \"ghcr.io/devcontainers/features/docker-in-docker:2\": {}\n  },\n  \"postCreateCommand\": \".devcontainer/postCreateCommand.sh\",\n  \"postStartCommand\": \".devcontainer/postStartCommand.sh\",\n  \"workspaceFolder\": \"/home/vscode/idpbuilder\",\n  \"workspaceMount\": \"source=${localWorkspaceFolder},target=/home/vscode/idpbuilder,type=bind\",\n  \"hostRequirements\": {\n    \"cpus\": 4\n  },\n  \"remoteEnv\": {\n    \"PATH\": \"${containerEnv:PATH}:/home/vscode/idpbuilder\"\n  }\n}\n"
  },
  {
    "path": ".devcontainer/postCreateCommand.sh",
    "content": "#!/usr/bin/env bash\n\n# For Kubectl AMD64 / x86_64\n[ $(uname -m) = x86_64 ] && curl -sLO \"https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl\"\n# For Kubectl ARM64\n[ $(uname -m) = aarch64 ] && curl -sLO \"https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl\"\nchmod +x ./kubectl\nsudo mv ./kubectl /usr/local/bin/kubectl\n\n# For Kind AMD64 / x86_64\n[ $(uname -m) = x86_64 ] && curl -sLo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-amd64\n# For Kind ARM64\n[ $(uname -m) = aarch64 ] && curl -sLo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-arm64\nchmod +x ./kind\nsudo mv ./kind /usr/local/bin/kind\n\n# setup autocomplete for kubectl and alias k\nsudo apt-get update -y && sudo apt-get install bash-completion -y\nmkdir $HOME/.kube\necho \"source <(kubectl completion bash)\" >> $HOME/.bashrc\necho \"alias k=kubectl\" >> $HOME/.bashrc\necho \"complete -F __start_kubectl k\" >> $HOME/.bashrc\n\n# Configure git if environment variables are set\nif [ -n \"$GIT_COMMITER_NAME\" ]; then\n    echo \"Configuring git user.name to: $GIT_COMMITER_NAME\"\n    git config --global user.name \"$GIT_COMMITER_NAME\"\nfi\n\nif [ -n \"$GIT_COMMITER_EMAIL\" ]; then\n    echo \"Configuring git user.email to: $GIT_COMMITER_EMAIL\"\n    git config --global user.email \"$GIT_COMMITER_EMAIL\"\nfi\n\n# 1. Configure GPG agent\nmkdir -p ~/.gnupg\necho \"pinentry-program /usr/bin/pinentry\" > ~/.gnupg/gpg-agent.conf\necho \"allow-loopback-pinentry\" >> ~/.gnupg/gpg-agent.conf\n\n# 2. Configure GPG client\necho \"use-agent\" > ~/.gnupg/gpg.conf\necho \"pinentry-mode loopback\" >> ~/.gnupg/gpg.conf\n\n# 3. Restart GPG agent and set environment\ngpgconf --kill gpg-agent\nexport GPG_TTY=$(tty)\necho 'export GPG_TTY=$(tty)' >> ~/.bashrc\n\n# 4. Configure Git for GPG signing\ngit config --global commit.gpgsign true\ngit config --global tag.gpgsign true\ngit config --global gpg.program gpg\n"
  },
  {
    "path": ".devcontainer/postStartCommand.sh",
    "content": "#!/bin/bash\n\n# Import GPG key if both parts are available\nif [ -n \"$GPG_SECRET_KEY_PART1\" ] && [ -n \"$GPG_SECRET_KEY_PART2\" ]; then\n    echo \"Importing GPG key...\"\n    echo \"$GPG_SECRET_KEY_PART1$GPG_SECRET_KEY_PART2\" | tr -d \"'\" | base64 -d | gunzip | gpg --batch --yes --no-tty --import\n    if [ $? -eq 0 ]; then\n        echo \"GPG key imported successfully\"\n        \n        # Automatically configure Git to use the imported key for signing\n        echo \"Configuring Git to use the imported GPG key...\"\n        GPG_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep -E \"^sec\" | head -1 | awk '{print $2}' | cut -d'/' -f2)\n        \n        if [ -n \"$GPG_KEY_ID\" ]; then\n            git config --global user.signingkey \"$GPG_KEY_ID\"\n            echo \"Git configured to use GPG key: $GPG_KEY_ID\"\n        else\n            echo \"Warning: Could not detect GPG key ID for Git configuration\"\n        fi\n    else\n        echo \"Failed to import GPG key\"\n    fi\nelse\n    echo \"GPG key parts not found, skipping GPG import\"\nfi "
  },
  {
    "path": ".github/CODEOWNERS",
    "content": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#   http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n#\n# Any committer can add themselves to any  of the path patterns\n# and will subsequently get requested as a reviewer for any PRs\n# that change matching files.\n\n/* @cnoe-io/idpbuilder-approvers\n/* @cnoe-io/idpbuilder-admin"
  },
  {
    "path": ".github/workflows/code-scanner.yaml",
    "content": "name: code-scanner\n\non:\n  push:\n    branches: [ \"main\" ]\n  pull_request:\n    # The branches below must be a subset of the branches above\n    branches: [ \"main\" ]\n    types: [opened, ready_for_review, synchronize]\n\npermissions:\n  contents: write\n  security-events: write # for github/codeql-action/upload-sarif to upload SARIF results\n\njobs:\n  code-analysis:\n    runs-on: ubuntu-22.04\n    steps:\n      - uses: actions/checkout@v6\n      - run: ls -al\n      - name: Scan current project\n        id: scan\n        uses: anchore/scan-action@v7\n        with:\n          fail-build: false\n          path: \".\"\n\n      - name: Upload scan results to GitHub Security tab\n        uses: github/codeql-action/upload-sarif@v3\n        if: always()\n        with:\n          sarif_file: ${{ steps.scan.outputs.sarif }}\n"
  },
  {
    "path": ".github/workflows/codespell.yaml",
    "content": "---\nname: Codespell\n\non:\n  push:\n    branches: [main]\n  pull_request:\n    branches: [main]\n\npermissions:\n  contents: read\n\njobs:\n  codespell:\n    name: Check for spelling errors\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n      - name: Codespell\n        uses: codespell-project/actions-codespell@v2\n        with:\n          check_filenames: true\n          # When using this Action in other repos, the --skip option below can be removed\n          skip: \"*.excalidraw,*.git,*.png,*.jpg,*.svg,go.mod,go.sum,./pkg/controllers/localbuild/resources\"\n        continue-on-error: true # The PR checks will not fail, but the possible spelling issues will still be reported for review and correction"
  },
  {
    "path": ".github/workflows/e2e.yaml",
    "content": "name: E2E\n\non:\n  push:\n    branches:\n      - 'main'\n    paths:\n      - '**.go'\n      - 'go.sum'\n      - 'go.mod'\n  repository_dispatch:\n    types: [e2e-command]\n\njobs:\n  e2e:\n    runs-on: ubuntu-22.04\n    if: ${{ github.event.ref != '' }}\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2\n        with:\n          fetch-depth: 0\n      - name: Setup Go\n        uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5  # v6.2.0\n        with:\n          go-version: '1.26'\n      - name: Run tests\n        run: |\n          make e2e\n  # invoked by slash command workflow\n  e2e-slash-command:\n    runs-on: ubuntu-22.04\n    if: ${{ github.event.action == 'e2e-command' }}\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2\n        with:\n          repository: ${{ github.event.client_payload.pull_request.head.repo.full_name }}\n          ref: ${{ github.event.client_payload.pull_request.head.ref }}\n          fetch-depth: 0\n      - name: Setup Go\n        uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5  # v6.2.0\n        with:\n          go-version: '1.26'\n      - name: Run tests\n        run: |\n          make e2e\n\n"
  },
  {
    "path": ".github/workflows/nightly.yaml",
    "content": "name: nightly\non:\n  # This can be used to automatically publish nightlies at UTC nighttime\n  schedule:\n    - cron: '0 7 * * *' # run at 7 AM UTC\n  # This can be used to allow manually triggering nightlies from the web interface\n  workflow_dispatch:\n\njobs:\n  nightly:\n    runs-on: ubuntu-22.04\n    steps:\n      - name: Generate a token\n        id: generate-token\n        uses: actions/create-github-app-token@v2\n        with:\n          app-id: ${{ vars.CNOE_GH_WORKFLOW_TOKEN_APP_ID }}\n          private-key: ${{ secrets.CNOE_GH_WORKFLOW_TOKEN_PRIVATE_KEY }}\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2\n        with:\n          token: ${{ steps.generate-token.outputs.token }}\n          fetch-depth: 0\n\n      - run: git fetch --force --tags\n      -\n        name: 'Push new tag'\n        run: |\n          git config user.name \"${GITHUB_ACTOR}\"\n          git config user.email \"${GITHUB_ACTOR}@users.noreply.github.com\"\n\n          # A previous release was created using a lightweight tag\n          # git describe by default includes only annotated tags\n          # git describe --tags includes lightweight tags as well\n          DESCRIBE=`git tag -l --sort=-v:refname | grep -v nightly | head -n 1`\n          MAJOR_VERSION=`echo $DESCRIBE | awk '{split($0,a,\".\"); print a[1]}'`\n          MINOR_VERSION=`echo $DESCRIBE | awk '{split($0,a,\".\"); print a[2]}'`\n          MINOR_VERSION=\"$((${MINOR_VERSION} + 1))\"\n          TAG=\"${MAJOR_VERSION}.${MINOR_VERSION}.0-nightly.$(date +'%Y%m%d')\"\n          git tag -a $TAG -m \"$TAG: nightly build\"\n          git push origin $TAG\n      - name: Find previous nightly\n        run: |\n          prev_tag=$(git tag | grep \"nightly\" | sort -r --version-sort | head -n 2 | tail -n 1)\n          echo \"PREVIOUS_NIGHTLY_TAG=$prev_tag\" >> $GITHUB_ENV\n          git push --delete origin $prev_tag\n      - name: 'Clean up nightly releases'\n        uses: actions/github-script@v8\n        with:\n          github-token: ${{ steps.generate-token.outputs.token }}\n          script: |\n            const latestRelease = await github.rest.repos.getReleaseByTag({ \n              owner: \"${{ github.repository_owner }}\", \n              repo: \"${{ github.event.repository.name }}\", \n              tag: \"${{ env.PREVIOUS_NIGHTLY_TAG }}\"\n            });\n            console.log(`Release ${latestRelease}`);\n            if (latestRelease && latestRelease.data && latestRelease.data.id) {\n              await github.rest.repos.deleteRelease({\n                owner: \"${{ github.repository_owner }}\",\n                repo: \"${{ github.event.repository.name }}\",\n                release_id: latestRelease.data.id,\n              });\n              console.log(`Release id ${latestRelease.data.id} has been deleted.`);\n            } else {\n              console.log(\"No latest release found or failed to retrieve it.\");\n            }\n"
  },
  {
    "path": ".github/workflows/pr.yaml",
    "content": "name: PR\n\non:\n  pull_request:\n    types: [opened, ready_for_review, synchronize]\n\njobs:\n  build:\n    runs-on: ubuntu-22.04\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2\n      - name: Setup Go\n        uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5  # v6.2.0\n        with:\n          go-version: '1.26'\n      - name: Run tests\n        run: |\n          make build\n          if [[ -n $(git status --porcelain) ]]; then\n            echo \"git is in dirty state\";\n            git status --porcelain=2 --branch\n            exit 1\n          fi\n          make test\n"
  },
  {
    "path": ".github/workflows/release.yaml",
    "content": "name: release\non:\n  push:\n    tags:\n      - 'v[0-9]+.[0-9]+.[0-9]+'\n      - 'v[0-9]+.[0-9]+.[0-9]+-nightly.[0-9]+'\n\npermissions:\n  contents: write\n\njobs:\n  release:\n    runs-on: ubuntu-22.04\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2\n        with:\n          fetch-depth: 0\n      - run: git fetch --force --tags\n      - uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5  # v6.2.0\n        with:\n          go-version: '1.26'\n      - name: Set GORELEASER_PREVIOUS_TAG in actual release\n        if: ${{ !contains(github.ref, '-nightly') }}\n        # find previous tag by filtering out nightly tags and choosing the\n        # second to last tag (last one is the current release)\n        run: |\n          prev_tag=$(git tag | grep -v \"nightly\" | sort -r --version-sort | head -n 2 | tail -n 1)\n          echo \"GORELEASER_PREVIOUS_TAG=$prev_tag\" >> $GITHUB_ENV\n      # Ensure generation tools run\n      - name: build\n        run: |\n          OUT_FILE=/tmp/idpbuilder make build\n      - name: Generate a homebrew tap update token\n        id: generate-token\n        uses: actions/create-github-app-token@v2\n        with:\n          app-id: ${{ vars.CNOE_HOMEBREW_APP_ID }}\n          private-key: ${{ secrets.CNOE_HOMEBREW_PRIVATE_KEY }}\n          repositories: |\n            homebrew-tap\n      - name: GoReleaser\n        uses: goreleaser/goreleaser-action@e435ccd777264be153ace6237001ef4d979d3a7a  # v6.4.0\n        id: run-goreleaser\n        with:\n          version: latest\n          args: release --clean --timeout 30m\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          HOMEBREW_TOKEN: ${{ steps.generate-token.outputs.token }}\n          GORELEASER_CURRENT_TAG: ${{ github.ref_name }}\n"
  },
  {
    "path": ".github/workflows/slash-commands.yaml",
    "content": "name: slash-commands\n\non:\n  issue_comment:\n    types: [created]\n\njobs:\n  slash_command_dispatch:\n    runs-on: ubuntu-22.04\n    steps:\n      - name: Generate a token\n        id: generate-token\n        uses: actions/create-github-app-token@v2\n        with:\n          app-id: ${{ vars.CNOE_GH_WORKFLOW_TOKEN_APP_ID }}\n          private-key: ${{ secrets.CNOE_GH_WORKFLOW_TOKEN_PRIVATE_KEY }}\n      - name: Slash Command Dispatch\n        uses: peter-evans/slash-command-dispatch@v5\n        with:\n          token: ${{ steps.generate-token.outputs.token }}\n          commands: |\n            e2e\n          permission: write\n          issue-type: pull-request\n"
  },
  {
    "path": ".gitignore",
    "content": "idpbuilder\nbin/*\n.DS_Store\ncover.out\n__debug*\n.vscode\n.idea"
  },
  {
    "path": ".goreleaser.yaml",
    "content": "version: 2\nproject_name: idpbuilder\n\nbefore:\n  hooks:\n    - go mod tidy\nrelease:\n  # Mark nightly build as prerelease based on tag\n  prerelease: auto\n\nbuilds:\n  - env:\n      - CGO_ENABLED=0\n    goos:\n      - linux\n      - darwin\n    goarch:\n      - amd64\n      - arm64\n    ldflags:\n      - -X github.com/cnoe-io/idpbuilder/pkg/cmd/version.idpbuilderVersion={{ .Version }}\n      - -X github.com/cnoe-io/idpbuilder/pkg/cmd/version.gitCommit={{ .FullCommit }}\n      - -X github.com/cnoe-io/idpbuilder/pkg/cmd/version.buildDate={{ .CommitDate }}\n      - -w\n      - -s\n    binary: idpbuilder\n    ignore:\n      - goos: linux\n        goarch: '386'\nbrews:\n# For non version installations\n  - name: \"idpbuilder\" \n    homepage: \"https://cnoe.io\"\n    skip_upload: \"{{ contains .Tag \\\"nightly\\\" }}\" # Don't upload this formula if the build is nightly\n    repository:\n      owner: cnoe-io\n      name: homebrew-tap\n      token: \"{{ .Env.HOMEBREW_TOKEN }}\"\n    commit_author:\n      name: \"CNOEAutomation\"\n      email: \"noreply@cnoe.io\"\n    directory: Formula\n    install: |\n      bin.install \"idpbuilder\"\n    test: |\n      system \"#{bin}/idpbuilder version\"\n# For versioned and nightly installations\n  - name: \"{{ if contains .Tag \\\"nightly\\\" }}idpbuilder-nightly{{ else }}idpbuilder@{{ .Major }}.{{ .Minor }}.{{ .Patch }}{{ end }}\"\n    homepage: \"https://cnoe.io\"\n    repository:\n      owner: cnoe-io\n      name: homebrew-tap\n      token: \"{{ .Env.HOMEBREW_TOKEN }}\"\n    commit_author:\n      name: \"CNOEAutomation\"\n      email: \"noreply@cnoe.io\"\n    directory: Formula\n    install: |\n      bin.install \"idpbuilder\"\n    test: |\n      system \"#{bin}/idpbuilder version\"\narchives:\n  - format: tar.gz\n    name_template: >-\n      {{ .ProjectName }}-{{ .Os }}-{{ .Arch }}\nchecksum:\n  name_template: 'checksums.txt'\nsnapshot:\n  version_template: \"{{ incpatch .Version }}-next\"\nchangelog:\n  sort: asc\n  filters:\n    exclude:\n      - '^docs:'\n      - '^test:'\n  use: github\n  format: \"{{.SHA}}: {{.Message}} [{{.AuthorName}}](@{{.AuthorUsername}})\" \n  groups:\n    - title: \"✨ Features\"\n      regexp: '^.*?feat(\\([[:word:]]+\\))??!?:.+$'\n      order: 0\n    - title: \"🐛 Bug fixes\"\n      regexp: '^.*?(fix|bug)(\\([[:word:]]+\\))??!?:.+$'\n      order: 1\n    - title: \"🔧 Others\"\n      order: 999\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "content": "# For more information, visit: https://pre-commit.com\n# To run locally:\n# 1. Install pre-commit: pip install pre-commit\n# 2. Run pre-commit checks on all files: pre-commit run --all-files\n\nrepos:\n  - repo: https://github.com/codespell-project/codespell\n    rev: v2.2.6\n    hooks:\n      - id: codespell\n        args: [\"--skip=*.excalidraw,*.git,*.png,*.jpg,*.svg,go.sum,go.mod,./pkg/controllers/localbuild/resources\"]\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing guide\n\nWelcome to the project, and thanks for considering contributing to this project. \n\nIf you have any questions or need clarifications on topics covered here, please feel free to reach out to us on the [#cnoe-interest](https://cloud-native.slack.com/archives/C05TN9WFN5S) channel on CNCF Slack.\n\n## Setting up a development environment\n\nTo get started with the project on your machine, you need to install the following tools:\n1. Go 1.21+. See [this official guide](https://go.dev/doc/install) from Go authors.\n2. Make. You can install it through a package manager on your system. E.g. Install `build-essential` for Ubuntu systems.\n3. Docker. Similar to Make, you can install it through your package manager or [Docker Desktop](https://www.docker.com/products/docker-desktop/).\n\nOnce required tools are installed, clone this repository. `git clone https://github.com/cnoe-io/idpbuilder.git`.\n\nThen change your current working directory to the repository root. e.g. `cd idpbuilder`.\n\nAll subsequent commands described in this document assumes they are executed from the repository root.\nEnsure your docker daemon is running and available. e.g. `docker images` command should not error out.\n\n## Building from the main branch\n\n1. Checkout the main branch. `git checkout main`\n2. Build the binary. `make build`. This compiles the project. It will take several minutes for the first time. Example output shown below:\n    ```\n    ~/idpbuilder$ make build\n    test -s /home/ubuntu/idpbuilder/bin/controller-gen && /home/ubuntu/idpbuilder/bin/controller-gen --version | grep -q v0.12.0 || \\\n    GOBIN=/home/ubuntu/idpbuilder/bin go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.12.0\n    /home/ubuntu/idpbuilder/bin/controller-gen rbac:roleName=manager-role crd webhook paths=\"./api/...\" output:crd:artifacts:config=pkg/controllers/resources\n    /home/ubuntu/idpbuilder/bin/controller-gen object:headerFile=\"hack/boilerplate.go.txt\" paths=\"./...\"\n    go fmt ./...\n    go vet ./...\n    go build -o idpbuilder main.go  \n    ```\n3. Once build finishes, you should have an executable file called `idpbuilder` in the root of the repository.\n4. The file is ready to use. Execute this command to confirm: `./idpbuilder --help`\n\n\n### Testing basic functionalities\n\nTo test the very basic functionality of idpbuilder, Run the following command: `./idpbuilder create`\n\nThis command creates a kind cluster, expose associated endpoints to your local machine using an ingress controller and deploy the following packages:\n\n1. [Kind](https://kind.sigs.k8s.io/) cluster.\n2. [ArgoCD](https://argo-cd.readthedocs.io/en/stable/) resources.\n3. [Gitea](https://about.gitea.com/) resources.\n4. [Backstage](https://backstage.io/) resources.\n\nThey are deployed as ArgoCD Applications with the Gitea repositories set as their sources. \n\nUIs for Backstage, Gitea, and ArgoCD are accessible on the machine:\n* Gitea: https://gitea.cnoe.localtest.me:8443/explore/repos\n* Backstage: https://backstage.cnoe.localtest.me:8443/\n* ArgoCD: https://argocd.cnoe.localtest.me:8443/applications\n\n#### Getting credentials for packages\n\nCredentials for core packages can be obtained with: \n```bash\nidpbuilder get secrets\n```\n\nAs described in the main readme file, the above command is equivalent to running:\n```bash\nkubectl -n argocd get secret argocd-initial-admin-secret\nkubectl get secrets -n gitea gitea-admin-secret\nkubectl get secrets -A -l cnoe.io/cli-secret=true\n```\n\nAll ArgoCD applications should be synced and healthy. You can check them in the UI or \n\n```\nkubectl get application -n argocd\n```\n\n### Upgrading a core component\n\nThe process to upgrade a core component: Argo CD, Gitea, Ingress is not so complex but requires to take care about the following points:\n\n- Select the core component to be upgraded and get its current version. See the kustomization file under the `hack/<core-component>` folder and the resource YAML file of the resources to be installed\n- Create a ticket describing the new sibling version of the core component to be bumped\n- Bump the version part of the kustomization file. Example for argocd: https://github.com/cnoe-io/idpbuilder/blob/main/hack/argo-cd/kustomization.yaml#L4\n- Review the patched files to see if changes are needed (new file(s), files to be deleted or files to be changed). Example for argocd: https://github.com/cnoe-io/idpbuilder/blob/main/hack/argo-cd/kustomization.yaml#L7-L16\n- Generate the new resources YAML files using the bash script: `generate-manifests.sh`\n- Build a new idpbuilder binary\n- Test it locally like also using the e2e integration test: `make e2e`\n- Review the test cases if changes are needed too\n- Update the documentation to detail which version of the core component has been bumped like also for which version (or range of versions) of idpbuilder the new version of the component apply for.\n\n**NOTES**: \n- For some components, it could be possible that you also have to upgrade the version of the go library within the `go.mod` file. Example for gitea: `code.gitea.io/sdk/gitea v0.16.0` \n- For Argo CD, we use a separate GitHub project (till a better solution is implemented) packaging a subset of the Argo CD API. Review carefully this file please: https://github.com/cnoe-io/argocd-api?tab=readme-ov-file#read-this-first\n\n## Preparing a Pull Request\n\nThis repository requires a [Developer Certificate of Origin (DCO)](https://developercertificate.org/) signature. \nWhen preparing to send in a pull request, please make sure your commit is signed. You can achieve this by doing a `git commit --sign` or `git commit -s` when making the commit.\n\n## Project Information\n\n### Default manifests installed by idpbuilder\n\nThe default manifests for the core packages are available [here](pkg/controllers/localbuild/resources).\nThese are generated by scripts. If you want to make changes to them, see below.\n\n#### ArgoCD\n\nArgoCD manifests are generated using a bash script available [here](./hack/argo-cd/generate-manifests.sh).\nThis script runs kustomize to modify the basic installation manifests provided by ArgoCD. Modifications include:\n\n1. Prevent notification and dex pods from running. This is done to keep the number of pods running low by default.\n2. Use the annotation tracking instead of the default label tracking. Annotation tracking allows you to avoid [problems caused by the label tracking method](https://argo-cd.readthedocs.io/en/stable/user-guide/resource_tracking/). In addition, this configuration is required when using Crossplane.\n3. Support for path based routing.\n\n#### Gitea\n\nGitea manifests are generated using a bash script available [here](./hack/gitea/generate-manifests.sh).\nThis script runs helm template to generate most files. See the values file for more information.\n\n#### Ingress-nginx\n\ningress-nginx manifests are generated using a bash script available [here](./hack/ingress-nginx/generate-manifests.sh).\nThis script runs kustomize to modify the basic installation manifests provided by ingress-nginx.\n\n## Architecture\n\nidpbuilder is made of two phases: CLI and Kubernetes controllers.\n\n![idpbuilder.png](docs/images/idpbuilder.png)\n\n### CLI\n\nWhen the idpbuilder binary is executed, it starts with the CLI phase.\n\n1. This is the phase where command flags are parsed and translated into relevant Go structs' fields. Most notably the [`LocalBuild`](https://github.com/cnoe-io/idpbuilder/blob/main/api/v1alpha1/localbuild_types.go) struct.\n2. Create a Kind cluster, then update the kubeconfig file.\n3. Once the kind cluster is started and relevant fields are populated, Kubernetes controllers are started:\n*  `LocalbuildReconciler` responsible for bootstrapping the cluster with absolute necessary packages. Creates Custom Resources (CRs) and installs embedded manifests.\n*  `RepositoryReconciler` responsible for creating and managing Gitea repository and repository contents.\n*  `CustomPackageReconciler` responsible for managing custom packages.\n4. They are all managed by a single Kubernetes controller manager.\n5. Once controllers are started, CRs corresponding to these controllers are created. For example for Backstage, it creates a GitRepository CR and ArgoCD Application.\n6. CLI then waits for these CRs to be ready.\n\n### Controllers\n\nDuring this phase, controllers act on CRs created by the CLI phase. Resources such as Gitea repositories and ArgoCD applications are created.\n\n#### LocalbuildReconciler\n\n`LocalbuildReconciler` bootstraps the cluster using embedded manifests. Embedded manifests are yaml files that are baked into the binary at compile time.\n1. Install core packages. They are essential services that are needed for the user experiences we want to enable:\n* Gitea. This is the in-cluster Git server that hosts Git repositories.\n* Ingress-nginx. This is necessary to expose services inside the cluster to the users.\n* ArgoCD. This is used as the packaging mechanism. Its primary purpose is to deploy manifests from gitea repositories.\n2. Once they are installed, it creates `GitRepository` CRs for core packages. This CR represents the git repository on the Gitea server.\n3. Create ArgoCD applications for the apps. Point them to the Gitea repositories. From here on, ArgoCD manages the core packages.\n\nOnce core packages are installed, it creates the other embedded applications: Backstage and Crossplane.\n1. Create `GitRepository` CRs for the apps.\n2. Create ArgoCD applications for the apps. Point them to the Gitea repositories.\n\n\n#### RepositoryReconciler\n\n`RepositoryReconciler` creates Gitea repositories.\nThe content of the repositories can either be sourced from Embedded file system or local file system.\n\n#### CustomPackageReconciler\n\n`CustomPackageReconciler` parses the specified ArgoCD application files. If they specify repository URL with the scheme `cnoe://`,\nit creates `GitRepository` CR with source specified as local, then creates ArgoCD application with the repository URL replaced.\n\nFor example, if an ArgoCD application is specified as the following.\n\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Application\nspec:\n  source:\n    repoURL: cnoe://busybox\n```\n\nThen, the actual object created is this.\n\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Application\nspec:\n  source:\n    repoURL: http://my-gitea-http.gitea.svc.cluster.local:3000/giteaAdmin/idpbuilder-localdev-my-app-busybox.git\n```\n"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [2023] Autodesk\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "Makefile",
    "content": "LD_FLAGS=-ldflags \" \\\n    -X github.com/cnoe-io/idpbuilder/pkg/cmd/version.idpbuilderVersion=$(shell git describe --always --tags --dirty --broken) \\\n    -X github.com/cnoe-io/idpbuilder/pkg/cmd/version.gitCommit=$(shell git rev-parse HEAD) \\\n    -X github.com/cnoe-io/idpbuilder/pkg/cmd/version.buildDate=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') \\\n    \"\n\n# The name of the binary. Defaults to idpbuilder\nOUT_FILE ?= idpbuilder\n\n.PHONY: build\nbuild: manifests generate fmt vet embedded-resources\n\tgo build $(LD_FLAGS) -o $(OUT_FILE) main.go\n\n# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary.\nENVTEST_K8S_VERSION = 1.29.1\n\n## Location to install dependencies to\nLOCALBIN ?= $(shell pwd)/bin\n$(LOCALBIN):\n\tmkdir -p $(LOCALBIN)\nCONTROLLER_GEN ?= $(LOCALBIN)/controller-gen\nENVTEST ?= $(LOCALBIN)/setup-envtest\nKUSTOMIZE ?= $(LOCALBIN)/kustomize\nHELM_TGZ ?= $(LOCALBIN)/helm.tar.gz\nHELM ?= $(LOCALBIN)/helm\n\n## Tool Versions\nCONTROLLER_TOOLS_VERSION ?= v0.20.0\n\n.PHONY: fmt\nfmt: ## Run go fmt against code.\n\tgo fmt ./...\n\n.PHONY: vet\nvet: ## Run go vet against code.\n\tgo vet ./...\n\n.PHONY: test\ntest: manifests generate fmt vet envtest ## Run tests.\nifeq ($(RUN),)\n\tKUBEBUILDER_ASSETS=\"$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)\" go test -p 1 --tags=integration ./... -coverprofile cover.out\nelse\n\tKUBEBUILDER_ASSETS=\"$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)\" go test -p 1 --tags=integration ./... -coverprofile cover.out -run $(RUN)\nendif\n\n\t\n\n.PHONY: generate\ngenerate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.\n\t$(CONTROLLER_GEN) object:headerFile=\"hack/boilerplate.go.txt\" paths=\"./api/...\"\n\n.PHONY: manifests\nmanifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.\n\t$(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths=\"./api/...\" output:crd:artifacts:config=pkg/controllers/resources\n\n.PHONY: controller-gen\ncontroller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.\n$(CONTROLLER_GEN): $(LOCALBIN)\n\ttest -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \\\n\tGOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)\n\n.PHONY: kustomize\nkustomize: ## Download kustomize if necessary\nifeq (,$(wildcard $(KUSTOMIZE)))\n\tcd $(LOCALBIN) && curl -s \"https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh\"  | bash\nendif\n\nhelm_os := $(shell uname | tr '[:upper:]' '[:lower:]')\nhelm_version ?= 3.15.0\nifeq ($(shell uname -m), x86_64)\n\thelm_arch ?= amd64\nendif\nifeq ($(shell uname -m), arm64)\n\thelm_arch ?= arm64\nendif\nifeq ($(shell uname -m), aarch64)\n\thelm_arch ?= arm64\nendif\n\n\n.PHONY: helm\nhelm: ## Download helm if necessary\nifeq (,$(wildcard $(HELM)))\n\tcurl https://get.helm.sh/helm-v$(helm_version)-$(helm_os)-$(helm_arch).tar.gz -o $(HELM_TGZ)\n\ttar xvzf $(HELM_TGZ) -C $(LOCALBIN) --strip-components 1 $(helm_os)-$(helm_arch)/helm\n\tchmod +x $(HELM)\nendif\n\n.PHONY: envtest\nenvtest: $(ENVTEST) ## Download envtest-setup locally if necessary.\n$(ENVTEST): $(LOCALBIN)\n\ttest -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest\n\n.PHONY: embedded-resources\nembedded-resources: kustomize helm\n\texport PATH=$(LOCALBIN):$$PATH; ./hack/embedded-resources.sh;\n\n.PHONY: e2e\ne2e: build\n\tgo test -v -p 1 -timeout 15m --tags=e2e ./tests/e2e/...\n"
  },
  {
    "path": "README.md",
    "content": "[![Codespell][codespell-badge]][codespell-link]\n[![E2E][e2e-badge]][e2e-link]\n[![Go Report Card][report-badge]][report-link]\n[![Commit Activity][commit-activity-badge]][commit-activity-link]\n\n# IDP Builder\n\nInternal development platform binary launcher.\n\n## About\n\nSpin up a complete internal developer platform using industry standard technologies like Kubernetes, Argo, and backstage with only Docker required as a dependency.\n\nThis can be useful in several ways:\n* Create a single binary which can demonstrate an IDP reference implementation.\n* Use within CI to perform integration testing.\n* Use as a local development environment for platform engineers.\n\n## Installation\n### Using [Homebrew](https://brew.sh)\n+ Stable Version\n\n   ```bash\n   brew install cnoe-io/tap/idpbuilder\n   ```\n+ Specific Stable Version\n\n   ```bash\n   brew install cnoe-io/tap/idpbuilder@<version>\n   ```\n+ Nightly Version\n\n   ```bash\n   brew install cnoe-io/tap/idpbuilder-nightly\n   ```\n\n### From Releases\nAnother way to get started is to grab the idpbuilder binary for your platform and run it. You can visit our [releases](https://github.com/cnoe-io/idpbuilder/releases) page to download the version for your system, or run the following commands:\n\n```bash\narch=$(if [[ \"$(uname -m)\" == \"x86_64\" ]]; then echo \"amd64\"; else uname -m; fi)\nos=$(uname -s | tr '[:upper:]' '[:lower:]')\n\n\nidpbuilder_latest_tag=$(curl --silent \"https://api.github.com/repos/cnoe-io/idpbuilder/releases/latest\" | grep '\"tag_name\":' | sed -E 's/.*\"([^\"]+)\".*/\\1/')\ncurl -LO  https://github.com/cnoe-io/idpbuilder/releases/download/$idpbuilder_latest_tag/idpbuilder-$os-$arch.tar.gz\ntar xvzf idpbuilder-$os-$arch.tar.gz\n```\n\nDownload latest extract idpbuilder binary\n```bash\ncd ~/bin\ncurl -vskL -O https://github.com/cnoe-io/idpbuilder/releases/latest/download/idpbuilder-linux-amd64.tar.gz\ntar xvzf idpbuilder-linux-amd64.tar.gz idpbuilder\n```\n\n## Getting Started\n\nYou can then run idpbuilder with the create argument to spin up your CNOE IDP:\n\n```bash\n./idpbuilder create\n```\n\nFor more detailed information, checkout our [documentation](https://cnoe.io/docs/idpbuilder) on getting started with idpbuilder.\n\n## Community\n\n- If you have questions or concerns about this tool, please feel free to reach out to us on the [CNCF Slack Channel](https://cloud-native.slack.com/archives/C05TN9WFN5S).\n- You can also join our community meetings to meet the team and ask any questions. Checkout [this calendar](https://calendar.google.com/calendar/embed?src=064a2adfce866ccb02e61663a09f99147f22f06374e7a8994066bdc81e066986%40group.calendar.google.com&ctz=America%2FLos_Angeles) for more information.\n\n## Contribution\n\nCheckout the [contribution doc](./CONTRIBUTING.md) for contribution guidelines and more information on how to set up your local environment.\n\n\n<!-- JUST BADGES & LINKS -->\n[codespell-badge]: https://github.com/cnoe-io/idpbuilder/actions/workflows/codespell.yaml/badge.svg\n[codespell-link]: https://github.com/cnoe-io/idpbuilder/actions/workflows/codespell.yaml\n\n[e2e-badge]: https://github.com/cnoe-io/idpbuilder/actions/workflows/e2e.yaml/badge.svg\n[e2e-link]: https://github.com/cnoe-io/idpbuilder/actions/workflows/e2e.yaml\n\n[report-badge]: https://goreportcard.com/badge/github.com/cnoe-io/idpbuilder\n[report-link]: https://goreportcard.com/report/github.com/cnoe-io/idpbuilder\n\n[commit-activity-badge]: https://img.shields.io/github/commit-activity/m/cnoe-io/idpbuilder\n[commit-activity-link]: https://github.com/cnoe-io/idpbuilder/pulse\n"
  },
  {
    "path": "api/v1alpha1/custom_package_types.go",
    "content": "package v1alpha1\n\nimport (\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n)\n\nconst (\n\tCNOEURIScheme = \"cnoe://\"\n)\n\n// +kubebuilder:object:root=true\n// +kubebuilder:subresource:status\ntype CustomPackage struct {\n\tmetav1.TypeMeta   `json:\",inline\"`\n\tmetav1.ObjectMeta `json:\"metadata,omitempty\"`\n\n\tSpec   CustomPackageSpec   `json:\"spec,omitempty\"`\n\tStatus CustomPackageStatus `json:\"status,omitempty\"`\n}\n\n// +kubebuilder:object:root=true\ntype CustomPackageList struct {\n\tmetav1.TypeMeta `json:\",inline\"`\n\tmetav1.ListMeta `json:\"metadata,omitempty\"`\n\tItems           []CustomPackage `json:\"items\"`\n}\n\n// CustomPackageSpec controls the installation of the custom applications.\ntype CustomPackageSpec struct {\n\tArgoCD ArgoCDPackageSpec `json:\"argoCD,omitempty\"`\n\t// GitServerURL specifies the base URL for the git server for API calls.\n\t// for example, https://gitea.cnoe.localtest.me:8443\n\tGitServerURL           string          `json:\"gitServerURL\"`\n\tGitServerAuthSecretRef SecretReference `json:\"gitServerAuthSecretRef\"`\n\t// InternalGitServeURL specifies the base URL for the git server accessible within the cluster.\n\t// for example, http://my-gitea-http.gitea.svc.cluster.local:3000\n\tInternalGitServeURL string               `json:\"internalGitServeURL\"`\n\tRemoteRepository    RemoteRepositorySpec `json:\"remoteRepository\"`\n\t// Replicate specifies whether to replicate remote or local contents to the local gitea server.\n\t// +kubebuilder:default:=false\n\tReplicate bool `json:\"replicate\"`\n}\n\n// RemoteRepositorySpec specifies information about remote repositories.\ntype RemoteRepositorySpec struct {\n\tCloneSubmodules bool   `json:\"cloneSubmodules\"`\n\tPath            string `json:\"path\"`\n\t// Url specifies the url to the repository containing the ArgoCD application file\n\tUrl string `json:\"url\"`\n\t// Ref specifies the specific ref supported by git fetch\n\tRef string `json:\"ref\"`\n}\n\ntype ArgoCDPackageSpec struct {\n\t// ApplicationFile specifies the absolute path to the ArgoCD application file\n\tApplicationFile string `json:\"applicationFile\"`\n\tName            string `json:\"name\"`\n\tNamespace       string `json:\"namespace\"`\n\t// +kubebuilder:validation:Enum:=Application;ApplicationSet\n\tType string `json:\"type\"`\n}\n\ntype CustomPackageStatus struct {\n\t// A Custom package is considered synced when the in-cluster repository url is set as the repository URL\n\t// This only applies for a package that references local directories\n\tSynced            bool        `json:\"synced,omitempty\"`\n\tGitRepositoryRefs []ObjectRef `json:\"gitRepositoryRefs,omitempty\"`\n}\n\ntype ObjectRef struct {\n\tAPIVersion string `json:\"apiVersion,omitempty\"`\n\tName       string `json:\"name,omitempty\"`\n\tNamespace  string `json:\"namespace,omitempty\"`\n\tKind       string `json:\"kind,omitempty\"`\n\tUID        string `json:\"uid,omitempty\"`\n}\n"
  },
  {
    "path": "api/v1alpha1/gitrepository_types.go",
    "content": "package v1alpha1\n\nimport (\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n)\n\nconst (\n\tGitProviderGitea   = \"gitea\"\n\tGitProviderGitHub  = \"github\"\n\tGiteaAdminUserName = \"giteaAdmin\"\n\tSourceTypeLocal    = \"local\"\n\tSourceTypeRemote   = \"remote\"\n\tSourceTypeEmbedded = \"embedded\"\n)\n\ntype GitRepositorySpec struct {\n\t// +kubebuilder:validation:Optional\n\tCustomization PackageCustomization `json:\"customization,omitempty\"`\n\t// SecretRef is the reference to secret that contain Git server credentials\n\t// +kubebuilder:validation:Optional\n\tSecretRef SecretReference     `json:\"secretRef\"`\n\tSource    GitRepositorySource `json:\"source,omitempty\"`\n\tProvider  Provider            `json:\"provider\"`\n}\n\ntype GitRepositorySource struct {\n\t// +kubebuilder:validation:Enum:=argocd;gitea;nginx\n\t// +kubebuilder:validation:Optional\n\tEmbeddedAppName string `json:\"embeddedAppName,omitempty\"`\n\t// Path is the absolute path to directory that contains Kustomize structure or raw manifests.\n\t// This is required when Type is set to local.\n\t// +kubebuilder:validation:Optional\n\tPath             string               `json:\"path\"`\n\tRemoteRepository RemoteRepositorySpec `json:\"remoteRepository\"`\n\t// Type is the source type.\n\t// +kubebuilder:validation:Enum:=local;embedded;remote\n\t// +kubebuilder:default:=embedded\n\tType string `json:\"type\"`\n}\n\ntype Provider struct {\n\t// +kubebuilder:validation:Enum:=gitea;github\n\t// +kubebuilder:validation:Required\n\tName string `json:\"name\"`\n\t// GitURL is the base URL of Git server used for API calls.\n\t// +kubebuilder:validation:Required\n\t// +kubebuilder:validation:Pattern=`^https?:\\/\\/.+$`\n\tGitURL string `json:\"gitURL\"`\n\t// InternalGitURL is the base URL of Git server accessible within the cluster only.\n\tInternalGitURL   string `json:\"internalGitURL\"`\n\tOrganizationName string `json:\"organizationName\"`\n}\n\ntype SecretReference struct {\n\tName      string `json:\"name\"`\n\tNamespace string `json:\"namespace\"`\n}\n\ntype Commit struct {\n\t// Hash is the digest of the most recent commit\n\t// +kubebuilder:validation:Optional\n\tHash string `json:\"hash\"`\n}\n\ntype GitRepositoryStatus struct {\n\t// LatestCommit is the most recent commit known to the controller\n\t// +kubebuilder:validation:Optional\n\tLatestCommit Commit `json:\"commit\"`\n\t// ExternalGitRepositoryUrl is the url for the in-cluster repository accessible from local machine.\n\t// +kubebuilder:validation:Optional\n\tExternalGitRepositoryUrl string `json:\"externalGitRepositoryUrl\"`\n\t// InternalGitRepositoryUrl is the url for the in-cluster repository accessible within the cluster.\n\t// +kubebuilder:validation:Optional\n\tInternalGitRepositoryUrl string `json:\"internalGitRepositoryUrl\"`\n\t// Path is the path within the repository that contains the files.\n\t// +kubebuilder:validation:Optional\n\tPath   string `json:\"path\"`\n\tSynced bool   `json:\"synced\"`\n}\n\n// +kubebuilder:object:root=true\n// +kubebuilder:subresource:status\ntype GitRepository struct {\n\tmetav1.TypeMeta   `json:\",inline\"`\n\tmetav1.ObjectMeta `json:\"metadata,omitempty\"`\n\n\tSpec   GitRepositorySpec   `json:\"spec,omitempty\"`\n\tStatus GitRepositoryStatus `json:\"status,omitempty\"`\n}\n\n// +kubebuilder:object:root=true\ntype GitRepositoryList struct {\n\tmetav1.TypeMeta `json:\",inline\"`\n\tmetav1.ListMeta `json:\"metadata,omitempty\"`\n\tItems           []GitRepository `json:\"items\"`\n}\n"
  },
  {
    "path": "api/v1alpha1/groupversion_info.go",
    "content": "// +kubebuilder:object:generate=true\n// +groupName=idpbuilder.cnoe.io\npackage v1alpha1\n\nimport (\n\t\"k8s.io/apimachinery/pkg/runtime/schema\"\n\t\"sigs.k8s.io/controller-runtime/pkg/scheme\"\n)\n\nvar (\n\t// GroupVersion is group version used to register these objects\n\tGroupVersion = schema.GroupVersion{Group: \"idpbuilder.cnoe.io\", Version: \"v1alpha1\"}\n\n\t// SchemeBuilder is used to add go types to the GroupVersionKind scheme\n\tSchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}\n\n\t// AddToScheme adds the types in this group-version to the given scheme.\n\tAddToScheme = SchemeBuilder.AddToScheme\n)\n\nfunc init() {\n\tSchemeBuilder.Register(&Localbuild{}, &LocalbuildList{})\n\tSchemeBuilder.Register(&GitRepository{}, &GitRepositoryList{})\n\tSchemeBuilder.Register(&CustomPackage{}, &CustomPackageList{})\n}\n"
  },
  {
    "path": "api/v1alpha1/localbuild_types.go",
    "content": "package v1alpha1\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/cnoe-io/idpbuilder/globals\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n)\n\nconst (\n\t// LastObservedCLIStartTimeAnnotation indicates when the controller acted on a resource.\n\tLastObservedCLIStartTimeAnnotation = \"cnoe.io/last-observed-cli-start-time\"\n\t// CliStartTimeAnnotation indicates when the CLI was invoked.\n\tCliStartTimeAnnotation = \"cnoe.io/cli-start-time\"\n\t// PackagePriorityAnnotation indicates the priority of a package (higher = wins conflicts).\n\tPackagePriorityAnnotation = \"cnoe.io/package-priority\"\n\t// PackageSourcePathAnnotation indicates the source path of a package.\n\tPackageSourcePathAnnotation = \"cnoe.io/package-source-path\"\n\tFieldManager                = \"idpbuilder\"\n\t// If GetSecretLabelKey is set to GetSecretLabelValue on a kubernetes secret, secret key and values can be used by the get command.\n\tCLISecretLabelKey      = \"cnoe.io/cli-secret\"\n\tCLISecretLabelValue    = \"true\"\n\tPackageNameLabelKey    = \"cnoe.io/package-name\"\n\tPackageTypeLabelKey    = \"cnoe.io/package-type\"\n\tPackageTypeLabelCore   = \"core\"\n\tPackageTypeLabelCustom = \"custom\"\n\n\tArgoCDPackageName       = \"argocd\"\n\tGiteaPackageName        = \"gitea\"\n\tIngressNginxPackageName = \"nginx\"\n)\n\n// ArgoPackageConfigSpec Allows for configuration of the ArgoCD Installation.\n// If no fields are specified then the binary embedded resources will be used to install ArgoCD.\ntype ArgoPackageConfigSpec struct {\n\t// Enabled controls whether to install ArgoCD.\n\tEnabled bool `json:\"enabled,omitempty\"`\n}\n\n// EmbeddedArgoApplicationsPackageConfigSpec Controls the installation of the embedded argo applications.\ntype EmbeddedArgoApplicationsPackageConfigSpec struct {\n\t// Enabled controls whether to install the embedded argo applications and the associated GitServer\n\tEnabled bool `json:\"enabled,omitempty\"`\n}\n\ntype PackageConfigsSpec struct {\n\tArgo                     ArgoPackageConfigSpec                     `json:\"argoPackageConfigs,omitempty\"`\n\tEmbeddedArgoApplications EmbeddedArgoApplicationsPackageConfigSpec `json:\"embeddedArgoApplicationsPackageConfigs,omitempty\"`\n\tCustomPackageFiles       []string                                  `json:\"customPackageFiles,omitempty\"`\n\tCustomPackageDirs        []string                                  `json:\"customPackageDirs,omitempty\"`\n\tCustomPackageUrls        []string                                  `json:\"customPackageUrls,omitempty\"`\n\t// +kubebuilder:validation:Optional\n\tCorePackageCustomization map[string]PackageCustomization `json:\"packageCustomization,omitempty\"`\n}\n\n// RegistryMirror defines an external registry mirror configuration\ntype RegistryMirror struct {\n\t// TargetRegistry is the registry that should be mirrored (e.g., \"docker.io\", \"ghcr.io\")\n\tTargetRegistry string `json:\"targetRegistry,omitempty\"`\n\t// RegistryAddress is the address of the mirror registry (e.g., \"http://kind-registry:5000\")\n\tRegistryAddress string `json:\"registryAddress,omitempty\"`\n}\n\n// BuildCustomizationSpec fields cannot change once a cluster is created\ntype BuildCustomizationSpec struct {\n\tProtocol                string           `json:\"protocol,omitempty\"`\n\tHost                    string           `json:\"host,omitempty\"`\n\tIngressHost             string           `json:\"ingressHost,omitempty\"`\n\tPort                    string           `json:\"port,omitempty\"`\n\tUsePathRouting          bool             `json:\"usePathRouting,omitempty\"`\n\tSelfSignedCert          string           `json:\"selfSignedCert,omitempty\"`\n\tStaticPassword          bool             `json:\"staticPassword,omitempty\"`\n\tRegistryMirrors         []RegistryMirror `json:\"registryMirrors,omitempty\"`\n\tInsecureRegistryMirrors bool             `json:\"insecureRegistryMirrors,omitempty\"`\n}\n\ntype LocalbuildSpec struct {\n\tPackageConfigs     PackageConfigsSpec     `json:\"packageConfigs,omitempty\"`\n\tBuildCustomization BuildCustomizationSpec `json:\"buildCustomization,omitempty\"`\n}\n\n// PackageCustomization defines how packages are customized\ntype PackageCustomization struct {\n\t// Name is the name of the package to be customized. e.g. argocd\n\tName string `json:\"name,omitempty'\"`\n\t// FilePath is the absolute file path to a YAML file that contains Kubernetes manifests.\n\tFilePath string `json:\"filePath,omitempty\"`\n}\n\ntype LocalbuildStatus struct {\n\t// ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.\n\t// +optional\n\tObservedGeneration int64        `json:\"observedGeneration,omitempty\"`\n\tArgoCD             ArgoCDStatus `json:\"ArgoCD,omitempty\"`\n\tNginx              NginxStatus  `json:\"nginx,omitempty\"`\n\tGitea              GiteaStatus  `json:\"gitea,omitempty\"`\n}\n\ntype GiteaStatus struct {\n\tAvailable                bool   `json:\"available,omitempty\"`\n\tExternalURL              string `json:\"externalURL,omitempty\"`\n\tInternalURL              string `json:\"internalURL,omitempty\"`\n\tAdminUserSecretName      string `json:\"adminUserSecretNameecret,omitempty\"`\n\tAdminUserSecretNamespace string `json:\"adminUserSecretNamespace,omitempty\"`\n}\n\ntype ArgoCDStatus struct {\n\tAvailable   bool `json:\"available,omitempty\"`\n\tAppsCreated bool `json:\"appsCreated,omitempty\"`\n}\n\ntype NginxStatus struct {\n\tAvailable bool `json:\"available,omitempty\"`\n}\n\n// +kubebuilder:object:root=true\n// +kubebuilder:subresource:status\n// +kubebuilder:resource:path=localbuilds,scope=Cluster\ntype Localbuild struct {\n\tmetav1.TypeMeta   `json:\",inline\"`\n\tmetav1.ObjectMeta `json:\"metadata,omitempty\"`\n\n\tSpec   LocalbuildSpec   `json:\"spec,omitempty\"`\n\tStatus LocalbuildStatus `json:\"status,omitempty\"`\n}\n\nfunc (l *Localbuild) GetArgoProjectName() string {\n\treturn fmt.Sprintf(\"%s-%s-gitserver\", globals.ProjectName, l.Name)\n}\n\nfunc (l *Localbuild) GetArgoApplicationName(name string) string {\n\treturn fmt.Sprintf(\"%s-%s-gitserver-%s\", globals.ProjectName, l.Name, name)\n}\n\n// +kubebuilder:object:root=true\ntype LocalbuildList struct {\n\tmetav1.TypeMeta `json:\",inline\"`\n\tmetav1.ListMeta `json:\"metadata,omitempty\"`\n\tItems           []Localbuild `json:\"items\"`\n}\n"
  },
  {
    "path": "api/v1alpha1/zz_generated.deepcopy.go",
    "content": "//go:build !ignore_autogenerated\n\n/*\nCopyright 2023.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Code generated by controller-gen. DO NOT EDIT.\n\npackage v1alpha1\n\nimport (\n\truntime \"k8s.io/apimachinery/pkg/runtime\"\n)\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *ArgoCDPackageSpec) DeepCopyInto(out *ArgoCDPackageSpec) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArgoCDPackageSpec.\nfunc (in *ArgoCDPackageSpec) DeepCopy() *ArgoCDPackageSpec {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(ArgoCDPackageSpec)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *ArgoCDStatus) DeepCopyInto(out *ArgoCDStatus) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArgoCDStatus.\nfunc (in *ArgoCDStatus) DeepCopy() *ArgoCDStatus {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(ArgoCDStatus)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *ArgoPackageConfigSpec) DeepCopyInto(out *ArgoPackageConfigSpec) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArgoPackageConfigSpec.\nfunc (in *ArgoPackageConfigSpec) DeepCopy() *ArgoPackageConfigSpec {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(ArgoPackageConfigSpec)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *BuildCustomizationSpec) DeepCopyInto(out *BuildCustomizationSpec) {\n\t*out = *in\n\tif in.RegistryMirrors != nil {\n\t\tin, out := &in.RegistryMirrors, &out.RegistryMirrors\n\t\t*out = make([]RegistryMirror, len(*in))\n\t\tcopy(*out, *in)\n\t}\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BuildCustomizationSpec.\nfunc (in *BuildCustomizationSpec) DeepCopy() *BuildCustomizationSpec {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(BuildCustomizationSpec)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *Commit) DeepCopyInto(out *Commit) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Commit.\nfunc (in *Commit) DeepCopy() *Commit {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(Commit)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *CustomPackage) DeepCopyInto(out *CustomPackage) {\n\t*out = *in\n\tout.TypeMeta = in.TypeMeta\n\tin.ObjectMeta.DeepCopyInto(&out.ObjectMeta)\n\tout.Spec = in.Spec\n\tin.Status.DeepCopyInto(&out.Status)\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPackage.\nfunc (in *CustomPackage) DeepCopy() *CustomPackage {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(CustomPackage)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.\nfunc (in *CustomPackage) DeepCopyObject() runtime.Object {\n\tif c := in.DeepCopy(); c != nil {\n\t\treturn c\n\t}\n\treturn nil\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *CustomPackageList) DeepCopyInto(out *CustomPackageList) {\n\t*out = *in\n\tout.TypeMeta = in.TypeMeta\n\tin.ListMeta.DeepCopyInto(&out.ListMeta)\n\tif in.Items != nil {\n\t\tin, out := &in.Items, &out.Items\n\t\t*out = make([]CustomPackage, len(*in))\n\t\tfor i := range *in {\n\t\t\t(*in)[i].DeepCopyInto(&(*out)[i])\n\t\t}\n\t}\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPackageList.\nfunc (in *CustomPackageList) DeepCopy() *CustomPackageList {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(CustomPackageList)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.\nfunc (in *CustomPackageList) DeepCopyObject() runtime.Object {\n\tif c := in.DeepCopy(); c != nil {\n\t\treturn c\n\t}\n\treturn nil\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *CustomPackageSpec) DeepCopyInto(out *CustomPackageSpec) {\n\t*out = *in\n\tout.ArgoCD = in.ArgoCD\n\tout.GitServerAuthSecretRef = in.GitServerAuthSecretRef\n\tout.RemoteRepository = in.RemoteRepository\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPackageSpec.\nfunc (in *CustomPackageSpec) DeepCopy() *CustomPackageSpec {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(CustomPackageSpec)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *CustomPackageStatus) DeepCopyInto(out *CustomPackageStatus) {\n\t*out = *in\n\tif in.GitRepositoryRefs != nil {\n\t\tin, out := &in.GitRepositoryRefs, &out.GitRepositoryRefs\n\t\t*out = make([]ObjectRef, len(*in))\n\t\tcopy(*out, *in)\n\t}\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPackageStatus.\nfunc (in *CustomPackageStatus) DeepCopy() *CustomPackageStatus {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(CustomPackageStatus)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *EmbeddedArgoApplicationsPackageConfigSpec) DeepCopyInto(out *EmbeddedArgoApplicationsPackageConfigSpec) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmbeddedArgoApplicationsPackageConfigSpec.\nfunc (in *EmbeddedArgoApplicationsPackageConfigSpec) DeepCopy() *EmbeddedArgoApplicationsPackageConfigSpec {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(EmbeddedArgoApplicationsPackageConfigSpec)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *GitRepository) DeepCopyInto(out *GitRepository) {\n\t*out = *in\n\tout.TypeMeta = in.TypeMeta\n\tin.ObjectMeta.DeepCopyInto(&out.ObjectMeta)\n\tout.Spec = in.Spec\n\tout.Status = in.Status\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitRepository.\nfunc (in *GitRepository) DeepCopy() *GitRepository {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(GitRepository)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.\nfunc (in *GitRepository) DeepCopyObject() runtime.Object {\n\tif c := in.DeepCopy(); c != nil {\n\t\treturn c\n\t}\n\treturn nil\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *GitRepositoryList) DeepCopyInto(out *GitRepositoryList) {\n\t*out = *in\n\tout.TypeMeta = in.TypeMeta\n\tin.ListMeta.DeepCopyInto(&out.ListMeta)\n\tif in.Items != nil {\n\t\tin, out := &in.Items, &out.Items\n\t\t*out = make([]GitRepository, len(*in))\n\t\tfor i := range *in {\n\t\t\t(*in)[i].DeepCopyInto(&(*out)[i])\n\t\t}\n\t}\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitRepositoryList.\nfunc (in *GitRepositoryList) DeepCopy() *GitRepositoryList {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(GitRepositoryList)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.\nfunc (in *GitRepositoryList) DeepCopyObject() runtime.Object {\n\tif c := in.DeepCopy(); c != nil {\n\t\treturn c\n\t}\n\treturn nil\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *GitRepositorySource) DeepCopyInto(out *GitRepositorySource) {\n\t*out = *in\n\tout.RemoteRepository = in.RemoteRepository\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitRepositorySource.\nfunc (in *GitRepositorySource) DeepCopy() *GitRepositorySource {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(GitRepositorySource)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *GitRepositorySpec) DeepCopyInto(out *GitRepositorySpec) {\n\t*out = *in\n\tout.Customization = in.Customization\n\tout.SecretRef = in.SecretRef\n\tout.Source = in.Source\n\tout.Provider = in.Provider\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitRepositorySpec.\nfunc (in *GitRepositorySpec) DeepCopy() *GitRepositorySpec {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(GitRepositorySpec)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *GitRepositoryStatus) DeepCopyInto(out *GitRepositoryStatus) {\n\t*out = *in\n\tout.LatestCommit = in.LatestCommit\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitRepositoryStatus.\nfunc (in *GitRepositoryStatus) DeepCopy() *GitRepositoryStatus {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(GitRepositoryStatus)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *GiteaStatus) DeepCopyInto(out *GiteaStatus) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GiteaStatus.\nfunc (in *GiteaStatus) DeepCopy() *GiteaStatus {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(GiteaStatus)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *Localbuild) DeepCopyInto(out *Localbuild) {\n\t*out = *in\n\tout.TypeMeta = in.TypeMeta\n\tin.ObjectMeta.DeepCopyInto(&out.ObjectMeta)\n\tin.Spec.DeepCopyInto(&out.Spec)\n\tout.Status = in.Status\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Localbuild.\nfunc (in *Localbuild) DeepCopy() *Localbuild {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(Localbuild)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.\nfunc (in *Localbuild) DeepCopyObject() runtime.Object {\n\tif c := in.DeepCopy(); c != nil {\n\t\treturn c\n\t}\n\treturn nil\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *LocalbuildList) DeepCopyInto(out *LocalbuildList) {\n\t*out = *in\n\tout.TypeMeta = in.TypeMeta\n\tin.ListMeta.DeepCopyInto(&out.ListMeta)\n\tif in.Items != nil {\n\t\tin, out := &in.Items, &out.Items\n\t\t*out = make([]Localbuild, len(*in))\n\t\tfor i := range *in {\n\t\t\t(*in)[i].DeepCopyInto(&(*out)[i])\n\t\t}\n\t}\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalbuildList.\nfunc (in *LocalbuildList) DeepCopy() *LocalbuildList {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(LocalbuildList)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.\nfunc (in *LocalbuildList) DeepCopyObject() runtime.Object {\n\tif c := in.DeepCopy(); c != nil {\n\t\treturn c\n\t}\n\treturn nil\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *LocalbuildSpec) DeepCopyInto(out *LocalbuildSpec) {\n\t*out = *in\n\tin.PackageConfigs.DeepCopyInto(&out.PackageConfigs)\n\tin.BuildCustomization.DeepCopyInto(&out.BuildCustomization)\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalbuildSpec.\nfunc (in *LocalbuildSpec) DeepCopy() *LocalbuildSpec {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(LocalbuildSpec)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *LocalbuildStatus) DeepCopyInto(out *LocalbuildStatus) {\n\t*out = *in\n\tout.ArgoCD = in.ArgoCD\n\tout.Nginx = in.Nginx\n\tout.Gitea = in.Gitea\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalbuildStatus.\nfunc (in *LocalbuildStatus) DeepCopy() *LocalbuildStatus {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(LocalbuildStatus)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *NginxStatus) DeepCopyInto(out *NginxStatus) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NginxStatus.\nfunc (in *NginxStatus) DeepCopy() *NginxStatus {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(NginxStatus)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *ObjectRef) DeepCopyInto(out *ObjectRef) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectRef.\nfunc (in *ObjectRef) DeepCopy() *ObjectRef {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(ObjectRef)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *PackageConfigsSpec) DeepCopyInto(out *PackageConfigsSpec) {\n\t*out = *in\n\tout.Argo = in.Argo\n\tout.EmbeddedArgoApplications = in.EmbeddedArgoApplications\n\tif in.CustomPackageFiles != nil {\n\t\tin, out := &in.CustomPackageFiles, &out.CustomPackageFiles\n\t\t*out = make([]string, len(*in))\n\t\tcopy(*out, *in)\n\t}\n\tif in.CustomPackageDirs != nil {\n\t\tin, out := &in.CustomPackageDirs, &out.CustomPackageDirs\n\t\t*out = make([]string, len(*in))\n\t\tcopy(*out, *in)\n\t}\n\tif in.CustomPackageUrls != nil {\n\t\tin, out := &in.CustomPackageUrls, &out.CustomPackageUrls\n\t\t*out = make([]string, len(*in))\n\t\tcopy(*out, *in)\n\t}\n\tif in.CorePackageCustomization != nil {\n\t\tin, out := &in.CorePackageCustomization, &out.CorePackageCustomization\n\t\t*out = make(map[string]PackageCustomization, len(*in))\n\t\tfor key, val := range *in {\n\t\t\t(*out)[key] = val\n\t\t}\n\t}\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageConfigsSpec.\nfunc (in *PackageConfigsSpec) DeepCopy() *PackageConfigsSpec {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(PackageConfigsSpec)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *PackageCustomization) DeepCopyInto(out *PackageCustomization) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageCustomization.\nfunc (in *PackageCustomization) DeepCopy() *PackageCustomization {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(PackageCustomization)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *Provider) DeepCopyInto(out *Provider) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Provider.\nfunc (in *Provider) DeepCopy() *Provider {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(Provider)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *RegistryMirror) DeepCopyInto(out *RegistryMirror) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistryMirror.\nfunc (in *RegistryMirror) DeepCopy() *RegistryMirror {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(RegistryMirror)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *RemoteRepositorySpec) DeepCopyInto(out *RemoteRepositorySpec) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteRepositorySpec.\nfunc (in *RemoteRepositorySpec) DeepCopy() *RemoteRepositorySpec {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(RemoteRepositorySpec)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n\n// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.\nfunc (in *SecretReference) DeepCopyInto(out *SecretReference) {\n\t*out = *in\n}\n\n// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretReference.\nfunc (in *SecretReference) DeepCopy() *SecretReference {\n\tif in == nil {\n\t\treturn nil\n\t}\n\tout := new(SecretReference)\n\tin.DeepCopyInto(out)\n\treturn out\n}\n"
  },
  {
    "path": "docs/images/source/idpbuilder.excalidraw",
    "content": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rectangle\",\n      \"version\": 724,\n      \"versionNonce\": 1733856607,\n      \"isDeleted\": false,\n      \"id\": \"rn5VxKirQVQTGadXpV6do\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 290.851641955539,\n      \"y\": -205.70273211471522,\n      \"strokeColor\": \"#1971c2\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 734.3860626220707,\n      \"height\": 402.964050292969,\n      \"seed\": 1808569105,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 3\n      },\n      \"boundElements\": [\n        {\n          \"id\": \"14YqOkt6L4M1dDmR0ETLV\",\n          \"type\": \"arrow\"\n        },\n        {\n          \"id\": \"QKW8LI503Bc2mGvHDoU9l\",\n          \"type\": \"arrow\"\n        },\n        {\n          \"id\": \"Bvu5NEGthDTE0Lox0pKMY\",\n          \"type\": \"arrow\"\n        },\n        {\n          \"id\": \"nHmMkx97YgjINcsVC4VlS\",\n          \"type\": \"arrow\"\n        }\n      ],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 1208,\n      \"versionNonce\": 990927288,\n      \"isDeleted\": false,\n      \"id\": \"ZGIq8yJ3BbmfwBJLKF255\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"solid\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 335.41134196774556,\n      \"y\": -142.72070696823084,\n      \"strokeColor\": \"#f08c00\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 128.3000030517578,\n      \"height\": 45,\n      \"seed\": 1137314033,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702500158952,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 36,\n      \"fontFamily\": 1,\n      \"text\": \"ArgoCD\",\n      \"textAlign\": \"left\",\n      \"verticalAlign\": \"top\",\n      \"containerId\": null,\n      \"originalText\": \"ArgoCD\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 32\n    },\n    {\n      \"type\": \"line\",\n      \"version\": 943,\n      \"versionNonce\": 1893290495,\n      \"isDeleted\": false,\n      \"id\": \"c2F8xEpYpiskw9d3M9a8w\",\n      \"fillStyle\": \"cross-hatch\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"solid\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 316.71289927073803,\n      \"y\": -244.03680215324493,\n      \"strokeColor\": \"#326ce5\",\n      \"backgroundColor\": \"#326ce5\",\n      \"width\": 95.45497317148764,\n      \"height\": 92.84673785134679,\n      \"seed\": 207471313,\n      \"groupIds\": [\n        \"ErJ6hMmjgHu3hLAgUD5mh\",\n        \"yCr05koDdbRalXjQDOhWf\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": null,\n      \"endBinding\": null,\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": null,\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          0,\n          0\n        ],\n        [\n          -2.460961781613241,\n          0.6518708205633831\n        ],\n        [\n          -35.78710995652396,\n          16.547951146090107\n        ],\n        [\n          -35.78710995652396,\n          16.547951146090107\n        ],\n        [\n          -37.99651824523383,\n          18.295368383544606\n        ],\n        [\n          -39.22587770163469,\n          20.829964132840722\n        ],\n        [\n          -47.38323404404179,\n          56.50643421214563\n        ],\n        [\n          -47.38323404404179,\n          56.50643421214563\n        ],\n        [\n          -47.44490761168415,\n          59.02869632175984\n        ],\n        [\n          -46.486164083674566,\n          61.371546036703016\n        ],\n        [\n          -46.127336086160476,\n          61.87390302314864\n        ],\n        [\n          -23.102541153377942,\n          90.5023995445162\n        ],\n        [\n          -23.102541153377942,\n          90.5023995445162\n        ],\n        [\n          -20.88341281591535,\n          92.2385995862048\n        ],\n        [\n          -18.13277162331118,\n          92.84673785134694\n        ],\n        [\n          18.796609460770327,\n          92.84673785134657\n        ],\n        [\n          18.796609460770327,\n          92.84673785134657\n        ],\n        [\n          21.553601408419915,\n          92.21505588002745\n        ],\n        [\n          23.7723561720563,\n          90.47548511877764\n        ],\n        [\n          46.7851882763901,\n          61.84101141619088\n        ],\n        [\n          46.7851882763901,\n          61.84101141619088\n        ],\n        [\n          48.01006555980353,\n          59.31202497770516\n        ],\n        [\n          47.98128041322563,\n          56.5004570309265\n        ],\n        [\n          39.770104899555754,\n          20.794081083564848\n        ],\n        [\n          39.770104899555754,\n          20.794081083564848\n        ],\n        [\n          38.538497583853335,\n          18.259485334268803\n        ],\n        [\n          36.33133216395502,\n          16.51206809681414\n        ],\n        [\n          3.0590107017396324,\n          0.6548610152590679\n        ],\n        [\n          3.0590107017396324,\n          0.6548610152590679\n        ],\n        [\n          -0.029900164639430578,\n          1.0408340855860843e-17\n        ],\n        [\n          0,\n          0\n        ]\n      ]\n    },\n    {\n      \"type\": \"line\",\n      \"version\": 1459,\n      \"versionNonce\": 1660729887,\n      \"isDeleted\": false,\n      \"id\": \"-sn-l6KrmGQBkTSK90eC2\",\n      \"fillStyle\": \"solid\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"solid\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 316.71182092183017,\n      \"y\": -232.215284031392,\n      \"strokeColor\": \"#326ce5\",\n      \"backgroundColor\": \"#fff\",\n      \"width\": 69.89576554459413,\n      \"height\": 68.58285031337438,\n      \"seed\": 1646215345,\n      \"groupIds\": [\n        \"yCr05koDdbRalXjQDOhWf\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": null,\n      \"endBinding\": null,\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": null,\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          0,\n          0\n        ],\n        [\n          -1.432324825301546,\n          0.706068790071741\n        ],\n        [\n          -1.9586047951674281,\n          2.2127733048543057\n        ],\n        [\n          -1.9586047951674281,\n          2.7749363239961387\n        ],\n        [\n          -1.9586047951674281,\n          2.7749363239961387\n        ],\n        [\n          -1.6835033185244077,\n          4.667755053539658\n        ],\n        [\n          -1.4861479733611118,\n          8.285937332102842\n        ],\n        [\n          -2.138020041547117,\n          9.317567156587057\n        ],\n        [\n          -2.1828717143605587,\n          10.1608131111541\n        ],\n        [\n          -2.1828717143605587,\n          10.1608131111541\n        ],\n        [\n          -5.780122451821784,\n          10.716997523222345\n        ],\n        [\n          -9.423676381772387,\n          11.828850188102779\n        ],\n        [\n          -12.844922516336029,\n          13.45792009292789\n        ],\n        [\n          -15.98864037024059,\n          15.574210114965936\n        ],\n        [\n          -18.799598051379608,\n          18.14772598319378\n        ],\n        [\n          -19.517253333480934,\n          17.639386112111524\n        ],\n        [\n          -19.517253333480934,\n          17.639386112111524\n        ],\n        [\n          -20.698396813851012,\n          17.519776898427985\n        ],\n        [\n          -23.380636924047703,\n          15.0976867567003\n        ],\n        [\n          -24.687368225174932,\n          13.707230717019739\n        ],\n        [\n          -25.129922030633214,\n          13.354383108896979\n        ],\n        [\n          -25.129922030633214,\n          13.354383108896979\n        ],\n        [\n          -26.51439946324018,\n          12.831091729640708\n        ],\n        [\n          -28.102213699792635,\n          13.536786945886227\n        ],\n        [\n          -28.46477993081394,\n          15.107405379598852\n        ],\n        [\n          -27.611815353348355,\n          16.476185582233697\n        ],\n        [\n          -27.199163138383813,\n          16.805110206936313\n        ],\n        [\n          -27.199163138383813,\n          16.805110206936313\n        ],\n        [\n          -25.548554278525646,\n          17.770955391650862\n        ],\n        [\n          -22.56430111765615,\n          19.864120908675922\n        ],\n        [\n          -22.166601836719924,\n          21.01236993037974\n        ],\n        [\n          -21.51472976853398,\n          21.610415998797468\n        ],\n        [\n          -21.51472976853398,\n          21.610415998797468\n        ],\n        [\n          -23.76100352013141,\n          25.760906759200605\n        ],\n        [\n          -25.20355599831609,\n          30.21443718537146\n        ],\n        [\n          -25.816881521396525,\n          34.85579539828312\n        ],\n        [\n          -25.57546727840974,\n          39.56975526036552\n        ],\n        [\n          -26.4127317741946,\n          39.808973687732575\n        ],\n        [\n          -26.4127317741946,\n          39.808973687732575\n        ],\n        [\n          -27.26793922047171,\n          40.67016116693759\n        ],\n        [\n          -30.838276958048898,\n          41.25923861181782\n        ],\n        [\n          -32.75202722869432,\n          41.40874799014082\n        ],\n        [\n          -33.281297215024175,\n          41.528360055533014\n        ],\n        [\n          -33.34110182186594,\n          41.528360055533014\n        ],\n        [\n          -33.34110182186594,\n          41.528360055533014\n        ],\n        [\n          -34.32277541514808,\n          41.949032700926544\n        ],\n        [\n          -34.92197214798472,\n          42.75908334157035\n        ],\n        [\n          -34.64656696437611,\n          44.74352461662653\n        ],\n        [\n          -34.4983223188159,\n          44.91330393965695\n        ],\n        [\n          -33.54564347269364,\n          45.450098159119925\n        ],\n        [\n          -32.45300276863114,\n          45.406689450856575\n        ],\n        [\n          -32.414129702891266,\n          45.406689450856575\n        ],\n        [\n          -31.875888241315288,\n          45.34688912157768\n        ],\n        [\n          -31.875888241315288,\n          45.34688912157768\n        ],\n        [\n          -30.087728643135613,\n          44.695017053391766\n        ],\n        [\n          -26.613077135821825,\n          43.67833731122727\n        ],\n        [\n          -25.4708081470459,\n          44.08201947679996\n        ],\n        [\n          -24.57373904441927,\n          43.93250439505977\n        ],\n        [\n          -24.57373904441927,\n          43.93250439505977\n        ],\n        [\n          -22.726614667579607,\n          48.26815659466553\n        ],\n        [\n          -20.14894100821738,\n          52.1676114472755\n        ],\n        [\n          -16.913041673915092,\n          55.54003062724162\n        ],\n        [\n          -13.09124454981824,\n          58.29459862258373\n        ],\n        [\n          -13.456052223796778,\n          59.05710557749845\n        ],\n        [\n          -13.456052223796778,\n          59.05710557749845\n        ],\n        [\n          -13.27663697741718,\n          60.18143161578213\n        ],\n        [\n          -15.079749509625142,\n          63.44676913793114\n        ],\n        [\n          -16.15025239984924,\n          65.04056055570291\n        ],\n        [\n          -16.404422335390343,\n          65.5788034431332\n        ],\n        [\n          -16.404422335390343,\n          65.5788034431332\n        ],\n        [\n          -16.674844158225717,\n          66.61201739174305\n        ],\n        [\n          -16.40310484601853,\n          67.58225991111416\n        ],\n        [\n          -15.697771796764803,\n          68.30179161747229\n        ],\n        [\n          -14.667403853334795,\n          68.58285031337438\n        ],\n        [\n          -14.460769048396918,\n          68.57203093095742\n        ],\n        [\n          -13.451326942651566,\n          68.15994192844089\n        ],\n        [\n          -12.807171597929074,\n          67.28024686044131\n        ],\n        [\n          -12.55898169531586,\n          66.77190698935901\n        ],\n        [\n          -12.55898169531586,\n          66.77190698935901\n        ],\n        [\n          -11.984855758609651,\n          64.94786291604923\n        ],\n        [\n          -11.287758443784064,\n          62.994870283400545\n        ],\n        [\n          -10.44488748889749,\n          61.37154657139842\n        ],\n        [\n          -9.58968004262038,\n          60.95291574936029\n        ],\n        [\n          -9.14114620423424,\n          60.13657994296869\n        ],\n        [\n          -9.14114620423424,\n          60.13657994296869\n        ],\n        [\n          -4.608275541477875,\n          61.41782409851035\n        ],\n        [\n          0.04370528595749003,\n          61.85256707412143\n        ],\n        [\n          4.697756453834344,\n          61.440535105776746\n        ],\n        [\n          9.236826731080514,\n          60.18143161578213\n        ],\n        [\n          9.634531715433956,\n          60.94394427411406\n        ],\n        [\n          9.634531715433956,\n          60.94394427411406\n        ],\n        [\n          10.651205754181227,\n          61.55694185070587\n        ],\n        [\n          12.014755923249211,\n          64.90599983384534\n        ],\n        [\n          12.594861892883253,\n          66.73303249776492\n        ],\n        [\n          12.843051795496526,\n          67.24137236884712\n        ],\n        [\n          12.843051795496526,\n          67.24137236884712\n        ],\n        [\n          13.470404873165572,\n          68.10570813434327\n        ],\n        [\n          14.392915494040242,\n          68.51092451914111\n        ],\n        [\n          16.267309334338545,\n          67.80347835381698\n        ],\n        [\n          16.392453714408873,\n          67.63309446856408\n        ],\n        [\n          16.712478156580296,\n          66.59177596412158\n        ],\n        [\n          16.440299681249144,\n          65.53694036092938\n        ],\n        [\n          16.180149712780135,\n          64.9986974734991\n        ],\n        [\n          16.180149712780135,\n          64.9986974734991\n        ],\n        [\n          15.109646822556089,\n          63.41088323694667\n        ],\n        [\n          13.315505765594258,\n          60.25020912372438\n        ],\n        [\n          13.518843995393977,\n          59.05411698688884\n        ],\n        [\n          13.186927928373212,\n          58.24974124635304\n        ],\n        [\n          16.998681334791385,\n          55.478405204460664\n        ],\n        [\n          20.222572124191764,\n          52.091733184926845\n        ],\n        [\n          22.78655473057989,\n          48.18083157400843\n        ],\n        [\n          24.618589291378605,\n          43.83681816479638\n        ],\n        [\n          25.46781100131068,\n          43.98633324653653\n        ],\n        [\n          25.46781100131068,\n          43.98633324653653\n        ],\n        [\n          26.583171267765383,\n          43.573679605717764\n        ],\n        [\n          30.057824200933453,\n          44.590359347882234\n        ],\n        [\n          31.845982373258824,\n          45.27811161363543\n        ],\n        [\n          32.36029942556033,\n          45.38875220378148\n        ],\n        [\n          32.39917391715455,\n          45.38875220378148\n        ],\n        [\n          32.39917391715455,\n          45.38875220378148\n        ],\n        [\n          33.46608365454636,\n          45.437236953347536\n        ],\n        [\n          34.358103807102054,\n          44.968701230862074\n        ],\n        [\n          34.91430675527615,\n          44.12855365768571\n        ],\n        [\n          34.97379339660941,\n          43.06219715176162\n        ],\n        [\n          34.913958846827356,\n          42.844064257760614\n        ],\n        [\n          34.28972553836342,\n          41.946580231533176\n        ],\n        [\n          33.287275822097925,\n          41.5104171050407\n        ],\n        [\n          32.707169852463785,\n          41.372867792573494\n        ],\n        [\n          32.707169852463785,\n          41.372867792573494\n        ],\n        [\n          30.79341673010979,\n          41.22335271083331\n        ],\n        [\n          27.223083270095493,\n          40.63428096937031\n        ],\n        [\n          26.361895790890525,\n          39.77309349016526\n        ],\n        [\n          25.55453145974511,\n          39.53387506279818\n        ],\n        [\n          25.55453145974511,\n          39.53387506279818\n        ],\n        [\n          25.766601621268805,\n          34.82487147025736\n        ],\n        [\n          25.129050833656983,\n          30.192795568828938\n        ],\n        [\n          23.668126222836204,\n          25.751142508964527\n        ],\n        [\n          21.410069211315992,\n          21.61340744111573\n        ],\n        [\n          22.11576442756147,\n          20.961535372929777\n        ],\n        [\n          22.11576442756147,\n          20.961535372929777\n        ],\n        [\n          22.486549282759302,\n          19.831226450009634\n        ],\n        [\n          25.446879460208716,\n          17.75002385054896\n        ],\n        [\n          27.09748832006682,\n          16.784178665834418\n        ],\n        [\n          27.534062092597303,\n          16.431331057711628\n        ],\n        [\n          27.534062092597303,\n          16.431331057711628\n        ],\n        [\n          28.479973834218885,\n          14.665236554801158\n        ],\n        [\n          28.198555823033498,\n          13.697754489351949\n        ],\n        [\n          27.423444316119998,\n          12.963008917628864\n        ],\n        [\n          27.136362811661037,\n          12.837071762568605\n        ],\n        [\n          26.02624968902474,\n          12.777268581581119\n        ],\n        [\n          25.05516306390892,\n          13.318500059621057\n        ],\n        [\n          24.612606406742078,\n          13.67134766774382\n        ],\n        [\n          24.612606406742078,\n          13.67134766774382\n        ],\n        [\n          23.30587367976053,\n          15.06180655913298\n        ],\n        [\n          20.695402519824324,\n          17.52276834074621\n        ],\n        [\n          19.487344613715795,\n          17.654337620285542\n        ],\n        [\n          18.730820543437513,\n          18.19258050771583\n        ],\n        [\n          18.730820543437513,\n          18.19258050771583\n        ],\n        [\n          15.189352077842008,\n          15.094883527149458\n        ],\n        [\n          11.181977165087368,\n          12.698025303087958\n        ],\n        [\n          6.811283170241874,\n          11.052463967446453\n        ],\n        [\n          2.1798802720422907,\n          10.208656226285797\n        ],\n        [\n          2.135022895811664,\n          9.320557173051004\n        ],\n        [\n          1.4831508276257466,\n          8.327800414306662\n        ],\n        [\n          1.7104091891370812,\n          4.718588185135307\n        ],\n        [\n          1.9855135174886707,\n          2.825770881446082\n        ],\n        [\n          1.9855135174886707,\n          2.227724813028326\n        ],\n        [\n          1.9855135174886707,\n          2.227724813028326\n        ],\n        [\n          1.4603542691014244,\n          0.7210202982457582\n        ],\n        [\n          0.026908722321194466,\n          0.0149515081740186\n        ],\n        [\n          0,\n          0\n        ]\n      ]\n    },\n    {\n      \"type\": \"line\",\n      \"version\": 1107,\n      \"versionNonce\": 1757290047,\n      \"isDeleted\": false,\n      \"id\": \"0zj6xQuydJV84vNPw3a0y\",\n      \"fillStyle\": \"cross-hatch\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"solid\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 314.2267921933967,\n      \"y\": -216.52528173709106,\n      \"strokeColor\": \"#326ce5\",\n      \"backgroundColor\": \"#326ce5\",\n      \"width\": 11.99681582446548,\n      \"height\": 11.951961299943425,\n      \"seed\": 1656095377,\n      \"groupIds\": [\n        \"yCr05koDdbRalXjQDOhWf\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": null,\n      \"endBinding\": null,\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": null,\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          -0.598046068417764,\n          10.444884637188963\n        ],\n        [\n          -0.6429005929397977,\n          10.444884637189041\n        ],\n        [\n          -0.6429005929397977,\n          10.444884637189041\n        ],\n        [\n          -1.635657351684161,\n          11.95196129994343\n        ],\n        [\n          -3.4297984086460485,\n          11.790489004056063\n        ],\n        [\n          -11.99681582446549,\n          5.720316419125781\n        ],\n        [\n          -11.99681582446549,\n          5.720316419125781\n        ],\n        [\n          -7.434318761095046,\n          2.340488500224822\n        ],\n        [\n          -2.120077091054865,\n          0.3408846905583963\n        ],\n        [\n          -0.005980032927881736,\n          9.941700240823081e-15\n        ],\n        [\n          0,\n          0\n        ]\n      ]\n    },\n    {\n      \"type\": \"line\",\n      \"version\": 1105,\n      \"versionNonce\": 1425931871,\n      \"isDeleted\": false,\n      \"id\": \"BDoCa--PCN_pGPu0n0vxp\",\n      \"fillStyle\": \"cross-hatch\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"solid\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 319.34931079417174,\n      \"y\": -216.7677382571792,\n      \"strokeColor\": \"#326ce5\",\n      \"backgroundColor\": \"#326ce5\",\n      \"width\": 11.93102975884153,\n      \"height\": 11.999804415075133,\n      \"seed\": 182028401,\n      \"groupIds\": [\n        \"yCr05koDdbRalXjQDOhWf\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": null,\n      \"endBinding\": null,\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": null,\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          0,\n          0\n        ],\n        [\n          6.437595275692294,\n          1.8965544678055735\n        ],\n        [\n          11.931029758841582,\n          5.753208026083467\n        ],\n        [\n          3.4447499168200473,\n          11.784508971128222\n        ],\n        [\n          3.4447499168200473,\n          11.784508971128222\n        ],\n        [\n          1.596785711798569,\n          11.999804415075136\n        ],\n        [\n          0.8701589544511403,\n          11.359895264453584\n        ],\n        [\n          0.5920660354898679,\n          10.432921719624602\n        ],\n        [\n          0,\n          0\n        ]\n      ]\n    },\n    {\n      \"type\": \"line\",\n      \"version\": 1109,\n      \"versionNonce\": 1250744959,\n      \"isDeleted\": false,\n      \"id\": \"aM2pb5buDydJO5vIZU7Xh\",\n      \"fillStyle\": \"cross-hatch\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"solid\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 299.2709047804233,\n      \"y\": -207.02849463627263,\n      \"strokeColor\": \"#326ce5\",\n      \"backgroundColor\": \"#326ce5\",\n      \"width\": 11.300092083466069,\n      \"height\": 12.977612517354048,\n      \"seed\": 1414615633,\n      \"groupIds\": [\n        \"yCr05koDdbRalXjQDOhWf\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": null,\n      \"endBinding\": null,\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": null,\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          7.8344106255441055,\n          6.991163245122797\n        ],\n        [\n          7.8344106255441455,\n          7.03601776964485\n        ],\n        [\n          7.8344106255441455,\n          7.03601776964485\n        ],\n        [\n          8.390593611758083,\n          8.752412695127\n        ],\n        [\n          7.143666917472586,\n          10.053165389180608\n        ],\n        [\n          7.143666917472592,\n          10.083062702111473\n        ],\n        [\n          -2.909498471708001,\n          12.974621075035827\n        ],\n        [\n          -2.909498471708001,\n          12.974621075035827\n        ],\n        [\n          -2.534264951098859,\n          6.243208559178456\n        ],\n        [\n          0.0029885906096372024,\n          -0.002991442318245268\n        ],\n        [\n          0,\n          0\n        ]\n      ]\n    },\n    {\n      \"type\": \"line\",\n      \"version\": 1107,\n      \"versionNonce\": 1043018399,\n      \"isDeleted\": false,\n      \"id\": \"ZMKPKTRRnwiHqgBmqk9Ku\",\n      \"fillStyle\": \"cross-hatch\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"solid\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 334.25551510026025,\n      \"y\": -207.02430181169802,\n      \"strokeColor\": \"#326ce5\",\n      \"backgroundColor\": \"#326ce5\",\n      \"width\": 11.315043591640089,\n      \"height\": 12.938735174051288,\n      \"seed\": 334815281,\n      \"groupIds\": [\n        \"yCr05koDdbRalXjQDOhWf\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": null,\n      \"endBinding\": null,\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": null,\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          0,\n          0\n        ],\n        [\n          2.5544065689194433,\n          6.224917700237365\n        ],\n        [\n          2.996216078433857,\n          12.938735174051327\n        ],\n        [\n          -7.071900818920772,\n          10.038211029298026\n        ],\n        [\n          -7.071900818920771,\n          9.99933653770387\n        ],\n        [\n          -7.071900818920771,\n          9.99933653770387\n        ],\n        [\n          -8.318827513206253,\n          8.69858669535882\n        ],\n        [\n          -7.7626416752837,\n          6.9821946215852595\n        ],\n        [\n          0.011960065855774405,\n          0.023920131711560263\n        ],\n        [\n          0,\n          0\n        ]\n      ]\n    },\n    {\n      \"type\": \"line\",\n      \"version\": 1106,\n      \"versionNonce\": 948537023,\n      \"isDeleted\": false,\n      \"id\": \"nxsrvolaIiv2iExwpG_vq\",\n      \"fillStyle\": \"cross-hatch\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"solid\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 315.10606373478595,\n      \"y\": -199.58286886808946,\n      \"strokeColor\": \"#326ce5\",\n      \"backgroundColor\": \"#326ce5\",\n      \"width\": 7.1556269833283865,\n      \"height\": 6.982197473293844,\n      \"seed\": 397128209,\n      \"groupIds\": [\n        \"yCr05koDdbRalXjQDOhWf\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": null,\n      \"endBinding\": null,\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": null,\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          3.2055314894529396,\n          -1.1102230246251565e-15\n        ],\n        [\n          5.164130581203231,\n          2.487876207351637\n        ],\n        [\n          4.452458183738401,\n          5.597715763123981\n        ],\n        [\n          1.5728627283784298,\n          6.98219747329385\n        ],\n        [\n          -1.312712759909417,\n          5.597715763123977\n        ],\n        [\n          -1.9914964021251595,\n          2.4878762073516323\n        ],\n        [\n          0,\n          0\n        ]\n      ]\n    },\n    {\n      \"type\": \"line\",\n      \"version\": 1108,\n      \"versionNonce\": 1481135839,\n      \"isDeleted\": false,\n      \"id\": \"Paw3M3HwuulNv623fueDx\",\n      \"fillStyle\": \"cross-hatch\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"solid\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 325.3745245679115,\n      \"y\": -191.0965890260677,\n      \"strokeColor\": \"#326ce5\",\n      \"backgroundColor\": \"#326ce5\",\n      \"width\": 12.304808908066201,\n      \"height\": 12.19417402133738,\n      \"seed\": 74270705,\n      \"groupIds\": [\n        \"yCr05koDdbRalXjQDOhWf\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": null,\n      \"endBinding\": null,\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": null,\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          0,\n          0\n        ],\n        [\n          0.4036821655727135,\n          2.7755575615628914e-15\n        ],\n        [\n          10.770817819573345,\n          1.7492893841484127\n        ],\n        [\n          10.770817819573345,\n          1.7492893841484127\n        ],\n        [\n          9.385126984958402,\n          4.851794345409312\n        ],\n        [\n          7.505486000841536,\n          7.663596132293022\n        ],\n        [\n          5.18403550721024,\n          10.129462852693091\n        ],\n        [\n          2.472921847469034,\n          12.1941740213374\n        ],\n        [\n          -1.5339910884928634,\n          2.49385909198812\n        ],\n        [\n          -1.5339910884928634,\n          2.49385909198812\n        ],\n        [\n          -1.4077573557385041,\n          0.8748471633845953\n        ],\n        [\n          -0.011960065855776133,\n          0.044857376230654375\n        ],\n        [\n          0,\n          0\n        ]\n      ]\n    },\n    {\n      \"type\": \"line\",\n      \"version\": 1106,\n      \"versionNonce\": 335028991,\n      \"isDeleted\": false,\n      \"id\": \"sEZR59QTYvH1q70VhVpuN\",\n      \"fillStyle\": \"cross-hatch\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"solid\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 308.1107476911061,\n      \"y\": -190.8484195689607,\n      \"strokeColor\": \"#326ce5\",\n      \"backgroundColor\": \"#326ce5\",\n      \"width\": 12.230054218904701,\n      \"height\": 12.107453562902904,\n      \"seed\": 1950425553,\n      \"groupIds\": [\n        \"yCr05koDdbRalXjQDOhWf\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": null,\n      \"endBinding\": null,\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": null,\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          0,\n          0\n        ],\n        [\n          1.4472734817670032,\n          0.801381446508931\n        ],\n        [\n          1.5878142365524563,\n          2.446007421730604\n        ],\n        [\n          1.587814236552457,\n          2.4848819133247853\n        ],\n        [\n          -2.395178567697883,\n          12.107453562902913\n        ],\n        [\n          -2.395178567697883,\n          12.107453562902913\n        ],\n        [\n          -7.370925278983947,\n          7.620609476901985\n        ],\n        [\n          -10.642239982352251,\n          1.7702152218331175\n        ],\n        [\n          -0.3648076739785433,\n          0.026908722321190404\n        ],\n        [\n          -0.3648076739785433,\n          0.026908722321190404\n        ],\n        [\n          -0.017942950492249525,\n          0.026908722321187968\n        ],\n        [\n          0,\n          0\n        ]\n      ]\n    },\n    {\n      \"type\": \"line\",\n      \"version\": 1110,\n      \"versionNonce\": 1008298783,\n      \"isDeleted\": false,\n      \"id\": \"2SpVvudZ8y4_Re0DhpGuH\",\n      \"fillStyle\": \"cross-hatch\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"solid\",\n      \"roughness\": 1,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 316.75014343286284,\n      \"y\": -186.8614219006986,\n      \"strokeColor\": \"#326ce5\",\n      \"backgroundColor\": \"#326ce5\",\n      \"width\": 13.261688320951794,\n      \"height\": 11.151697723204514,\n      \"seed\": 1413398449,\n      \"groupIds\": [\n        \"yCr05koDdbRalXjQDOhWf\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": null,\n      \"endBinding\": null,\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": null,\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          0,\n          0\n        ],\n        [\n          0.9333756306292258,\n          0.23297888895687952\n        ],\n        [\n          1.6057571870447254,\n          0.9209935119010776\n        ],\n        [\n          1.6446316786388921,\n          0.9209935119010871\n        ],\n        [\n          6.710087438969065,\n          10.062134012718186\n        ],\n        [\n          4.685699429886235,\n          10.660182932844489\n        ],\n        [\n          4.685699429886235,\n          10.660182932844489\n        ],\n        [\n          -0.9721987914686103,\n          11.151697723204538\n        ],\n        [\n          -6.5516008819827345,\n          10.080076963210427\n        ],\n        [\n          -1.4682021711602933,\n          0.9389307589761464\n        ],\n        [\n          -1.4682021711602933,\n          0.9389307589761464\n        ],\n        [\n          0.026914425738386212,\n          0.05681173866922885\n        ],\n        [\n          0,\n          0\n        ]\n      ]\n    },\n    {\n      \"type\": \"rectangle\",\n      \"version\": 747,\n      \"versionNonce\": 1025290047,\n      \"isDeleted\": false,\n      \"id\": \"ovJ_8JRWUYtl5SwIsoTD6\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 692.0446732665741,\n      \"y\": -115.22070696823084,\n      \"strokeColor\": \"#1e1e1e\",\n      \"backgroundColor\": \"#b2f2bb\",\n      \"width\": 304.9999999999999,\n      \"height\": 257.9999999999999,\n      \"seed\": 42836369,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 3\n      },\n      \"boundElements\": [\n        {\n          \"id\": \"Bvu5NEGthDTE0Lox0pKMY\",\n          \"type\": \"arrow\"\n        },\n        {\n          \"id\": \"6KxS52QdlYIpoAD1U0DXi\",\n          \"type\": \"arrow\"\n        }\n      ],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false\n    },\n    {\n      \"type\": \"rectangle\",\n      \"version\": 267,\n      \"versionNonce\": 518480799,\n      \"isDeleted\": false,\n      \"id\": \"gO4o6gRc5z57hSlRJcNHT\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 564.7363621104851,\n      \"y\": 276.1118915651209,\n      \"strokeColor\": \"#2f9e44\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 189,\n      \"height\": 116,\n      \"seed\": 744834929,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 3\n      },\n      \"boundElements\": [\n        {\n          \"type\": \"text\",\n          \"id\": \"b0yoow8nriD3ymO5GaMiK\"\n        },\n        {\n          \"id\": \"tJR6pa6ndvgR0PAy_y0T6\",\n          \"type\": \"arrow\"\n        },\n        {\n          \"id\": \"QKW8LI503Bc2mGvHDoU9l\",\n          \"type\": \"arrow\"\n        }\n      ],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 294,\n      \"versionNonce\": 758987192,\n      \"isDeleted\": false,\n      \"id\": \"b0yoow8nriD3ymO5GaMiK\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 595.203029285778,\n      \"y\": 299.1118915651209,\n      \"strokeColor\": \"#2f9e44\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 128.06666564941406,\n      \"height\": 70,\n      \"seed\": 1812803921,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702500141084,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 28,\n      \"fontFamily\": 1,\n      \"text\": \"Core \\nPackages\",\n      \"textAlign\": \"center\",\n      \"verticalAlign\": \"middle\",\n      \"containerId\": \"gO4o6gRc5z57hSlRJcNHT\",\n      \"originalText\": \"Core Packages\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 60\n    },\n    {\n      \"type\": \"rectangle\",\n      \"version\": 96,\n      \"versionNonce\": 414522399,\n      \"isDeleted\": false,\n      \"id\": \"-TheK_iiszzs08UFHds1X\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 534.7363621104846,\n      \"y\": 631.1118915651214,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 275.0000000000001,\n      \"height\": 121,\n      \"seed\": 652009265,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 3\n      },\n      \"boundElements\": [\n        {\n          \"type\": \"text\",\n          \"id\": \"BEuOD-IEnvFbbjGNWOgDJ\"\n        },\n        {\n          \"id\": \"14YqOkt6L4M1dDmR0ETLV\",\n          \"type\": \"arrow\"\n        },\n        {\n          \"id\": \"tJR6pa6ndvgR0PAy_y0T6\",\n          \"type\": \"arrow\"\n        },\n        {\n          \"id\": \"Bvu5NEGthDTE0Lox0pKMY\",\n          \"type\": \"arrow\"\n        },\n        {\n          \"id\": \"nHmMkx97YgjINcsVC4VlS\",\n          \"type\": \"arrow\"\n        },\n        {\n          \"id\": \"4AOkOmojUQrdiA36lQ8DU\",\n          \"type\": \"arrow\"\n        }\n      ],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 110,\n      \"versionNonce\": 1293566015,\n      \"isDeleted\": false,\n      \"id\": \"BEuOD-IEnvFbbjGNWOgDJ\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 546.3696934093127,\n      \"y\": 674.1118915651214,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 251.73333740234375,\n      \"height\": 35,\n      \"seed\": 725340433,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 28,\n      \"fontFamily\": 1,\n      \"text\": \"IDPBUILDER CLI\",\n      \"textAlign\": \"center\",\n      \"verticalAlign\": \"middle\",\n      \"containerId\": \"-TheK_iiszzs08UFHds1X\",\n      \"originalText\": \"IDPBUILDER CLI\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 25\n    },\n    {\n      \"type\": \"arrow\",\n      \"version\": 249,\n      \"versionNonce\": 1259703281,\n      \"isDeleted\": false,\n      \"id\": \"14YqOkt6L4M1dDmR0ETLV\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 549.7363621104851,\n      \"y\": 626.1118915651214,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 168,\n      \"height\": 419,\n      \"seed\": 245466865,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 2\n      },\n      \"boundElements\": [\n        {\n          \"type\": \"text\",\n          \"id\": \"iCi0zfwHPwogLyCB1WOxr\"\n        }\n      ],\n      \"updated\": 1702423269709,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": {\n        \"elementId\": \"-TheK_iiszzs08UFHds1X\",\n        \"focus\": -0.2645777715329469,\n        \"gap\": 5\n      },\n      \"endBinding\": {\n        \"elementId\": \"rn5VxKirQVQTGadXpV6do\",\n        \"focus\": 0.14877182187672447,\n        \"gap\": 9.850573386867609\n      },\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": \"arrow\",\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          -168,\n          -159\n        ],\n        [\n          -53.026868283065824,\n          -419\n        ]\n      ]\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 47,\n      \"versionNonce\": 52195519,\n      \"isDeleted\": false,\n      \"id\": \"iCi0zfwHPwogLyCB1WOxr\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 1331.7446934093132,\n      \"y\": 446.11189156512137,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 165.98333740234375,\n      \"height\": 70,\n      \"seed\": 1268089041,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423259436,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 28,\n      \"fontFamily\": 1,\n      \"text\": \"1. Craete\\nKind Cluster\",\n      \"textAlign\": \"center\",\n      \"verticalAlign\": \"middle\",\n      \"containerId\": \"14YqOkt6L4M1dDmR0ETLV\",\n      \"originalText\": \"1. Craete\\nKind Cluster\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 60\n    },\n    {\n      \"type\": \"arrow\",\n      \"version\": 296,\n      \"versionNonce\": 2024145841,\n      \"isDeleted\": false,\n      \"id\": \"tJR6pa6ndvgR0PAy_y0T6\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 662.3990797216493,\n      \"y\": 627.1118915651214,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 9.749588133858879,\n      \"height\": 228,\n      \"seed\": 531578545,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 2\n      },\n      \"boundElements\": [\n        {\n          \"type\": \"text\",\n          \"id\": \"mcDZHNEZRhnaca9qy1QuG\"\n        }\n      ],\n      \"updated\": 1702423269709,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": {\n        \"elementId\": \"-TheK_iiszzs08UFHds1X\",\n        \"focus\": -0.08991115524671474,\n        \"gap\": 4\n      },\n      \"endBinding\": {\n        \"elementId\": \"gO4o6gRc5z57hSlRJcNHT\",\n        \"focus\": -0.16180416542442702,\n        \"gap\": 7.000000000000455\n      },\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": \"arrow\",\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          9.749588133858879,\n          -228\n        ]\n      ]\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 25,\n      \"versionNonce\": 777321311,\n      \"isDeleted\": false,\n      \"id\": \"mcDZHNEZRhnaca9qy1QuG\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 1633.0822081391648,\n      \"y\": 509.61189156512137,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 134.38333129882812,\n      \"height\": 35,\n      \"seed\": 697712785,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423259438,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 28,\n      \"fontFamily\": 1,\n      \"text\": \"2. Install\",\n      \"textAlign\": \"center\",\n      \"verticalAlign\": \"middle\",\n      \"containerId\": \"tJR6pa6ndvgR0PAy_y0T6\",\n      \"originalText\": \"2. Install\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 25\n    },\n    {\n      \"type\": \"arrow\",\n      \"version\": 337,\n      \"versionNonce\": 181111665,\n      \"isDeleted\": false,\n      \"id\": \"QKW8LI503Bc2mGvHDoU9l\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 664.3720761060194,\n      \"y\": 270.1118915651209,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 3.197125404118765,\n      \"height\": 71.85057338686784,\n      \"seed\": 1191315057,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 2\n      },\n      \"boundElements\": [],\n      \"updated\": 1702423269709,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": {\n        \"elementId\": \"gO4o6gRc5z57hSlRJcNHT\",\n        \"focus\": 0.08223574565392806,\n        \"gap\": 6\n      },\n      \"endBinding\": {\n        \"elementId\": \"rn5VxKirQVQTGadXpV6do\",\n        \"focus\": 0.015630487251397887,\n        \"gap\": 1\n      },\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": \"arrow\",\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          -3.197125404118765,\n          -71.85057338686784\n        ]\n      ]\n    },\n    {\n      \"type\": \"arrow\",\n      \"version\": 832,\n      \"versionNonce\": 193078065,\n      \"isDeleted\": false,\n      \"id\": \"Bvu5NEGthDTE0Lox0pKMY\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 810.7363621104851,\n      \"y\": 676.1118915651214,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 90,\n      \"height\": 525.9999999999991,\n      \"seed\": 851054673,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 2\n      },\n      \"boundElements\": [\n        {\n          \"type\": \"text\",\n          \"id\": \"ZsF0PE77YsQf6RTxSi4T7\"\n        }\n      ],\n      \"updated\": 1702423269709,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": {\n        \"elementId\": \"-TheK_iiszzs08UFHds1X\",\n        \"focus\": 0.8084116201763285,\n        \"gap\": 1.000000000000398\n      },\n      \"endBinding\": {\n        \"elementId\": \"ovJ_8JRWUYtl5SwIsoTD6\",\n        \"focus\": 0.0439116734429434,\n        \"gap\": 7.332598533353234\n      },\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": \"arrow\",\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          90,\n          -212\n        ],\n        [\n          45.5918098316173,\n          -525.9999999999991\n        ]\n      ]\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 100,\n      \"versionNonce\": 972830591,\n      \"isDeleted\": false,\n      \"id\": \"ZsF0PE77YsQf6RTxSi4T7\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 1782.6363560069694,\n      \"y\": 408.11189156512137,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 302.20001220703125,\n      \"height\": 140,\n      \"seed\": 1653988913,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423259439,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 28,\n      \"fontFamily\": 1,\n      \"text\": \"3. Create \\nRepositories and hand\\nover control to \\nArgoCD\",\n      \"textAlign\": \"center\",\n      \"verticalAlign\": \"middle\",\n      \"containerId\": \"Bvu5NEGthDTE0Lox0pKMY\",\n      \"originalText\": \"3. Create Repositories and hand over control to ArgoCD\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 130\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 247,\n      \"versionNonce\": 343496,\n      \"isDeleted\": false,\n      \"id\": \"n4KQJWFb5VyJNlsy8wI_H\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 795.7363621104851,\n      \"y\": -34.88810843487863,\n      \"strokeColor\": \"#1e1e1e\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 164.06666564941406,\n      \"height\": 150,\n      \"seed\": 628944913,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702500158953,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 20,\n      \"fontFamily\": 1,\n      \"text\": \"Git Repositories:\\n- ArgoCD\\n- Ingress-nginx\\n- Gitea\\n- Backstage\\n- Crossplane\",\n      \"textAlign\": \"left\",\n      \"verticalAlign\": \"top\",\n      \"containerId\": null,\n      \"originalText\": \"Git Repositories:\\n- ArgoCD\\n- Ingress-nginx\\n- Gitea\\n- Backstage\\n- Crossplane\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 143\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 198,\n      \"versionNonce\": 1548509880,\n      \"isDeleted\": false,\n      \"id\": \"J6fygoVPW4s-Zz324ipKh\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 346.73636211048506,\n      \"y\": -75.88810843487863,\n      \"strokeColor\": \"#f08c00\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 142.3000030517578,\n      \"height\": 150,\n      \"seed\": 23512561,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702500158953,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 20,\n      \"fontFamily\": 1,\n      \"text\": \"ArgoCD Apps:\\n- ArgoCD\\n- Ingress-nginx\\n- Gitea\\n- Backstage\\n- Crossplane\",\n      \"textAlign\": \"left\",\n      \"verticalAlign\": \"top\",\n      \"containerId\": null,\n      \"originalText\": \"ArgoCD Apps:\\n- ArgoCD\\n- Ingress-nginx\\n- Gitea\\n- Backstage\\n- Crossplane\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 143\n    },\n    {\n      \"type\": \"rectangle\",\n      \"version\": 179,\n      \"versionNonce\": 2047916479,\n      \"isDeleted\": false,\n      \"id\": \"axsfnFtRU5tBoleN1koKQ\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 322.73636211048506,\n      \"y\": -149.88810843487863,\n      \"strokeColor\": \"#f08c00\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 184.00000000000003,\n      \"height\": 253,\n      \"seed\": 1364910033,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 3\n      },\n      \"boundElements\": [\n        {\n          \"id\": \"6KxS52QdlYIpoAD1U0DXi\",\n          \"type\": \"arrow\"\n        }\n      ],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 106,\n      \"versionNonce\": 1838061055,\n      \"isDeleted\": false,\n      \"id\": \"JX7B2x-Lgx3YrqjriOdqF\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 713.7363621104851,\n      \"y\": -107.88810843487863,\n      \"strokeColor\": \"#1e1e1e\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 100.33333587646484,\n      \"height\": 45,\n      \"seed\": 594591153,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 36,\n      \"fontFamily\": 1,\n      \"text\": \"Gitea\",\n      \"textAlign\": \"left\",\n      \"verticalAlign\": \"top\",\n      \"containerId\": null,\n      \"originalText\": \"Gitea\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 32\n    },\n    {\n      \"type\": \"arrow\",\n      \"version\": 174,\n      \"versionNonce\": 902154993,\n      \"isDeleted\": false,\n      \"id\": \"6KxS52QdlYIpoAD1U0DXi\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 510.7363621104846,\n      \"y\": -42.88810843487863,\n      \"strokeColor\": \"#f08c00\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 176,\n      \"height\": 8,\n      \"seed\": 1456463761,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 2\n      },\n      \"boundElements\": [],\n      \"updated\": 1702423269710,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": {\n        \"elementId\": \"axsfnFtRU5tBoleN1koKQ\",\n        \"focus\": -0.18260869565217372,\n        \"gap\": 3.9999999999995453\n      },\n      \"endBinding\": {\n        \"elementId\": \"ovJ_8JRWUYtl5SwIsoTD6\",\n        \"focus\": 0.3052581578699753,\n        \"gap\": 5.308311156089587\n      },\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": \"arrow\",\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          176,\n          8\n        ]\n      ]\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 87,\n      \"versionNonce\": 657081544,\n      \"isDeleted\": false,\n      \"id\": \"F-QKzwRSJ7Pb6RMm1vBsC\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 560.7363621104851,\n      \"y\": -74.88810843487863,\n      \"strokeColor\": \"#f08c00\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 66.69999694824219,\n      \"height\": 25,\n      \"seed\": 2041562481,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702500158954,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 20,\n      \"fontFamily\": 1,\n      \"text\": \"GitOps\",\n      \"textAlign\": \"left\",\n      \"verticalAlign\": \"top\",\n      \"containerId\": null,\n      \"originalText\": \"GitOps\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 18\n    },\n    {\n      \"type\": \"rectangle\",\n      \"version\": 399,\n      \"versionNonce\": 1762247263,\n      \"isDeleted\": false,\n      \"id\": \"a1YtLmme14ISmpN-GNiiT\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 32.23636211048506,\n      \"y\": 216.1118915651209,\n      \"strokeColor\": \"#2f9e44\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 240,\n      \"height\": 126.00000000000014,\n      \"seed\": 1733816145,\n      \"groupIds\": [\n        \"3NGajuyekE1K_G5zxIRhq\"\n      ],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 3\n      },\n      \"boundElements\": [],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 263,\n      \"versionNonce\": 268271288,\n      \"isDeleted\": false,\n      \"id\": \"Ph6f2fAmMNTsoBkG0jrmd\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 45.73636211048506,\n      \"y\": 229.1118915651209,\n      \"strokeColor\": \"#2f9e44\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 149.8000030517578,\n      \"height\": 100,\n      \"seed\": 639622449,\n      \"groupIds\": [\n        \"3NGajuyekE1K_G5zxIRhq\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702500151458,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 20,\n      \"fontFamily\": 1,\n      \"text\": \"Core Packages:\\n- ArgoCD\\n- Gitea\\n- Ingress-nginx\",\n      \"textAlign\": \"left\",\n      \"verticalAlign\": \"top\",\n      \"containerId\": null,\n      \"originalText\": \"Core Packages:\\n- ArgoCD\\n- Gitea\\n- Ingress-nginx\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 93\n    },\n    {\n      \"type\": \"arrow\",\n      \"version\": 381,\n      \"versionNonce\": 898794161,\n      \"isDeleted\": false,\n      \"id\": \"nHmMkx97YgjINcsVC4VlS\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 820.0363651622429,\n      \"y\": 721.0370993829702,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 364,\n      \"height\": 609,\n      \"seed\": 91164433,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 2\n      },\n      \"boundElements\": [\n        {\n          \"type\": \"text\",\n          \"id\": \"lvC-UeX1cG3atJnWyQWAR\"\n        }\n      ],\n      \"updated\": 1702423269710,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": {\n        \"elementId\": \"-TheK_iiszzs08UFHds1X\",\n        \"focus\": 0.8139142814386041,\n        \"gap\": 10.30000305175821\n      },\n      \"endBinding\": {\n        \"elementId\": \"rn5VxKirQVQTGadXpV6do\",\n        \"focus\": -0.7932071699015981,\n        \"gap\": 18.798660584633126\n      },\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": \"arrow\",\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          364,\n          -201\n        ],\n        [\n          224,\n          -609\n        ]\n      ]\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 109,\n      \"versionNonce\": 1849081503,\n      \"isDeleted\": false,\n      \"id\": \"lvC-UeX1cG3atJnWyQWAR\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 2105.81969798695,\n      \"y\": 499.03709938297015,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 222.43333435058594,\n      \"height\": 70,\n      \"seed\": 2075985137,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423259436,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 28,\n      \"fontFamily\": 1,\n      \"text\": \"5. Sync Custom \\nPackages\",\n      \"textAlign\": \"center\",\n      \"verticalAlign\": \"middle\",\n      \"containerId\": \"nHmMkx97YgjINcsVC4VlS\",\n      \"originalText\": \"5. Sync Custom Packages\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 60\n    },\n    {\n      \"type\": \"rectangle\",\n      \"version\": 209,\n      \"versionNonce\": 628869823,\n      \"isDeleted\": false,\n      \"id\": \"K1xk0WFzyBRPJQ1A3rvF9\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 1092.763637889515,\n      \"y\": 639.2189175647882,\n      \"strokeColor\": \"#1971c2\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 321.00000000000017,\n      \"height\": 207.99999999999994,\n      \"seed\": 1150369489,\n      \"groupIds\": [\n        \"fqu4sqeMOTfqdQqVK5MTz\"\n      ],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 3\n      },\n      \"boundElements\": [\n        {\n          \"id\": \"4AOkOmojUQrdiA36lQ8DU\",\n          \"type\": \"arrow\"\n        }\n      ],\n      \"updated\": 1702423269501,\n      \"link\": null,\n      \"locked\": false\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 212,\n      \"versionNonce\": 1797213112,\n      \"isDeleted\": false,\n      \"id\": \"B1TLthmjZljTpu4TvrlaW\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 1113.763637889515,\n      \"y\": 653.2189175647882,\n      \"strokeColor\": \"#1971c2\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 212.23333740234375,\n      \"height\": 35,\n      \"seed\": 1048788145,\n      \"groupIds\": [\n        \"fqu4sqeMOTfqdQqVK5MTz\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702500158954,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 28,\n      \"fontFamily\": 1,\n      \"text\": \"Local Directory\",\n      \"textAlign\": \"left\",\n      \"verticalAlign\": \"top\",\n      \"containerId\": null,\n      \"originalText\": \"Local Directory\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 25\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 239,\n      \"versionNonce\": 1377201096,\n      \"isDeleted\": false,\n      \"id\": \"IF1D9aqYp7FoVsn6gx45t\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 1124.763637889515,\n      \"y\": 715.2189175647882,\n      \"strokeColor\": \"#1971c2\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 238.06666564941406,\n      \"height\": 105,\n      \"seed\": 154828433,\n      \"groupIds\": [\n        \"fqu4sqeMOTfqdQqVK5MTz\"\n      ],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702500158954,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 28,\n      \"fontFamily\": 1,\n      \"text\": \"contents:\\n- argocd-app.yaml\\n- manifest files\",\n      \"textAlign\": \"left\",\n      \"verticalAlign\": \"top\",\n      \"containerId\": null,\n      \"originalText\": \"contents:\\n- argocd-app.yaml\\n- manifest files\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 95\n    },\n    {\n      \"type\": \"arrow\",\n      \"version\": 313,\n      \"versionNonce\": 1743014513,\n      \"isDeleted\": false,\n      \"id\": \"4AOkOmojUQrdiA36lQ8DU\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 815.0363651622429,\n      \"y\": 674.3529600675256,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 262.7272727272725,\n      \"height\": 61.65717237957415,\n      \"seed\": 1668187249,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": {\n        \"type\": 2\n      },\n      \"boundElements\": [\n        {\n          \"type\": \"text\",\n          \"id\": \"Lza-c0b-WjRNgd-m1X43U\"\n        }\n      ],\n      \"updated\": 1702423269710,\n      \"link\": null,\n      \"locked\": false,\n      \"startBinding\": {\n        \"elementId\": \"-TheK_iiszzs08UFHds1X\",\n        \"focus\": -0.547290541551879,\n        \"gap\": 5.30000305175821\n      },\n      \"endBinding\": {\n        \"elementId\": \"K1xk0WFzyBRPJQ1A3rvF9\",\n        \"focus\": -0.2398436923984328,\n        \"gap\": 14.999999999999432\n      },\n      \"lastCommittedPoint\": null,\n      \"startArrowhead\": null,\n      \"endArrowhead\": \"arrow\",\n      \"points\": [\n        [\n          0,\n          0\n        ],\n        [\n          262.7272727272725,\n          61.65717237957415\n        ]\n      ]\n    },\n    {\n      \"type\": \"text\",\n      \"version\": 18,\n      \"versionNonce\": 564588447,\n      \"isDeleted\": false,\n      \"id\": \"Lza-c0b-WjRNgd-m1X43U\",\n      \"fillStyle\": \"hachure\",\n      \"strokeWidth\": 1,\n      \"strokeStyle\": \"dashed\",\n      \"roughness\": 2,\n      \"opacity\": 100,\n      \"angle\": 0,\n      \"x\": 1925.1500015258791,\n      \"y\": 701.6815462573127,\n      \"strokeColor\": \"#e03131\",\n      \"backgroundColor\": \"transparent\",\n      \"width\": 108.5,\n      \"height\": 35,\n      \"seed\": 1223085649,\n      \"groupIds\": [],\n      \"frameId\": null,\n      \"roundness\": null,\n      \"boundElements\": [],\n      \"updated\": 1702423259439,\n      \"link\": null,\n      \"locked\": false,\n      \"fontSize\": 28,\n      \"fontFamily\": 1,\n      \"text\": \"4. Read\",\n      \"textAlign\": \"center\",\n      \"verticalAlign\": \"middle\",\n      \"containerId\": \"4AOkOmojUQrdiA36lQ8DU\",\n      \"originalText\": \"4. Read\",\n      \"lineHeight\": 1.25,\n      \"baseline\": 25\n    }\n  ],\n  \"appState\": {\n    \"gridSize\": null,\n    \"viewBackgroundColor\": \"#ffffff\"\n  },\n  \"files\": {}\n}"
  },
  {
    "path": "docs/minimum-requirements.md",
    "content": "# Minimum Requirements\n\nThe requirements for your cluster will depend on what it is running but we\nrecommend a minimum of 4 CPU cores and 4GiB of RAM.\n"
  },
  {
    "path": "docs/pluggable-packages.md",
    "content": "# Pluggable and configurable packaging proposal\n\n## Background\n\n`idpbuilder` is a tool that aims to:\n- Allow developers to stand up a Kubernetes cluster with components that make up a Internal Developer Platform (IDP). \n- Allow for tests to run against IDPs in Continuous Integration systems.\n- Standup a working IDP for demo purposes.\n\nIt also aims to achieve the above goals while having a single dependency, Docker, at run time. \n\nWhen implementing IDPs using open source projects, there is no one set of projects that fit the needs of all organizations because:\n1. No organization went through the same path to reach the point of needing a IDP.\n1. Past technology choices were made for specific needs of each organization. This results in organizationally unique technology inertia that may not be correctable in the near future.\n1. No industry consensus and standards for choosing specific IDP components.\n\nTo fit the needs from different organizations, idpbuilder needs to be flexible in the what and how it can deploy different packages. Currently idpbuilder uses ArgoCD to install a [set of application](https://github.com/cnoe-io/idpbuilder/blob/56089e4ae3b27cf90641bfbff2a96c36dd5263e1/pkg/apps/resources.go#L20-L32), and they cannot be changed without modifying the source code.\n\nIn addition, the git server uses Go's embed capability to serve contents to ArgoCD.  Because of this, to update package configurations in idpbuilder, it requires compiling the Go application. For Go developers this approach is straightforward to work with. For non-Go developers, this approach may be frustrating when needing to debug errors from an unfamiliar language while compiling the program.\n\n## Goals\n\nThe proposal in this document should:\n\n1. Make the packages installed by `idpbuilder` configurable.\n1. Minimize the number of runtime dependencies necessary.\n1. Define an easy way to declare the packages to be installed.\n1. Allow for fast local development feedback loop.\n\n## Proposal\n\nThis document proposes the following:\n- Make ArgoCD a hard requirement for now.\n- Define packages as Argo CD Applications (Helm, Kustomize, and raw manifests)\n- Use a more configurable Git server, Gitea. \n- Imperative pipelines for configuring packages are handled with ArgoCD resource hooks.\n\nIn this implementation, we will make ArgoCD the technology of choice. However, we will strive to maintain separation between packages and specific CD technologies (Argo) to allow for future CD plug-ability.\n\n![git](images/git.png)\n\n### Essential Packages\n\nFor `idpbuilder` to make the cluster ready to be used for non-essential packages, it must install:\n\n1. In-cluster git server\n2. ArgoCD\n3. Ingress for git server and ArgoCD\n\nOnce they are installed and ready, the manifests used should be pushed to an in-cluster git repository.\nThe packages then can be managed by ArgoCD from that point. \nThis allows for end users to make changes to them through GitOps by either using the Git UI or locally through Git pull / push.  \n\n### ArgoCD\n\nCurrently, ArgoCD is a base requirement for both the AWS reference implementation and idpbuilder but not yet officially made a hard requirement. ArgoCD is the CD of choice for CNOE members and it should be the focus over other GitOps solutions. \nPackages then become the formats that ArgoCD supports natively: Helm charts, Kustomize, and raw manifests.\n\n#### Support for imperative pipelines\n\nRegardless of how applications are delivered declaratively, custom scripts are often needed before, during, and after application syncing to ensure applications reach the desired state. idpbuilder needs to provide a way to run custom scripts in a defined order. \n\nWe could define a spec to support such cases, but considering the main use cases of idpbuilder center around everything being local, it doesn't require overly complex tasks. For example, in the reference implementation for AWS, the majority of scripting are done to manage authentication mechanisms. Another task that the scripts do is domain name configuration for each package such as setting the `baseUrl` field in the Backstage configuration file. In local environments, tasks like these are likely unnecessary because authentication is not necessary and domain names are predictable.\n\nArgoCD supports resource hooks which allow users to define tasks to be run during application syncing. While there are some limitations to what it can do, for the majority of simple tasks resource hooks should suffice.\n\n### The in-cluster git server\n\nThe primary purpose of the in-cluster git server is to sync local files to it, then make them available for ArgoCD to use.\n\nAs documented in [this issue](https://github.com/cnoe-io/idpbuilder/issues/32), using `gitea` offers more configurable and user friendly experience. In short, using it enables:\n- Git UI and ssh access for end users.\n- More configurable git server.\n- Include the source control system as a core component for a developer platform.\n- Move the outdated git dependency to a more modern and actively supported dependency.\n\n`gittea` offers installation into Kubernetes cluster using a helm chart. It should be leveraged to install it to the local cluster. The ideal way to install this would be to use ArgoCD. However, ArgoCD requires a Git server to read Helm values from. It is possible to host the values file on a public repository, but the idpbuilder core components should avoid depending on external systems. In secured environments, it may be impossible for ArgoCD to reach the public repository.\n\nIt should follow the same pattern of installing ArgoCD by embedding them in the application binary. The manifests should be rendered at build time by using the `helm template` command with values checked into the repository.\n\nIn case the embedded configuration does not work for some reason, we should provide a flag, `--git-manifest-file`. When used, it specifies a single file that contains manifests necessary to configure a git server. \n\nIt is important to note that the file contains raw manifests that will be applied as-is, not helm values. Supporting manifest rendering mechanisms come with a cost of needing to include and maintain libraries and light logic to render these manifests. One of the goals of this proposal is to minimize dependencies.\nIt's also difficult to ensure rendered manifests are what users intended to use. Users may have different versions of helm from our version. This may cause slight differences in manifests due to a bug or a feature differences.\nUsers are expected to run the `helm template` command to generate manifests.\n\n\n### Runtime Git server content generation\n\nAs mentioned earlier, Git server contents are generated at compile time and cannot be changed at run time.\nTo solve this, Git content should be created at run time by introducing a new flag, `--package`, to idpbuilder. This flag takes a directory that contains ArgoCD Applications. \nIf this flag is not specified, use the embedded FS to provide the \"default experience\" where it uses the manifests provided at compile time to bootstrap and add predetermined packages to the cluster.\n\nBecause Helm and Kustomize can reference remote repositories, this approach introduces a use case where secrets must be passed to the cluster from local machine. Kubernetes resource YAML files are often stored on a private Git server and require credentials to access. For ArgoCD to access the Git server, the credentials must be passed to ArgoCD as Kubernetes Secrets. \n\nTo accomplish this, idpbuilder will provide a flag to pass secrets and other ArgoCD configuration options. `--argocd-config` flag should point to a directory with manifests for configuring ArgoCD, ConfigMaps and Secrets. These manifests will be applied after ArgoCD is deployed and ready. An example directory contents are shown below.\n\n```yaml\n# --argocd-config ./configs\napiVersion: v1\nkind: Secret\nmetadata:\n  name: argo-helm\n  namespace: argocd\n  labels:\n    argocd.argoproj.io/secret-type: repository\nstringData:\n  name: argo\n  url: https://argoproj.github.io/argo-helm\n  type: helm\n  username: my-username\n  password: my-password\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: argocd-cm\n  namespace: argocd\n  labels:\n    app.kubernetes.io/name: argocd-cm\n    app.kubernetes.io/part-of: argocd\ndata:\n  url: https://argo-cd-demo.argoproj.io\n\n```\n\n\n#### Local file handling\n\nTo allow for faster feedback loop when developing Kubernetes applications and manifests, idpbuilder should support pushing local files to the in-cluster git repository if sources are specified using `files://`. \nGiven the following application:\n\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Application\nspec:\n  sources:\n    - path: argo-workflows\n      repoURL: \"files://test-package\"\n      targetRevision: HEAD\n```\n\nidpbuilder must:\n  * Take and validate all manifests under the `test-package` directory. \n  * Create a new repository in the in-cluster git server.\n  * Push the files to the repository.\n  * Replace `files://` with `https://git-server.git.svc.cluster.local`\n\n\n## Future improvements\n\n- Extend support for using different tools for CD and imperative workflows. For example, we may consider supporting Tekton or Flagger for running imperative workflows.\n- Extend support for other GitOps solutions such as Flux CD.\n- Add support for authentication. As use cases grow, it will be necessary to support authentication mechanisms. Example use cases: GitHub credentials for ArgoCD, AWS credentials to pull images from a ECR registry.\n- Add support for capturing Kubernetes job outputs that were launched by ArgoCD Resource Hooks. Stdout and stderr are not saved for completed jobs by default. This will help debug problems when running imperative commands in Kubernetes Jobs.\n- Support for ArgoCD App of Apps. An App of Apps is an ArgoCD application that contains other ArgoCD applications. Support for this would require: \n    - Rendering Helm charts and Kustomize.\n    - Sync repository contents, then parse and replace URLs as described above. \n    \n\n## Alternatives Considered\n\n#### Use OCI images as applications\n\nProjects such as Sealer and Kapp aim to use OCI images as the artifact to define and deploy multiple Kubernetes resources. This has a few advantages. \n\n- Immutable single artifact that can be used to deploy to different clusters.\n- Simplicity. Application dependencies and supporting resources are defined and confined in the image.\n- Can use standard Kubernetes YAML files, Helm Charts, and Kustomize. \n- Native support for signing and verification through industry standard tools like cosign.\n\nIn addition, both tools support applying changes in particular order. For example, you can run a Kubernetes Job to migrate database schema before rolling out a new image. \n\nSince many of the goals are covered by both projects, it is possible to incorporate some of their tools and libraries to implement our goals. \n\nWhile this approach addresses most of our goals, there are drawbacks.\n\nFirstly, it introduces a new layer for end users to debug. For end users to debug an issue related to Kubernetes manifest rendering, they now need to:\n1. Figure out which OCI image contains the package with the problem. The problem may reside in one of dependent OCI images. \n2. Extract the contents of the OCI image. Determine which one file is responsible for the issue. \n3. Correct the issue.\n4. Publish a new image.\n\nSecondly, these tools and using OCI images as packages are not well adopted by CNOE members as evidenced by the tech radar. idpbuilder should be useful and relevant to CNOE members.\n\n#### Define specs for imperative work\n\nTo support use cases where more complex steps are needed to orchestrate different services in to the cluster, idpbuilder could define a configuration spec where end users can define their own steps. For example, a spec may look something like the following. \n\n```yaml\napiVersion: idpbuilder.cnoe.io/v1alpha1\nkind: Config\nmetadata:\n  name: test\nspec:\n  packages:\n    - name: crossplane\n      preCreation:\n        - name: job1\n          secretRef:\n            name: job1\n            path: ./secret1\n          type: helm\n          chart:\n            values: ./values.yaml\n            url: \"https://somewhere.cnoe.io/charts\"\n          spec:\n            apiVersion: batch/v1\n            kind: Job\n            metadata:\n              name: pi\n      postCreation:\n        ...\n\n```\n\nThis introduces a few problems. \n\n1. Complexity.\n\n    This introduces a completely new mechanisms to manage applications. Current idpbuilder design is very simple with no concept of pipelining. It allows end users to define manifests at compile time, and apply them as Argo CD applications. Introducing this feature and maintaining it may involve significant time commitment.\n\n\n2. Yet another configuration format.\n\n    With the explosion of Kubernetes based projects, a large number of configuration formats were created. Developers and operators are already needing to write and manage configuration files that look similar but slightly different.\n  \n3. No clear needs for task orchestration capabilities.\n\n    We have so far not had a request for this capability with concrete needs and investing time and effort to implement and maintain this feature doesn't work.\n\n#### Git Repository Mirroring\n\nAnother approach is to mirror contents from repositories using credentials from local machine, then push them to the in-cluster git server. This does not require credentials to be replicated to the cluster. A few consideration for this approach: \n\n1. Kustomize references to private remotes.\n    kustomize can reference remote repositories:\n    \n    ```yaml\n      # kustomization.yaml\n      resources:\n      - https://github.com/kubernetes-sigs/kustomize//examples/multibases?timeout=120&ref=v3.3.1\n      namePrefix: remote-\n    ```\n    \n    In this example, to ensure the local git server has everything ArgoCD needs, idpbuilder must:\n      * Pull manifests from `github.com/kubernetes-sigs/kustomize`\n      * Create a new repository in in-cluster git server.\n      * Push contents to the in-cluster repository.\n      * Replace `github.com` with `git-server.git.svc.cluster.local`\n\n2. Helm subcharts from private repositories.\n    Helm subcharts may look like\n    ```\n    # Chart.yaml\n    dependencies:\n    - name: nginx\n      version: \"1.2.3\"\n      repository: \"https://example.com/charts\"\n    ```\n    In this example, idpbuilder must:\n      * Pull `chart.tgz` for the nginx chart.\n      * Push it to a in-cluster http server.\n      * Replace `example.com` with `http-endpoint.git.svc.cluster.local`\n\nGiven the complexity involved with this approach, the first iteration should focus on passing secrets to ArgoCD. When concrete use cases arise, approaches similar to this should be considered.\n\n###### ArgoCD Application handling\n\nConsider a case where idpbuilder is given the flag `--package ./packages`, and the `packages` directory contains a yaml file for a ArgoCD application.\n\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Application\nspec:\n  sources:\n    - chart: argo-workflows\n      repoURL: https://argoproj.github.io/argo-helm\n      targetRevision: 0.31.0\n      helm:\n        releaseName: argo-workflows\n        valueFiles:\n          - $values/packages/argo-workflows/dev/values.yaml\n    - repoURL: https://github.com/cnoe-io/argo-helm\n      targetRevision: HEAD\n      ref: values\n```\n\nIn the above file, it instructs ArgoCD to use the charts from `argoproj.github.io/argo-helm` and use values stored at `https://github.com/cnoe-io/argo-helm/packages/argo-workflows/dev/values.yaml`\n\n\nIn this case, idpbuilder must: \n\n  * Replace `argoproj.github.io` with `http-endpoint.git.svc.cluster.local`.\n  * Replace `github.com` with `git-server.git.svc.cluster.local`.\n"
  },
  {
    "path": "docs/private-registries.md",
    "content": "# Private registry authentication\n\nidpbuilder can be configured to use private registry authentication from the\nhost filesystem by using the `--registry-config` flag with the `create` command.\nBy default this will look for a registry config file in the default\npodman and docker paths (see the help text for details). You can optionally\nspecify a file by doing the following:\n`--registry-config=$HOME/path/to/auth.json`\n"
  },
  {
    "path": "globals/project.go",
    "content": "package globals\n\nimport \"fmt\"\n\nconst (\n\tProjectName string = \"idpbuilder\"\n\n\tNginxNamespace  string = \"ingress-nginx\"\n\tArgoCDNamespace string = \"argocd\"\n\n\tSelfSignedCertSecretName = \"idpbuilder-cert\"\n\tSelfSignedCertCMName     = \"idpbuilder-cert\"\n\tSelfSignedCertCMKeyName  = \"ca.crt\"\n\tDefaultSANWildcard       = \"*.cnoe.localtest.me\"\n\tDefaultHostName          = \"cnoe.localtest.me\"\n)\n\nfunc GetProjectNamespace(name string) string {\n\treturn fmt.Sprintf(\"%s-%s\", ProjectName, name)\n}\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/cnoe-io/idpbuilder\n\ngo 1.22.0\n\ntoolchain go1.24.7\n\nrequire (\n\tcode.gitea.io/sdk/gitea v0.16.0\n\tgithub.com/cnoe-io/argocd-api v0.0.0-20241031202925-3091d64cb3c4\n\tgithub.com/docker/docker v25.0.6+incompatible\n\tgithub.com/go-git/go-billy/v5 v5.5.0\n\tgithub.com/go-git/go-git/v5 v5.12.0\n\tgithub.com/go-logr/logr v1.4.2\n\tgithub.com/google/go-cmp v0.6.0\n\tgithub.com/google/go-github/v61 v61.0.0\n\tgithub.com/spf13/cobra v1.8.0\n\tgithub.com/stretchr/testify v1.9.0\n\tk8s.io/api v0.30.5\n\tk8s.io/apiextensions-apiserver v0.30.5\n\tk8s.io/apimachinery v0.30.5\n\tk8s.io/cli-runtime v0.30.5\n\tk8s.io/client-go v0.30.5\n\tk8s.io/klog/v2 v2.120.1\n\tsigs.k8s.io/controller-runtime v0.18.5\n\tsigs.k8s.io/kind v0.29.0\n\tsigs.k8s.io/kustomize/kyaml v0.16.0\n\tsigs.k8s.io/yaml v1.4.0\n)\n\nrequire (\n\tal.essio.dev/pkg/shellescape v1.5.1 // indirect\n\tdario.cat/mergo v1.0.0 // indirect\n\tgithub.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect\n\tgithub.com/BurntSushi/toml v1.4.0 // indirect\n\tgithub.com/Microsoft/go-winio v0.6.1 // indirect\n\tgithub.com/ProtonMail/go-crypto v1.0.0 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/cloudflare/circl v1.3.7 // indirect\n\tgithub.com/containerd/log v0.1.0 // indirect\n\tgithub.com/cyphar/filepath-securejoin v0.2.4 // indirect\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/davidmz/go-pageant v1.0.2 // indirect\n\tgithub.com/distribution/reference v0.6.0 // indirect\n\tgithub.com/docker/go-connections v0.5.0 // indirect\n\tgithub.com/docker/go-units v0.5.0 // indirect\n\tgithub.com/emicklei/go-restful/v3 v3.11.0 // indirect\n\tgithub.com/emirpasic/gods v1.18.1 // indirect\n\tgithub.com/evanphx/json-patch v5.7.0+incompatible // indirect\n\tgithub.com/evanphx/json-patch/v5 v5.9.0 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.3 // indirect\n\tgithub.com/fsnotify/fsnotify v1.7.0 // indirect\n\tgithub.com/go-errors/errors v1.4.2 // indirect\n\tgithub.com/go-fed/httpsig v1.1.0 // indirect\n\tgithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/go-openapi/jsonpointer v0.21.0 // indirect\n\tgithub.com/go-openapi/jsonreference v0.21.0 // indirect\n\tgithub.com/go-openapi/swag v0.23.0 // indirect\n\tgithub.com/gogo/protobuf v1.3.2 // indirect\n\tgithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect\n\tgithub.com/golang/protobuf v1.5.4 // indirect\n\tgithub.com/google/gnostic-models v0.6.8 // indirect\n\tgithub.com/google/go-querystring v1.1.0 // indirect\n\tgithub.com/google/gofuzz v1.2.0 // indirect\n\tgithub.com/google/pprof v0.0.0-20230323073829-e72429f035bd // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/hashicorp/go-version v1.5.0 // indirect\n\tgithub.com/imdario/mergo v0.3.16 // indirect\n\tgithub.com/inconshreveable/mousetrap v1.1.0 // indirect\n\tgithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect\n\tgithub.com/josharian/intern v1.0.0 // indirect\n\tgithub.com/json-iterator/go v1.1.12 // indirect\n\tgithub.com/kevinburke/ssh_config v1.2.0 // indirect\n\tgithub.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect\n\tgithub.com/mailru/easyjson v0.7.7 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect\n\tgithub.com/moby/term v0.5.0 // indirect\n\tgithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect\n\tgithub.com/modern-go/reflect2 v1.0.2 // indirect\n\tgithub.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect\n\tgithub.com/morikuni/aec v1.0.0 // indirect\n\tgithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect\n\tgithub.com/opencontainers/go-digest v1.0.0 // indirect\n\tgithub.com/opencontainers/image-spec v1.1.0 // indirect\n\tgithub.com/pelletier/go-toml v1.9.5 // indirect\n\tgithub.com/pjbgf/sha1cd v0.3.0 // indirect\n\tgithub.com/pkg/errors v0.9.1 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/prometheus/client_golang v1.18.0 // indirect\n\tgithub.com/prometheus/client_model v0.5.0 // indirect\n\tgithub.com/prometheus/common v0.45.0 // indirect\n\tgithub.com/prometheus/procfs v0.12.0 // indirect\n\tgithub.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect\n\tgithub.com/sirupsen/logrus v1.9.3 // indirect\n\tgithub.com/skeema/knownhosts v1.2.2 // indirect\n\tgithub.com/spf13/pflag v1.0.5 // indirect\n\tgithub.com/stretchr/objx v0.5.2 // indirect\n\tgithub.com/xanzy/ssh-agent v0.3.3 // indirect\n\tgithub.com/xlab/treeprint v1.2.0 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0 // indirect\n\tgo.opentelemetry.io/otel v1.31.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 // indirect\n\tgo.opentelemetry.io/otel/metric v1.31.0 // indirect\n\tgo.opentelemetry.io/otel/sdk v1.31.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.31.0 // indirect\n\tgolang.org/x/crypto v0.28.0 // indirect\n\tgolang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect\n\tgolang.org/x/mod v0.17.0 // indirect\n\tgolang.org/x/net v0.30.0 // indirect\n\tgolang.org/x/oauth2 v0.22.0 // indirect\n\tgolang.org/x/sync v0.8.0 // indirect\n\tgolang.org/x/sys v0.26.0 // indirect\n\tgolang.org/x/term v0.25.0 // indirect\n\tgolang.org/x/text v0.19.0 // indirect\n\tgolang.org/x/time v0.3.0 // indirect\n\tgolang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect\n\tgomodules.xyz/jsonpatch/v2 v2.4.0 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 // indirect\n\tgoogle.golang.org/grpc v1.67.1 // indirect\n\tgoogle.golang.org/protobuf v1.35.1 // indirect\n\tgopkg.in/inf.v0 v0.9.1 // indirect\n\tgopkg.in/warnings.v0 v0.1.2 // indirect\n\tgopkg.in/yaml.v2 v2.4.0 // indirect\n\tgopkg.in/yaml.v3 v3.0.1 // indirect\n\tgotest.tools/v3 v3.5.1 // indirect\n\tk8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect\n\tk8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect\n\tsigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect\n\tsigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect\n)\n"
  },
  {
    "path": "go.sum",
    "content": "al.essio.dev/pkg/shellescape v1.5.1 h1:86HrALUujYS/h+GtqoB26SBEdkWfmMI6FubjXlsXyho=\nal.essio.dev/pkg/shellescape v1.5.1/go.mod h1:6sIqp7X2P6mThCQ7twERpZTuigpr6KbZWtls1U8I890=\ncode.gitea.io/sdk/gitea v0.16.0 h1:gAfssETO1Hv9QbE+/nhWu7EjoFQYKt6kPoyDytQgw00=\ncode.gitea.io/sdk/gitea v0.16.0/go.mod h1:ndkDk99BnfiUCCYEUhpNzi0lpmApXlwRFqClBlOlEBg=\ndario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=\ndario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=\ngithub.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=\ngithub.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=\ngithub.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=\ngithub.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=\ngithub.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=\ngithub.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=\ngithub.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=\ngithub.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78=\ngithub.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=\ngithub.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=\ngithub.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=\ngithub.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=\ngithub.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=\ngithub.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=\ngithub.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=\ngithub.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=\ngithub.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=\ngithub.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=\ngithub.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=\ngithub.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=\ngithub.com/cnoe-io/argocd-api v0.0.0-20241031202925-3091d64cb3c4 h1:gjpMCcU3hPy1dShDW8bLGjUmIojB3Bn9rjZbAiBp5V0=\ngithub.com/cnoe-io/argocd-api v0.0.0-20241031202925-3091d64cb3c4/go.mod h1:qItVgtDzIzaRvo82IfN9Is9+cTBz6dVETxBftESVXoY=\ngithub.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=\ngithub.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=\ngithub.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=\ngithub.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=\ngithub.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=\ngithub.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davidmz/go-pageant v1.0.2 h1:bPblRCh5jGU+Uptpz6LgMZGD5hJoOt7otgT454WvHn0=\ngithub.com/davidmz/go-pageant v1.0.2/go.mod h1:P2EDDnMqIwG5Rrp05dTRITj9z2zpGcD9efWSkTNKLIE=\ngithub.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=\ngithub.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=\ngithub.com/docker/docker v25.0.6+incompatible h1:5cPwbwriIcsua2REJe8HqQV+6WlWc1byg2QSXzBxBGg=\ngithub.com/docker/docker v25.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=\ngithub.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=\ngithub.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=\ngithub.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=\ngithub.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=\ngithub.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU=\ngithub.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=\ngithub.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=\ngithub.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=\ngithub.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=\ngithub.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=\ngithub.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI=\ngithub.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=\ngithub.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg=\ngithub.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=\ngithub.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=\ngithub.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=\ngithub.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=\ngithub.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE=\ngithub.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8=\ngithub.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=\ngithub.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=\ngithub.com/go-fed/httpsig v1.1.0 h1:9M+hb0jkEICD8/cAiNqEB66R87tTINszBRTjwjQzWcI=\ngithub.com/go-fed/httpsig v1.1.0/go.mod h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM=\ngithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=\ngithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=\ngithub.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=\ngithub.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow=\ngithub.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=\ngithub.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=\ngithub.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys=\ngithub.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=\ngithub.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=\ngithub.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=\ngithub.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=\ngithub.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=\ngithub.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=\ngithub.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=\ngithub.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=\ngithub.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=\ngithub.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=\ngithub.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=\ngithub.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=\ngithub.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=\ngithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=\ngithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=\ngithub.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=\ngithub.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/google/go-github/v61 v61.0.0 h1:VwQCBwhyE9JclCI+22/7mLB1PuU9eowCXKY5pNlu1go=\ngithub.com/google/go-github/v61 v61.0.0/go.mod h1:0WR+KmsWX75G2EbpyGsGmradjo3IiciuI4BmdVCobQY=\ngithub.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=\ngithub.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=\ngithub.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=\ngithub.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/pprof v0.0.0-20230323073829-e72429f035bd h1:r8yyd+DJDmsUhGrRBxH5Pj7KeFK5l+Y3FsgT8keqKtk=\ngithub.com/google/pprof v0.0.0-20230323073829-e72429f035bd/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk=\ngithub.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=\ngithub.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I=\ngithub.com/hashicorp/go-version v1.5.0 h1:O293SZ2Eg+AAYijkVK3jR786Am1bhDEh2GHT0tIVE5E=\ngithub.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=\ngithub.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=\ngithub.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=\ngithub.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=\ngithub.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=\ngithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=\ngithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=\ngithub.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=\ngithub.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=\ngithub.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=\ngithub.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=\ngithub.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=\ngithub.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=\ngithub.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=\ngithub.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=\ngithub.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=\ngithub.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=\ngithub.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=\ngithub.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=\ngithub.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=\ngithub.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=\ngithub.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=\ngithub.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=\ngithub.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=\ngithub.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=\ngithub.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=\ngithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=\ngithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=\ngithub.com/onsi/ginkgo/v2 v2.17.1 h1:V++EzdbhI4ZV4ev0UTIj0PzhzOcReJFyJaLjtSF55M8=\ngithub.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs=\ngithub.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk=\ngithub.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg=\ngithub.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=\ngithub.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=\ngithub.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=\ngithub.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM=\ngithub.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=\ngithub.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=\ngithub.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=\ngithub.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=\ngithub.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=\ngithub.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk=\ngithub.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA=\ngithub.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=\ngithub.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=\ngithub.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM=\ngithub.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY=\ngithub.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=\ngithub.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=\ngithub.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=\ngithub.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=\ngithub.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=\ngithub.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=\ngithub.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=\ngithub.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=\ngithub.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=\ngithub.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=\ngithub.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A=\ngithub.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=\ngithub.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=\ngithub.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=\ngithub.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=\ngithub.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=\ngithub.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=\ngithub.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=\ngithub.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=\ngithub.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=\ngithub.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=\ngithub.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=\ngithub.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0 h1:KfYpVmrjI7JuToy5k8XV3nkapjWx48k4E4JOtVstzQI=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0/go.mod h1:SeQhzAEccGVZVEy7aH87Nh0km+utSpo1pTv6eMMop48=\ngo.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=\ngo.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 h1:K0XaT3DwHAcV4nKLzcQvwAgSyisUghWoY20I7huthMk=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4=\ngo.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=\ngo.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=\ngo.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=\ngo.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=\ngo.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=\ngo.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=\ngo.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0=\ngo.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8=\ngo.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=\ngo.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=\ngo.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=\ngo.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=\ngo.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=\ngo.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=\ngolang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=\ngolang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=\ngolang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=\ngolang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=\ngolang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=\ngolang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=\ngolang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=\ngolang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=\ngolang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=\ngolang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=\ngolang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=\ngolang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA=\ngolang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=\ngolang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=\ngolang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=\ngolang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=\ngolang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=\ngolang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=\ngolang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=\ngolang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=\ngolang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=\ngolang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=\ngolang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=\ngolang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=\ngolang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=\ngolang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=\ngomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=\ngoogle.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1:T6rh4haD3GVYsgEfWExoCZA2o2FmbNyKpTuAxbEFPTg=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 h1:QCqS/PdaHTSWGvupk2F/ehwHtGc0/GYkT+3GAcR1CCc=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI=\ngoogle.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E=\ngoogle.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=\ngoogle.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=\ngoogle.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=\ngopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=\ngopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=\ngopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=\ngopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=\ngopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=\ngotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=\nk8s.io/api v0.30.5 h1:Coz05sfEVywzGcA96AJPUfs2B8LBMnh+IIsM+HCfaz8=\nk8s.io/api v0.30.5/go.mod h1:HfNBGFvq9iNK8dmTKjYIdAtMxu8BXTb9c1SJyO6QjKs=\nk8s.io/apiextensions-apiserver v0.30.5 h1:JfXTIyzXf5+ryncbp7T/uaVjLdvkwtqoNG2vo7S2a6M=\nk8s.io/apiextensions-apiserver v0.30.5/go.mod h1:uVLEME2UPA6UN22i+jTu66B9/0CnsjlHkId+Awo0lvs=\nk8s.io/apimachinery v0.30.5 h1:CQZO19GFgw4zcOjY2H+mJ3k1u1o7zFACTNCB7nu4O18=\nk8s.io/apimachinery v0.30.5/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc=\nk8s.io/cli-runtime v0.30.5 h1:MWY6efoBVH3h0O6p2DgaQszabV5ZntHZwTHBkiz+PSI=\nk8s.io/cli-runtime v0.30.5/go.mod h1:AKMWLDIJQUA5a7yEh5gmzkhpZqYpuDEVovanugfSnQk=\nk8s.io/client-go v0.30.5 h1:vEDSzfTz0F8TXcWVdXl+aqV7NAV8M3UvC2qnGTTCoKw=\nk8s.io/client-go v0.30.5/go.mod h1:/q5fHHBmhAUesOOFJACpD7VJ4e57rVtTPDOsvXrPpMk=\nk8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=\nk8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=\nk8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag=\nk8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98=\nk8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=\nk8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=\nsigs.k8s.io/controller-runtime v0.18.5 h1:nTHio/W+Q4aBlQMgbnC5hZb4IjIidyrizMai9P6n4Rk=\nsigs.k8s.io/controller-runtime v0.18.5/go.mod h1:TVoGrfdpbA9VRFaRnKgk9P5/atA0pMwq+f+msb9M8Sg=\nsigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=\nsigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=\nsigs.k8s.io/kind v0.29.0 h1:3TpCsyh908IkXXpcSnsMjWdwdWjIl7o9IMZImZCWFnI=\nsigs.k8s.io/kind v0.29.0/go.mod h1:ldWQisw2NYyM6k64o/tkZng/1qQW7OlzcN5a8geJX3o=\nsigs.k8s.io/kustomize/kyaml v0.16.0 h1:6J33uKSoATlKZH16unr2XOhDI+otoe2sR3M8PDzW3K0=\nsigs.k8s.io/kustomize/kyaml v0.16.0/go.mod h1:xOK/7i+vmE14N2FdFyugIshB8eF6ALpy7jI87Q2nRh4=\nsigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=\nsigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=\nsigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=\nsigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=\n"
  },
  {
    "path": "hack/argo-cd/argocd-application-controller.yaml",
    "content": "apiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nspec:\n  template:\n    spec:\n      containers:\n        - name: argocd-application-controller\n          imagePullPolicy: IfNotPresent\n"
  },
  {
    "path": "hack/argo-cd/argocd-applicationset-controller.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nspec:\n  template:\n    spec:\n      containers:\n      - name: argocd-applicationset-controller\n        imagePullPolicy: IfNotPresent"
  },
  {
    "path": "hack/argo-cd/argocd-cm.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: argocd-cm\ndata:\n  application.resourceTrackingMethod: annotation\n  accounts.developer: apiKey, login\n  timeout.reconciliation: 60s\n  resource.exclusions: |\n    - kinds:\n        - ProviderConfigUsage\n      apiGroups:\n        - \"*\"\n"
  },
  {
    "path": "hack/argo-cd/argocd-rbac-dev.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: argocd-rbac-cm\ndata:\n  policy.csv: |\n    p, role:developer, applications, *, *, allow\n    g, developer, role:developer\n"
  },
  {
    "path": "hack/argo-cd/argocd-redis.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\nspec:\n  template:\n    spec:\n      containers:\n        - name: redis\n          imagePullPolicy: IfNotPresent\n"
  },
  {
    "path": "hack/argo-cd/argocd-repo-server.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: repo-server\n    app.kubernetes.io/name: argocd-repo-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-repo-server\nspec:\n  template:\n    spec:\n      containers:\n        - name: argocd-repo-server\n          imagePullPolicy: IfNotPresent\n"
  },
  {
    "path": "hack/argo-cd/argocd-server.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-server\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-server\n    spec:\n      containers:\n        - args:\n          - /usr/local/bin/argocd-server\n          - \"{{if .UsePathRouting}}\"\n          - --insecure\n          - --basehref\n          - /argocd\n          - \"{{end}}\"\n          name: argocd-server\n          imagePullPolicy: IfNotPresent\n"
  },
  {
    "path": "hack/argo-cd/argocd-tls-certs-cm.yaml.tmpl",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: argocd-tls-certs-cm\n  labels:\n    app.kubernetes.io/name: argocd-tls-certs-cm\n    app.kubernetes.io/part-of: argocd\ndata:\n  'gitea.{{.Host}}': |\n    {{ .SelfSignedCert | indentNewLines 4 }}\n  '{{.Host}}': |\n    {{ .SelfSignedCert | indentNewLines 4 }}\n"
  },
  {
    "path": "hack/argo-cd/dex-server.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: argocd-dex-server\nspec:\n  replicas: 0\n  template:\n    spec:\n      containers:\n        - name: dex\n          imagePullPolicy: IfNotPresent\n      initContainers:\n        - name: copyutil\n          imagePullPolicy: IfNotPresent\n"
  },
  {
    "path": "hack/argo-cd/generate-manifests.sh",
    "content": "#!/bin/bash\n\nINSTALL_YAML=\"pkg/controllers/localbuild/resources/argo/install.yaml\"\nINGRESS_YAML=\"pkg/controllers/localbuild/resources/argo/ingress.yaml\"\n\necho \"# UCP ARGO INSTALL RESOURCES\" > ${INSTALL_YAML}\necho \"# This file is auto-generated with 'hack/argo-cd/generate-manifests.sh'\" >> ${INSTALL_YAML}\nkustomize build ./hack/argo-cd/ >> ${INSTALL_YAML}\n\ncat ./hack/argo-cd/ingress.yaml.tmpl > ${INGRESS_YAML}\n"
  },
  {
    "path": "hack/argo-cd/ingress.yaml.tmpl",
    "content": "{{- if .UsePathRouting -}}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: argocd-server-ingress-http\n  namespace: argocd\n  annotations:\n    nginx.ingress.kubernetes.io/backend-protocol: \"HTTP\"\n    nginx.ingress.kubernetes.io/use-regex: \"true\"\n    nginx.ingress.kubernetes.io/rewrite-target: /$2\nspec:\n  ingressClassName: nginx\n  rules:\n    - host: {{ .IngressHost }}\n      http:\n        paths:\n          - path: /argocd(/|$)(.*)\n            pathType: ImplementationSpecific\n            backend:\n              service:\n                name: argocd-server\n                port:\n                  name: http\n{{- if ne .IngressHost .Host }}\n    - host: {{ .Host }}\n      http:\n        paths:\n          - path: /argocd(/|$)(.*)\n            pathType: ImplementationSpecific\n            backend:\n              service:\n                name: argocd-server\n                port:\n                  name: http\n{{ end }}\n{{- else -}}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: argocd-server-ingress\n  namespace: argocd\n  annotations:\n    nginx.ingress.kubernetes.io/force-ssl-redirect: \"true\"\n    nginx.ingress.kubernetes.io/ssl-passthrough: \"true\"\nspec:\n  ingressClassName: \"nginx\"\n  rules:\n    - host: argocd.{{ .IngressHost }}\n      http:\n        paths:\n          - path: /\n            pathType: Prefix\n            backend:\n              service:\n                name: argocd-server\n                port:\n                  name: https\n{{- if ne .IngressHost .Host }}\n    - host: argocd.{{ .Host }}\n      http:\n        paths:\n          - path: /\n            pathType: Prefix\n            backend:\n              service:\n                name: argocd-server\n                port:\n                  name: https\n{{ end }}\n{{ end }}\n"
  },
  {
    "path": "hack/argo-cd/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\nresources:\n  - https://raw.githubusercontent.com/argoproj/argo-cd/v3.1.7/manifests/install.yaml\n\npatches:\n  - path: dex-server.yaml\n  - path: notifications-controller.yaml\n  - path: argocd-cm.yaml\n  - path: argocd-server.yaml\n  - path: argocd-application-controller.yaml\n  - path: argocd-applicationset-controller.yaml\n  - path: argocd-repo-server.yaml\n  - path: argocd-redis.yaml\n  - path: argocd-tls-certs-cm.yaml.tmpl\n  - path: argocd-rbac-dev.yaml\n"
  },
  {
    "path": "hack/argo-cd/notifications-controller.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: argocd-notifications-controller\nspec:\n  replicas: 0\n  template:\n    spec:\n      containers:\n        - name: argocd-notifications-controller\n          imagePullPolicy: IfNotPresent\n"
  },
  {
    "path": "hack/boilerplate.go.txt",
    "content": "/*\nCopyright 2023.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/"
  },
  {
    "path": "hack/embedded-resources.sh",
    "content": "#!/bin/bash\n\nDIRECTORIES='argo-cd gitea ingress-nginx'\n\nfor dir in $DIRECTORIES; do\n    ./hack/$dir/generate-manifests.sh;\n    if [[ $? -ne 0 ]]; then\n        echo \"error running script: ./hack/$dir/generate-manifests.sh\"\n        exit 1\n    fi\ndone"
  },
  {
    "path": "hack/gitea/generate-manifests.sh",
    "content": "#!/bin/bash\nset -e\n\nINSTALL_YAML=\"pkg/controllers/localbuild/resources/gitea/k8s/install.yaml\"\nGITEA_DIR=\"./hack/gitea\"\nCHART_VERSION=\"12.1.2\"\n\necho \"# GITEA INSTALL RESOURCES\" >${INSTALL_YAML}\necho \"# This file is auto-generated with 'hack/gitea/generate-manifests.sh'\" >>${INSTALL_YAML}\n\nhelm repo add gitea-charts --force-update https://dl.gitea.com/charts/\nhelm repo update\nhelm template my-gitea gitea-charts/gitea -f ${GITEA_DIR}/values.yaml --version ${CHART_VERSION} >>${INSTALL_YAML}\nsed -i.bak '3d' ${INSTALL_YAML}\n\n# helm template for pvc uses Release.namespace which doesn't get set\n# when running the helm \"template\" command\n# See: https://gitea.com/gitea/helm-chart/issues/630\n# and: https://gitea.com/gitea/helm-chart/src/commit/3b2b700441e91a19a535e05de3a9eab2fef0b117/templates/gitea/pvc.yaml#L6\n# and: https://github.com/helm/helm/issues/3553#issuecomment-1186518158\n# and: https://github.com/splunk/splunk-connect-for-kubernetes/pull/790\nsed -i.bak 's/namespace: default/namespace: gitea/g' ${INSTALL_YAML}\n\ncat ${GITEA_DIR}/ingress.yaml.tmpl >>${INSTALL_YAML}\n\nrm -rf \"${INSTALL_YAML}.bak\"\n"
  },
  {
    "path": "hack/gitea/ingress.yaml.tmpl",
    "content": "{{- if .UsePathRouting }}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: my-gitea-path-oci-root\n  namespace: gitea\n  annotations:\n    nginx.ingress.kubernetes.io/proxy-body-size: 1024m\nspec:\n  ingressClassName: nginx\n  rules:\n    - host: {{ .IngressHost }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /v2\n            pathType: Prefix\n{{- if ne .IngressHost .Host }}\n    - host: {{ .Host }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /v2\n            pathType: Prefix\n{{ end }}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: my-gitea-path-oci-repo\n  namespace: gitea\n  annotations:\n    nginx.ingress.kubernetes.io/proxy-body-size: 1024m\n    nginx.ingress.kubernetes.io/use-regex: \"true\"\n    nginx.ingress.kubernetes.io/rewrite-target: /v2/$2\nspec:\n  ingressClassName: nginx\n  rules:\n    - host: {{ .IngressHost }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /v2/gitea(/|$)(.*)\n            pathType: ImplementationSpecific\n{{- if ne .IngressHost .Host }}\n    - host: {{ .Host }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /v2/gitea(/|$)(.*)\n            pathType: ImplementationSpecific\n{{ end }}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: my-gitea-path\n  namespace: gitea\n  annotations:\n    nginx.ingress.kubernetes.io/proxy-body-size: 1024m\n    nginx.ingress.kubernetes.io/use-regex: \"true\"\n    nginx.ingress.kubernetes.io/rewrite-target: /$2\nspec:\n  ingressClassName: nginx\n  rules:\n    - host: {{ .IngressHost }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /gitea(/|$)(.*)\n            pathType: ImplementationSpecific\n{{- if ne .IngressHost .Host }}\n    - host: {{ .Host }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /gitea(/|$)(.*)\n            pathType: ImplementationSpecific\n{{ end }}\n{{ else }}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: my-gitea-custom\n  namespace: gitea\n  annotations:\n    nginx.ingress.kubernetes.io/proxy-body-size: 1024m\nspec:\n  ingressClassName: nginx\n  rules:\n    - host: gitea.{{ .IngressHost }}\n      http:\n        paths:\n          - path: /\n            pathType: Prefix\n            backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n{{- if ne .IngressHost .Host }}\n    - host: gitea.{{ .Host }}\n      http:\n        paths:\n          - path: /\n            pathType: Prefix\n            backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n{{ end }}\n{{ end }}\n"
  },
  {
    "path": "hack/gitea/values.yaml",
    "content": "valkey-cluster:\n  enabled: false\npostgresql:\n  enabled: false\npostgresql-ha:\n  enabled: false\n\npersistence:\n  enabled: true\n  size: 5Gi\n\ntest:\n  enabled: false\n\ngitea:\n  admin:\n    existingSecret: gitea-credential\n  config:\n    database:\n      DB_TYPE: sqlite3\n    session:\n      PROVIDER: memory\n    cache:\n      ADAPTER: memory\n    queue:\n      TYPE: level\n    server:\n      DOMAIN: '{{- if .UsePathRouting -}} {{ .Host }} {{- else -}} gitea.{{- .Host }} {{- end }}'\n      ROOT_URL: '{{- if .UsePathRouting }} {{- .Protocol }}://{{ .Host }}:{{ .Port }}/gitea {{- else }} {{- .Protocol }}://gitea.{{ .Host }}:{{ .Port }} {{- end }}'\n      SSH_PORT: 32222\n      SSH_LISTEN_PORT: 2222\n    webhook:\n      ALLOWED_HOST_LIST: private\n      SKIP_TLS_VERIFY: true\n\nservice:\n  http:\n    type: NodePort\n    port: 3000\n    nodePort: 32223\n    externalTrafficPolicy: Local\n  ssh:\n    type: NodePort\n    port: 32222\n    nodePort: 32222\n    externalTrafficPolicy: Local\n\ningress:\n  # NOTE: The ingress is generated in a later step for path based routing feature See: hack/argo-cd/generate-manifests.sh\n  enabled: false\n\nimage:\n  pullPolicy: \"IfNotPresent\"\n  # Adds -rootless suffix to image name\n  rootless: true\n"
  },
  {
    "path": "hack/ingress-nginx/cm-ingress-nginx-controller.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\ndata:\n  allow-snippet-annotations: \"true\"\n  proxy-buffer-size: \"32k\"\n  proxy-busy-buffers-size: \"32k\"\n  use-forwarded-headers: \"true\"\n"
  },
  {
    "path": "hack/ingress-nginx/deployment-ingress-nginx.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  strategy:\n    rollingUpdate:\n      maxUnavailable: 1\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.1\n    spec:\n      terminationGracePeriodSeconds: 0\n      containers:\n        - name: controller\n          args:\n            - /nginx-ingress-controller\n            - --election-id=ingress-nginx-leader\n            - --controller-class=k8s.io/ingress-nginx\n            - --ingress-class=nginx\n            - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller\n            - --validating-webhook=:8443\n            - --validating-webhook-certificate=/usr/local/certificates/cert\n            - --validating-webhook-key=/usr/local/certificates/key\n            - --watch-ingress-without-class=true\n            - --publish-status-address=localhost\n            - --enable-ssl-passthrough\n            - --default-ssl-certificate=ingress-nginx/idpbuilder-cert\n          ports:\n            - containerPort: 80\n              hostPort: 80\n              name: http\n              protocol: TCP\n            - containerPort: 443\n              hostPort: 443\n              name: https\n              protocol: TCP\n"
  },
  {
    "path": "hack/ingress-nginx/generate-manifests.sh",
    "content": "#!/bin/bash\n\nINSTALL_YAML=\"pkg/controllers/localbuild/resources/nginx/k8s/ingress-nginx.yaml\"\nNGINX_DIR=\"./hack/ingress-nginx\"\n\n\necho \"# INGRESS-NGINX INSTALL RESOURCES\" > ${INSTALL_YAML}\necho \"# This file is auto-generated with 'hack/ingress-nginx/generate-manifests.sh'\" >> ${INSTALL_YAML}\nkustomize build ${NGINX_DIR} >> ${INSTALL_YAML}\n\ncat ${NGINX_DIR}/service-ingress-nginx.yaml.tmpl >> ${INSTALL_YAML}\n"
  },
  {
    "path": "hack/ingress-nginx/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\nresources:\n  - https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.13.0/deploy/static/provider/kind/deploy.yaml\n\npatches:\n  - path: deployment-ingress-nginx.yaml\n  - path: cm-ingress-nginx-controller.yaml\n  - target:\n      group: \"\"\n      version: v1\n      kind: Service\n      name: ingress-nginx-controller\n      namespace: ingress-nginx\n    patch: |\n      $patch: delete\n      kind: Kustomization\n      metadata:\n        name: ingress-nginx-controller\n  # ArgoCD has poor support for ttlSecondsAfterFinished and it shouldn't be essential to clean these up\n  - target:\n      group: batch\n      version: v1\n      kind: Job\n      name: ingress-nginx-admission-create\n      namespace: ingress-nginx\n    patch: |\n      - op: remove\n        path: /spec/ttlSecondsAfterFinished\n  - target:\n      group: batch\n      version: v1\n      kind: Job\n      name: ingress-nginx-admission-patch\n      namespace: ingress-nginx\n    patch: |\n      - op: remove\n        path: /spec/ttlSecondsAfterFinished\n"
  },
  {
    "path": "hack/ingress-nginx/service-ingress-nginx.yaml.tmpl",
    "content": "---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  ipFamilies:\n    - IPv4\n  ipFamilyPolicy: SingleStack\n  ports:\n    - appProtocol: {{ .Protocol }}\n      name: {{ .Protocol }}-{{ .Port }}\n      port: {{ .Port }}\n      protocol: TCP\n      targetPort: {{ .Protocol }}\n    - appProtocol: http\n      name: http\n      port: 80\n      protocol: TCP\n      targetPort: http\n    - appProtocol: https\n      name: https\n      port: 443\n      protocol: TCP\n      targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: NodePort\n"
  },
  {
    "path": "hack/install.sh",
    "content": "#!/bin/bash\n\nset -e -o pipefail\n# get the latest stable release by look for tag name pattern like 'v*.*.*'.  For example, v1.1.1\n# GitHub API returns releases in chronological order so we take the first matching tag name.\nversion=$(curl -s https://api.github.com/repos/cnoe-io/idpbuilder/releases | grep tag_name | grep -o -e '\"v[0-9].[0-9].[0-9]\"' | head -n1 | sed 's/\"//g')\n\necho \"Downloading idpbuilder version ${version}\"\ncurl -L --progress-bar -o ./idpbuilder.tar.gz \"https://github.com/cnoe-io/idpbuilder/releases/download/${version}/idpbuilder-$(uname | awk '{print tolower($0)}')-$(uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/').tar.gz\"\ntar xzf idpbuilder.tar.gz\n\necho \"Moving idpbuilder binary to /usr/local/bin\"\nsudo mv ./idpbuilder /usr/local/bin/\nidpbuilder version\necho \"Successfully installed idpbuilder\"\n"
  },
  {
    "path": "main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/signal\"\n\t\"syscall\"\n\n\t\"github.com/cnoe-io/idpbuilder/pkg/cmd\"\n)\n\nfunc main() {\n\tinterrupted := make(chan os.Signal, 1)\n\tdefer close(interrupted)\n\tsignal.Notify(interrupted, os.Interrupt, syscall.SIGTERM)\n\tdefer signal.Stop(interrupted)\n\n\tctx, cancel := context.WithCancelCause(context.Background())\n\n\tgo func() {\n\t\tselect {\n\t\tcase <-interrupted:\n\t\t\tcancel(fmt.Errorf(\"command interrupted\"))\n\t\t}\n\t}()\n\n\tcmd.Execute(ctx)\n}\n"
  },
  {
    "path": "pkg/build/build.go",
    "content": "package build\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"slices\"\n\t\"time\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/globals\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/controllers\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/kind\"\n\tk8serrors \"k8s.io/apimachinery/pkg/api/errors\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/client-go/rest\"\n\t\"k8s.io/client-go/tools/clientcmd\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil\"\n\t\"sigs.k8s.io/controller-runtime/pkg/manager\"\n\t\"sigs.k8s.io/controller-runtime/pkg/metrics/server\"\n)\n\nvar (\n\tsetupLog = ctrl.Log.WithName(\"setup\")\n)\n\ntype Build struct {\n\tname                 string\n\tcfg                  v1alpha1.BuildCustomizationSpec\n\tkindConfigPath       string\n\tkubeConfigPath       string\n\tkubeVersion          string\n\textraPortsMapping    string\n\tregistryConfig       []string\n\tcustomPackageFiles   []string\n\tcustomPackageDirs    []string\n\tcustomPackageUrls    []string\n\tpackageCustomization map[string]v1alpha1.PackageCustomization\n\texitOnSync           bool\n\tscheme               *runtime.Scheme\n\tCancelFunc           context.CancelFunc\n}\n\ntype NewBuildOptions struct {\n\tName                 string\n\tTemplateData         v1alpha1.BuildCustomizationSpec\n\tKindConfigPath       string\n\tKubeConfigPath       string\n\tKubeVersion          string\n\tExtraPortsMapping    string\n\tRegistryConfig       []string\n\tCustomPackageFiles   []string\n\tCustomPackageDirs    []string\n\tCustomPackageUrls    []string\n\tPackageCustomization map[string]v1alpha1.PackageCustomization\n\tExitOnSync           bool\n\tScheme               *runtime.Scheme\n\tCancelFunc           context.CancelFunc\n}\n\nfunc NewBuild(opts NewBuildOptions) *Build {\n\treturn &Build{\n\t\tname:                 opts.Name,\n\t\tkindConfigPath:       opts.KindConfigPath,\n\t\tkubeConfigPath:       opts.KubeConfigPath,\n\t\tkubeVersion:          opts.KubeVersion,\n\t\textraPortsMapping:    opts.ExtraPortsMapping,\n\t\tregistryConfig:       opts.RegistryConfig,\n\t\tcustomPackageFiles:   opts.CustomPackageFiles,\n\t\tcustomPackageDirs:    opts.CustomPackageDirs,\n\t\tcustomPackageUrls:    opts.CustomPackageUrls,\n\t\tpackageCustomization: opts.PackageCustomization,\n\t\texitOnSync:           opts.ExitOnSync,\n\t\tscheme:               opts.Scheme,\n\t\tcfg:                  opts.TemplateData,\n\t\tCancelFunc:           opts.CancelFunc,\n\t}\n}\n\nfunc (b *Build) ReconcileKindCluster(ctx context.Context, recreateCluster bool) error {\n\t// Initialize Kind Cluster\n\tcluster, err := kind.NewCluster(b.name, b.kubeVersion, b.kubeConfigPath, b.kindConfigPath, b.extraPortsMapping, b.registryConfig, b.cfg, setupLog)\n\tif err != nil {\n\t\tsetupLog.Error(err, \"Error Creating kind cluster\")\n\t\treturn err\n\t}\n\n\t// Build Kind cluster\n\tif err := cluster.Reconcile(ctx, recreateCluster); err != nil {\n\t\tsetupLog.Error(err, \"Error starting kind cluster\")\n\t\treturn err\n\t}\n\n\t// Create Kube Config for Kind cluster\n\tif err := cluster.ExportKubeConfig(b.name, false); err != nil {\n\t\tsetupLog.Error(err, \"Error exporting kubeconfig from kind cluster\")\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (b *Build) GetKubeConfig() (*rest.Config, error) {\n\tkubeConfig, err := clientcmd.BuildConfigFromFlags(\"\", b.kubeConfigPath)\n\tif err != nil {\n\t\tsetupLog.Error(err, \"Error building kubeconfig from kind cluster\")\n\t\treturn nil, err\n\t}\n\treturn kubeConfig, nil\n}\n\nfunc (b *Build) GetKubeClient(kubeConfig *rest.Config) (client.Client, error) {\n\tkubeClient, err := client.New(kubeConfig, client.Options{Scheme: b.scheme})\n\tif err != nil {\n\t\tsetupLog.Error(err, \"Error creating kubernetes client\")\n\t\treturn nil, err\n\t}\n\treturn kubeClient, nil\n}\n\nfunc (b *Build) ReconcileCRDs(ctx context.Context, kubeClient client.Client) error {\n\t// Ensure idpbuilder CRDs\n\tif err := controllers.EnsureCRDs(ctx, b.scheme, kubeClient, b.cfg); err != nil {\n\t\tsetupLog.Error(err, \"Error creating idpbuilder CRDs\")\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (b *Build) RunControllers(ctx context.Context, mgr manager.Manager, exitCh chan error, tmpDir string) error {\n\treturn controllers.RunControllers(ctx, mgr, exitCh, b.CancelFunc, b.exitOnSync, b.cfg, tmpDir)\n}\n\nfunc (b *Build) isCompatible(ctx context.Context, kubeClient client.Client) (bool, error) {\n\tlocalBuild := v1alpha1.Localbuild{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName: b.name,\n\t\t},\n\t}\n\n\terr := kubeClient.Get(ctx, client.ObjectKeyFromObject(&localBuild), &localBuild)\n\tif err != nil {\n\t\tif k8serrors.IsNotFound(err) {\n\t\t\treturn true, nil\n\t\t}\n\t\treturn false, err\n\t}\n\n\tok := isBuildCustomizationSpecEqual(b.cfg, localBuild.Spec.BuildCustomization)\n\n\tif ok {\n\t\treturn ok, nil\n\t}\n\n\texisting, given := localBuild.Spec.BuildCustomization, b.cfg\n\texisting.SelfSignedCert = \"\"\n\tgiven.SelfSignedCert = \"\"\n\n\treturn false, fmt.Errorf(\"provided command flags and existing configurations are incompatible. please recreate the cluster. \"+\n\t\t\"existing: %+v, given: %+v\",\n\t\texisting, given)\n}\n\nfunc (b *Build) Run(ctx context.Context, recreateCluster bool) error {\n\tsetupLog.Info(\"Creating kind cluster\")\n\tif err := b.ReconcileKindCluster(ctx, recreateCluster); err != nil {\n\t\treturn err\n\t}\n\n\tsetupLog.V(1).Info(\"Getting Kube config\")\n\tkubeConfig, err := b.GetKubeConfig()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsetupLog.V(1).Info(\"Getting Kube client\")\n\tkubeClient, err := b.GetKubeClient(kubeConfig)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsetupLog.Info(\"Adding CRDs to the cluster\")\n\tif err := b.ReconcileCRDs(ctx, kubeClient); err != nil {\n\t\treturn err\n\t}\n\n\tsetupLog.V(1).Info(\"Creating controller manager\")\n\t// Create controller manager\n\tmgr, err := ctrl.NewManager(kubeConfig, ctrl.Options{\n\t\tScheme: b.scheme,\n\t\tMetrics: server.Options{\n\t\t\tBindAddress: \"0\",\n\t\t},\n\t})\n\tif err != nil {\n\t\tsetupLog.Error(err, \"Error creating controller manager\")\n\t\treturn err\n\t}\n\n\tdir, err := os.MkdirTemp(\"\", fmt.Sprintf(\"%s-%s-\", globals.ProjectName, b.name))\n\tif err != nil {\n\t\tsetupLog.Error(err, \"creating temp dir\")\n\t\treturn err\n\t}\n\tdefer os.RemoveAll(dir)\n\tsetupLog.V(1).Info(\"Created temp directory for cloning repositories\", \"dir\", dir)\n\n\tsetupLog.Info(\"Setting up CoreDNS\")\n\terr = setupCoreDNS(ctx, kubeClient, b.scheme, b.cfg)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsetupLog.Info(\"Setting up TLS certificate\")\n\tcert, err := setupSelfSignedCertificate(ctx, setupLog, kubeClient, b.cfg)\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.cfg.SelfSignedCert = string(cert)\n\n\tsetupLog.V(1).Info(\"Checking for incompatible options from a previous run\")\n\tok, err := b.isCompatible(ctx, kubeClient)\n\tif err != nil {\n\t\tsetupLog.Error(err, \"Error while checking incompatible flags\")\n\t\treturn err\n\t}\n\tif !ok {\n\t\treturn err\n\t}\n\n\tmanagerExit := make(chan error)\n\n\tsetupLog.V(1).Info(\"Running controllers\")\n\tif err := b.RunControllers(ctx, mgr, managerExit, dir); err != nil {\n\t\tsetupLog.Error(err, \"Error running controllers\")\n\t\treturn err\n\t}\n\n\tlocalBuild := v1alpha1.Localbuild{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName: b.name,\n\t\t},\n\t}\n\n\tcliStartTime := time.Now().Format(time.RFC3339Nano)\n\n\tsetupLog.Info(\"Creating localbuild resource\")\n\t_, err = controllerutil.CreateOrUpdate(ctx, kubeClient, &localBuild, func() error {\n\t\tif localBuild.ObjectMeta.Annotations == nil {\n\t\t\tlocalBuild.ObjectMeta.Annotations = map[string]string{}\n\t\t}\n\t\tlocalBuild.ObjectMeta.Annotations[v1alpha1.CliStartTimeAnnotation] = cliStartTime\n\t\tlocalBuild.Spec = v1alpha1.LocalbuildSpec{\n\t\t\tBuildCustomization: b.cfg,\n\t\t\tPackageConfigs: v1alpha1.PackageConfigsSpec{\n\t\t\t\tArgo: v1alpha1.ArgoPackageConfigSpec{\n\t\t\t\t\tEnabled: true,\n\t\t\t\t},\n\t\t\t\tEmbeddedArgoApplications: v1alpha1.EmbeddedArgoApplicationsPackageConfigSpec{\n\t\t\t\t\tEnabled: true,\n\t\t\t\t},\n\t\t\t\tCustomPackageDirs:        b.customPackageDirs,\n\t\t\t\tCustomPackageFiles:       b.customPackageFiles,\n\t\t\t\tCustomPackageUrls:        b.customPackageUrls,\n\t\t\t\tCorePackageCustomization: b.packageCustomization,\n\t\t\t},\n\t\t}\n\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"creating localbuild resource: %w\", err)\n\t}\n\n\tselect {\n\tcase mgrErr := <-managerExit:\n\t\tif mgrErr != nil {\n\t\t\treturn mgrErr\n\t\t}\n\tcase <-ctx.Done():\n\t\treturn nil\n\t}\n\treturn nil\n}\n\nfunc isBuildCustomizationSpecEqual(s1, s2 v1alpha1.BuildCustomizationSpec) bool {\n\t// probably ok to use cmp.Equal but keeping it simple for now\n\treturn s1.Protocol == s2.Protocol &&\n\t\ts1.Host == s2.Host &&\n\t\ts1.IngressHost == s2.IngressHost &&\n\t\ts1.Port == s2.Port &&\n\t\ts1.UsePathRouting == s2.UsePathRouting &&\n\t\ts1.SelfSignedCert == s2.SelfSignedCert &&\n\t\ts1.StaticPassword == s2.StaticPassword &&\n\t\ts1.InsecureRegistryMirrors == s2.InsecureRegistryMirrors &&\n\t\tslices.Equal(s1.RegistryMirrors, s2.RegistryMirrors)\n}\n"
  },
  {
    "path": "pkg/build/build_test.go",
    "content": "package build\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/mock\"\n\t\"github.com/stretchr/testify/require\"\n\tk8serrors \"k8s.io/apimachinery/pkg/api/errors\"\n\t\"k8s.io/apimachinery/pkg/runtime/schema\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nfunc TestIsCompatible(t *testing.T) {\n\tcfg := v1alpha1.BuildCustomizationSpec{\n\t\tProtocol:       \"http\",\n\t\tHost:           \"cnoe.localtest.me\",\n\t\tIngressHost:    \"string\",\n\t\tPort:           \"8443\",\n\t\tUsePathRouting: false,\n\t\tSelfSignedCert: \"some-cert\",\n\t}\n\n\tb := Build{\n\t\tname: \"test\",\n\t\tcfg:  cfg,\n\t}\n\n\tctx := context.Background()\n\tfClient := new(fakeKubeClient)\n\tfClient.On(\"Get\", ctx, client.ObjectKey{Name: \"test\"}, mock.Anything, mock.Anything).Run(func(args mock.Arguments) {\n\t\targ := args.Get(2).(*v1alpha1.Localbuild)\n\t\targ.Spec.BuildCustomization = cfg\n\t}).Return(nil)\n\n\tok, err := b.isCompatible(ctx, fClient)\n\n\tassert.NoError(t, err)\n\tfClient.AssertExpectations(t)\n\trequire.True(t, ok)\n\n\tfClient = new(fakeKubeClient)\n\tfClient.On(\"Get\", ctx, client.ObjectKey{Name: \"test\"}, mock.Anything, mock.Anything).Run(func(args mock.Arguments) {\n\t\targ := args.Get(2).(*v1alpha1.Localbuild)\n\t\tc := cfg\n\t\tc.Host = \"not-right\"\n\t\targ.Spec.BuildCustomization = c\n\t}).Return(nil)\n\n\tok, err = b.isCompatible(ctx, fClient)\n\n\tassert.Error(t, err)\n\tfClient.AssertExpectations(t)\n\trequire.False(t, ok)\n\n\tfClient = new(fakeKubeClient)\n\tfClient.On(\"Get\", ctx, client.ObjectKey{Name: \"test\"}, mock.Anything, mock.Anything).\n\t\tReturn(k8serrors.NewNotFound(schema.GroupResource{}, \"name\"))\n\n\tok, err = b.isCompatible(ctx, fClient)\n\n\tassert.NoError(t, err)\n\tfClient.AssertExpectations(t)\n\trequire.True(t, ok)\n}\n"
  },
  {
    "path": "pkg/build/coredns.go",
    "content": "package build\n\nimport (\n\t\"context\"\n\t\"embed\"\n\t\"fmt\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\tappsv1 \"k8s.io/api/apps/v1\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil\"\n)\n\nconst (\n\tcoreDNSTemplatePath = \"templates/coredns\"\n)\n\n//go:embed templates\nvar templates embed.FS\n\nfunc setupCoreDNS(ctx context.Context, kubeClient client.Client, scheme *runtime.Scheme, templateData v1alpha1.BuildCustomizationSpec) error {\n\tcheckCM := &corev1.ConfigMap{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      \"coredns-conf-default\",\n\t\t\tNamespace: \"kube-system\",\n\t\t},\n\t}\n\terr := kubeClient.Get(ctx, client.ObjectKeyFromObject(checkCM), checkCM)\n\tif err == nil {\n\t\treturn nil\n\t}\n\n\tobjs, err := k8s.BuildCustomizedObjects(\"\", coreDNSTemplatePath, templates, scheme, templateData)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"rendering embedded coredns files: %w\", err)\n\t}\n\n\tfor i := range objs {\n\t\tobj := objs[i]\n\t\tswitch t := obj.(type) {\n\t\tcase *appsv1.Deployment:\n\t\t\tdep := &appsv1.Deployment{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      t.Name,\n\t\t\t\t\tNamespace: t.Namespace,\n\t\t\t\t},\n\t\t\t}\n\t\t\t_, err = controllerutil.CreateOrUpdate(ctx, kubeClient, dep, func() error {\n\t\t\t\tdep.Spec = t.Spec\n\t\t\t\treturn nil\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"creating/updating deployment: %w\", err)\n\t\t\t}\n\t\tcase *corev1.ConfigMap:\n\t\t\tcm := &corev1.ConfigMap{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      t.Name,\n\t\t\t\t\tNamespace: t.Namespace,\n\t\t\t\t},\n\t\t\t}\n\t\t\t_, err = controllerutil.CreateOrUpdate(ctx, kubeClient, cm, func() error {\n\t\t\t\tcm.Data = t.Data\n\t\t\t\treturn nil\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"creating/updating configmap: %w\", err)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/build/templates/coredns/cm-coredns-custom.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: coredns-conf-custom\n  namespace: kube-system\ndata:\n  custom.conf: |\n    # insert custom rules here\n"
  },
  {
    "path": "pkg/build/templates/coredns/cm-coredns-default.yaml.tmpl",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: coredns-conf-default\n  namespace: kube-system\ndata:\n  default.conf: |\n    # Goal: Rewrite rules for in-cluster access to a service: gitea, argocd, etc using the same FQDN as for external access\n\n    # subdomain names e.g. gitea.cnoe.localtest.me resolves to the IP address of the kubernetes ingress service and then will become ingress-nginx-controller.ingress-nginx.svc.cluster.local\n    rewrite stop {\n        name regex (.*).{{ .Host }} ingress-nginx-controller.ingress-nginx.svc.cluster.local answer auto\n    }\n\n    # host name resolves to the IP address of the kubernetes ingress service\n    rewrite name exact {{ .Host }} ingress-nginx-controller.ingress-nginx.svc.cluster.local\n"
  },
  {
    "path": "pkg/build/templates/coredns/cm-coredns.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: coredns\n  namespace: kube-system\ndata:\n  Corefile: |\n    .:53 {\n        errors\n        health {\n           lameduck 5s\n        }\n        ready\n\n        import ../coredns-configs/*.conf\n\n        kubernetes cluster.local in-addr.arpa ip6.arpa {\n           pods insecure\n           fallthrough in-addr.arpa ip6.arpa\n           ttl 30\n        }\n        prometheus :9153\n        forward . /etc/resolv.conf {\n           max_concurrent 1000\n        }\n        cache 30\n        loop\n        reload\n        loadbalance\n    }\n"
  },
  {
    "path": "pkg/build/templates/coredns/deployment-coredns.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    k8s-app: kube-dns\n  name: coredns\n  namespace: kube-system\nspec:\n  progressDeadlineSeconds: 600\n  replicas: 2\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      k8s-app: kube-dns\n  strategy:\n    rollingUpdate:\n      maxSurge: 25%\n      maxUnavailable: 1\n    type: RollingUpdate\n  template:\n    metadata:\n      creationTimestamp: null\n      labels:\n        k8s-app: kube-dns\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchExpressions:\n                    - key: k8s-app\n                      operator: In\n                      values:\n                        - kube-dns\n                topologyKey: kubernetes.io/hostname\n              weight: 100\n      containers:\n        - args:\n            - -conf\n            - /etc/coredns/Corefile\n          image: registry.k8s.io/coredns/coredns:v1.11.1\n          imagePullPolicy: IfNotPresent\n          livenessProbe:\n            failureThreshold: 5\n            httpGet:\n              path: /health\n              port: 8080\n              scheme: HTTP\n            initialDelaySeconds: 60\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 5\n          name: coredns\n          ports:\n            - containerPort: 53\n              name: dns\n              protocol: UDP\n            - containerPort: 53\n              name: dns-tcp\n              protocol: TCP\n            - containerPort: 9153\n              name: metrics\n              protocol: TCP\n          readinessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: /ready\n              port: 8181\n              scheme: HTTP\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          resources:\n            limits:\n              memory: 170Mi\n            requests:\n              cpu: 100m\n              memory: 70Mi\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              add:\n                - NET_BIND_SERVICE\n              drop:\n                - ALL\n            readOnlyRootFilesystem: true\n          terminationMessagePath: /dev/termination-log\n          terminationMessagePolicy: File\n          volumeMounts:\n            - mountPath: /etc/coredns\n              name: config-volume\n              readOnly: true\n            - mountPath: /etc/coredns-configs\n              name: custom-configs\n              readOnly: true\n      dnsPolicy: Default\n      nodeSelector:\n        kubernetes.io/os: linux\n      priorityClassName: system-cluster-critical\n      restartPolicy: Always\n      schedulerName: default-scheduler\n      securityContext: {}\n      serviceAccount: coredns\n      serviceAccountName: coredns\n      terminationGracePeriodSeconds: 30\n      tolerations:\n        - key: CriticalAddonsOnly\n          operator: Exists\n        - effect: NoSchedule\n          key: node-role.kubernetes.io/control-plane\n      volumes:\n        - configMap:\n            defaultMode: 420\n            items:\n              - key: Corefile\n                path: Corefile\n            name: coredns\n          name: config-volume\n        - name: custom-configs\n          projected:\n            sources:\n              - configMap:\n                  name: coredns-conf-custom\n              - configMap:\n                  name: coredns-conf-default\n"
  },
  {
    "path": "pkg/build/tls.go",
    "content": "package build\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/ecdsa\"\n\t\"crypto/elliptic\"\n\t\"crypto/rand\"\n\t\"crypto/x509\"\n\t\"crypto/x509/pkix\"\n\t\"encoding/pem\"\n\t\"fmt\"\n\t\"io\"\n\t\"math/big\"\n\t\"time\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/globals\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\t\"github.com/go-logr/logr\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tk8serrors \"k8s.io/apimachinery/pkg/api/errors\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nconst (\n\tcertificateOrgName     = \"cnoe.io\"\n\tcertificateValidLength = time.Hour * 8766\n\targocdTLSSecretName    = \"argocd-server-tls\"\n)\n\nfunc createCertificateAndKeySecret(ctx context.Context, kubeClient client.Client, name, namespace string, cert, key []byte) error {\n\tsecret := &corev1.Secret{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      name,\n\t\t\tNamespace: namespace,\n\t\t},\n\t\tType: corev1.SecretTypeTLS,\n\t\tData: map[string][]byte{\n\t\t\tcorev1.TLSCertKey:       cert,\n\t\t\tcorev1.TLSPrivateKeyKey: key,\n\t\t},\n\t}\n\terr := kubeClient.Create(ctx, secret)\n\tif err != nil {\n\t\tif k8serrors.IsAlreadyExists(err) {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc createIngressCertificateSecret(ctx context.Context, kubeClient client.Client, cert []byte) error {\n\tsecret := &corev1.Secret{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      globals.SelfSignedCertCMName,\n\t\t\tNamespace: corev1.NamespaceDefault,\n\t\t},\n\t\tData: map[string][]byte{\n\t\t\tglobals.SelfSignedCertCMKeyName: cert,\n\t\t},\n\t}\n\terr := kubeClient.Create(ctx, secret)\n\tif err != nil {\n\t\tif k8serrors.IsAlreadyExists(err) {\n\t\t\treturn nil\n\t\t}\n\t\treturn fmt.Errorf(\"creating configmap for certificate: %w\", err)\n\t}\n\treturn nil\n}\n\nfunc getIngressCertificateAndKey(ctx context.Context, kubeClient client.Client, name, namespace string) ([]byte, []byte, error) {\n\tsecret := &corev1.Secret{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      name,\n\t\t\tNamespace: namespace,\n\t\t},\n\t\tType: corev1.SecretTypeTLS,\n\t}\n\n\terr := kubeClient.Get(ctx, client.ObjectKeyFromObject(secret), secret)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tcert, ok := secret.Data[corev1.TLSCertKey]\n\tif !ok {\n\t\treturn nil, nil, fmt.Errorf(\"key %s not found in secret %s\", corev1.TLSCertKey, name)\n\t}\n\tprivateKey, ok := secret.Data[corev1.TLSPrivateKeyKey]\n\tif !ok {\n\t\treturn nil, nil, fmt.Errorf(\"key %s not found in secret %s\", corev1.TLSPrivateKeyKey, name)\n\t}\n\n\treturn cert, privateKey, nil\n}\n\nfunc getOrCreateIngressCertificateAndKey(ctx context.Context, kubeClient client.Client, name, namespace string, sans []string) ([]byte, []byte, error) {\n\tc, p, err := getIngressCertificateAndKey(ctx, kubeClient, name, namespace)\n\tif err != nil {\n\t\tif k8serrors.IsNotFound(err) {\n\t\t\tcert, privateKey, cErr := createSelfSignedCertificate(sans)\n\t\t\tif cErr != nil {\n\t\t\t\treturn nil, nil, cErr\n\t\t\t}\n\n\t\t\tcErr = createCertificateAndKeySecret(ctx, kubeClient, name, namespace, cert, privateKey)\n\t\t\tif cErr != nil {\n\t\t\t\treturn nil, nil, fmt.Errorf(\"creating secret %s: %w\", name, err)\n\t\t\t}\n\t\t\treturn cert, privateKey, nil\n\t\t} else {\n\t\t\treturn nil, nil, fmt.Errorf(\"getting secret %s: %w\", name, err)\n\t\t}\n\t}\n\treturn c, p, nil\n}\n\nfunc createSelfSignedCertificate(sans []string) ([]byte, []byte, error) {\n\tprivateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"generating private key: %w\", err)\n\t}\n\n\tkeyUsage := x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign\n\tnotBefore := time.Now()\n\tnotAfter := notBefore.Add(certificateValidLength)\n\n\tserialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)\n\tserialNumber, err := rand.Int(rand.Reader, serialNumberLimit)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"generating certificate serial number: %w\", err)\n\t}\n\n\tcert := x509.Certificate{\n\t\tSerialNumber: serialNumber,\n\t\tSubject: pkix.Name{\n\t\t\tOrganization: []string{certificateOrgName},\n\t\t},\n\t\tNotBefore:             notBefore,\n\t\tNotAfter:              notAfter,\n\t\tKeyUsage:              keyUsage,\n\t\tExtKeyUsage:           []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},\n\t\tBasicConstraintsValid: true,\n\t\tIsCA:                  true,\n\t\tDNSNames:              sans,\n\t}\n\n\tcertBytes, err := x509.CreateCertificate(rand.Reader, &cert, &cert, &privateKey.PublicKey, privateKey)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"creating certificate: %w\", err)\n\t}\n\n\tvar certB bytes.Buffer\n\tvar keyB bytes.Buffer\n\terr = pem.Encode(io.Writer(&certB), &pem.Block{Type: \"CERTIFICATE\", Bytes: certBytes})\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"encoding cert: %w\", err)\n\t}\n\n\tcertOut, err := io.ReadAll(&certB)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"reading buffer: %w\", err)\n\t}\n\n\tprivateKeyBytes, err := x509.MarshalPKCS8PrivateKey(privateKey)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"marshal private key: %w\", err)\n\t}\n\n\terr = pem.Encode(io.Writer(&keyB), &pem.Block{Type: \"PRIVATE KEY\", Bytes: privateKeyBytes})\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"encoding private key: %w\", err)\n\t}\n\tprivateKeyOut, err := io.ReadAll(&keyB)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"reading buffer: %w\", err)\n\t}\n\n\treturn certOut, privateKeyOut, nil\n}\n\nfunc setupSelfSignedCertificate(ctx context.Context, logger logr.Logger, kubeclient client.Client, config v1alpha1.BuildCustomizationSpec) ([]byte, error) {\n\tif err := k8s.EnsureNamespace(ctx, kubeclient, globals.NginxNamespace); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := k8s.EnsureNamespace(ctx, kubeclient, globals.ArgoCDNamespace); err != nil {\n\t\treturn nil, err\n\t}\n\n\tsans := []string{\n\t\tglobals.DefaultHostName,\n\t\tglobals.DefaultSANWildcard,\n\t}\n\tif config.Host != globals.DefaultHostName {\n\t\tsans = []string{\n\t\t\tconfig.Host,\n\t\t\tfmt.Sprintf(\"*.%s\", config.Host),\n\t\t}\n\t}\n\tif config.IngressHost != config.Host {\n\t\tsans = append(sans, config.IngressHost, fmt.Sprintf(\"*.%s\", config.IngressHost))\n\t}\n\n\tlogger.V(1).Info(\"Creating/getting certificate\", \"host\", config.Host, \"sans\", sans)\n\tcert, privateKey, err := getOrCreateIngressCertificateAndKey(ctx, kubeclient, globals.SelfSignedCertSecretName, globals.NginxNamespace, sans)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tlogger.V(1).Info(\"Creating secret for certificate\", \"host\", config.Host)\n\terr = createIngressCertificateSecret(ctx, kubeclient, cert)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tlogger.V(1).Info(\"Creating secret for ArgoCD server\", \"host\", config.Host)\n\terr = createCertificateAndKeySecret(ctx, kubeclient, argocdTLSSecretName, globals.ArgoCDNamespace, cert, privateKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn cert, nil\n}\n"
  },
  {
    "path": "pkg/build/tls_test.go",
    "content": "package build\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"encoding/pem\"\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/globals\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/mock\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tk8serrors \"k8s.io/apimachinery/pkg/api/errors\"\n\t\"k8s.io/apimachinery/pkg/runtime/schema\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\ntype fakeKubeClient struct {\n\tmock.Mock\n\tclient.Client\n}\n\nfunc (f *fakeKubeClient) Get(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error {\n\targs := f.Called(ctx, key, obj, opts)\n\treturn args.Error(0)\n}\n\nfunc (f *fakeKubeClient) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error {\n\targs := f.Called(ctx, obj, opts)\n\treturn args.Error(0)\n}\n\nfunc TestCreateSelfSignedCertificate(t *testing.T) {\n\tsans := []string{\"cnoe.io\", \"*.cnoe.io\"}\n\tc, k, err := createSelfSignedCertificate(sans)\n\tassert.NoError(t, err)\n\t_, err = tls.X509KeyPair(c, k)\n\tassert.NoError(t, err)\n\n\tblock, _ := pem.Decode(c)\n\tassert.Equal(t, \"CERTIFICATE\", block.Type)\n\tcert, err := x509.ParseCertificate(block.Bytes)\n\tassert.NoError(t, err)\n\n\tassert.Equal(t, 2, len(cert.DNSNames))\n\texpected := map[string]struct{}{\n\t\t\"cnoe.io\":   {},\n\t\t\"*.cnoe.io\": {},\n\t}\n\n\tfor _, s := range cert.DNSNames {\n\t\t_, ok := expected[s]\n\t\tif ok {\n\t\t\tdelete(expected, s)\n\t\t} else {\n\t\t\tt.Fatalf(\"unexpected key %s found\", s)\n\t\t}\n\t}\n\tassert.Equal(t, 0, len(expected))\n}\n\nfunc TestGetOrCreateIngressCertificateAndKey(t *testing.T) {\n\tctx := context.Background()\n\tfClient := new(fakeKubeClient)\n\tfClient.On(\"Get\", ctx, client.ObjectKey{Name: globals.SelfSignedCertSecretName, Namespace: globals.NginxNamespace}, mock.Anything, mock.Anything).Run(func(args mock.Arguments) {\n\t\targ := args.Get(2).(*corev1.Secret)\n\t\td := map[string][]byte{\n\t\t\tcorev1.TLSPrivateKeyKey: []byte(\"abc\"),\n\t\t\tcorev1.TLSCertKey:       []byte(\"abc\"),\n\t\t}\n\t\targ.Data = d\n\t}).Return(nil)\n\n\t_, _, err := getOrCreateIngressCertificateAndKey(ctx, fClient, globals.SelfSignedCertSecretName, globals.NginxNamespace, []string{globals.DefaultHostName, globals.DefaultSANWildcard})\n\tassert.NoError(t, err)\n\tfClient.AssertExpectations(t)\n\n\tfClient = new(fakeKubeClient)\n\tfClient.On(\"Get\", ctx, client.ObjectKey{Name: globals.SelfSignedCertSecretName, Namespace: globals.NginxNamespace}, mock.Anything, mock.Anything).\n\t\tReturn(k8serrors.NewNotFound(schema.GroupResource{}, \"name\"))\n\tfClient.On(\"Create\", ctx, mock.Anything, mock.Anything).Return(nil)\n\n\tc, k, err := getOrCreateIngressCertificateAndKey(ctx, fClient, globals.SelfSignedCertSecretName, globals.NginxNamespace, []string{globals.DefaultHostName, globals.DefaultSANWildcard})\n\tassert.NoError(t, err)\n\t_, err = tls.X509KeyPair(c, k)\n\tassert.NoError(t, err)\n}\n"
  },
  {
    "path": "pkg/cmd/create/root.go",
    "content": "package create\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/globals\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/build\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/cmd/helpers\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\t\"github.com/spf13/cobra\"\n\t\"k8s.io/client-go/util/homedir\"\n)\n\nconst (\n\trecreateClusterUsage   = \"Delete cluster first if it already exists.\"\n\tbuildNameUsage         = \"Name for build (Prefix for kind cluster name, pod names, etc).\"\n\tdevPasswordUsage       = \"Set the password \\\"developer\\\" for the admin user of the applications: argocd & gitea.\"\n\tkubeVersionUsage       = \"Version of the kind kubernetes cluster to create.\"\n\textraPortsMappingUsage = \"List of extra ports to expose on the docker container and kubernetes cluster as nodePort \" +\n\t\t\"(e.g. \\\"22:32222,9090:39090,etc\\\").\"\n\tregistryConfigUsage = \"List of paths to mount as the registry config, uses the first one that exists\"\n\tkindConfigPathUsage = \"Path or URL to the kind config file to be used instead of the default.\"\n\thostUsage           = \"Host name to access resources in this cluster.\"\n\tingressHostUsage    = \"Host name used by ingresses. Useful when you have another proxy in front of ingress-nginx that idpbuilder provisions.\"\n\tprotocolUsage       = \"Protocol to use to access web UIs. http or https.\"\n\tportUsage           = \"Port number to use to access web UIs.\"\n\tpathRoutingUsage    = \"When set to true, web UIs are exposed under single domain name. \" +\n\t\t\"e.g. \\\"https://cnoe.localtest.me/argocd\\\" instead of \\\"https://argocd.cnoe.localtest.me\\\"\"\n\textraPackagesUsage             = \"Paths to locations containing custom packages\"\n\tpackageCustomizationFilesUsage = \"Name of the package and the path to file to customize the core packages with. \" +\n\t\t\"valid package names are: argocd, nginx, and gitea. e.g. argocd:/tmp/argocd.yaml\"\n\tregistryMirrorsUsage         = \"List of registry mirrors in format target=address (e.g. \\\"docker.io=http://kind-registry:5000,ghcr.io=http://kind-registry:5000\\\")\"\n\tinsecureRegistryMirrorsUsage = \"When set, configure registry mirrors with insecure TLS verification (skip_verify = true).\"\n\tnoExitUsage                  = \"When set, idpbuilder will not exit after all packages are synced. Useful for continuously syncing local directories.\"\n)\n\nvar (\n\t// Flags\n\trecreateCluster           bool\n\tbuildName                 string\n\tdevPassword               bool\n\tkubeVersion               string\n\textraPortsMapping         string\n\tkindConfigPath            string\n\textraPackages             []string\n\tregistryConfig            []string\n\tregistryMirrors           []string\n\tinsecureRegistryMirrors   bool\n\tpackageCustomizationFiles []string\n\tnoExit                    bool\n\tprotocol                  string\n\thost                      string\n\tingressHost               string\n\tport                      string\n\tpathRouting               bool\n)\n\nvar CreateCmd = &cobra.Command{\n\tUse:          \"create\",\n\tShort:        \"(Re)Create an IDP cluster\",\n\tLong:         ``,\n\tRunE:         create,\n\tPreRunE:      preCreateE,\n\tSilenceUsage: true,\n}\n\nfunc init() {\n\t// cluster related flags\n\tCreateCmd.PersistentFlags().BoolVar(&recreateCluster, \"recreate\", false, recreateClusterUsage)\n\tCreateCmd.PersistentFlags().StringVar(&buildName, \"build-name\", \"localdev\", buildNameUsage)\n\tCreateCmd.PersistentFlags().MarkDeprecated(\"build-name\", \"use --name instead.\")\n\tCreateCmd.PersistentFlags().StringVar(&buildName, \"name\", \"localdev\", buildNameUsage)\n\tCreateCmd.PersistentFlags().BoolVar(&devPassword, \"dev-password\", false, devPasswordUsage)\n\tCreateCmd.PersistentFlags().StringVar(&kubeVersion, \"kube-version\", \"v1.33.1\", kubeVersionUsage)\n\tCreateCmd.PersistentFlags().StringVar(&extraPortsMapping, \"extra-ports\", \"\", extraPortsMappingUsage)\n\tCreateCmd.PersistentFlags().StringVar(&kindConfigPath, \"kind-config\", \"\", kindConfigPathUsage)\n\tCreateCmd.PersistentFlags().StringSliceVar(&registryConfig, \"registry-config\", []string{}, registryConfigUsage)\n\tCreateCmd.PersistentFlags().Lookup(\"registry-config\").NoOptDefVal = \"$XDG_RUNTIME_DIR/containers/auth.json,$HOME/.docker/config.json\"\n\tCreateCmd.PersistentFlags().StringSliceVar(&registryMirrors, \"registry-mirrors\", []string{}, registryMirrorsUsage)\n\tCreateCmd.PersistentFlags().BoolVar(&insecureRegistryMirrors, \"insecure-registry-mirrors\", false, insecureRegistryMirrorsUsage)\n\n\t// in-cluster resources related flags\n\tCreateCmd.PersistentFlags().StringVar(&host, \"host\", globals.DefaultHostName, hostUsage)\n\tCreateCmd.PersistentFlags().StringVar(&ingressHost, \"ingress-host-name\", \"\", ingressHostUsage)\n\tCreateCmd.PersistentFlags().StringVar(&protocol, \"protocol\", \"https\", protocolUsage)\n\tCreateCmd.PersistentFlags().StringVar(&port, \"port\", \"8443\", portUsage)\n\tCreateCmd.PersistentFlags().BoolVar(&pathRouting, \"use-path-routing\", false, pathRoutingUsage)\n\tCreateCmd.Flags().StringSliceVarP(&extraPackages, \"package\", \"p\", []string{}, extraPackagesUsage)\n\tCreateCmd.Flags().StringSliceVarP(&packageCustomizationFiles, \"package-custom-file\", \"c\", []string{}, packageCustomizationFilesUsage)\n\t// idpbuilder related flags\n\tCreateCmd.Flags().BoolVarP(&noExit, \"no-exit\", \"n\", true, noExitUsage)\n}\n\nfunc preCreateE(cmd *cobra.Command, args []string) error {\n\treturn helpers.SetLogger()\n}\n\nfunc create(cmd *cobra.Command, args []string) error {\n\n\tctx, ctxCancel := context.WithCancel(cmd.Context())\n\tdefer ctxCancel()\n\n\tkubeConfigPath := filepath.Join(homedir.HomeDir(), \".kube\", \"config\")\n\n\tprotocol = strings.ToLower(protocol)\n\thost = strings.ToLower(host)\n\tif ingressHost == \"\" {\n\t\tingressHost = host\n\t}\n\n\terr := validate()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar localFiles []string\n\tvar localDirs []string\n\tvar remotePaths []string\n\n\tif len(extraPackages) > 0 {\n\t\tr, f, d, pErr := helpers.ParsePackageStrings(extraPackages)\n\t\tif pErr != nil {\n\t\t\treturn pErr\n\t\t}\n\t\tlocalFiles = f\n\t\tlocalDirs = d\n\t\tremotePaths = r\n\t}\n\n\to := make(map[string]v1alpha1.PackageCustomization)\n\tfor i := range packageCustomizationFiles {\n\t\tc, pErr := getPackageCustomFile(packageCustomizationFiles[i])\n\t\tif pErr != nil {\n\t\t\treturn pErr\n\t\t}\n\t\to[c.Name] = c\n\t}\n\n\tparsedMirrors, err := parseRegistryMirrors(registryMirrors)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\texitOnSync := true\n\tif cmd.Flags().Changed(\"no-exit\") {\n\t\texitOnSync = !noExit\n\t}\n\n\t// If registry-config is unset we pass nil\n\t// If registry-config is change (--registry-config=foo) we pass the new value\n\t// If registry-config is set but unchanged (--registry-confg) we pass \"\"\n\tmaybeRegistryConfig := []string{}\n\tif cmd.Flags().Changed(\"registry-config\") {\n\t\tmaybeRegistryConfig = registryConfig\n\t}\n\n\topts := build.NewBuildOptions{\n\t\tName:              buildName,\n\t\tKubeVersion:       kubeVersion,\n\t\tKubeConfigPath:    kubeConfigPath,\n\t\tKindConfigPath:    kindConfigPath,\n\t\tExtraPortsMapping: extraPortsMapping,\n\t\tRegistryConfig:    maybeRegistryConfig,\n\n\t\tTemplateData: v1alpha1.BuildCustomizationSpec{\n\t\t\tProtocol:                protocol,\n\t\t\tHost:                    host,\n\t\t\tIngressHost:             ingressHost,\n\t\t\tPort:                    port,\n\t\t\tUsePathRouting:          pathRouting,\n\t\t\tStaticPassword:          devPassword,\n\t\t\tRegistryMirrors:         parsedMirrors,\n\t\t\tInsecureRegistryMirrors: insecureRegistryMirrors,\n\t\t},\n\n\t\tCustomPackageFiles:   localFiles,\n\t\tCustomPackageDirs:    localDirs,\n\t\tCustomPackageUrls:    remotePaths,\n\t\tExitOnSync:           exitOnSync,\n\t\tPackageCustomization: o,\n\n\t\tScheme:     k8s.GetScheme(),\n\t\tCancelFunc: ctxCancel,\n\t}\n\n\tb := build.NewBuild(opts)\n\n\tif err := b.Run(ctx, recreateCluster); err != nil {\n\t\treturn err\n\t}\n\n\tif cmd.Context().Err() != nil {\n\t\treturn context.Cause(cmd.Context())\n\t}\n\n\tprintSuccessMsg()\n\treturn nil\n}\n\nfunc validate() error {\n\tif buildName == \"\" {\n\t\treturn fmt.Errorf(\"must specify build-name\")\n\t}\n\n\t_, err := url.Parse(fmt.Sprintf(\"%s://%s:%s\", protocol, host, port))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"invalid url: %w\", err)\n\t}\n\n\tfor i := range packageCustomizationFiles {\n\t\t_, pErr := getPackageCustomFile(packageCustomizationFiles[i])\n\t\tif pErr != nil {\n\t\t\treturn pErr\n\t\t}\n\t}\n\n\t_, _, _, err = helpers.ParsePackageStrings(extraPackages)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Validate registry mirrors\n\t_, err = parseRegistryMirrors(registryMirrors)\n\treturn err\n}\n\nfunc getPackageCustomFile(input string) (v1alpha1.PackageCustomization, error) {\n\t// the format should be `<package-name>:<path-to-file>`\n\ts := strings.Split(input, \":\")\n\tif len(s) != 2 {\n\t\treturn v1alpha1.PackageCustomization{}, fmt.Errorf(\"ensure %s is formatted as <package-name>:<path-to-file>\", input)\n\t}\n\n\tpaths, err := helpers.GetAbsFilePaths([]string{s[1]}, false)\n\tif err != nil {\n\t\treturn v1alpha1.PackageCustomization{}, err\n\t}\n\n\terr = helpers.ValidateKubernetesYamlFile(paths[0])\n\tif err != nil {\n\t\treturn v1alpha1.PackageCustomization{}, err\n\t}\n\n\tcorePkgs := map[string]struct{}{v1alpha1.ArgoCDPackageName: {}, v1alpha1.GiteaPackageName: {}, v1alpha1.IngressNginxPackageName: {}}\n\tname := s[0]\n\t_, ok := corePkgs[name]\n\tif !ok {\n\t\treturn v1alpha1.PackageCustomization{}, fmt.Errorf(\"customization for %s not supported\", name)\n\t}\n\treturn v1alpha1.PackageCustomization{\n\t\tName:     name,\n\t\tFilePath: paths[0],\n\t}, nil\n}\n\nfunc parseRegistryMirrors(mirrors []string) ([]v1alpha1.RegistryMirror, error) {\n\tvar result []v1alpha1.RegistryMirror\n\tfor _, mirror := range mirrors {\n\t\t// Format: target=address (e.g. \"docker.io=http://kind-registry:5000\")\n\t\tparts := strings.SplitN(mirror, \"=\", 2)\n\t\tif len(parts) != 2 {\n\t\t\treturn nil, fmt.Errorf(\"invalid registry mirror format: %s, expected format: target=address (e.g. docker.io=http://kind-registry:5000)\", mirror)\n\t\t}\n\n\t\ttarget := strings.TrimSpace(parts[0])\n\t\taddress := strings.TrimSpace(parts[1])\n\n\t\tif target == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"target registry cannot be empty in mirror: %s\", mirror)\n\t\t}\n\t\tif address == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"registry address cannot be empty in mirror: %s\", mirror)\n\t\t}\n\n\t\t// target must be [hostname|ip][:port] (https://github.com/containerd/containerd/blob/main/docs/hosts.md#registry-host-namespace)\n\t\tparsedTarget, err := url.Parse(\"https://\" + target)\n\t\tif err != nil || parsedTarget.Host == \"\" || parsedTarget.Path != \"\" {\n\t\t\treturn nil, fmt.Errorf(\"invalid target registry %q: expected format [hostname|ip][:port] (e.g. docker.io, 192.168.1.1:5000)\", target)\n\t\t}\n\n\t\t// address must be a valid URL\n\t\tparsedURL, err := url.Parse(address)\n\t\tif err != nil || parsedURL.Scheme == \"\" || parsedURL.Host == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"invalid registry address URL: %s, expected format: http(s)://host:port\", address)\n\t\t}\n\n\t\tresult = append(result, v1alpha1.RegistryMirror{\n\t\t\tTargetRegistry:  target,\n\t\t\tRegistryAddress: address,\n\t\t})\n\t}\n\treturn result, nil\n}\n\nfunc printSuccessMsg() {\n\tsubDomain := \"argocd.\"\n\tsubPath := \"\"\n\n\tif pathRouting == true {\n\t\tsubDomain = \"\"\n\t\tsubPath = \"argocd\"\n\t}\n\n\tvar argoURL string\n\n\tproxy := behindProxy()\n\tif proxy {\n\t\targoURL = fmt.Sprintf(\"https://%s/argocd\", host)\n\t} else {\n\t\targoURL = fmt.Sprintf(\"%s://%s%s:%s/%s\", protocol, subDomain, host, port, subPath)\n\t}\n\n\tfmt.Print(\"\\n\\n########################### Finished Creating IDP Successfully! ############################\\n\\n\\n\")\n\tfmt.Printf(\"Can Access ArgoCD at %s\\nUsername: admin\\n\", argoURL)\n\tfmt.Print(`Password can be retrieved by running: idpbuilder get secrets -p argocd`, \"\\n\")\n}\n\nfunc behindProxy() bool {\n\t// check if we are in codespaces: https://docs.github.com/en/codespaces/developing-in-a-codespace/default-environment-variables-for-your-codespace\n\t_, ok := os.LookupEnv(\"CODESPACES\")\n\treturn ok\n}\n"
  },
  {
    "path": "pkg/cmd/create/root_test.go",
    "content": "package create\n\nimport (\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n)\n\nfunc TestParseRegistryMirrors(t *testing.T) {\n\ttype test struct {\n\t\tname    string\n\t\tinput   []string\n\t\texpect  []v1alpha1.RegistryMirror\n\t\twantErr bool\n\t}\n\n\ttests := []test{\n\t\t{\n\t\t\tname:    \"empty input\",\n\t\t\tinput:   []string{},\n\t\t\texpect:  []v1alpha1.RegistryMirror{},\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname:  \"single mirror\",\n\t\t\tinput: []string{\"docker.io=http://kind-registry:5000\"},\n\t\t\texpect: []v1alpha1.RegistryMirror{\n\t\t\t\t{\n\t\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname:  \"multiple mirrors\",\n\t\t\tinput: []string{\"docker.io=http://kind-registry:5000\", \"ghcr.io=http://kind-registry:5000\"},\n\t\t\texpect: []v1alpha1.RegistryMirror{\n\t\t\t\t{\n\t\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tTargetRegistry:  \"ghcr.io\",\n\t\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname:  \"mirror with space\",\n\t\t\tinput: []string{\" docker.io = http://kind-registry:5000 \"},\n\t\t\texpect: []v1alpha1.RegistryMirror{\n\t\t\t\t{\n\t\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname:    \"missing equals\",\n\t\t\tinput:   []string{\"docker.io:http://kind-registry:5000\"},\n\t\t\texpect:  nil,\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"empty target\",\n\t\t\tinput:   []string{\"=http://kind-registry:5000\"},\n\t\t\texpect:  nil,\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"empty address\",\n\t\t\tinput:   []string{\"docker.io=\"},\n\t\t\texpect:  nil,\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"target with path\",\n\t\t\tinput:   []string{\"docker.io/library=http://my-registry:5000\"},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"target with scheme\",\n\t\t\tinput:   []string{\"https://docker.io=http://my-registry:5000\"},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"malformed address URL\",\n\t\t\tinput:   []string{\"docker.io=not-a-url\"},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:  \"mirror with https\",\n\t\t\tinput: []string{\"docker.io=https://my-registry:5000\"},\n\t\t\texpect: []v1alpha1.RegistryMirror{\n\t\t\t\t{\n\t\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\t\tRegistryAddress: \"https://my-registry:5000\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tresult, err := parseRegistryMirrors(tc.input)\n\t\t\tif (err != nil) != tc.wantErr {\n\t\t\t\tt.Errorf(\"parseRegistryMirrors() error = %v, wantErr %v\", err, tc.wantErr)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !tc.wantErr {\n\t\t\t\tif len(result) != len(tc.expect) {\n\t\t\t\t\tt.Errorf(\"parseRegistryMirrors() got %d mirrors, want %d\", len(result), len(tc.expect))\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tfor i := range result {\n\t\t\t\t\tif result[i].TargetRegistry != tc.expect[i].TargetRegistry {\n\t\t\t\t\t\tt.Errorf(\"parseRegistryMirrors()[%d].TargetRegistry = %v, want %v\", i, result[i].TargetRegistry, tc.expect[i].TargetRegistry)\n\t\t\t\t\t}\n\t\t\t\t\tif result[i].RegistryAddress != tc.expect[i].RegistryAddress {\n\t\t\t\t\t\tt.Errorf(\"parseRegistryMirrors()[%d].RegistryAddress = %v, want %v\", i, result[i].RegistryAddress, tc.expect[i].RegistryAddress)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/cmd/delete/root.go",
    "content": "package delete\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/cnoe-io/idpbuilder/pkg/cmd/helpers\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/kind\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"github.com/spf13/cobra\"\n\t\"sigs.k8s.io/kind/pkg/cluster\"\n)\n\nvar (\n\t// Flags\n\tname string\n)\n\nvar DeleteCmd = &cobra.Command{\n\tUse:          \"delete\",\n\tShort:        \"Delete an IDP cluster\",\n\tLong:         ``,\n\tRunE:         deleteE,\n\tPreRunE:      preDeleteE,\n\tSilenceUsage: true,\n}\n\nfunc init() {\n\tDeleteCmd.PersistentFlags().StringVar(&name, \"name\", \"localdev\", \"Name of the kind cluster to be deleted.\")\n}\n\nfunc preDeleteE(cmd *cobra.Command, args []string) error {\n\treturn helpers.SetLogger()\n}\n\nfunc deleteE(cmd *cobra.Command, args []string) error {\n\tlogger := helpers.CmdLogger\n\tlogger.Info(\"deleting cluster\", \"clusterName\", name)\n\tdetectOpt, err := util.DetectKindNodeProvider()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tprovider := cluster.NewProvider(cluster.ProviderWithLogger(kind.KindLoggerFromLogr(&logger)), detectOpt)\n\tif err := provider.Delete(name, \"\"); err != nil {\n\t\treturn fmt.Errorf(\"failed to delete cluster %s: %w\", name, err)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/cmd/get/clusters.go",
    "content": "package get\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/cmd/helpers\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/kind\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/printer\"\n\tidpTypes \"github.com/cnoe-io/idpbuilder/pkg/printer/types\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"github.com/spf13/cobra\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\t\"k8s.io/apimachinery/pkg/api/resource\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/types\"\n\t\"k8s.io/client-go/tools/clientcmd\"\n\t\"k8s.io/client-go/tools/clientcmd/api\"\n\t\"os\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/kind/pkg/cluster\"\n\t\"slices\"\n\t\"strings\"\n)\n\n// ClusterManager holds the clients for the different idpbuilder clusters\ntype ClusterManager struct {\n\tclients map[string]client.Client // map of cluster name to client\n}\n\nvar ClustersCmd = &cobra.Command{\n\tUse:          \"clusters\",\n\tShort:        \"Get idp clusters\",\n\tLong:         ``,\n\tRunE:         list,\n\tPreRunE:      preClustersE,\n\tSilenceUsage: true,\n}\n\nfunc preClustersE(cmd *cobra.Command, args []string) error {\n\treturn helpers.SetLogger()\n}\n\nfunc list(cmd *cobra.Command, args []string) error {\n\tclusters, err := populateClusterList()\n\tif err != nil {\n\t\treturn err\n\t} else {\n\t\tclusterPrinter := printer.ClusterPrinter{\n\t\t\tClusters:  clusters,\n\t\t\tOutWriter: os.Stdout,\n\t\t}\n\t\treturn clusterPrinter.PrintOutput(outputFormat)\n\t}\n}\n\nfunc populateClusterList() ([]idpTypes.Cluster, error) {\n\tlogger := helpers.CmdLogger\n\n\tdetectOpt, err := util.DetectKindNodeProvider()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tkubeConfig, err := util.GetKubeConfig()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t_, err = util.GetKubeClient(kubeConfig)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tconfig, err := util.LoadKubeConfig()\n\tif err != nil {\n\t\t//logger.Error(err, \"failed to load the kube config.\")\n\t\treturn nil, err\n\t}\n\n\t// Create an empty array of clusters to collect the information\n\tclusterList := []idpTypes.Cluster{}\n\n\t// List the idp builder clusters according to the provider: podman or docker\n\tprovider := cluster.NewProvider(cluster.ProviderWithLogger(kind.KindLoggerFromLogr(&logger)), detectOpt)\n\tclusters, err := provider.List()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Populate a list of Kube client for each cluster/context matching an idpbuilder cluster\n\tmanager, err := CreateKubeClientForEachIDPCluster(config, clusters)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, cluster := range clusters {\n\t\taCluster := idpTypes.Cluster{Name: cluster}\n\n\t\t// Search about the idp cluster within the kubeconfig file and show information\n\t\tc, found := findClusterByName(config, \"kind-\"+cluster)\n\t\tif !found {\n\t\t\tlogger.Info(fmt.Sprintf(\"Cluster not found: %s within kube config file\\n\", cluster))\n\t\t} else {\n\t\t\tcli, err := GetClientForCluster(manager, cluster)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tlogger.V(1).Info(fmt.Sprintf(\"Got the context for the cluster: %s.\", cluster))\n\n\t\t\t// Print the external port mounted on the container and available also as ingress host port\n\t\t\ttargetPort, err := findExternalHTTPSPort(cli, cluster)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t} else {\n\t\t\t\taCluster.ExternalPort = targetPort\n\t\t\t}\n\n\t\t\taCluster.URLKubeApi = c.Server\n\t\t\taCluster.TlsCheck = c.InsecureSkipTLSVerify\n\n\t\t\t// Print the internal port running the Kube API service\n\t\t\tkubeApiPort, err := findInternalKubeApiPort(cli)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t} else {\n\t\t\t\taCluster.KubePort = kubeApiPort\n\t\t\t}\n\n\t\t\t// Let's check what the current node reports\n\t\t\tvar nodeList corev1.NodeList\n\t\t\terr = cli.List(context.TODO(), &nodeList)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tfor _, node := range nodeList.Items {\n\t\t\t\tnodeName := node.Name\n\n\t\t\t\taNode := idpTypes.Node{}\n\t\t\t\taNode.Name = nodeName\n\n\t\t\t\tfor _, addr := range node.Status.Addresses {\n\t\t\t\t\tswitch addr.Type {\n\t\t\t\t\tcase corev1.NodeInternalIP:\n\t\t\t\t\t\taNode.InternalIP = addr.Address\n\t\t\t\t\tcase corev1.NodeExternalIP:\n\t\t\t\t\t\taNode.ExternalIP = addr.Address\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Get Node capacity\n\t\t\t\tresources := node.Status.Capacity\n\n\t\t\t\tmemory := resources[corev1.ResourceMemory]\n\t\t\t\tcpu := resources[corev1.ResourceCPU]\n\t\t\t\tpods := resources[corev1.ResourcePods]\n\n\t\t\t\taNode.Capacity = idpTypes.Capacity{\n\t\t\t\t\tMemory: float64(memory.Value()) / (1024 * 1024 * 1024),\n\t\t\t\t\tCpu:    cpu.Value(),\n\t\t\t\t\tPods:   pods.Value(),\n\t\t\t\t}\n\n\t\t\t\t// Get Node Allocated resources\n\t\t\t\tallocated, err := printAllocatedResources(context.Background(), cli, node.Name)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\taNode.Allocated = allocated\n\n\t\t\t\taCluster.Nodes = append(aCluster.Nodes, aNode)\n\t\t\t}\n\n\t\t}\n\t\tclusterList = append(clusterList, aCluster)\n\t}\n\n\treturn clusterList, nil\n}\n\nfunc printAllocatedResources(ctx context.Context, k8sClient client.Client, nodeName string) (idpTypes.Allocated, error) {\n\t// List all pods on the specified node\n\tvar podList corev1.PodList\n\tif err := k8sClient.List(ctx, &podList, client.MatchingFields{\"spec.nodeName\": nodeName}); err != nil {\n\t\treturn idpTypes.Allocated{}, fmt.Errorf(\"failed to list pods on node %s.\", nodeName)\n\t}\n\n\t// Initialize counters for CPU and memory requests\n\ttotalCPU := resource.NewQuantity(0, resource.DecimalSI)\n\ttotalMemory := resource.NewQuantity(0, resource.BinarySI)\n\n\t// Sum up CPU and memory requests from each container in each pod\n\tfor _, pod := range podList.Items {\n\t\tfor _, container := range pod.Spec.Containers {\n\t\t\tif reqCPU, found := container.Resources.Requests[corev1.ResourceCPU]; found {\n\t\t\t\ttotalCPU.Add(reqCPU)\n\t\t\t}\n\t\t\tif reqMemory, found := container.Resources.Requests[corev1.ResourceMemory]; found {\n\t\t\t\ttotalMemory.Add(reqMemory)\n\t\t\t}\n\t\t}\n\t}\n\n\tallocated := idpTypes.Allocated{\n\t\tMemory: totalMemory.String(),\n\t\tCpu:    totalCPU.String(),\n\t}\n\n\treturn allocated, nil\n}\n\nfunc findExternalHTTPSPort(cli client.Client, clusterName string) (int32, error) {\n\tservice := corev1.Service{}\n\tnamespacedName := types.NamespacedName{\n\t\tName:      \"ingress-nginx-controller\",\n\t\tNamespace: \"ingress-nginx\",\n\t}\n\terr := cli.Get(context.TODO(), namespacedName, &service)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"failed to get the ingress service on the cluster. %w\", err)\n\t}\n\n\tlocalBuild := v1alpha1.Localbuild{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName: clusterName,\n\t\t},\n\t}\n\terr = cli.Get(context.TODO(), client.ObjectKeyFromObject(&localBuild), &localBuild)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"failed to get the localbuild on the cluster. %w\", err)\n\t}\n\n\tvar targetPort corev1.ServicePort\n\tprotocol := localBuild.Spec.BuildCustomization.Protocol + \"-\"\n\tfor _, port := range service.Spec.Ports {\n\t\tif port.Name != \"\" && strings.HasPrefix(port.Name, protocol) {\n\t\t\ttargetPort = port\n\t\t\tbreak\n\t\t}\n\t}\n\treturn targetPort.Port, nil\n}\n\nfunc findInternalKubeApiPort(cli client.Client) (int32, error) {\n\tservice := corev1.Service{}\n\tnamespacedName := types.NamespacedName{\n\t\tName:      \"kubernetes\",\n\t\tNamespace: \"default\",\n\t}\n\terr := cli.Get(context.TODO(), namespacedName, &service)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"failed to get the kubernetes default service on the cluster. %w\", err)\n\t}\n\n\tvar targetPort corev1.ServicePort\n\tfor _, port := range service.Spec.Ports {\n\t\tif port.Name != \"\" && strings.HasPrefix(port.Name, \"https\") {\n\t\t\ttargetPort = port\n\t\t\tbreak\n\t\t}\n\t}\n\treturn targetPort.TargetPort.IntVal, nil\n}\n\n// findClusterByName searches for a cluster by name in the kubeconfig\nfunc findClusterByName(config *api.Config, name string) (*api.Cluster, bool) {\n\tcluster, exists := config.Clusters[name]\n\treturn cluster, exists\n}\n\n// GetClientForCluster returns the client for the specified cluster/context name\nfunc GetClientForCluster(m *ClusterManager, clusterName string) (client.Client, error) {\n\tcl, exists := m.clients[\"kind-\"+clusterName]\n\tif !exists {\n\t\treturn nil, fmt.Errorf(\"no client found for cluster %q\", clusterName)\n\t}\n\treturn cl, nil\n}\n\nfunc CreateKubeClientForEachIDPCluster(config *api.Config, clusterList []string) (*ClusterManager, error) {\n\t// Initialize the ClusterManager with a map of kube Client\n\tmanager := &ClusterManager{\n\t\tclients: make(map[string]client.Client),\n\t}\n\n\tfor contextName := range config.Contexts {\n\t\t// Check if the kubconfig contains the cluster name\n\t\t// We remove the prefix \"kind-\" to find the cluster name from the slice\n\t\tif slices.Contains(clusterList, contextName[5:]) {\n\t\t\tcfg, err := clientcmd.NewNonInteractiveClientConfig(*config, contextName, &clientcmd.ConfigOverrides{}, nil).ClientConfig()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"Failed to build client for context %s.\", contextName)\n\t\t\t}\n\n\t\t\tcl, err := client.New(cfg, client.Options{Scheme: k8s.GetScheme()})\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"failed to create client for context %s\", contextName)\n\t\t\t}\n\n\t\t\tmanager.clients[contextName] = cl\n\t\t}\n\n\t}\n\treturn manager, nil\n}\n"
  },
  {
    "path": "pkg/cmd/get/packages.go",
    "content": "package get\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/printer\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/printer/types\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"github.com/spf13/cobra\"\n\t\"io\"\n\t\"os\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"strconv\"\n)\n\nvar PackagesCmd = &cobra.Command{\n\tUse:          \"packages\",\n\tShort:        \"retrieve packages from the cluster\",\n\tLong:         ``,\n\tRunE:         getPackagesE,\n\tSilenceUsage: true,\n}\n\nfunc getPackagesE(cmd *cobra.Command, args []string) error {\n\tctx, ctxCancel := context.WithCancel(cmd.Context())\n\tdefer ctxCancel()\n\n\tkubeConfig, err := util.GetKubeConfig()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting kube config: %w\", err)\n\t}\n\n\tkubeClient, err := util.GetKubeClient(kubeConfig)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting kube client: %w\", err)\n\t}\n\n\treturn printPackages(ctx, os.Stdout, kubeClient, outputFormat)\n}\n\n// Print all the custom packages or based on package arguments passed using flag: -p\nfunc printPackages(ctx context.Context, outWriter io.Writer, kubeClient client.Client, format string) error {\n\tpackageList := []types.Package{}\n\tcustomPackages := v1alpha1.CustomPackageList{}\n\tvar err error\n\n\tidpbuilderNamespace, err := getIDPNamespace(ctx, kubeClient)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting namespace: %w\", err)\n\t}\n\n\tconfig, err := util.GetConfig(ctx)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting idp config: %w\", err)\n\t}\n\n\targocdBaseUrl := util.ArgocdBaseUrl(config)\n\n\tif len(packages) == 0 {\n\t\t// Get all custom packages\n\t\tcustomPackages, err = getPackages(ctx, kubeClient, idpbuilderNamespace)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"listing custom packages: %w\", err)\n\t\t}\n\t} else {\n\t\t// Get the custom package using its name\n\t\tfor _, name := range packages {\n\t\t\tcp, err := getPackageByName(ctx, kubeClient, idpbuilderNamespace, name)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"getting custom package %s: %w\", name, err)\n\t\t\t}\n\t\t\tcustomPackages.Items = append(customPackages.Items, cp)\n\t\t}\n\t}\n\n\tfor _, cp := range customPackages.Items {\n\t\tnewPackage := types.Package{}\n\t\tnewPackage.Name = cp.Name\n\t\tnewPackage.Namespace = cp.Namespace\n\t\tnewPackage.ArgocdRepository = argocdBaseUrl + \"/applications/\" + cp.Spec.ArgoCD.Namespace + \"/\" + cp.Spec.ArgoCD.Name\n\t\t// There is a GitRepositoryRefs when the project has been cloned to the internal git repository\n\t\tif cp.Status.GitRepositoryRefs != nil {\n\t\t\tnewPackage.GitRepository = cp.Spec.InternalGitServeURL + \"/\" + v1alpha1.GiteaAdminUserName + \"/\" + idpbuilderNamespace + \"-\" + cp.Status.GitRepositoryRefs[0].Name\n\t\t} else {\n\t\t\t// Default branch reference\n\t\t\tref := \"main\"\n\t\t\tif cp.Spec.RemoteRepository.Ref != \"\" {\n\t\t\t\tref = cp.Spec.RemoteRepository.Ref\n\t\t\t}\n\t\t\tnewPackage.GitRepository = cp.Spec.RemoteRepository.Url + \"/tree/\" + ref + \"/\" + cp.Spec.RemoteRepository.Path\n\t\t}\n\n\t\tnewPackage.Status = strconv.FormatBool(cp.Status.Synced)\n\n\t\tpackageList = append(packageList, newPackage)\n\t}\n\n\tpackagePrinter := printer.PackagePrinter{\n\t\tPackages:  packageList,\n\t\tOutWriter: outWriter,\n\t}\n\treturn packagePrinter.PrintOutput(format)\n}\n\nfunc getPackageByName(ctx context.Context, kubeClient client.Client, ns, name string) (v1alpha1.CustomPackage, error) {\n\tp := v1alpha1.CustomPackage{}\n\treturn p, kubeClient.Get(ctx, client.ObjectKey{Name: name, Namespace: ns}, &p)\n}\n\nfunc getIDPNamespace(ctx context.Context, kubeClient client.Client) (string, error) {\n\tbuild, err := getLocalBuild(ctx, kubeClient)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// TODO: We assume that only one LocalBuild has been created for one cluster !\n\tidpNamespace := v1alpha1.FieldManager + \"-\" + build.Items[0].Name\n\treturn idpNamespace, nil\n}\n\nfunc getLocalBuild(ctx context.Context, kubeClient client.Client) (v1alpha1.LocalbuildList, error) {\n\tlocalBuildList := v1alpha1.LocalbuildList{}\n\treturn localBuildList, kubeClient.List(ctx, &localBuildList)\n}\n\nfunc getPackages(ctx context.Context, kubeClient client.Client, ns string) (v1alpha1.CustomPackageList, error) {\n\tpackageList := v1alpha1.CustomPackageList{}\n\treturn packageList, kubeClient.List(ctx, &packageList, client.InNamespace(ns))\n}\n"
  },
  {
    "path": "pkg/cmd/get/root.go",
    "content": "package get\n\nimport (\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"github.com/spf13/cobra\"\n)\n\nvar GetCmd = &cobra.Command{\n\tUse:   \"get\",\n\tShort: \"get information from the cluster\",\n\tLong:  ``,\n\tRunE:  exportE,\n}\n\nvar (\n\tpackages     []string\n\toutputFormat string\n)\n\nfunc init() {\n\tGetCmd.AddCommand(ClustersCmd)\n\tGetCmd.AddCommand(SecretsCmd)\n\tGetCmd.AddCommand(PackagesCmd)\n\tGetCmd.PersistentFlags().StringSliceVarP(&packages, \"packages\", \"p\", []string{}, \"names of packages.\")\n\tGetCmd.PersistentFlags().StringVarP(&outputFormat, \"output\", \"o\", \"table\", \"Output format: table (default if not specified), json or yaml.\")\n\tGetCmd.PersistentFlags().StringVarP(&util.KubeConfigPath, \"kubeconfig\", \"\", \"\", \"kube config file Path.\")\n}\n\nfunc exportE(cmd *cobra.Command, args []string) error {\n\treturn fmt.Errorf(\"specify subcommand\")\n}\n"
  },
  {
    "path": "pkg/cmd/get/secrets.go",
    "content": "package get\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/printer\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/printer/types\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"github.com/spf13/cobra\"\n\t\"io\"\n\tv1 \"k8s.io/api/core/v1\"\n\t\"k8s.io/apimachinery/pkg/api/errors\"\n\t\"k8s.io/apimachinery/pkg/labels\"\n\t\"k8s.io/apimachinery/pkg/selection\"\n\t\"os\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nconst (\n\targoCDAdminUsername          = \"admin\"\n\targoCDInitialAdminSecretName = \"argocd-initial-admin-secret\"\n\tgiteaAdminSecretName         = \"gitea-credential\"\n)\n\nvar SecretsCmd = &cobra.Command{\n\tUse:          \"secrets\",\n\tShort:        \"retrieve secrets from the cluster\",\n\tLong:         ``,\n\tRunE:         getSecretsE,\n\tSilenceUsage: true,\n}\n\n// well known secrets that are part of the core packages\nvar (\n\tcorePkgSecrets = map[string][]string{\n\t\t\"argocd\": []string{argoCDInitialAdminSecretName},\n\t\t\"gitea\":  []string{giteaAdminSecretName},\n\t}\n)\n\nfunc getSecretsE(cmd *cobra.Command, args []string) error {\n\tctx, ctxCancel := context.WithCancel(cmd.Context())\n\tdefer ctxCancel()\n\n\tkubeConfig, err := util.GetKubeConfig()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting kube config: %w\", err)\n\t}\n\n\tkubeClient, err := util.GetKubeClient(kubeConfig)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting kube client: %w\", err)\n\t}\n\n\tif len(packages) == 0 {\n\t\treturn printAllPackageSecrets(ctx, os.Stdout, kubeClient, outputFormat)\n\t}\n\n\treturn printPackageSecrets(ctx, os.Stdout, kubeClient, outputFormat)\n}\n\nfunc printAllPackageSecrets(ctx context.Context, outWriter io.Writer, kubeClient client.Client, format string) error {\n\tselector := labels.NewSelector()\n\tsecrets := []types.Secret{}\n\tsecretPrinter := printer.SecretPrinter{\n\t\tSecrets:   secrets,\n\t\tOutWriter: outWriter,\n\t}\n\n\tfor k, v := range corePkgSecrets {\n\t\tfor i := range v {\n\t\t\tsecret, sErr := getCorePackageSecret(ctx, kubeClient, k, v[i])\n\t\t\tif sErr != nil {\n\t\t\t\tif errors.IsNotFound(sErr) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\treturn fmt.Errorf(\"getting secret %s in %s: %w\", v[i], k, sErr)\n\t\t\t}\n\t\t\tsecrets = append(secrets, populateSecret(secret, true))\n\t\t}\n\t}\n\n\tcnoeLabelSecrets, err := getSecretsByCNOELabel(ctx, kubeClient, selector)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"listing secrets: %w\", err)\n\t}\n\n\tfor i := range cnoeLabelSecrets.Items {\n\t\tsecrets = append(secrets, populateSecret(cnoeLabelSecrets.Items[i], false))\n\t}\n\n\tif len(secrets) == 0 {\n\t\tfmt.Println(\"no secrets found\")\n\t\treturn nil\n\t}\n\n\tsecretPrinter.Secrets = secrets\n\treturn secretPrinter.PrintOutput(format)\n}\n\nfunc printPackageSecrets(ctx context.Context, outWriter io.Writer, kubeClient client.Client, format string) error {\n\tselector := labels.NewSelector()\n\tsecrets := []types.Secret{}\n\tsecretPrinter := printer.SecretPrinter{\n\t\tOutWriter: outWriter,\n\t}\n\n\tfor i := range packages {\n\t\tp := packages[i]\n\t\tsecretNames, ok := corePkgSecrets[p]\n\t\tif ok {\n\t\t\tfor j := range secretNames {\n\t\t\t\tsecret, sErr := getCorePackageSecret(ctx, kubeClient, p, secretNames[j])\n\t\t\t\tif sErr != nil {\n\t\t\t\t\tif errors.IsNotFound(sErr) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\treturn fmt.Errorf(\"getting secret %s in %s: %w\", secretNames[j], p, sErr)\n\t\t\t\t}\n\t\t\t\tsecrets = append(secrets, populateSecret(secret, true))\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\treq, pErr := labels.NewRequirement(v1alpha1.PackageNameLabelKey, selection.Equals, []string{p})\n\t\tif pErr != nil {\n\t\t\treturn fmt.Errorf(\"building requirement for %s: %w\", p, pErr)\n\t\t}\n\n\t\tpkgSelector := selector.Add(*req)\n\n\t\tcnoeLabelSecrets, err := getSecretsByCNOELabel(ctx, kubeClient, pkgSelector)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"listing secrets: %w\", err)\n\t\t}\n\n\t\tfor i := range cnoeLabelSecrets.Items {\n\t\t\tsecrets = append(secrets, populateSecret(cnoeLabelSecrets.Items[i], false))\n\t\t}\n\n\t\tif len(secrets) == 0 {\n\t\t\tfmt.Println(\"no secrets found\")\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tsecretPrinter.Secrets = secrets\n\treturn secretPrinter.PrintOutput(format)\n}\n\nfunc populateSecret(s v1.Secret, isCoreSecret bool) types.Secret {\n\tsecret := types.Secret{\n\t\tName:      s.Name,\n\t\tNamespace: s.Namespace,\n\t}\n\n\tif isCoreSecret {\n\t\tsecret.IsCore = true\n\t\tsecret.Username = string(s.Data[\"username\"])\n\t\tsecret.Password = string(s.Data[\"password\"])\n\t\tsecret.Token = string(s.Data[\"token\"])\n\t\tsecret.Data = nil\n\t} else {\n\t\tnewData := make(map[string]string)\n\t\tfor key, value := range s.Data {\n\t\t\tnewData[key] = string(value)\n\t\t}\n\t\tif len(newData) > 0 {\n\t\t\tsecret.Data = newData\n\t\t}\n\t}\n\n\treturn secret\n}\n\nfunc getSecretsByCNOELabel(ctx context.Context, kubeClient client.Client, l labels.Selector) (v1.SecretList, error) {\n\treq, err := labels.NewRequirement(v1alpha1.CLISecretLabelKey, selection.Equals, []string{v1alpha1.CLISecretLabelValue})\n\tif err != nil {\n\t\treturn v1.SecretList{}, fmt.Errorf(\"building labels with key %s and value %s : %w\", v1alpha1.CLISecretLabelKey, v1alpha1.CLISecretLabelValue, err)\n\t}\n\n\tsecrets := v1.SecretList{}\n\topts := client.ListOptions{\n\t\tLabelSelector: l.Add(*req),\n\t\tNamespace:     \"\", // find in all namespaces\n\t}\n\treturn secrets, kubeClient.List(ctx, &secrets, &opts)\n}\n\nfunc getCorePackageSecret(ctx context.Context, kubeClient client.Client, ns, name string) (v1.Secret, error) {\n\ts, err := util.GetSecretByName(ctx, kubeClient, ns, name)\n\tif err != nil {\n\t\treturn v1.Secret{}, err\n\t}\n\n\tif name == argoCDInitialAdminSecretName && s.Data != nil {\n\t\ts.Data[\"username\"] = []byte(argoCDAdminUsername)\n\t}\n\treturn s, nil\n}\n"
  },
  {
    "path": "pkg/cmd/get/secrets_test.go",
    "content": "package get\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"io\"\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/printer/types\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/mock\"\n\tv1 \"k8s.io/api/core/v1\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/labels\"\n\t\"k8s.io/apimachinery/pkg/selection\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\ntype fakeKubeClient struct {\n\tmock.Mock\n\tclient.Client\n}\n\nfunc (f *fakeKubeClient) Get(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error {\n\targs := f.Called(ctx, key, obj, opts)\n\treturn args.Error(0)\n}\n\nfunc (f *fakeKubeClient) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error {\n\targs := f.Called(ctx, list, opts)\n\treturn args.Error(0)\n}\n\ntype cases struct {\n\terr               error\n\tpackages          []string\n\tgetKeys           []client.ObjectKey\n\tlistLabelSelector []labels.Selector\n}\n\nfunc selector(pkgName string) labels.Selector {\n\tr1, _ := labels.NewRequirement(v1alpha1.CLISecretLabelKey, selection.Equals, []string{v1alpha1.CLISecretLabelValue})\n\tr2, _ := labels.NewRequirement(v1alpha1.PackageNameLabelKey, selection.Equals, []string{pkgName})\n\treturn labels.NewSelector().Add(*r1).Add(*r2)\n}\n\nfunc TestPrintPackageSecrets(t *testing.T) {\n\tctx := context.Background()\n\n\tcs := []cases{\n\t\t{\n\t\t\terr:               nil,\n\t\t\tpackages:          []string{\"abc\"},\n\t\t\tlistLabelSelector: []labels.Selector{selector(\"abc\")},\n\t\t},\n\t\t{\n\t\t\terr:               nil,\n\t\t\tpackages:          []string{\"argocd\", \"gitea\", \"abc\"},\n\t\t\tlistLabelSelector: []labels.Selector{selector(\"abc\")},\n\t\t\tgetKeys: []client.ObjectKey{\n\t\t\t\t{Name: argoCDInitialAdminSecretName, Namespace: \"argocd\"},\n\t\t\t\t{Name: giteaAdminSecretName, Namespace: \"gitea\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\terr:      nil,\n\t\t\tpackages: []string{\"argocd\", \"gitea\"},\n\t\t\tgetKeys: []client.ObjectKey{\n\t\t\t\t{Name: argoCDInitialAdminSecretName, Namespace: \"argocd\"},\n\t\t\t\t{Name: giteaAdminSecretName, Namespace: \"gitea\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\terr:      nil,\n\t\t\tpackages: []string{\"argocd\"},\n\t\t\tgetKeys: []client.ObjectKey{\n\t\t\t\t{Name: argoCDInitialAdminSecretName, Namespace: \"argocd\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i := range cs {\n\t\tc := cs[i]\n\t\tfClient := new(fakeKubeClient)\n\t\tpackages = c.packages\n\n\t\tfor j := range c.listLabelSelector {\n\t\t\topts := client.ListOptions{\n\t\t\t\tLabelSelector: c.listLabelSelector[j],\n\t\t\t\tNamespace:     \"\",\n\t\t\t}\n\t\t\tfClient.On(\"List\", ctx, mock.Anything, []client.ListOption{&opts}).Return(c.err)\n\t\t}\n\n\t\tfor j := range c.getKeys {\n\t\t\tfClient.On(\"Get\", ctx, c.getKeys[j], mock.Anything, mock.Anything).Return(c.err)\n\t\t}\n\n\t\terr := printPackageSecrets(ctx, io.Discard, fClient, \"table\")\n\t\tfClient.AssertExpectations(t)\n\t\tassert.Nil(t, err)\n\t}\n}\n\nfunc TestPrintAllPackageSecrets(t *testing.T) {\n\tctx := context.Background()\n\n\tr, _ := labels.NewRequirement(v1alpha1.CLISecretLabelKey, selection.Equals, []string{v1alpha1.CLISecretLabelValue})\n\n\tcs := []cases{\n\t\t{\n\t\t\terr:               nil,\n\t\t\tlistLabelSelector: []labels.Selector{labels.NewSelector().Add(*r)},\n\t\t\tgetKeys: []client.ObjectKey{\n\t\t\t\t{Name: argoCDInitialAdminSecretName, Namespace: \"argocd\"},\n\t\t\t\t{Name: giteaAdminSecretName, Namespace: \"gitea\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i := range cs {\n\t\tc := cs[i]\n\t\tfClient := new(fakeKubeClient)\n\n\t\tfor j := range c.listLabelSelector {\n\t\t\topts := client.ListOptions{\n\t\t\t\tLabelSelector: c.listLabelSelector[j],\n\t\t\t\tNamespace:     \"\",\n\t\t\t}\n\t\t\tfClient.On(\"List\", ctx, mock.Anything, []client.ListOption{&opts}).Return(c.err)\n\t\t}\n\n\t\tfor j := range c.getKeys {\n\t\t\tfClient.On(\"Get\", ctx, c.getKeys[j], mock.Anything, mock.Anything).Return(c.err)\n\t\t}\n\t\terr := printAllPackageSecrets(ctx, io.Discard, fClient, \"table\")\n\t\tfClient.AssertExpectations(t)\n\t\tassert.Nil(t, err)\n\t}\n}\n\nfunc TestOutput(t *testing.T) {\n\tctx := context.Background()\n\tr, _ := labels.NewRequirement(v1alpha1.CLISecretLabelKey, selection.Equals, []string{v1alpha1.CLISecretLabelValue})\n\n\tcorePkgData := map[string]types.Secret{\n\t\targoCDInitialAdminSecretName: {\n\t\t\tIsCore:    true,\n\t\t\tName:      argoCDInitialAdminSecretName,\n\t\t\tNamespace: \"argocd\",\n\t\t\tUsername:  \"admin\",\n\t\t\tPassword:  \"abc\",\n\t\t},\n\t\tgiteaAdminSecretName: {\n\t\t\tIsCore:    true,\n\t\t\tName:      giteaAdminSecretName,\n\t\t\tNamespace: \"gitea\",\n\t\t\tUsername:  \"admin\",\n\t\t\tPassword:  \"abc\",\n\t\t},\n\t}\n\n\tpackageData := map[string]types.Secret{\n\t\t\"name1\": {\n\t\t\tName:      \"name1\",\n\t\t\tNamespace: \"ns1\",\n\t\t\tData: map[string]string{\n\t\t\t\t\"data1\": \"data1\",\n\t\t\t\t\"data2\": \"data2\",\n\t\t\t},\n\t\t},\n\t\t\"name2\": {\n\t\t\tName:      \"name2\",\n\t\t\tNamespace: \"ns2\",\n\t\t\tData: map[string]string{\n\t\t\t\t\"data1\": \"data1\",\n\t\t\t\t\"data2\": \"data2\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfClient := new(fakeKubeClient)\n\topts := client.ListOptions{\n\t\tLabelSelector: labels.NewSelector().Add(*r),\n\t\tNamespace:     \"\",\n\t}\n\n\tfClient.On(\"Get\", ctx, client.ObjectKey{Name: argoCDInitialAdminSecretName, Namespace: \"argocd\"}, mock.Anything, mock.Anything).Run(func(args mock.Arguments) {\n\t\targ := args.Get(2).(*v1.Secret)\n\t\tsec := secretDataToSecret(corePkgData[argoCDInitialAdminSecretName])\n\t\t*arg = sec\n\t}).Return(nil)\n\tfClient.On(\"Get\", ctx, client.ObjectKey{Name: giteaAdminSecretName, Namespace: \"gitea\"}, mock.Anything, mock.Anything).Run(func(args mock.Arguments) {\n\t\targ := args.Get(2).(*v1.Secret)\n\t\tsec := secretDataToSecret(corePkgData[giteaAdminSecretName])\n\t\t*arg = sec\n\t}).Return(nil)\n\n\tfClient.On(\"List\", ctx, mock.Anything, []client.ListOption{&opts}).Run(func(args mock.Arguments) {\n\t\targ := args.Get(1).(*v1.SecretList)\n\t\tsecs := make([]v1.Secret, 0, 2)\n\t\tfor k := range packageData {\n\t\t\ts := secretDataToSecret(packageData[k])\n\t\t\tsecs = append(secs, s)\n\t\t}\n\t\targ.Items = secs\n\t}).Return(nil)\n\n\tvar b []byte\n\tbuffer := bytes.NewBuffer(b)\n\n\terr := printAllPackageSecrets(ctx, buffer, fClient, \"json\")\n\tfClient.AssertExpectations(t)\n\tassert.Nil(t, err)\n\n\t// verify received json data\n\tvar received []types.Secret\n\terr = json.Unmarshal(buffer.Bytes(), &received)\n\tassert.Nil(t, err)\n\tassert.Equal(t, 4, len(received))\n\n\tfor i := range received {\n\t\trec := received[i]\n\t\tc, ok := corePkgData[rec.Name]\n\t\tif ok {\n\t\t\t// Set the IsCore bool field to true as the v1.Secret don't include it !\n\t\t\trec.IsCore = true\n\t\t\tassert.Equal(t, c, rec)\n\t\t\tdelete(corePkgData, rec.Name)\n\t\t\tcontinue\n\t\t} else {\n\t\t\td, okE := packageData[rec.Name]\n\t\t\tif okE {\n\t\t\t\tassert.Equal(t, d, rec)\n\t\t\t\tdelete(packageData, rec.Name)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tt.Fatalf(\"found an invalid element: %s\", rec.Name)\n\t\t}\n\t}\n\tassert.Equal(t, 0, len(corePkgData))\n\tassert.Equal(t, 0, len(packageData))\n}\n\nfunc secretDataToSecret(data types.Secret) v1.Secret {\n\td := make(map[string][]byte)\n\tif data.IsCore {\n\t\td[\"username\"] = []byte(data.Username)\n\t\td[\"password\"] = []byte(data.Password)\n\t\td[\"token\"] = []byte(data.Token)\n\t} else {\n\t\tfor k := range data.Data {\n\t\t\td[k] = []byte(data.Data[k])\n\t\t}\n\t}\n\treturn v1.Secret{\n\t\tObjectMeta: metav1.ObjectMeta{Name: data.Name, Namespace: data.Namespace},\n\t\tData:       d,\n\t}\n}\n"
  },
  {
    "path": "pkg/cmd/helpers/logger.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"log/slog\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/cnoe-io/idpbuilder/pkg/logger\"\n\t\"github.com/go-logr/logr\"\n\t\"k8s.io/klog/v2\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n)\n\nvar (\n\tLogLevel         string\n\tLogLevelMsg      = \"Set the log verbosity. Supported values are: debug, info, warn, and error.\"\n\tCmdLogger        logr.Logger\n\tColoredOutput    bool\n\tColoredOutputMsg = \"Enable colored log messages.\"\n)\n\nfunc SetLogger() error {\n\tl, err := getSlogLevel(LogLevel)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tslogger := slog.New(logger.NewHandler(os.Stderr, logger.Options{Level: l, Colored: ColoredOutput}))\n\tkslogger := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: getKlogLevel(l)}))\n\tlogger := logr.FromSlogHandler(slogger.Handler())\n\tklogger := logr.FromSlogHandler(kslogger.Handler())\n\n\tklog.SetLogger(klogger)\n\tctrl.SetLogger(logger)\n\tCmdLogger = logger\n\treturn nil\n}\n\nfunc getSlogLevel(s string) (slog.Level, error) {\n\tswitch strings.ToLower(s) {\n\tcase \"debug\":\n\t\treturn slog.LevelDebug, nil\n\tcase \"info\":\n\t\treturn slog.LevelInfo, nil\n\tcase \"warn\":\n\t\treturn slog.LevelWarn, nil\n\tcase \"error\":\n\t\treturn slog.LevelError, nil\n\tdefault:\n\t\treturn slog.LevelDebug, fmt.Errorf(\"%s is not a valid log level\", s)\n\t}\n}\n\n// For end users, klog messages are mostly useless. We set it to error level unless debug logging is enabled.\nfunc getKlogLevel(l slog.Level) slog.Level {\n\tif l < slog.LevelInfo {\n\t\treturn l\n\t}\n\treturn slog.LevelError\n}\n"
  },
  {
    "path": "pkg/cmd/helpers/test-data/notk8s.yaml",
    "content": "name: me\npluto: not a planet\n"
  },
  {
    "path": "pkg/cmd/helpers/test-data/notyaml.yaml",
    "content": "not:\na\nyaml\n"
  },
  {
    "path": "pkg/cmd/helpers/test-data/valid.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n        - name: nginx\n          image: nginx:1.14.2\n          ports:\n            - containerPort: 80\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: my-pv\nspec:\n  capacity:\n    storage: 1Gi\n  accessModes:\n    - ReadWriteOnce\n  storageClassName: standard\n  hostPath:\n    path: /mnt/data\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: nginx-service\nspec:\n  selector:\n    app: nginx\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 80\n\n"
  },
  {
    "path": "pkg/cmd/helpers/validation.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"sigs.k8s.io/kustomize/kyaml/kio\"\n)\n\nfunc ValidateKubernetesYamlFile(absPath string) error {\n\tif !filepath.IsAbs(absPath) {\n\t\treturn fmt.Errorf(\"given path is not an absolute path %s\", absPath)\n\t}\n\tb, err := os.ReadFile(absPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed reading file: %s, err: %w\", absPath, err)\n\t}\n\tn, err := kio.FromBytes(b)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed parsing file as kubernetes manifests file: %s, err: %w\", absPath, err)\n\t}\n\n\tfor i := range n {\n\t\tobj := n[i]\n\t\tif obj.IsNilOrEmpty() {\n\t\t\treturn fmt.Errorf(\"given file %s contains an invalid kubernetes manifest\", absPath)\n\t\t}\n\t\tif obj.GetKind() == \"\" || obj.GetApiVersion() == \"\" {\n\t\t\treturn fmt.Errorf(\"given file %s contains an invalid kubernetes manifest\", absPath)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc ParsePackageStrings(pkgStrings []string) ([]string, []string, []string, error) {\n\tremote, files, dirs := make([]string, 0, 2), make([]string, 0, 2), make([]string, 0, 2)\n\tfor i := range pkgStrings {\n\t\tloc := pkgStrings[i]\n\t\t_, err := util.NewKustomizeRemote(loc)\n\t\tif err == nil {\n\t\t\tremote = append(remote, loc)\n\t\t\tcontinue\n\t\t}\n\n\t\tabsPath, err := getAbsPath(loc, true)\n\t\tif err == nil {\n\t\t\tdirs = append(dirs, absPath)\n\t\t\tcontinue\n\t\t}\n\n\t\tabsPath, err = getAbsPath(loc, false)\n\t\tif err == nil {\n\t\t\tfiles = append(files, absPath)\n\t\t\tcontinue\n\t\t}\n\n\t\treturn nil, nil, nil, err\n\t}\n\n\treturn remote, files, dirs, nil\n}\n\nfunc getAbsPath(path string, isDir bool) (string, error) {\n\tabsPath, err := filepath.Abs(path)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to validate path %s : %w\", path, err)\n\t}\n\tf, err := os.Stat(absPath)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to validate path %s : %w\", absPath, err)\n\t}\n\n\tif isDir && !f.IsDir() {\n\t\treturn \"\", fmt.Errorf(\"given path is not a directory. %s\", absPath)\n\t}\n\n\tif !isDir && !f.Mode().IsRegular() {\n\t\treturn \"\", fmt.Errorf(\"given path is not a file. %s\", absPath)\n\t}\n\treturn absPath, nil\n}\n\nfunc GetAbsFilePaths(paths []string, isDir bool) ([]string, error) {\n\tout := make([]string, len(paths))\n\tfor i := range paths {\n\t\tabsPath, err := getAbsPath(paths[i], isDir)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tout[i] = absPath\n\t}\n\treturn out, nil\n}\n"
  },
  {
    "path": "pkg/cmd/helpers/validation_test.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestValidateKubernetesYaml(t *testing.T) {\n\tcwd, err := os.Getwd()\n\tif err != nil {\n\t\tt.Fatalf(\"could not get current working directory\")\n\t}\n\n\tcases := map[string]struct {\n\t\texpectErr bool\n\t\tinputPath string\n\t}{\n\t\t\"invalidPath\": {expectErr: true, inputPath: fmt.Sprintf(\"%s/invalid/path\", cwd)},\n\t\t\"notAbs\":      {expectErr: true, inputPath: fmt.Sprintf(\"invalid/path\")},\n\t\t\"valid\":       {expectErr: false, inputPath: fmt.Sprintf(\"%s/test-data/valid.yaml\", cwd)},\n\t\t\"notYaml\":     {expectErr: true, inputPath: fmt.Sprintf(\"%s/test-data/notyaml.yaml\", cwd)},\n\t\t\"notk8s\":      {expectErr: true, inputPath: fmt.Sprintf(\"%s/test-data/notk8s.yaml\", cwd)},\n\t}\n\n\tfor k := range cases {\n\t\tcErr := ValidateKubernetesYamlFile(cases[k].inputPath)\n\t\tif cases[k].expectErr && cErr == nil {\n\t\t\tt.Fatalf(\"%s expected error but did not receive error\", k)\n\t\t}\n\t\tif !cases[k].expectErr && cErr != nil {\n\t\t\tt.Fatalf(\"%s did not expect error but received error\", k)\n\t\t}\n\t}\n}\n\nfunc TestParsePackageStrings(t *testing.T) {\n\tcases := map[string]struct {\n\t\texpectErr  bool\n\t\tinputPaths []string\n\t\tremote     int\n\t\tfiles      int\n\t\tdirs       int\n\t}{\n\t\t\"allDirs\":  {expectErr: false, inputPaths: []string{\"test-data\", \".\"}, remote: 0, files: 0, dirs: 2},\n\t\t\"allFiles\": {expectErr: false, inputPaths: []string{\"test-data/valid.yaml\"}, remote: 0, files: 1, dirs: 0},\n\t\t\"allRemote\": {expectErr: false, inputPaths: []string{\n\t\t\t\"https://github.com/kubernetes-sigs/kustomize//examples/multibases/dev/?timeout=120&ref=v3.3.1\",\n\t\t\t\"git@github.com:owner/repo//examples\",\n\t\t}, remote: 2, files: 0, dirs: 0},\n\t\t\"mix\": {expectErr: false, inputPaths: []string{\n\t\t\t\"https://github.com/kubernetes-sigs/kustomize//examples/multibases/dev/?timeout=120&ref=v3.3.1\",\n\t\t\t\"test-data\",\n\t\t\t\"test-data/valid.yaml\",\n\t\t}, remote: 1, files: 1, dirs: 1},\n\t\t\"invalidLocalPath\": {expectErr: true, inputPaths: []string{\n\t\t\t\"does-not-exist\",\n\t\t}, remote: 0, files: 0, dirs: 0},\n\t\t\"invalidRemotePath\": {expectErr: true, inputPaths: []string{\n\t\t\t\"https://   github.com/kubernetes-sigs/kustomize//examples\",\n\t\t}, remote: 0, files: 0, dirs: 0},\n\t}\n\n\tfor k := range cases {\n\t\tc := cases[k]\n\t\tremote, files, dirs, err := ParsePackageStrings(c.inputPaths)\n\t\tif cases[k].expectErr {\n\t\t\tassert.NotNil(t, err)\n\t\t} else {\n\t\t\tassert.Nil(t, err)\n\t\t}\n\t\tassert.Equal(t, c.remote, len(remote))\n\t\tassert.Equal(t, c.files, len(files))\n\t\tassert.Equal(t, c.dirs, len(dirs))\n\t}\n}\n"
  },
  {
    "path": "pkg/cmd/root.go",
    "content": "package cmd\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/cnoe-io/idpbuilder/pkg/cmd/create\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/cmd/delete\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/cmd/get\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/cmd/helpers\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/cmd/version\"\n\t\"github.com/spf13/cobra\"\n)\n\nvar rootCmd = &cobra.Command{\n\tUse:   \"idpbuilder\",\n\tShort: \"Manage reference IDPs\",\n\tLong:  \"\",\n}\n\nfunc init() {\n\trootCmd.PersistentFlags().StringVarP(&helpers.LogLevel, \"log-level\", \"l\", \"info\", helpers.LogLevelMsg)\n\trootCmd.PersistentFlags().BoolVar(&helpers.ColoredOutput, \"color\", false, helpers.ColoredOutputMsg)\n\trootCmd.AddCommand(create.CreateCmd)\n\trootCmd.AddCommand(get.GetCmd)\n\trootCmd.AddCommand(delete.DeleteCmd)\n\trootCmd.AddCommand(version.VersionCmd)\n}\n\nfunc Execute(ctx context.Context) {\n\tif err := rootCmd.ExecuteContext(ctx); err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n}\n"
  },
  {
    "path": "pkg/cmd/version/root.go",
    "content": "package version\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"runtime\"\n\n\t\"github.com/spf13/cobra\"\n\t\"sigs.k8s.io/yaml\"\n)\n\nvar (\n\t// Flags\n\toutputFormat string\n)\n\nvar VersionCmd = &cobra.Command{\n\tUse:   \"version\",\n\tShort: \"Print idpbuilder version and environment info\",\n\tLong:  \"Print idpbulider version and environment info. This is useful in bug reports and CI.\",\n\tRunE:  version,\n}\n\nfunc init() {\n\tVersionCmd.Flags().StringVarP(&outputFormat, \"output\", \"o\", \"\", `Print the idpbuilder version information in a given output format. Accepts \"wide\", \"json\", and \"yaml\".`)\n}\n\nvar (\n\tidpbuilderVersion = \"unknown\"\n\tgoVersion         = runtime.Version()\n\tgoOs              = runtime.GOOS\n\tgoArch            = runtime.GOARCH\n\tgitCommit         = \"$Format:%H$\"          // sha1 from git, output of $(git rev-parse HEAD)\n\tbuildDate         = \"1970-01-01T00:00:00Z\" // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ')\n)\n\ntype idpbuilderInfo struct {\n\tIdpbuilderVersion string `json:\"idpbuilderVersion\"`\n\tGoVersion         string `json:\"goVersion\"`\n\tGoOs              string `json:\"goOs\"`\n\tGoArch            string `json:\"goArch\"`\n\tGitCommit         string `json:\"gitCommit\"`\n\tBuildDate         string `json:\"buildDate\"`\n}\n\nfunc version(cmd *cobra.Command, args []string) error {\n\tswitch outputFormat {\n\tcase \"wide\":\n\t\tcmd.Println(fmt.Sprintf(\"Version: %#v\", idpbuilderInfo{\n\t\t\tidpbuilderVersion,\n\t\t\tgoVersion,\n\t\t\tgoOs,\n\t\t\tgoArch,\n\t\t\tgitCommit,\n\t\t\tbuildDate,\n\t\t}))\n\tcase \"json\":\n\t\tjsonInfo, err := jsonInfo()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcmd.Println(jsonInfo)\n\tcase \"yaml\":\n\t\tyamlInfo, err := yamlInfo()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcmd.Println(yamlInfo)\n\tcase \"\":\n\t\tcmd.Println(fmt.Sprintf(\"idpbuilder %s %s %s/%s\",\n\t\t\tidpbuilderVersion,\n\t\t\tgoVersion,\n\t\t\tgoOs,\n\t\t\tgoArch))\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid output format: %s\", outputFormat)\n\t}\n\n\treturn nil\n}\n\nfunc jsonInfo() (string, error) {\n\tinfo := idpbuilderInfo{\n\t\tIdpbuilderVersion: idpbuilderVersion,\n\t\tGoVersion:         goVersion,\n\t\tGoOs:              goOs,\n\t\tGoArch:            goArch,\n\t\tGitCommit:         gitCommit,\n\t\tBuildDate:         buildDate,\n\t}\n\tbytes, err := json.Marshal(info)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn string(bytes), nil\n}\n\nfunc yamlInfo() (string, error) {\n\tinfo := idpbuilderInfo{\n\t\tIdpbuilderVersion: idpbuilderVersion,\n\t\tGoVersion:         goVersion,\n\t\tGoOs:              goOs,\n\t\tGoArch:            goArch,\n\t\tGitCommit:         gitCommit,\n\t\tBuildDate:         buildDate,\n\t}\n\tbytes, err := yaml.Marshal(info)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn string(bytes), nil\n}\n"
  },
  {
    "path": "pkg/controllers/crd.go",
    "content": "package controllers\n\nimport (\n\t\"context\"\n\t\"embed\"\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util/fs\"\n\t\"time\"\n\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\tapiextensionsv1 \"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1\"\n\tapierrors \"k8s.io/apimachinery/pkg/api/errors\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/apimachinery/pkg/types\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/controller-runtime/pkg/log\"\n)\n\n//go:embed resources/*.yaml\nvar crdFS embed.FS\n\nfunc getK8sResources(scheme *runtime.Scheme, templateData any) ([]client.Object, error) {\n\trawResources, err := fs.ConvertFSToBytes(crdFS, \"resources\", templateData)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn k8s.ConvertRawResourcesToObjects(scheme, rawResources)\n}\n\nfunc EnsureCRD(ctx context.Context, scheme *runtime.Scheme, kubeClient client.Client, obj client.Object) error {\n\tlogger := log.FromContext(ctx)\n\n\t// Check if the CRD already exists\n\tcrd, ok := obj.(*apiextensionsv1.CustomResourceDefinition)\n\tif !ok {\n\t\treturn fmt.Errorf(\"non crd object passed to EnsureCRD: %v\", obj)\n\t}\n\tvar curCRD apiextensionsv1.CustomResourceDefinition\n\terr := kubeClient.Get(\n\t\tctx,\n\t\ttypes.NamespacedName{Name: obj.GetName(), Namespace: \"default\"},\n\t\t&curCRD)\n\n\tswitch {\n\tcase apierrors.IsNotFound(err):\n\t\tif err := kubeClient.Create(ctx, obj); err != nil {\n\t\t\tlogger.Error(err, \"Unable to create CRD\", \"resource\", obj)\n\t\t\treturn err\n\t\t}\n\tcase err != nil:\n\t\tlogger.Error(err, \"Unable to get CRD during initial check\", \"resource\", obj)\n\t\treturn err\n\tdefault:\n\t\tcrd.SetResourceVersion(curCRD.GetResourceVersion())\n\t\tif err = kubeClient.Update(ctx, crd); err != nil {\n\t\t\tlogger.Error(err, \"Updating CRD\", \"resource\", obj)\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// There is some async work before the CRD actually exists, wait for this\n\tfor {\n\t\tif err := kubeClient.Get(\n\t\t\tctx,\n\t\t\ttypes.NamespacedName{Name: obj.GetName(), Namespace: \"default\"},\n\t\t\t&curCRD,\n\t\t); err != nil {\n\t\t\tlogger.Error(err, \"Failed to get CRD\", \"crd name\", obj.GetName())\n\t\t\treturn err\n\t\t}\n\t\tcrdEstablished := false\n\t\tfor _, cond := range curCRD.Status.Conditions {\n\t\t\tif cond.Type == apiextensionsv1.Established {\n\t\t\t\tif cond.Status == apiextensionsv1.ConditionTrue {\n\t\t\t\t\tcrdEstablished = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif crdEstablished {\n\t\t\tbreak\n\t\t} else {\n\t\t\tlogger.V(1).Info(\"crd not yet established, waiting.\", \"crd name\", obj.GetName())\n\t\t}\n\t\ttime.Sleep(time.Duration(time.Duration.Milliseconds(500)))\n\t}\n\treturn nil\n}\n\nfunc EnsureCRDs(ctx context.Context, scheme *runtime.Scheme, kubeClient client.Client, templateData any) error {\n\tinstallObjs, err := getK8sResources(scheme, templateData)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, obj := range installObjs {\n\t\tif err = EnsureCRD(ctx, scheme, kubeClient, obj); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/controllers/custompackage/controller.go",
    "content": "package custompackage\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n\n\targocdapplication \"github.com/cnoe-io/argocd-api/api/argo/application\"\n\targov1alpha1 \"github.com/cnoe-io/argocd-api/api/argo/application/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"k8s.io/apimachinery/pkg/api/errors\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/client-go/tools/record\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil\"\n\t\"sigs.k8s.io/controller-runtime/pkg/log\"\n)\n\nconst (\n\trequeueTime = time.Second * 30\n)\n\ntype Reconciler struct {\n\tclient.Client\n\tRecorder record.EventRecorder\n\tScheme   *runtime.Scheme\n\tConfig   v1alpha1.BuildCustomizationSpec\n\tTempDir  string\n\tRepoMap  *util.RepoMap\n}\n\nfunc (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\n\tpkg := v1alpha1.CustomPackage{}\n\terr := r.Get(ctx, req.NamespacedName, &pkg)\n\tif err != nil {\n\t\treturn ctrl.Result{}, client.IgnoreNotFound(err)\n\t}\n\n\tlogger.V(1).Info(\"reconciling custom package\", \"name\", req.Name, \"namespace\", req.Namespace)\n\tdefer r.postProcessReconcile(ctx, req, &pkg)\n\tresult, err := r.reconcileCustomPackage(ctx, &pkg)\n\tif err != nil {\n\t\tr.Recorder.Event(&pkg, \"Warning\", \"reconcile error\", err.Error())\n\t} else {\n\t\tr.Recorder.Event(&pkg, \"Normal\", \"reconcile success\", \"Successfully reconciled\")\n\t}\n\n\treturn result, err\n}\n\nfunc (r *Reconciler) postProcessReconcile(ctx context.Context, req ctrl.Request, pkg *v1alpha1.CustomPackage) {\n\tlogger := log.FromContext(ctx)\n\n\terr := r.Status().Update(ctx, pkg)\n\tif err != nil {\n\t\tlogger.Error(err, \"failed updating repo status\")\n\t}\n\n\terr = util.UpdateSyncAnnotation(ctx, r.Client, pkg)\n\tif err != nil {\n\t\tlogger.Error(err, \"failed updating repo annotation\")\n\t}\n}\n\n// shouldTakeOverGitRepository checks if this CustomPackage should take over an existing GitRepository.\n// Returns true if this package has higher priority than the current owner.\nfunc (r *Reconciler) shouldTakeOverGitRepository(ctx context.Context, resource *v1alpha1.CustomPackage, existingRepo *v1alpha1.GitRepository) (bool, error) {\n\tlogger := log.FromContext(ctx)\n\n\t// Get this package's priority\n\tthisPriority, err := getPackagePriority(resource)\n\tif err != nil {\n\t\t// If no priority annotation, assume it's a legacy package - allow takeover for backward compat\n\t\tlogger.V(1).Info(\"no priority on this package, allowing takeover\", \"package\", resource.Name)\n\t\treturn true, nil\n\t}\n\n\t// Check the existing repo's owner references\n\tfor _, ownerRef := range existingRepo.GetOwnerReferences() {\n\t\tif ownerRef.Kind == \"CustomPackage\" {\n\t\t\t// Fetch the owner CustomPackage to get its priority\n\t\t\townerPkg := &v1alpha1.CustomPackage{}\n\t\t\terr := r.Client.Get(ctx, client.ObjectKey{\n\t\t\t\tName:      ownerRef.Name,\n\t\t\t\tNamespace: existingRepo.Namespace,\n\t\t\t}, ownerPkg)\n\n\t\t\tif err != nil {\n\t\t\t\tif errors.IsNotFound(err) {\n\t\t\t\t\t// Owner doesn't exist anymore, we can take over\n\t\t\t\t\tlogger.Info(\"GitRepository owner not found, taking over\", \"repo\", existingRepo.Name)\n\t\t\t\t\treturn true, nil\n\t\t\t\t}\n\t\t\t\treturn false, fmt.Errorf(\"getting owner package: %w\", err)\n\t\t\t}\n\n\t\t\t// Get owner's priority\n\t\t\townerPriority, err := getPackagePriority(ownerPkg)\n\t\t\tif err != nil {\n\t\t\t\t// Owner has no priority, we can take over\n\t\t\t\tlogger.V(1).Info(\"GitRepository owner has no priority, taking over\", \"repo\", existingRepo.Name)\n\t\t\t\treturn true, nil\n\t\t\t}\n\n\t\t\t// Only take over if we have HIGHER priority (higher number wins)\n\t\t\tif thisPriority > ownerPriority {\n\t\t\t\tlogger.Info(\"Taking over GitRepository from lower priority owner\",\n\t\t\t\t\t\"repo\", existingRepo.Name,\n\t\t\t\t\t\"ourPriority\", thisPriority,\n\t\t\t\t\t\"ownerPriority\", ownerPriority,\n\t\t\t\t\t\"owner\", ownerPkg.Name)\n\t\t\t\treturn true, nil\n\t\t\t} else {\n\t\t\t\tlogger.Info(\"Not taking over GitRepository owned by higher/equal priority package\",\n\t\t\t\t\t\"repo\", existingRepo.Name,\n\t\t\t\t\t\"ourPriority\", thisPriority,\n\t\t\t\t\t\"ownerPriority\", ownerPriority,\n\t\t\t\t\t\"owner\", ownerPkg.Name)\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\t}\n\t}\n\n\t// No CustomPackage owner found, we can take over\n\tlogger.V(1).Info(\"GitRepository has no CustomPackage owner, taking over\", \"repo\", existingRepo.Name)\n\treturn true, nil\n}\n\n// shouldReconcile checks if this CustomPackage should proceed with reconciliation.\n// It returns true only if this is the highest priority CustomPackage for the same app.\nfunc (r *Reconciler) shouldReconcile(ctx context.Context, resource *v1alpha1.CustomPackage) (bool, error) {\n\tlogger := log.FromContext(ctx)\n\n\t// Get this package's priority\n\tthisPriority, err := getPackagePriority(resource)\n\tif err != nil {\n\t\t// If no priority annotation, assume it's a legacy package and allow it\n\t\tlogger.V(1).Info(\"no priority annotation found, assuming legacy package\", \"name\", resource.Name)\n\t\treturn true, nil\n\t}\n\n\t// List all CustomPackages in the same namespace\n\tpkgList := &v1alpha1.CustomPackageList{}\n\terr = r.Client.List(ctx, pkgList, client.InNamespace(resource.Namespace))\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"listing custom packages: %w\", err)\n\t}\n\n\t// Check if any other CustomPackage has the same app name with higher priority\n\tfor i := range pkgList.Items {\n\t\tpkg := &pkgList.Items[i]\n\n\t\t// Skip self\n\t\tif pkg.Name == resource.Name {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Skip if different app name\n\t\tif pkg.Spec.ArgoCD.Name != resource.Spec.ArgoCD.Name {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Get the other package's priority\n\t\totherPriority, err := getPackagePriority(pkg)\n\t\tif err != nil {\n\t\t\t// If the other package has no priority, this one wins\n\t\t\tcontinue\n\t\t}\n\n\t\t// If another package has higher priority, this one should not reconcile\n\t\tif otherPriority > thisPriority {\n\t\t\tthisSource := resource.ObjectMeta.Annotations[v1alpha1.PackageSourcePathAnnotation]\n\t\t\totherSource := pkg.ObjectMeta.Annotations[v1alpha1.PackageSourcePathAnnotation]\n\t\t\tlogger.Info(\"Yielding to higher priority package - skipping all reconciliation\",\n\t\t\t\t\"appName\", resource.Spec.ArgoCD.Name,\n\t\t\t\t\"yieldingPackage\", thisSource,\n\t\t\t\t\"yieldingPriority\", thisPriority,\n\t\t\t\t\"activePackage\", otherSource,\n\t\t\t\t\"activePriority\", otherPriority)\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\n// getPackagePriority extracts the priority from a CustomPackage's annotations\nfunc getPackagePriority(pkg *v1alpha1.CustomPackage) (int, error) {\n\tif pkg.ObjectMeta.Annotations == nil {\n\t\treturn 0, fmt.Errorf(\"no annotations\")\n\t}\n\n\tpriorityStr, ok := pkg.ObjectMeta.Annotations[v1alpha1.PackagePriorityAnnotation]\n\tif !ok {\n\t\treturn 0, fmt.Errorf(\"no priority annotation\")\n\t}\n\n\tvar priority int\n\t_, err := fmt.Sscanf(priorityStr, \"%d\", &priority)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"invalid priority format: %w\", err)\n\t}\n\n\treturn priority, nil\n}\n\n// create an in-cluster repository CR, update the application spec, then apply\nfunc (r *Reconciler) reconcileCustomPackage(ctx context.Context, resource *v1alpha1.CustomPackage) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\n\t// Check if this package should reconcile\n\tshouldReconcile, err := r.shouldReconcile(ctx, resource)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"checking if should reconcile: %w\", err)\n\t}\n\n\tif !shouldReconcile {\n\t\t// This package has been superseded by a higher priority package\n\t\t// Mark as not synced and don't update resources, and don't requeue\n\t\tlogger.Info(\"package superseded by higher priority, skipping reconciliation\",\n\t\t\t\"name\", resource.Name,\n\t\t\t\"appName\", resource.Spec.ArgoCD.Name,\n\t\t\t\"sourcePath\", resource.ObjectMeta.Annotations[v1alpha1.PackageSourcePathAnnotation])\n\t\tresource.Status.Synced = false\n\t\treturn ctrl.Result{}, nil\n\t}\n\n\tlogger.V(1).Info(\"proceeding with reconciliation as highest priority package\",\n\t\t\"name\", resource.Name,\n\t\t\"appName\", resource.Spec.ArgoCD.Name)\n\n\tb, err := r.getArgoCDAppFile(ctx, resource)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"reading file %s: %w\", resource.Spec.ArgoCD.ApplicationFile, err)\n\t}\n\n\tobjs, err := k8s.ConvertYamlToObjects(r.Scheme, b)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"converting yaml to object %w\", err)\n\t}\n\tif len(objs) == 0 {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"file contained 0 kubernetes objects %s\", resource.Spec.ArgoCD.ApplicationFile)\n\t}\n\n\tswitch resource.Spec.ArgoCD.Type {\n\tcase argocdapplication.ApplicationKind:\n\t\tapp, ok := objs[0].(*argov1alpha1.Application)\n\t\tif !ok {\n\t\t\treturn ctrl.Result{}, fmt.Errorf(\"object is not an ArgoCD application %s\", resource.Spec.ArgoCD.ApplicationFile)\n\t\t}\n\t\tutil.SetPackageLabels(app)\n\n\t\tres, err := r.reconcileArgoCDApp(ctx, resource, app)\n\t\tif err != nil {\n\t\t\treturn ctrl.Result{}, err\n\t\t}\n\n\t\tfoundAppObj := argov1alpha1.Application{}\n\t\terr = r.Client.Get(ctx, client.ObjectKeyFromObject(app), &foundAppObj)\n\t\tif err != nil {\n\t\t\tif errors.IsNotFound(err) {\n\t\t\t\terr = r.Client.Create(ctx, app)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn ctrl.Result{}, fmt.Errorf(\"creating %s app CR: %w\", app.Name, err)\n\t\t\t\t}\n\n\t\t\t\treturn ctrl.Result{RequeueAfter: requeueTime}, nil\n\t\t\t}\n\t\t\treturn ctrl.Result{}, fmt.Errorf(\"getting argocd application object: %w\", err)\n\t\t}\n\t\tutil.SetPackageLabels(&foundAppObj)\n\t\tfoundAppObj.Spec = app.Spec\n\t\tfoundAppObj.ObjectMeta.Annotations = app.GetAnnotations()\n\t\tfoundAppObj.ObjectMeta.Labels = app.GetLabels()\n\t\terr = r.Client.Update(ctx, &foundAppObj)\n\t\tif err != nil {\n\t\t\treturn ctrl.Result{}, fmt.Errorf(\"updating argocd application object %s: %w\", app.Name, err)\n\t\t}\n\t\treturn res, nil\n\n\tcase argocdapplication.ApplicationSetKind:\n\t\t// application set embeds application spec. extract it then handle git generator repoURLs.\n\t\tappSet, ok := objs[0].(*argov1alpha1.ApplicationSet)\n\t\tif !ok {\n\t\t\treturn ctrl.Result{}, fmt.Errorf(\"object is not an ArgoCD application set %s\", resource.Spec.ArgoCD.ApplicationFile)\n\t\t}\n\n\t\tutil.SetPackageLabels(appSet)\n\n\t\tres, err := r.reconcileArgoCDAppSet(ctx, resource, appSet)\n\t\tif err != nil {\n\t\t\treturn ctrl.Result{}, err\n\t\t}\n\n\t\tfoundAppSetObj := argov1alpha1.ApplicationSet{}\n\t\terr = r.Client.Get(ctx, client.ObjectKeyFromObject(appSet), &foundAppSetObj)\n\t\tif err != nil {\n\t\t\tif errors.IsNotFound(err) {\n\t\t\t\terr = r.Client.Create(ctx, appSet)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn ctrl.Result{}, fmt.Errorf(\"creating %s argocd application set CR: %w\", appSet.Name, err)\n\t\t\t\t}\n\t\t\t\treturn ctrl.Result{RequeueAfter: requeueTime}, nil\n\t\t\t}\n\t\t\treturn ctrl.Result{}, fmt.Errorf(\"getting argocd application set object: %w\", err)\n\t\t}\n\n\t\tutil.SetPackageLabels(&foundAppSetObj)\n\t\tfoundAppSetObj.Spec = appSet.Spec\n\t\tfoundAppSetObj.ObjectMeta.Annotations = appSet.GetAnnotations()\n\t\tfoundAppSetObj.ObjectMeta.Labels = appSet.GetLabels()\n\t\terr = r.Client.Update(ctx, &foundAppSetObj)\n\t\tif err != nil {\n\t\t\treturn ctrl.Result{}, fmt.Errorf(\"updating argocd application object %s: %w\", appSet.Name, err)\n\t\t}\n\t\treturn res, nil\n\n\tdefault:\n\t\treturn ctrl.Result{}, fmt.Errorf(\"file is not a supported argocd kind %s\", resource.Spec.ArgoCD.ApplicationFile)\n\t}\n}\n\nfunc (r *Reconciler) reconcileArgoCDApp(ctx context.Context, resource *v1alpha1.CustomPackage, app *argov1alpha1.Application) (ctrl.Result, error) {\n\tappSourcesSynced := true\n\trepoRefs := make([]v1alpha1.ObjectRef, 0, 1)\n\tif app.Spec.HasMultipleSources() {\n\t\tnotSyncedRepos := 0\n\t\tfor j := range app.Spec.Sources {\n\t\t\ts := &app.Spec.Sources[j]\n\t\t\tres, sErr := r.reconcileHelmValueObject(ctx, s, resource, app.Name)\n\t\t\tif sErr != nil {\n\t\t\t\treturn res, sErr\n\t\t\t}\n\n\t\t\tres, repo, sErr := r.reconcileArgoCDSource(ctx, resource, s.RepoURL, app.Name)\n\t\t\tif sErr != nil {\n\t\t\t\treturn res, sErr\n\t\t\t}\n\n\t\t\tif repo != nil {\n\t\t\t\tif repo.Status.InternalGitRepositoryUrl == \"\" {\n\t\t\t\t\tnotSyncedRepos += 1\n\t\t\t\t}\n\t\t\t\ts.RepoURL = repo.Status.InternalGitRepositoryUrl\n\t\t\t\trepoRefs = append(repoRefs, v1alpha1.ObjectRef{\n\t\t\t\t\tNamespace: repo.Namespace,\n\t\t\t\t\tName:      repo.Name,\n\t\t\t\t\tUID:       string(repo.ObjectMeta.UID),\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\tappSourcesSynced = notSyncedRepos == 0\n\t} else {\n\t\ts := app.Spec.Source\n\t\tres, sErr := r.reconcileHelmValueObject(ctx, s, resource, app.Name)\n\t\tif sErr != nil {\n\t\t\treturn res, sErr\n\t\t}\n\n\t\tres, repo, sErr := r.reconcileArgoCDSource(ctx, resource, s.RepoURL, app.Name)\n\t\tif sErr != nil {\n\t\t\treturn res, sErr\n\t\t}\n\n\t\tif repo != nil {\n\t\t\tappSourcesSynced = repo.Status.InternalGitRepositoryUrl != \"\"\n\t\t\ts.RepoURL = repo.Status.InternalGitRepositoryUrl\n\t\t\trepoRefs = append(repoRefs, v1alpha1.ObjectRef{\n\t\t\t\tNamespace: repo.Namespace,\n\t\t\t\tName:      repo.Name,\n\t\t\t\tUID:       string(repo.ObjectMeta.UID),\n\t\t\t})\n\t\t}\n\t}\n\tresource.Status.GitRepositoryRefs = repoRefs\n\tresource.Status.Synced = appSourcesSynced\n\n\t// Only requeue if not synced yet to avoid continuous reconciliation\n\tif !appSourcesSynced {\n\t\treturn ctrl.Result{RequeueAfter: requeueTime}, nil\n\t}\n\treturn ctrl.Result{}, nil\n}\n\nfunc (r *Reconciler) reconcileArgoCDAppSet(ctx context.Context, resource *v1alpha1.CustomPackage, appSet *argov1alpha1.ApplicationSet) (ctrl.Result, error) {\n\tnotSyncedRepos := 0\n\tfor i := range appSet.Spec.Generators {\n\t\tg := appSet.Spec.Generators[i]\n\t\tif g.Git != nil {\n\t\t\tres, repo, gErr := r.reconcileArgoCDSource(ctx, resource, g.Git.RepoURL, appSet.GetName())\n\t\t\tif gErr != nil {\n\t\t\t\treturn res, fmt.Errorf(\"reconciling git generator URL %s, %s: %w\", g.Git.RepoURL, resource.Spec.ArgoCD.ApplicationFile, gErr)\n\t\t\t}\n\t\t\tif repo != nil {\n\t\t\t\tg.Git.RepoURL = repo.Status.InternalGitRepositoryUrl\n\t\t\t\tif repo.Status.InternalGitRepositoryUrl == \"\" {\n\t\t\t\t\tnotSyncedRepos += 1\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif g.Matrix != nil {\n\t\t\tfor j := range g.Matrix.Generators {\n\t\t\t\tnestedGenerator := g.Matrix.Generators[j]\n\t\t\t\tif nestedGenerator.Git != nil {\n\t\t\t\t\tres, repo, gErr := r.reconcileArgoCDSource(ctx, resource, nestedGenerator.Git.RepoURL, appSet.GetName())\n\t\t\t\t\tif gErr != nil {\n\t\t\t\t\t\treturn res, fmt.Errorf(\"reconciling git generator URL %s, %s: %w\", nestedGenerator.Git.RepoURL, resource.Spec.ArgoCD.ApplicationFile, gErr)\n\t\t\t\t\t}\n\t\t\t\t\tif repo != nil {\n\t\t\t\t\t\tnestedGenerator.Git.RepoURL = repo.Status.InternalGitRepositoryUrl\n\t\t\t\t\t\tif repo.Status.InternalGitRepositoryUrl == \"\" {\n\t\t\t\t\t\t\tnotSyncedRepos += 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgitGeneratorsSynced := notSyncedRepos == 0\n\tapp := argov1alpha1.Application{\n\t\tObjectMeta: metav1.ObjectMeta{Name: appSet.GetName(), Namespace: appSet.Namespace},\n\t}\n\tapp.Spec = appSet.Spec.Template.Spec\n\n\t_, err := r.reconcileArgoCDApp(ctx, resource, &app)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"reconciling application set %s %w\", resource.Spec.ArgoCD.ApplicationFile, err)\n\t}\n\n\tresource.Status.Synced = resource.Status.Synced && gitGeneratorsSynced\n\n\t// Only requeue if not synced yet to avoid continuous reconciliation\n\tif !resource.Status.Synced {\n\t\treturn ctrl.Result{RequeueAfter: requeueTime}, nil\n\t}\n\treturn ctrl.Result{}, nil\n}\n\n// create a gitrepository custom resource, then let the git repository controller take care of the rest\nfunc (r *Reconciler) reconcileArgoCDSource(ctx context.Context, resource *v1alpha1.CustomPackage, repoUrl, appName string) (ctrl.Result, *v1alpha1.GitRepository, error) {\n\tif isCNOEScheme(repoUrl) {\n\t\tif resource.Spec.RemoteRepository.Url == \"\" {\n\t\t\treturn r.reconcileArgoCDSourceFromLocal(ctx, resource, appName, repoUrl)\n\t\t}\n\t\treturn r.reconcileArgoCDSourceFromRemote(ctx, resource, appName, repoUrl)\n\t}\n\treturn ctrl.Result{}, nil, nil\n}\n\nfunc (r *Reconciler) reconcileArgoCDSourceFromRemote(ctx context.Context, resource *v1alpha1.CustomPackage, appName, repoURL string) (ctrl.Result, *v1alpha1.GitRepository, error) {\n\tlogger := log.FromContext(ctx)\n\trelativePath := strings.TrimPrefix(repoURL, v1alpha1.CNOEURIScheme)\n\t// no guarantee that this path exists\n\tdirPath := filepath.Join(resource.Spec.RemoteRepository.Path, relativePath)\n\n\trepo := &v1alpha1.GitRepository{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      remoteRepoName(appName, dirPath, resource.Spec.RemoteRepository),\n\t\t\tNamespace: resource.Namespace,\n\t\t},\n\t}\n\n\t// Check if GitRepository already exists\n\texistingRepo := &v1alpha1.GitRepository{}\n\tgetErr := r.Client.Get(ctx, client.ObjectKeyFromObject(repo), existingRepo)\n\n\tif getErr == nil {\n\t\t// GitRepository exists - check if we should take it over\n\t\tshouldTakeOver, checkErr := r.shouldTakeOverGitRepository(ctx, resource, existingRepo)\n\t\tif checkErr != nil {\n\t\t\treturn ctrl.Result{}, nil, fmt.Errorf(\"checking if should take over git repository: %w\", checkErr)\n\t\t}\n\n\t\tif !shouldTakeOver {\n\t\t\t// A higher/equal priority package owns this, just return it without updating\n\t\t\tlogger.V(1).Info(\"Using existing GitRepository owned by higher priority package\",\n\t\t\t\t\"repo\", repo.Name,\n\t\t\t\t\"ourPriority\", resource.ObjectMeta.Annotations[v1alpha1.PackagePriorityAnnotation])\n\t\t\treturn ctrl.Result{}, existingRepo, nil\n\t\t}\n\t\t// We should take it over - proceed with CreateOrUpdate below\n\t} else if !errors.IsNotFound(getErr) {\n\t\treturn ctrl.Result{}, nil, getErr\n\t}\n\t// GitRepository doesn't exist or we should take it over\n\n\tcliStartTime, _ := util.GetCLIStartTimeAnnotationValue(resource.ObjectMeta.Annotations)\n\n\tvar err error\n\t_, err = controllerutil.CreateOrUpdate(ctx, r.Client, repo, func() error {\n\t\tif err := controllerutil.SetControllerReference(resource, repo, r.Scheme); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif repo.ObjectMeta.Annotations == nil {\n\t\t\trepo.ObjectMeta.Annotations = make(map[string]string)\n\t\t}\n\t\tutil.SetCLIStartTimeAnnotationValue(repo.ObjectMeta.Annotations, cliStartTime)\n\n\t\trepo.Spec = v1alpha1.GitRepositorySpec{\n\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\tType:             v1alpha1.SourceTypeRemote,\n\t\t\t\tRemoteRepository: resource.Spec.RemoteRepository,\n\t\t\t\tPath:             dirPath,\n\t\t\t},\n\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\tName:             v1alpha1.GitProviderGitea,\n\t\t\t\tGitURL:           resource.Spec.GitServerURL,\n\t\t\t\tInternalGitURL:   resource.Spec.InternalGitServeURL,\n\t\t\t\tOrganizationName: v1alpha1.GiteaAdminUserName,\n\t\t\t},\n\t\t\tSecretRef: resource.Spec.GitServerAuthSecretRef,\n\t\t}\n\n\t\treturn nil\n\t})\n\n\tif err != nil && !errors.IsAlreadyExists(err) {\n\t\treturn ctrl.Result{}, nil, err\n\t}\n\n\treturn ctrl.Result{}, repo, nil\n}\n\nfunc (r *Reconciler) reconcileArgoCDSourceFromLocal(ctx context.Context, resource *v1alpha1.CustomPackage, appName, repoURL string) (ctrl.Result, *v1alpha1.GitRepository, error) {\n\tlogger := log.FromContext(ctx)\n\n\tabsPath, err := getCNOEAbsPath(resource.Spec.ArgoCD.ApplicationFile, repoURL)\n\tif err != nil {\n\t\tlogger.Error(err, \"processing argocd app source\", \"dir\", resource.Spec.ArgoCD.ApplicationFile, \"repoURL\", repoURL)\n\t\treturn ctrl.Result{}, nil, err\n\t}\n\n\trepo := &v1alpha1.GitRepository{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      localRepoName(appName, absPath),\n\t\t\tNamespace: resource.Namespace,\n\t\t},\n\t}\n\n\t// Check if GitRepository already exists\n\texistingRepo := &v1alpha1.GitRepository{}\n\tgetErr := r.Client.Get(ctx, client.ObjectKeyFromObject(repo), existingRepo)\n\n\tif getErr == nil {\n\t\t// GitRepository exists - check if we should take it over\n\t\tshouldTakeOver, checkErr := r.shouldTakeOverGitRepository(ctx, resource, existingRepo)\n\t\tif checkErr != nil {\n\t\t\treturn ctrl.Result{}, nil, fmt.Errorf(\"checking if should take over git repository: %w\", checkErr)\n\t\t}\n\n\t\tif !shouldTakeOver {\n\t\t\t// A higher/equal priority package owns this, just return it without updating\n\t\t\tlogger.V(1).Info(\"Using existing GitRepository owned by higher priority package\",\n\t\t\t\t\"repo\", repo.Name,\n\t\t\t\t\"ourPriority\", resource.ObjectMeta.Annotations[v1alpha1.PackagePriorityAnnotation])\n\t\t\treturn ctrl.Result{}, existingRepo, nil\n\t\t}\n\t\t// We should take it over - proceed with CreateOrUpdate below\n\t} else if !errors.IsNotFound(getErr) {\n\t\treturn ctrl.Result{}, nil, getErr\n\t}\n\t// GitRepository doesn't exist or we should take it over\n\n\tcliStartTime, _ := util.GetCLIStartTimeAnnotationValue(resource.ObjectMeta.Annotations)\n\n\t_, err = controllerutil.CreateOrUpdate(ctx, r.Client, repo, func() error {\n\t\tif err := controllerutil.SetControllerReference(resource, repo, r.Scheme); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif repo.ObjectMeta.Annotations == nil {\n\t\t\trepo.ObjectMeta.Annotations = make(map[string]string)\n\t\t}\n\t\tutil.SetCLIStartTimeAnnotationValue(repo.ObjectMeta.Annotations, cliStartTime)\n\n\t\trepo.Spec = v1alpha1.GitRepositorySpec{\n\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\tType: v1alpha1.SourceTypeLocal,\n\t\t\t\tPath: absPath,\n\t\t\t},\n\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\tName:             v1alpha1.GitProviderGitea,\n\t\t\t\tGitURL:           resource.Spec.GitServerURL,\n\t\t\t\tInternalGitURL:   resource.Spec.InternalGitServeURL,\n\t\t\t\tOrganizationName: v1alpha1.GiteaAdminUserName,\n\t\t\t},\n\t\t\tSecretRef: resource.Spec.GitServerAuthSecretRef,\n\t\t}\n\n\t\treturn nil\n\t})\n\t// it's possible for an application to specify the same directory multiple times in the spec.\n\t// if there is a repository already created for this package, no further action is necessary.\n\tif !errors.IsAlreadyExists(err) {\n\t\treturn ctrl.Result{}, repo, err\n\t}\n\n\treturn ctrl.Result{}, repo, nil\n}\n\nfunc (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error {\n\treturn ctrl.NewControllerManagedBy(mgr).\n\t\tFor(&v1alpha1.CustomPackage{}).\n\t\tComplete(r)\n}\n\nfunc (r *Reconciler) getArgoCDAppFile(ctx context.Context, resource *v1alpha1.CustomPackage) ([]byte, error) {\n\tfilePath := resource.Spec.ArgoCD.ApplicationFile\n\n\tif resource.Spec.RemoteRepository.Url == \"\" {\n\t\treturn os.ReadFile(filePath)\n\t}\n\n\tcloneDir := util.RepoDir(resource.Spec.RemoteRepository.Url, r.TempDir)\n\tst := r.RepoMap.LoadOrStore(resource.Spec.RemoteRepository.Url, cloneDir)\n\tst.MU.Lock()\n\twt, _, err := util.CloneRemoteRepoToDir(ctx, resource.Spec.RemoteRepository, 1, false, cloneDir, \"\")\n\tdefer st.MU.Unlock()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cloning repo, %s: %w\", resource.Spec.RemoteRepository.Url, err)\n\t}\n\treturn util.ReadWorktreeFile(wt, filePath)\n}\n\nfunc (r *Reconciler) reconcileHelmValueObject(ctx context.Context, source *argov1alpha1.ApplicationSource,\n\tresource *v1alpha1.CustomPackage, appName string,\n) (ctrl.Result, error) {\n\tif source.Helm == nil || source.Helm.ValuesObject == nil {\n\t\treturn ctrl.Result{}, nil\n\t}\n\n\tvar data any\n\terr := json.Unmarshal(source.Helm.ValuesObject.Raw, &data)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"processing helm valuesObject: %w\", err)\n\t}\n\n\tres, err := r.reconcileHelmValueObjectSource(ctx, &data, resource, appName)\n\tif err != nil {\n\t\treturn ctrl.Result{}, err\n\t}\n\n\traw, err := json.Marshal(data)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"converting helm valuesObject to json\")\n\t}\n\n\tsource.Helm.ValuesObject.Raw = raw\n\treturn res, nil\n}\n\nfunc (r *Reconciler) reconcileHelmValueObjectSource(ctx context.Context,\n\tvalueObject *any, resource *v1alpha1.CustomPackage, appName string,\n) (ctrl.Result, error) {\n\n\tswitch val := (*valueObject).(type) {\n\tcase string:\n\t\tres, repo, err := r.reconcileArgoCDSource(ctx, resource, val, appName)\n\t\tif err != nil {\n\t\t\treturn res, fmt.Errorf(\"processing %s in helmValueObject: %w\", val, err)\n\t\t}\n\t\tif repo != nil {\n\t\t\t*valueObject = repo.Status.InternalGitRepositoryUrl\n\t\t}\n\tcase map[string]any:\n\t\tfor k := range val {\n\t\t\tv := val[k]\n\t\t\tres, err := r.reconcileHelmValueObjectSource(ctx, &v, resource, appName)\n\t\t\tif err != nil {\n\t\t\t\treturn res, err\n\t\t\t}\n\t\t\tval[k] = v\n\t\t}\n\tcase []any:\n\t\tfor k := range val {\n\t\t\tv := val[k]\n\t\t\tres, err := r.reconcileHelmValueObjectSource(ctx, &v, resource, appName)\n\t\t\tif err != nil {\n\t\t\t\treturn res, err\n\t\t\t}\n\t\t\tval[k] = v\n\t\t}\n\t}\n\t// No need to requeue for helm value processing\n\treturn ctrl.Result{}, nil\n}\n\nfunc localRepoName(appName, dir string) string {\n\treturn fmt.Sprintf(\"%s-%s\", appName, filepath.Base(dir))\n}\n\nfunc remoteRepoName(appName, pathToPkg string, repo v1alpha1.RemoteRepositorySpec) string {\n\treturn fmt.Sprintf(\"%s-%s\", appName, filepath.Base(pathToPkg))\n}\n\nfunc isCNOEScheme(repoURL string) bool {\n\treturn strings.HasPrefix(repoURL, v1alpha1.CNOEURIScheme)\n}\n\nfunc getCNOEAbsPath(fPath, repoURL string) (string, error) {\n\tparentDir := filepath.Dir(fPath)\n\trelativePath := strings.TrimPrefix(repoURL, v1alpha1.CNOEURIScheme)\n\tabsPath, err := filepath.Abs(filepath.Join(parentDir, relativePath))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tf, err := os.Stat(absPath)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif !f.IsDir() {\n\t\treturn \"\", fmt.Errorf(\"path not a directory: %s\", absPath)\n\t}\n\treturn absPath, err\n}\n"
  },
  {
    "path": "pkg/controllers/custompackage/controller_test.go",
    "content": "package custompackage\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\targov1alpha1 \"github.com/cnoe-io/argocd-api/api/argo/application/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\tv1 \"k8s.io/api/core/v1\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\tk8sruntime \"k8s.io/apimachinery/pkg/runtime\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/controller-runtime/pkg/envtest\"\n)\n\ntype testCase struct {\n\texpectedGitRepo        v1alpha1.GitRepository\n\texpectedApplicationSet argov1alpha1.ApplicationSet\n\tinput                  v1alpha1.CustomPackage\n}\n\nfunc TestReconcileCustomPkg(t *testing.T) {\n\ts := k8sruntime.NewScheme()\n\tsb := k8sruntime.NewSchemeBuilder(\n\t\tv1.AddToScheme,\n\t\targov1alpha1.AddToScheme,\n\t\tv1alpha1.AddToScheme,\n\t)\n\tsb.AddToScheme(s)\n\ttestEnv := &envtest.Environment{\n\t\tCRDDirectoryPaths: []string{\n\t\t\tfilepath.Join(\"..\", \"resources\"),\n\t\t\t\"../localbuild/resources/argo/install.yaml\",\n\t\t},\n\t\tErrorIfCRDPathMissing: true,\n\t\tScheme:                s,\n\t\tBinaryAssetsDirectory: filepath.Join(\"..\", \"..\", \"..\", \"bin\", \"k8s\",\n\t\t\tfmt.Sprintf(\"1.29.1-%s-%s\", runtime.GOOS, runtime.GOARCH)),\n\t}\n\n\tcfg, err := testEnv.Start()\n\trequire.NoError(t, err)\n\tdefer testEnv.Stop()\n\n\tmgr, err := ctrl.NewManager(cfg, ctrl.Options{\n\t\tScheme: s,\n\t})\n\trequire.NoError(t, err)\n\n\tctx, ctxCancel := context.WithCancel(context.Background())\n\tstoppedCh := make(chan error)\n\tgo func() {\n\t\terr := mgr.Start(ctx)\n\t\tstoppedCh <- err\n\t}()\n\n\tdefer func() {\n\t\tctxCancel()\n\t\terr := <-stoppedCh\n\t\tif err != nil {\n\t\t\tt.Errorf(\"Starting controller manager: %v\", err)\n\t\t\tt.FailNow()\n\t\t}\n\t}()\n\n\tr := &Reconciler{\n\t\tClient:   mgr.GetClient(),\n\t\tScheme:   mgr.GetScheme(),\n\t\tRecorder: mgr.GetEventRecorderFor(\"test-custompkg-controller\"),\n\t}\n\tcwd, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\tcustomPkgs := []v1alpha1.CustomPackage{\n\t\t{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tName:      \"test1\",\n\t\t\t\tNamespace: \"test\",\n\t\t\t\tUID:       \"abc\",\n\t\t\t},\n\t\t\tSpec: v1alpha1.CustomPackageSpec{\n\t\t\t\tReplicate:           true,\n\t\t\t\tGitServerURL:        \"https://cnoe.io\",\n\t\t\t\tInternalGitServeURL: \"http://internal.cnoe.io\",\n\t\t\t\tArgoCD: v1alpha1.ArgoCDPackageSpec{\n\t\t\t\t\tApplicationFile: filepath.Join(cwd, \"test/resources/customPackages/testDir/app.yaml\"),\n\t\t\t\t\tName:            \"my-app\",\n\t\t\t\t\tNamespace:       \"argocd\",\n\t\t\t\t\tType:            \"Application\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tName:      \"test2\",\n\t\t\t\tNamespace: \"test\",\n\t\t\t\tUID:       \"abc\",\n\t\t\t},\n\t\t\tSpec: v1alpha1.CustomPackageSpec{\n\t\t\t\tReplicate:           false,\n\t\t\t\tGitServerURL:        \"https://cnoe.io\",\n\t\t\t\tInternalGitServeURL: \"http://cnoe.io/internal\",\n\t\t\t\tArgoCD: v1alpha1.ArgoCDPackageSpec{\n\t\t\t\t\tApplicationFile: filepath.Join(cwd, \"test/resources/customPackages/testDir2/exampleApp.yaml\"),\n\t\t\t\t\tName:            \"guestbook\",\n\t\t\t\t\tNamespace:       \"argocd\",\n\t\t\t\t\tType:            \"Application\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tName:      \"test3\",\n\t\t\t\tNamespace: \"test\",\n\t\t\t\tUID:       \"abc\",\n\t\t\t},\n\t\t\tSpec: v1alpha1.CustomPackageSpec{\n\t\t\t\tReplicate:           true,\n\t\t\t\tGitServerURL:        \"https://cnoe.io\",\n\t\t\t\tInternalGitServeURL: \"http://internal.cnoe.io\",\n\t\t\t\tArgoCD: v1alpha1.ArgoCDPackageSpec{\n\t\t\t\t\tApplicationFile: filepath.Join(cwd, \"test/resources/customPackages/testDir/app2.yaml\"),\n\t\t\t\t\tName:            \"my-app2\",\n\t\t\t\t\tNamespace:       \"argocd\",\n\t\t\t\t\tType:            \"Application\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, n := range []string{\"argocd\", \"test\"} {\n\t\tns := v1.Namespace{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tName: n,\n\t\t\t},\n\t\t}\n\t\terr = mgr.GetClient().Create(context.Background(), &ns)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"creating test ns: %v\", err)\n\t\t}\n\t}\n\n\tfor i := range customPkgs {\n\t\t_, err = r.reconcileCustomPackage(context.Background(), &customPkgs[i])\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"reconciling custom packages %v\", err)\n\t\t}\n\t}\n\ttime.Sleep(1 * time.Second)\n\t// verify repo.\n\tc := mgr.GetClient()\n\trepo := v1alpha1.GitRepository{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      localRepoName(\"my-app\", \"test/resources/customPackages/testDir/app1\"),\n\t\t\tNamespace: \"test\",\n\t\t},\n\t}\n\terr = c.Get(context.Background(), client.ObjectKeyFromObject(&repo), &repo)\n\tif err != nil {\n\t\tt.Fatalf(\"getting my-app-app1 git repo %v\", err)\n\t}\n\n\tp, _ := filepath.Abs(\"test/resources/customPackages/testDir/app1\")\n\texpectedRepo := v1alpha1.GitRepository{\n\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\tType: \"local\",\n\t\t\t\tPath: p,\n\t\t\t},\n\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\tName:             v1alpha1.GitProviderGitea,\n\t\t\t\tGitURL:           \"https://cnoe.io\",\n\t\t\t\tInternalGitURL:   \"http://internal.cnoe.io\",\n\t\t\t\tOrganizationName: v1alpha1.GiteaAdminUserName,\n\t\t\t},\n\t\t},\n\t}\n\tassert.Equal(t, repo.Spec, expectedRepo.Spec)\n\tok := reflect.DeepEqual(repo.Spec, expectedRepo.Spec)\n\tassert.True(t, ok)\n\n\ttcs := []struct {\n\t\tname string\n\t}{\n\t\t{\n\t\t\tname: \"my-app\",\n\t\t},\n\t\t{\n\t\t\tname: \"my-app2\",\n\t\t},\n\t\t{\n\t\t\tname: \"guestbook\",\n\t\t},\n\t}\n\n\tfor _, tc := range tcs {\n\t\tapp := argov1alpha1.Application{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tName:      tc.name,\n\t\t\t\tNamespace: \"argocd\",\n\t\t\t},\n\t\t}\n\t\terr = c.Get(context.Background(), client.ObjectKeyFromObject(&app), &app)\n\t\tassert.NoError(t, err)\n\n\t\tif app.ObjectMeta.Labels == nil {\n\t\t\tt.Fatalf(\"labels not set\")\n\t\t}\n\n\t\t_, ok := app.ObjectMeta.Labels[v1alpha1.PackageNameLabelKey]\n\t\tif !ok {\n\t\t\tt.Fatalf(\"label %s not set\", v1alpha1.PackageTypeLabelKey)\n\t\t}\n\n\t\t_, ok = app.ObjectMeta.Labels[v1alpha1.PackageNameLabelKey]\n\t\tif !ok {\n\t\t\tt.Fatalf(\"label %s not set\", v1alpha1.PackageNameLabelKey)\n\t\t}\n\n\t\tif app.Spec.Sources == nil {\n\t\t\tif strings.HasPrefix(app.Spec.Source.RepoURL, v1alpha1.CNOEURIScheme) {\n\t\t\t\tt.Fatalf(\"%s prefix should be removed\", v1alpha1.CNOEURIScheme)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tfor _, s := range app.Spec.Sources {\n\t\t\tif strings.HasPrefix(s.RepoURL, v1alpha1.CNOEURIScheme) {\n\t\t\t\tt.Fatalf(\"%s prefix should be removed\", v1alpha1.CNOEURIScheme)\n\t\t\t}\n\t\t}\n\n\t}\n}\n\nfunc TestReconcileCustomPkgAppSet(t *testing.T) {\n\ts := k8sruntime.NewScheme()\n\tsb := k8sruntime.NewSchemeBuilder(\n\t\tv1.AddToScheme,\n\t\targov1alpha1.AddToScheme,\n\t\tv1alpha1.AddToScheme,\n\t)\n\tsb.AddToScheme(s)\n\ttestEnv := &envtest.Environment{\n\t\tCRDDirectoryPaths: []string{\n\t\t\tfilepath.Join(\"..\", \"resources\"),\n\t\t\t\"../localbuild/resources/argo/install.yaml\",\n\t\t},\n\t\tErrorIfCRDPathMissing: true,\n\t\tScheme:                s,\n\t\tBinaryAssetsDirectory: filepath.Join(\"..\", \"..\", \"..\", \"bin\", \"k8s\",\n\t\t\tfmt.Sprintf(\"1.29.1-%s-%s\", runtime.GOOS, runtime.GOARCH)),\n\t}\n\n\tcfg, err := testEnv.Start()\n\tassert.Nil(t, err)\n\tdefer testEnv.Stop()\n\n\tmgr, err := ctrl.NewManager(cfg, ctrl.Options{\n\t\tScheme: s,\n\t})\n\tassert.Nil(t, err)\n\n\tctx, ctxCancel := context.WithCancel(context.Background())\n\tstoppedCh := make(chan error)\n\tgo func() {\n\t\terr := mgr.Start(ctx)\n\t\tstoppedCh <- err\n\t}()\n\n\tdefer func() {\n\t\tctxCancel()\n\t\terr := <-stoppedCh\n\t\tif err != nil {\n\t\t\tt.Errorf(\"Starting controller manager: %v\", err)\n\t\t\tt.FailNow()\n\t\t}\n\t}()\n\n\tr := &Reconciler{\n\t\tClient:   mgr.GetClient(),\n\t\tScheme:   mgr.GetScheme(),\n\t\tRecorder: mgr.GetEventRecorderFor(\"test-custompkg-controller\"),\n\t}\n\tcwd, err := os.Getwd()\n\tassert.Nil(t, err)\n\n\tfor _, n := range []string{\"argocd\", \"test\"} {\n\t\tns := v1.Namespace{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tName: n,\n\t\t\t},\n\t\t}\n\t\terr = mgr.GetClient().Create(context.Background(), &ns)\n\t\tassert.Nil(t, err)\n\t}\n\n\tcases := []testCase{\n\t\t{\n\t\t\tinput: v1alpha1.CustomPackage{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      \"test1\",\n\t\t\t\t\tNamespace: \"test\",\n\t\t\t\t\tUID:       \"abc\",\n\t\t\t\t},\n\t\t\t\tSpec: v1alpha1.CustomPackageSpec{\n\t\t\t\t\tReplicate:           true,\n\t\t\t\t\tGitServerURL:        \"https://cnoe.io\",\n\t\t\t\t\tInternalGitServeURL: \"http://internal.cnoe.io\",\n\t\t\t\t\tArgoCD: v1alpha1.ArgoCDPackageSpec{\n\t\t\t\t\t\tApplicationFile: filepath.Join(cwd, \"test/resources/customPackages/applicationSet/generator-single-source.yaml\"),\n\t\t\t\t\t\tType:            \"ApplicationSet\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedGitRepo: v1alpha1.GitRepository{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      localRepoName(\"generator-single-source\", \"test/resources/customPackages/applicationSet/test1\"),\n\t\t\t\t\tNamespace: \"test\",\n\t\t\t\t},\n\t\t\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\t\t\tType: \"local\",\n\t\t\t\t\t\tPath: filepath.Join(cwd, \"test/resources/customPackages/applicationSet/test1\"),\n\t\t\t\t\t},\n\t\t\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\t\t\tName:             v1alpha1.GitProviderGitea,\n\t\t\t\t\t\tGitURL:           \"https://cnoe.io\",\n\t\t\t\t\t\tInternalGitURL:   \"http://internal.cnoe.io\",\n\t\t\t\t\t\tOrganizationName: v1alpha1.GiteaAdminUserName,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedApplicationSet: argov1alpha1.ApplicationSet{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      \"generator-single-source\",\n\t\t\t\t\tNamespace: \"argocd\",\n\t\t\t\t},\n\t\t\t\tSpec: argov1alpha1.ApplicationSetSpec{\n\t\t\t\t\tGenerators: []argov1alpha1.ApplicationSetGenerator{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tGit: &argov1alpha1.GitGenerator{\n\t\t\t\t\t\t\t\tRepoURL: \"\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTemplate: argov1alpha1.ApplicationSetTemplate{\n\t\t\t\t\t\tSpec: argov1alpha1.ApplicationSpec{\n\t\t\t\t\t\t\tSource: &argov1alpha1.ApplicationSource{\n\t\t\t\t\t\t\t\tRepoURL: \"\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: v1alpha1.CustomPackage{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      \"test2\",\n\t\t\t\t\tNamespace: \"test\",\n\t\t\t\t\tUID:       \"test2\",\n\t\t\t\t},\n\t\t\t\tSpec: v1alpha1.CustomPackageSpec{\n\t\t\t\t\tReplicate:           true,\n\t\t\t\t\tGitServerURL:        \"https://cnoe.io\",\n\t\t\t\t\tInternalGitServeURL: \"http://internal.cnoe.io\",\n\t\t\t\t\tArgoCD: v1alpha1.ArgoCDPackageSpec{\n\t\t\t\t\t\tApplicationFile: filepath.Join(cwd, \"test/resources/customPackages/applicationSet/generator-multi-sources.yaml\"),\n\t\t\t\t\t\tType:            \"ApplicationSet\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedGitRepo: v1alpha1.GitRepository{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      localRepoName(\"generator-multi-sources\", \"test/resources/customPackages/applicationSet/test1\"),\n\t\t\t\t\tNamespace: \"test\",\n\t\t\t\t},\n\t\t\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\t\t\tType: \"local\",\n\t\t\t\t\t\tPath: filepath.Join(cwd, \"test/resources/customPackages/applicationSet/test1\"),\n\t\t\t\t\t},\n\t\t\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\t\t\tName:             v1alpha1.GitProviderGitea,\n\t\t\t\t\t\tGitURL:           \"https://cnoe.io\",\n\t\t\t\t\t\tInternalGitURL:   \"http://internal.cnoe.io\",\n\t\t\t\t\t\tOrganizationName: v1alpha1.GiteaAdminUserName,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedApplicationSet: argov1alpha1.ApplicationSet{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      \"generator-multi-sources\",\n\t\t\t\t\tNamespace: \"argocd\",\n\t\t\t\t},\n\t\t\t\tSpec: argov1alpha1.ApplicationSetSpec{\n\t\t\t\t\tGenerators: []argov1alpha1.ApplicationSetGenerator{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tGit: &argov1alpha1.GitGenerator{\n\t\t\t\t\t\t\t\tRepoURL: \"\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTemplate: argov1alpha1.ApplicationSetTemplate{\n\t\t\t\t\t\tSpec: argov1alpha1.ApplicationSpec{\n\t\t\t\t\t\t\tSources: []argov1alpha1.ApplicationSource{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tRepoURL: \"\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: v1alpha1.CustomPackage{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      \"test3\",\n\t\t\t\t\tNamespace: \"test\",\n\t\t\t\t\tUID:       \"test3\",\n\t\t\t\t},\n\t\t\t\tSpec: v1alpha1.CustomPackageSpec{\n\t\t\t\t\tReplicate:           true,\n\t\t\t\t\tGitServerURL:        \"https://cnoe.io\",\n\t\t\t\t\tInternalGitServeURL: \"http://internal.cnoe.io\",\n\t\t\t\t\tArgoCD: v1alpha1.ArgoCDPackageSpec{\n\t\t\t\t\t\tApplicationFile: filepath.Join(cwd, \"test/resources/customPackages/applicationSet/no-generator-single-source.yaml\"),\n\t\t\t\t\t\tType:            \"ApplicationSet\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedGitRepo: v1alpha1.GitRepository{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      localRepoName(\"no-generator-single-source\", \"test/resources/customPackages/applicationSet/test1\"),\n\t\t\t\t\tNamespace: \"test\",\n\t\t\t\t},\n\t\t\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\t\t\tType: \"local\",\n\t\t\t\t\t\tPath: filepath.Join(cwd, \"test/resources/customPackages/applicationSet/test1\"),\n\t\t\t\t\t},\n\t\t\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\t\t\tName:             v1alpha1.GitProviderGitea,\n\t\t\t\t\t\tGitURL:           \"https://cnoe.io\",\n\t\t\t\t\t\tInternalGitURL:   \"http://internal.cnoe.io\",\n\t\t\t\t\t\tOrganizationName: v1alpha1.GiteaAdminUserName,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedApplicationSet: argov1alpha1.ApplicationSet{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      \"no-generator-single-source\",\n\t\t\t\t\tNamespace: \"argocd\",\n\t\t\t\t},\n\t\t\t\tSpec: argov1alpha1.ApplicationSetSpec{\n\t\t\t\t\tTemplate: argov1alpha1.ApplicationSetTemplate{\n\t\t\t\t\t\tSpec: argov1alpha1.ApplicationSpec{\n\t\t\t\t\t\t\tSource: &argov1alpha1.ApplicationSource{\n\t\t\t\t\t\t\t\tRepoURL: \"\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: v1alpha1.CustomPackage{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      \"test4\",\n\t\t\t\t\tNamespace: \"test\",\n\t\t\t\t\tUID:       \"test4\",\n\t\t\t\t},\n\t\t\t\tSpec: v1alpha1.CustomPackageSpec{\n\t\t\t\t\tReplicate:           true,\n\t\t\t\t\tGitServerURL:        \"https://cnoe.io\",\n\t\t\t\t\tInternalGitServeURL: \"http://internal.cnoe.io\",\n\t\t\t\t\tArgoCD: v1alpha1.ArgoCDPackageSpec{\n\t\t\t\t\t\tApplicationFile: filepath.Join(cwd, \"test/resources/customPackages/applicationSet/generator-matrix.yaml\"),\n\t\t\t\t\t\tType:            \"ApplicationSet\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedGitRepo: v1alpha1.GitRepository{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      localRepoName(\"generator-matrix\", \"test/resources/customPackages/applicationSet/test1\"),\n\t\t\t\t\tNamespace: \"test\",\n\t\t\t\t},\n\t\t\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\t\t\tType: \"local\",\n\t\t\t\t\t\tPath: filepath.Join(cwd, \"test/resources/customPackages/applicationSet/test1\"),\n\t\t\t\t\t},\n\t\t\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\t\t\tName:             v1alpha1.GitProviderGitea,\n\t\t\t\t\t\tGitURL:           \"https://cnoe.io\",\n\t\t\t\t\t\tInternalGitURL:   \"http://internal.cnoe.io\",\n\t\t\t\t\t\tOrganizationName: v1alpha1.GiteaAdminUserName,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedApplicationSet: argov1alpha1.ApplicationSet{\n\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\tName:      \"generator-matrix\",\n\t\t\t\t\tNamespace: \"argocd\",\n\t\t\t\t},\n\t\t\t\tSpec: argov1alpha1.ApplicationSetSpec{\n\t\t\t\t\tGenerators: []argov1alpha1.ApplicationSetGenerator{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMatrix: &argov1alpha1.MatrixGenerator{\n\t\t\t\t\t\t\t\tGenerators: []argov1alpha1.ApplicationSetNestedGenerator{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tGit: &argov1alpha1.GitGenerator{\n\t\t\t\t\t\t\t\t\t\t\tRepoURL: \"\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTemplate: argov1alpha1.ApplicationSetTemplate{\n\t\t\t\t\t\tSpec: argov1alpha1.ApplicationSpec{\n\t\t\t\t\t\t\tSource: &argov1alpha1.ApplicationSource{\n\t\t\t\t\t\t\t\tRepoURL: \"\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i := range cases {\n\t\ttc := cases[i]\n\t\t_, err = r.reconcileCustomPackage(context.Background(), &tc.input)\n\t\tassert.Nil(t, err)\n\t\ttime.Sleep(1 * time.Second)\n\n\t\tc := mgr.GetClient()\n\t\trepo := v1alpha1.GitRepository{}\n\t\terr = c.Get(context.Background(), client.ObjectKeyFromObject(&tc.expectedGitRepo), &repo)\n\t\tassert.Nil(t, err)\n\n\t\tassert.Equal(t, tc.expectedGitRepo.Spec, repo.Spec)\n\n\t\t// verify argocd applicationSet\n\t\tappset := argov1alpha1.ApplicationSet{}\n\t\terr = c.Get(context.Background(), client.ObjectKeyFromObject(&tc.expectedApplicationSet), &appset)\n\t\tassert.Nil(t, err)\n\n\t\tif len(tc.expectedApplicationSet.Spec.Template.Spec.Sources) > 0 {\n\t\t\tfor j := range tc.expectedApplicationSet.Spec.Template.Spec.Sources {\n\t\t\t\texs := tc.expectedApplicationSet.Spec.Template.Spec.Sources[j]\n\t\t\t\tassert.Equal(t, exs.RepoURL, appset.Spec.Template.Spec.Sources[j].RepoURL)\n\t\t\t\tassert.False(t, strings.HasPrefix(appset.Spec.Template.Spec.Sources[j].RepoURL, v1alpha1.CNOEURIScheme))\n\t\t\t}\n\t\t} else {\n\t\t\tassert.Equal(t, tc.expectedApplicationSet.Spec.Template.Spec.Source.RepoURL, appset.Spec.Template.Spec.Source.RepoURL)\n\t\t\tassert.False(t, strings.HasPrefix(appset.Spec.Template.Spec.Source.RepoURL, v1alpha1.CNOEURIScheme))\n\t\t}\n\n\t\tif len(tc.expectedApplicationSet.Spec.Generators) > 0 {\n\t\t\tfor j := range tc.expectedApplicationSet.Spec.Generators {\n\t\t\t\texg := tc.expectedApplicationSet.Spec.Generators[j]\n\t\t\t\tif exg.Git != nil {\n\t\t\t\t\tassert.Equal(t, exg.Git.RepoURL, appset.Spec.Generators[j].Git.RepoURL)\n\t\t\t\t}\n\t\t\t\tif exg.Matrix != nil {\n\t\t\t\t\tfor k := range exg.Matrix.Generators {\n\t\t\t\t\t\tif exg.Matrix.Generators[k].Git != nil {\n\t\t\t\t\t\t\tassert.Equal(t, exg.Matrix.Generators[k].Git.RepoURL, appset.Spec.Generators[j].Matrix.Generators[k].Git.RepoURL)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestReconcileHelmValueObject(t *testing.T) {\n\ts := k8sruntime.NewScheme()\n\tsb := k8sruntime.NewSchemeBuilder(\n\t\tv1.AddToScheme,\n\t\targov1alpha1.AddToScheme,\n\t\tv1alpha1.AddToScheme,\n\t)\n\tsb.AddToScheme(s)\n\ttestEnv := &envtest.Environment{\n\t\tCRDDirectoryPaths: []string{\n\t\t\tfilepath.Join(\"..\", \"resources\"),\n\t\t\t\"../localbuild/resources/argo/install.yaml\",\n\t\t},\n\t\tErrorIfCRDPathMissing: true,\n\t\tScheme:                s,\n\t\tBinaryAssetsDirectory: filepath.Join(\"..\", \"..\", \"..\", \"bin\", \"k8s\",\n\t\t\tfmt.Sprintf(\"1.29.1-%s-%s\", runtime.GOOS, runtime.GOARCH)),\n\t}\n\n\tcfg, err := testEnv.Start()\n\tif err != nil {\n\t\tt.Fatalf(\"Starting testenv: %v\", err)\n\t}\n\tdefer testEnv.Stop()\n\n\tmgr, err := ctrl.NewManager(cfg, ctrl.Options{\n\t\tScheme: s,\n\t})\n\tif err != nil {\n\t\tt.Fatalf(\"getting manager: %v\", err)\n\t}\n\tctx, ctxCancel := context.WithCancel(context.Background())\n\tstoppedCh := make(chan error)\n\tgo func() {\n\t\terr := mgr.Start(ctx)\n\t\tstoppedCh <- err\n\t}()\n\n\tdefer func() {\n\t\tctxCancel()\n\t\terr := <-stoppedCh\n\t\tif err != nil {\n\t\t\tt.Errorf(\"Starting controller manager: %v\", err)\n\t\t\tt.FailNow()\n\t\t}\n\t}()\n\n\ttime.Sleep(1 * time.Second)\n\n\tfor _, n := range []string{\"argocd\", \"test\"} {\n\t\tns := v1.Namespace{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tName: n,\n\t\t\t},\n\t\t}\n\t\terr = mgr.GetClient().Create(context.Background(), &ns)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"creating test ns: %v\", err)\n\t\t}\n\t}\n\n\tr := &Reconciler{\n\t\tClient:   mgr.GetClient(),\n\t\tScheme:   mgr.GetScheme(),\n\t\tRecorder: mgr.GetEventRecorderFor(\"test-custompkg-controller\"),\n\t}\n\n\tcwd, _ := os.Getwd()\n\n\tresource := v1alpha1.CustomPackage{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      \"test1\",\n\t\t\tNamespace: \"test\",\n\t\t\tUID:       \"abc\",\n\t\t},\n\t\tSpec: v1alpha1.CustomPackageSpec{\n\t\t\tReplicate:           true,\n\t\t\tGitServerURL:        \"https://cnoe.io\",\n\t\t\tInternalGitServeURL: \"http://internal.cnoe.io\",\n\t\t\tArgoCD: v1alpha1.ArgoCDPackageSpec{\n\t\t\t\tApplicationFile: filepath.Join(cwd, \"test/resources/customPackages/helm/app.yaml\"),\n\t\t\t\tName:            \"my-app\",\n\t\t\t\tNamespace:       \"argocd\",\n\t\t\t\tType:            \"Application\",\n\t\t\t},\n\t\t},\n\t}\n\n\tsource := &argov1alpha1.ApplicationSource{\n\t\tHelm: &argov1alpha1.ApplicationSourceHelm{\n\t\t\tValuesObject: &k8sruntime.RawExtension{\n\t\t\t\tRaw: []byte(`{\n\t\t\t\t \"repoURLGit\": \"cnoe://test\",\n\t\t\t\t \"nested\": {\n\t\t\t\t   \"repoURLGit\": \"cnoe://test\",\n\t\t\t\t   \"bool\": true,\n\t\t\t\t   \"int\": 123\n\t\t\t\t },\n\t\t\t\t \"bool\": false,\n\t\t\t\t \"int\": 456,\n\t\t\t\t \"arrayString\": [\n\t\t\t\t   \"abc\",\n\t\t\t\t   \"cnoe://test\"\n\t\t\t\t ],\n\t\t\t\t \"arrayMap\": [\n\t\t\t\t   {\n\t\t\t\t     \"test\": \"cnoe://test\",\n\t\t\t\t     \"nested\": {\n\t\t\t\t       \"test\": \"cnoe://test\"\n\t\t\t\t     }\n\t\t\t\t   }\n\t\t\t\t ]\n\t\t\t\t}`),\n\t\t\t},\n\t\t},\n\t}\n\n\t_, err = r.reconcileHelmValueObject(ctx, source, &resource, \"test\")\n\tassert.NoError(t, err)\n\texpectJson := `{\"arrayMap\":[{\"nested\":{\"test\":\"\"},\"test\":\"\"}],\"arrayString\":[\"abc\",\"\"],\"bool\":false,\"int\":456,\"nested\":{\"bool\":true,\"int\":123,\"repoURLGit\":\"\"},\"repoURLGit\":\"\"}`\n\tassert.JSONEq(t, expectJson, string(source.Helm.ValuesObject.Raw))\n}\n\nfunc TestPackagePriority(t *testing.T) {\n\ts := k8sruntime.NewScheme()\n\tsb := k8sruntime.NewSchemeBuilder(\n\t\tv1.AddToScheme,\n\t\targov1alpha1.AddToScheme,\n\t\tv1alpha1.AddToScheme,\n\t)\n\tsb.AddToScheme(s)\n\ttestEnv := &envtest.Environment{\n\t\tCRDDirectoryPaths: []string{\n\t\t\tfilepath.Join(\"..\", \"resources\"),\n\t\t\t\"../localbuild/resources/argo/install.yaml\",\n\t\t},\n\t\tErrorIfCRDPathMissing: true,\n\t\tScheme:                s,\n\t\tBinaryAssetsDirectory: filepath.Join(\"..\", \"..\", \"..\", \"bin\", \"k8s\",\n\t\t\tfmt.Sprintf(\"1.29.1-%s-%s\", runtime.GOOS, runtime.GOARCH)),\n\t}\n\n\tcfg, err := testEnv.Start()\n\trequire.NoError(t, err)\n\tdefer testEnv.Stop()\n\n\tmgr, err := ctrl.NewManager(cfg, ctrl.Options{\n\t\tScheme: s,\n\t})\n\trequire.NoError(t, err)\n\n\tctx, ctxCancel := context.WithCancel(context.Background())\n\tstoppedCh := make(chan error)\n\tgo func() {\n\t\terr := mgr.Start(ctx)\n\t\tstoppedCh <- err\n\t}()\n\n\tdefer func() {\n\t\tctxCancel()\n\t\terr := <-stoppedCh\n\t\tif err != nil {\n\t\t\tt.Errorf(\"Starting controller manager: %v\", err)\n\t\t\tt.FailNow()\n\t\t}\n\t}()\n\n\tr := &Reconciler{\n\t\tClient:   mgr.GetClient(),\n\t\tScheme:   mgr.GetScheme(),\n\t\tRecorder: mgr.GetEventRecorderFor(\"test-custompkg-controller\"),\n\t}\n\tcwd, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\t// Create namespaces\n\tfor _, n := range []string{\"argocd\", \"test\"} {\n\t\tns := v1.Namespace{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tName: n,\n\t\t\t},\n\t\t}\n\t\terr = mgr.GetClient().Create(context.Background(), &ns)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"creating test ns: %v\", err)\n\t\t}\n\t}\n\n\t// Create two CustomPackages with the same app name but different priorities\n\t// Package 1 has priority 0 (from first --package argument)\n\tpkg1 := v1alpha1.CustomPackage{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      \"pkg1-my-app\",\n\t\t\tNamespace: \"test\",\n\t\t\tUID:       \"pkg1\",\n\t\t\tAnnotations: map[string]string{\n\t\t\t\tv1alpha1.PackagePriorityAnnotation:   \"0\",\n\t\t\t\tv1alpha1.PackageSourcePathAnnotation: \"/path/to/package1\",\n\t\t\t},\n\t\t},\n\t\tSpec: v1alpha1.CustomPackageSpec{\n\t\t\tReplicate:           true,\n\t\t\tGitServerURL:        \"https://cnoe.io\",\n\t\t\tInternalGitServeURL: \"http://internal.cnoe.io\",\n\t\t\tArgoCD: v1alpha1.ArgoCDPackageSpec{\n\t\t\t\tApplicationFile: filepath.Join(cwd, \"test/resources/customPackages/testDir/app.yaml\"),\n\t\t\t\tName:            \"my-app\",\n\t\t\t\tNamespace:       \"argocd\",\n\t\t\t\tType:            \"Application\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// Package 2 has priority 1 (from second --package argument, should win)\n\tpkg2 := v1alpha1.CustomPackage{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      \"pkg2-my-app\",\n\t\t\tNamespace: \"test\",\n\t\t\tUID:       \"pkg2\",\n\t\t\tAnnotations: map[string]string{\n\t\t\t\tv1alpha1.PackagePriorityAnnotation:   \"1\",\n\t\t\t\tv1alpha1.PackageSourcePathAnnotation: \"/path/to/package2\",\n\t\t\t},\n\t\t},\n\t\tSpec: v1alpha1.CustomPackageSpec{\n\t\t\tReplicate:           true,\n\t\t\tGitServerURL:        \"https://cnoe.io\",\n\t\t\tInternalGitServeURL: \"http://internal.cnoe.io\",\n\t\t\tArgoCD: v1alpha1.ArgoCDPackageSpec{\n\t\t\t\tApplicationFile: filepath.Join(cwd, \"test/resources/customPackages/testDir/app.yaml\"),\n\t\t\t\tName:            \"my-app\",\n\t\t\t\tNamespace:       \"argocd\",\n\t\t\t\tType:            \"Application\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// Create the CustomPackages in the cluster\n\terr = mgr.GetClient().Create(context.Background(), &pkg1)\n\trequire.NoError(t, err)\n\terr = mgr.GetClient().Create(context.Background(), &pkg2)\n\trequire.NoError(t, err)\n\n\t// Test priority resolution\n\tt.Run(\"lower priority package should not reconcile\", func(t *testing.T) {\n\t\tshouldReconcile, err := r.shouldReconcile(context.Background(), &pkg1)\n\t\tassert.NoError(t, err)\n\t\tassert.False(t, shouldReconcile, \"pkg1 (priority 0) should not reconcile when pkg2 (priority 1) exists\")\n\t})\n\n\tt.Run(\"higher priority package should reconcile\", func(t *testing.T) {\n\t\tshouldReconcile, err := r.shouldReconcile(context.Background(), &pkg2)\n\t\tassert.NoError(t, err)\n\t\tassert.True(t, shouldReconcile, \"pkg2 (priority 1) should reconcile as it has highest priority\")\n\t})\n\n\tt.Run(\"getPackagePriority should extract priority correctly\", func(t *testing.T) {\n\t\tpriority1, err := getPackagePriority(&pkg1)\n\t\tassert.NoError(t, err)\n\t\tassert.Equal(t, 0, priority1)\n\n\t\tpriority2, err := getPackagePriority(&pkg2)\n\t\tassert.NoError(t, err)\n\t\tassert.Equal(t, 1, priority2)\n\t})\n}\n\nfunc TestGetPackagePriority(t *testing.T) {\n\tt.Run(\"valid priority annotation\", func(t *testing.T) {\n\t\tpkg := &v1alpha1.CustomPackage{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\tv1alpha1.PackagePriorityAnnotation: \"5\",\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\tpriority, err := getPackagePriority(pkg)\n\t\tassert.NoError(t, err)\n\t\tassert.Equal(t, 5, priority)\n\t})\n\n\tt.Run(\"missing annotations\", func(t *testing.T) {\n\t\tpkg := &v1alpha1.CustomPackage{\n\t\t\tObjectMeta: metav1.ObjectMeta{},\n\t\t}\n\t\t_, err := getPackagePriority(pkg)\n\t\tassert.Error(t, err)\n\t})\n\n\tt.Run(\"missing priority annotation\", func(t *testing.T) {\n\t\tpkg := &v1alpha1.CustomPackage{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\"other\": \"value\",\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\t_, err := getPackagePriority(pkg)\n\t\tassert.Error(t, err)\n\t})\n\n\tt.Run(\"invalid priority format\", func(t *testing.T) {\n\t\tpkg := &v1alpha1.CustomPackage{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\tv1alpha1.PackagePriorityAnnotation: \"invalid\",\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\t_, err := getPackagePriority(pkg)\n\t\tassert.Error(t, err)\n\t})\n\n\tt.Run(\"zero priority\", func(t *testing.T) {\n\t\tpkg := &v1alpha1.CustomPackage{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\tv1alpha1.PackagePriorityAnnotation: \"0\",\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\tpriority, err := getPackagePriority(pkg)\n\t\tassert.NoError(t, err)\n\t\tassert.Equal(t, 0, priority)\n\t})\n\n\tt.Run(\"large priority value\", func(t *testing.T) {\n\t\tpkg := &v1alpha1.CustomPackage{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\tv1alpha1.PackagePriorityAnnotation: \"1000\",\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\tpriority, err := getPackagePriority(pkg)\n\t\tassert.NoError(t, err)\n\t\tassert.Equal(t, 1000, priority)\n\t})\n}\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/applicationSet/generator-matrix.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: ApplicationSet\nmetadata:\n  name: generator-matrix\n  namespace: argocd\nspec:\n  goTemplate: true\n  goTemplateOptions:\n    - missingkey=error\n  generators:\n    - matrix:\n        generators:\n          - git:\n              repoURL: \"cnoe://test1\"\n              revision: HEAD\n              files:\n                - path: \"**/config.yaml\"\n  template:\n    metadata:\n      name: \"{{ .name }}\"\n      labels:\n        environment: \"{{ .environment }}\"\n    spec:\n      project: default\n      source:\n        repoURL: \"cnoe://test1\"\n        targetRevision: HEAD\n        path: \"{{ .manifestPath }}/manifests\"\n      destination:\n        server: https://kubernetes.default.svc\n        namespace: \"{{ .namespace }}\"\n      syncPolicy:\n        syncOptions:\n          - CreateNamespace=true\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/applicationSet/generator-multi-sources.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: ApplicationSet\nmetadata:\n  name: generator-multi-sources\n  namespace: argocd\nspec:\n  generators:\n    - git:\n        repoURL: cnoe://test1\n        revision: HEAD\n        directories:\n          - path: apps/*\n  template:\n    metadata:\n      name: '{{path.basename}}'\n    spec:\n      project: default\n      sources:\n        - repoURL: cnoe://test1\n          targetRevision: HEAD\n          path: '{{path}}'\n      destination:\n        server: https://kubernetes.default.svc\n        namespace: '{{path.basename}}'\n      syncPolicy:\n        syncOptions:\n          - CreateNamespace=true\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/applicationSet/generator-single-source.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: ApplicationSet\nmetadata:\n  name: generator-single-source\n  namespace: argocd\nspec:\n  generators:\n    - git:\n        repoURL: cnoe://test1\n        revision: HEAD\n        directories:\n          - path: apps/*\n  template:\n    metadata:\n      name: '{{path.basename}}'\n    spec:\n      project: default\n      source:\n        repoURL: cnoe://test1\n        targetRevision: HEAD\n        path: '{{path}}'\n      destination:\n        server: https://kubernetes.default.svc\n        namespace: '{{path.basename}}'\n      syncPolicy:\n        syncOptions:\n          - CreateNamespace=true\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/applicationSet/no-generator-single-source.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: ApplicationSet\nmetadata:\n  name: no-generator-single-source\n  namespace: argocd\nspec:\n  generators:\n    - clusters: { }\n  template:\n    metadata:\n      name: '{{path.basename}}'\n    spec:\n      project: default\n      source:\n        repoURL: cnoe://test1\n        targetRevision: HEAD\n        path: '{{path}}'\n      destination:\n        server: https://kubernetes.default.svc\n        namespace: '{{path.basename}}'\n      syncPolicy:\n        syncOptions:\n          - CreateNamespace=true\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/applicationSet/test1/apps/guestbook/guestbook-ui-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: guestbook-ui\nspec:\n  replicas: 1\n  revisionHistoryLimit: 3\n  selector:\n    matchLabels:\n      app: guestbook-ui\n  template:\n    metadata:\n      labels:\n        app: guestbook-ui\n    spec:\n      containers:\n      - image: gcr.io/heptio-images/ks-guestbook-demo:0.2\n        name: guestbook-ui\n        ports:\n        - containerPort: 80\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/applicationSet/test1/apps/guestbook/guestbook-ui-svc.yaml",
    "content": "apiVersion: v1\t\nkind: Service\t\nmetadata:\t\n  name: guestbook-ui\t\nspec:\t\n  ports:\t\n  - port: 80\t\n    targetPort: 80\t\n  selector:\t\n    app: guestbook-ui\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/applicationSet/test1/apps/guestbook/kustomization.yaml",
    "content": "namePrefix: kustomize-\n\nresources:\n- guestbook-ui-deployment.yaml\n- guestbook-ui-svc.yaml\napiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/applicationSet/test1/apps/guestbook2/guestbook-ui-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: guestbook-ui\nspec:\n  replicas: 1\n  revisionHistoryLimit: 3\n  selector:\n    matchLabels:\n      app: guestbook-ui\n  template:\n    metadata:\n      labels:\n        app: guestbook-ui\n    spec:\n      containers:\n      - image: gcr.io/heptio-images/ks-guestbook-demo:0.2\n        name: guestbook-ui\n        ports:\n        - containerPort: 80\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/applicationSet/test1/apps/guestbook2/guestbook-ui-svc.yaml",
    "content": "apiVersion: v1\t\nkind: Service\t\nmetadata:\t\n  name: guestbook-ui\t\nspec:\t\n  ports:\t\n  - port: 80\t\n    targetPort: 80\t\n  selector:\t\n    app: guestbook-ui\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/applicationSet/test1/apps/guestbook2/kustomization.yaml",
    "content": "namePrefix: kustomize-\n\nresources:\n- guestbook-ui-deployment.yaml\n- guestbook-ui-svc.yaml\napiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/helm/app.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: my-app-helm\n  namespace: argocd\nspec:\n  destination:\n    namespace: my-app-helm\n    server: \"https://kubernetes.default.svc\"\n  source:\n    repoURL: cnoe://test\n    targetRevision: HEAD\n    path: \".\"\n    helm:\n      valuesObject:\n        repoURLGit: cnoe://test\n        nested:\n          repoURLGit: cnoe://test\n  project: default\n  syncPolicy:\n    automated:\n      selfHeal: true\n    syncOptions:\n      - CreateNamespace=true\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/helm/test/Chart.yaml",
    "content": "apiVersion: v2\nname: test\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.16.0\"\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/helm/test/templates/cm.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: config\ndata:\n  test1: \"one\"\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/helm/test/values.yaml",
    "content": "some: value\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/testDir/app.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: my-app\n  namespace: argocd\nspec:\n  destination:\n    namespace: my-app\n    server: \"https://kubernetes.default.svc\"\n  source:\n    repoURL: cnoe://app1\n    targetRevision: HEAD\n    path: \".\"\n  project: default\n  syncPolicy:\n    automated:\n      selfHeal: true\n    syncOptions:\n      - CreateNamespace=true\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/testDir/app1/cm.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: config\ndata:\n  test1: \"one\"\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/testDir/app2/one/cm.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: one-config\ndata:\n  test1: \"one\"\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/testDir/app2/two/cm.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: two-config\ndata:\n  test1: \"one\"\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/testDir/app2.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: my-app2\n  namespace: argocd\nspec:\n  destination:\n    namespace: my-app2\n    server: \"https://kubernetes.default.svc\"\n  sources:\n    - repoURL: cnoe://app2\n      targetRevision: HEAD\n      path: \"one\"\n    - repoURL: cnoe://app2\n      targetRevision: HEAD\n      path: \"two\"\n  project: default\n  syncPolicy:\n    automated:\n      selfHeal: true\n    syncOptions:\n      - CreateNamespace=true\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/testDir2/exampleApp.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: guestbook\n  namespace: argocd\nspec:\n  project: default\n  source:\n    repoURL: https://github.com/argoproj/argocd-example-apps.git\n    targetRevision: HEAD\n    path: guestbook\n  destination:\n    server: https://kubernetes.default.svc\n    namespace: guestbook\n  syncPolicy:\n    syncOptions:\n      - CreateNamespace=true\n"
  },
  {
    "path": "pkg/controllers/custompackage/test/resources/customPackages/testDir2/exampleApp2.yaml",
    "content": "apiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: guestbook2\n  namespace: argocd\nspec:\n  project: default\n  source:\n    repoURL: https://github.com/argoproj/argocd-example-apps.git\n    targetRevision: HEAD\n    path: guestbook\n  destination:\n    server: https://kubernetes.default.svc\n    namespace: guestbook2\n  syncPolicy:\n    syncOptions:\n      - CreateNamespace=true\n"
  },
  {
    "path": "pkg/controllers/doc.go",
    "content": "package controllers\n"
  },
  {
    "path": "pkg/controllers/gitrepository/controller.go",
    "content": "package gitrepository\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"code.gitea.io/sdk/gitea\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"github.com/go-git/go-git/v5\"\n\t\"github.com/go-git/go-git/v5/plumbing\"\n\t\"github.com/go-git/go-git/v5/plumbing/object\"\n\tgitclient \"github.com/go-git/go-git/v5/plumbing/transport/client\"\n\tgithttp \"github.com/go-git/go-git/v5/plumbing/transport/http\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/client-go/tools/record\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/controller-runtime/pkg/event\"\n\t\"sigs.k8s.io/controller-runtime/pkg/log\"\n)\n\nconst (\n\tDefaultBranchName    = \"main\"\n\trequeueTime          = time.Second * 30\n\tgitCommitAuthorName  = \"git-reconciler\"\n\tgitCommitAuthorEmail = \"idpbuilder-agent@cnoe.io\"\n\n\tgitTCPTimeout = 5 * time.Second\n\t// timeout value for a git operation through http. clone, push, etc.\n\tgitHTTPTimeout = 30 * time.Second\n)\n\nfunc init() {\n\tconfigureGitClient()\n}\n\ntype RepositoryReconciler struct {\n\tclient.Client\n\tRecorder        record.EventRecorder\n\tScheme          *runtime.Scheme\n\tConfig          v1alpha1.BuildCustomizationSpec\n\tGitProviderFunc gitProviderFunc\n\tTempDir         string\n\tRepoMap         *util.RepoMap\n}\n\ntype gitProviderFunc func(context.Context, *v1alpha1.GitRepository, client.Client, *runtime.Scheme, v1alpha1.BuildCustomizationSpec) (gitProvider, error)\n\ntype notFoundError struct{}\n\nfunc (n notFoundError) Error() string {\n\treturn fmt.Sprintf(\"repo not found\")\n}\n\nfunc getRepositoryName(repo v1alpha1.GitRepository) string {\n\treturn fmt.Sprintf(\"%s-%s\", repo.Namespace, repo.Name)\n}\n\nfunc getOrganizationName(repo v1alpha1.GitRepository) string {\n\treturn repo.Spec.Provider.OrganizationName\n}\n\nfunc getFallbackRepositoryURL(repo *v1alpha1.GitRepository, info repoInfo) string {\n\treturn fmt.Sprintf(\"%s/%s.git\", repo.Spec.Provider.GitURL, info.fullName)\n}\n\nfunc GetGitProvider(ctx context.Context, repo *v1alpha1.GitRepository, kubeClient client.Client, scheme *runtime.Scheme, tmplConfig v1alpha1.BuildCustomizationSpec) (gitProvider, error) {\n\tswitch repo.Spec.Provider.Name {\n\tcase v1alpha1.GitProviderGitea:\n\t\tgiteaClient, err := NewGiteaClient(repo.Spec.Provider.GitURL, gitea.SetHTTPClient(util.GetHttpClient()))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &giteaProvider{\n\t\t\tClient:      kubeClient,\n\t\t\tScheme:      scheme,\n\t\t\tgiteaClient: giteaClient,\n\t\t\tconfig:      tmplConfig,\n\t\t}, nil\n\tcase v1alpha1.GitProviderGitHub:\n\t\treturn &gitHubProvider{\n\t\t\tClient:       kubeClient,\n\t\t\tScheme:       scheme,\n\t\t\tconfig:       tmplConfig,\n\t\t\tgitHubClient: newGitHubClient(nil),\n\t\t}, nil\n\t}\n\treturn nil, fmt.Errorf(\"invalid git provider %s \", repo.Spec.Provider.Name)\n}\n\nfunc (r *RepositoryReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\n\tvar gitRepo v1alpha1.GitRepository\n\terr := r.Get(ctx, req.NamespacedName, &gitRepo)\n\tif err != nil {\n\t\treturn ctrl.Result{}, client.IgnoreNotFound(err)\n\t}\n\n\tdefer r.postProcessReconcile(ctx, req, &gitRepo)\n\n\tlogger.V(1).Info(\"reconciling GitRepository\", \"name\", req.Name, \"namespace\", req.Namespace)\n\tresult, err := r.reconcileGitRepo(ctx, &gitRepo)\n\tif err != nil {\n\t\tr.Recorder.Event(&gitRepo, \"Warning\", \"reconcile error\", err.Error())\n\t} else {\n\t\tr.Recorder.Event(&gitRepo, \"Normal\", \"reconcile success\", \"Successfully reconciled\")\n\t}\n\n\treturn result, err\n}\n\nfunc (r *RepositoryReconciler) postProcessReconcile(ctx context.Context, req ctrl.Request, repo *v1alpha1.GitRepository) {\n\tlogger := log.FromContext(ctx)\n\terr := r.Status().Update(ctx, repo)\n\tif err != nil {\n\t\tlogger.Error(err, \"failed updating repo status\")\n\t}\n\n\terr = util.UpdateSyncAnnotation(ctx, r.Client, repo)\n\tif err != nil {\n\t\tlogger.Error(err, \"failed updating repo annotation\")\n\t}\n}\n\nfunc (r *RepositoryReconciler) reconcileGitRepo(ctx context.Context, repo *v1alpha1.GitRepository) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\tlogger.V(1).Info(\"reconciling\", \"name\", repo.Name, \"dir\", repo.Spec.Source)\n\trepo.Status.Synced = false\n\n\tprovider, err := r.GitProviderFunc(ctx, repo, r.Client, r.Scheme, r.Config)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"initializing git provider: %w\", err)\n\t}\n\n\tcreds, err := provider.getProviderCredentials(ctx, repo)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"getting git provider credentials: %w\", err)\n\t}\n\n\tif r.Config.StaticPassword {\n\t\tcreds.password = util.StaticPassword\n\t}\n\n\terr = provider.setProviderCredentials(ctx, repo, creds)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"setting git provider credentials: %w\", err)\n\t}\n\n\tvar providerRepo repoInfo\n\tp, err := provider.getRepository(ctx, repo)\n\tif err != nil {\n\t\tif errors.Is(err, notFoundError{}) {\n\t\t\tp, err = provider.createRepository(ctx, repo)\n\t\t\tif err != nil {\n\t\t\t\treturn ctrl.Result{}, fmt.Errorf(\"creating repository: %w\", err)\n\t\t\t}\n\t\t\tproviderRepo = p\n\t\t} else {\n\t\t\treturn ctrl.Result{}, fmt.Errorf(\"getting repository: %w\", err)\n\t\t}\n\t} else {\n\t\tproviderRepo = p\n\t}\n\n\terr = provider.updateRepoContent(ctx, repo, providerRepo, creds, r.TempDir, r.RepoMap)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"updating repository contents: %w\", err)\n\t}\n\n\trepo.Status.ExternalGitRepositoryUrl = providerRepo.cloneUrl\n\trepo.Status.InternalGitRepositoryUrl = providerRepo.internalGitRepositoryUrl\n\trepo.Status.Synced = true\n\n\t// Keep requeueing to detect source file changes, but addAllAndCommit\n\t// already checks if there are changes before pushing\n\treturn ctrl.Result{Requeue: true, RequeueAfter: requeueTime}, nil\n}\n\nfunc (r *RepositoryReconciler) SetupWithManager(mgr ctrl.Manager, notifyChan chan event.GenericEvent) error {\n\t// TODO: should use notifyChan to trigger reconcile when FS changes\n\treturn ctrl.NewControllerManagedBy(mgr).\n\t\tFor(&v1alpha1.GitRepository{}).\n\t\tComplete(r)\n}\n\nfunc addAllAndCommit(path string, gitRepo *git.Repository) (plumbing.Hash, bool, error) {\n\ttree, err := gitRepo.Worktree()\n\tif err != nil {\n\t\treturn plumbing.Hash{}, false, fmt.Errorf(\"getting git worktree: %w\", err)\n\t}\n\n\terr = tree.AddGlob(\"*\")\n\tif err != nil {\n\t\treturn plumbing.Hash{}, false, fmt.Errorf(\"adding git files: %w\", err)\n\t}\n\n\tstatus, err := tree.Status()\n\tif err != nil {\n\t\treturn plumbing.Hash{}, false, fmt.Errorf(\"getting git status: %w\", err)\n\t}\n\n\tif status.IsClean() {\n\t\th, _ := gitRepo.Head()\n\t\treturn h.Hash(), false, nil\n\t}\n\n\th, err := tree.Commit(fmt.Sprintf(\"updated from %s\", path), &git.CommitOptions{\n\t\tAll:               true,\n\t\tAllowEmptyCommits: false,\n\t\tAuthor: &object.Signature{\n\t\t\tName:  gitCommitAuthorName,\n\t\t\tEmail: gitCommitAuthorEmail,\n\t\t\tWhen:  time.Now(),\n\t\t},\n\t})\n\treturn h, true, nil\n}\n\nfunc pushToRemote(ctx context.Context, remoteRepo *git.Repository, creds gitProviderCredentials) error {\n\tauth, err := getBasicAuth(creds)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting basic auth: %w\", err)\n\t}\n\treturn remoteRepo.PushContext(ctx, &git.PushOptions{\n\t\tAuth:            &auth,\n\t\tInsecureSkipTLS: true,\n\t})\n}\n\n// add files from local fs to target repository (gitea for now)\nfunc reconcileLocalRepoContent(ctx context.Context, repo *v1alpha1.GitRepository, tgtRepo repoInfo, creds gitProviderCredentials, scheme *runtime.Scheme, tmplConfig v1alpha1.BuildCustomizationSpec, tmpDir string, repoMap *util.RepoMap) error {\n\tlogger := log.FromContext(ctx)\n\ttgtCloneDir := util.RepoDir(tgtRepo.cloneUrl, tmpDir)\n\n\tst := repoMap.LoadOrStore(tgtRepo.cloneUrl, tgtCloneDir)\n\tst.MU.Lock()\n\tdefer st.MU.Unlock()\n\n\ttgtRepoSpec := v1alpha1.RemoteRepositorySpec{\n\t\tCloneSubmodules: false,\n\t\tPath:            \".\",\n\t\tUrl:             tgtRepo.cloneUrl,\n\t\tRef:             \"\",\n\t}\n\tlogger.V(1).Info(\"cloning repo\", \"repoUrl\", tgtRepoSpec.Url, \"fallbackUrl\", getFallbackRepositoryURL(repo, tgtRepo), \"cloneDir\", tgtCloneDir)\n\t_, tgtRepository, err := util.CloneRemoteRepoToDir(ctx, tgtRepoSpec, 1, true, tgtCloneDir, getFallbackRepositoryURL(repo, tgtRepo))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"cloning repo %s: %w\", tgtRepoSpec.Url, err)\n\t}\n\n\terr = writeRepoContents(repo, tgtCloneDir, tmplConfig, scheme)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"writing repo contents: %w\", err)\n\t}\n\n\thash, push, err := addAllAndCommit(repo.Spec.Source.Path, tgtRepository)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"add and commit %w\", err)\n\t}\n\n\tif push {\n\t\tremoteUrl, err := util.FirstRemoteURL(tgtRepository)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"getting remote url %w\", err)\n\t\t}\n\n\t\tlogger.V(1).Info(\"pushing to remote url\", \"remoteUrl\", remoteUrl)\n\t\terr = pushToRemote(ctx, tgtRepository, creds)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"pushing to git: %w\", err)\n\t\t}\n\n\t\trepo.Status.LatestCommit.Hash = hash.String()\n\t\treturn nil\n\t}\n\n\trepo.Status.LatestCommit.Hash = hash.String()\n\treturn nil\n}\n\n// add files from another repository at specified path to target repository (gitea for now)\nfunc reconcileRemoteRepoContent(ctx context.Context, repo *v1alpha1.GitRepository, tgtRepo repoInfo, creds gitProviderCredentials, tmpDir string, repoMap *util.RepoMap) error {\n\tlogger := log.FromContext(ctx)\n\tsrcRepo := repo.Spec.Source.RemoteRepository\n\tcloneDir := util.RepoDir(srcRepo.Url, tmpDir)\n\n\tst := repoMap.LoadOrStore(srcRepo.Url, cloneDir)\n\tst.MU.Lock()\n\tdefer st.MU.Unlock()\n\n\tlogger.V(1).Info(\"cloning repo\", \"repoUrl\", srcRepo.Url, \"fallbackUrl\", \"\", \"cloneDir\", cloneDir)\n\tremoteWT, _, err := util.CloneRemoteRepoToDir(ctx, srcRepo, 1, false, cloneDir, \"\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"cloning repo, %s: %w\", srcRepo.Url, err)\n\t}\n\n\ttgtRepoSpec := v1alpha1.RemoteRepositorySpec{\n\t\tCloneSubmodules: false,\n\t\tPath:            \".\",\n\t\tUrl:             tgtRepo.cloneUrl,\n\t\tRef:             \"\",\n\t}\n\n\ttgtCloneDir := util.RepoDir(tgtRepo.cloneUrl, tmpDir)\n\tlst := repoMap.LoadOrStore(tgtRepoSpec.Url, tgtCloneDir)\n\n\tlst.MU.Lock()\n\tdefer lst.MU.Unlock()\n\n\tlogger.V(1).Info(\"cloning repo\", \"repoUrl\", tgtRepoSpec.Url, \"fallbackUrl\", getFallbackRepositoryURL(repo, tgtRepo), \"cloneDir\", tgtCloneDir)\n\ttgtRepoWT, tgtRepository, err := util.CloneRemoteRepoToDir(ctx, tgtRepoSpec, 1, true, tgtCloneDir, getFallbackRepositoryURL(repo, tgtRepo))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"cloning repo %s: %w\", srcRepo.Url, err)\n\t}\n\n\terr = util.CopyTreeToTree(remoteWT, tgtRepoWT, fmt.Sprintf(\"/%s\", repo.Spec.Source.Path), \".\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"copying contents, %s: %w\", tgtRepo.cloneUrl, err)\n\t}\n\n\thash, push, err := addAllAndCommit(repo.Spec.Source.Path, tgtRepository)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"add and commit %w\", err)\n\t}\n\n\tif push {\n\t\tremoteUrl, err := util.FirstRemoteURL(tgtRepository)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"getting remote url %w\", err)\n\t\t}\n\n\t\tlogger.V(1).Info(\"pushing to remote url\", \"remoteUrl\", remoteUrl)\n\t\terr = pushToRemote(ctx, tgtRepository, creds)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"pushing to git: %w\", err)\n\t\t}\n\n\t\trepo.Status.LatestCommit.Hash = hash.String()\n\t\treturn nil\n\t}\n\n\trepo.Status.LatestCommit.Hash = hash.String()\n\treturn nil\n}\n\nfunc configureGitClient() {\n\ttr := http.DefaultTransport.(*http.Transport).Clone()\n\n\ttr.DialContext = (&net.Dialer{\n\t\tTimeout:   gitTCPTimeout,\n\t\tKeepAlive: 30 * time.Second, // from http.DefaultTransport\n\t}).DialContext\n\n\tcustomClient := &http.Client{\n\t\tTransport: tr,\n\t\tTimeout:   gitHTTPTimeout,\n\t}\n\tgitclient.InstallProtocol(\"https\", githttp.NewClient(customClient))\n\tgitclient.InstallProtocol(\"http\", githttp.NewClient(customClient))\n}\n"
  },
  {
    "path": "pkg/controllers/gitrepository/controller_test.go",
    "content": "package gitrepository\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n\n\t\"code.gitea.io/sdk/gitea\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/go-git/go-git/v5\"\n\t\"github.com/go-git/go-git/v5/plumbing\"\n\t\"github.com/go-git/go-git/v5/plumbing/filemode\"\n\t\"github.com/go-git/go-git/v5/plumbing/object\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tv1 \"k8s.io/api/core/v1\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nconst addFileContent = \"added\\n\"\n\ntype mockGitea struct {\n\tGiteaClient\n\tgetRepo    func() (*gitea.Repository, *gitea.Response, error)\n\tcreateRepo func() (*gitea.Repository, *gitea.Response, error)\n}\n\nfunc (g mockGitea) SetBasicAuth(user, pass string) {}\n\nfunc (g mockGitea) SetContext(ctx context.Context) {}\n\nfunc (g mockGitea) CreateOrgRepo(org string, opt gitea.CreateRepoOption) (*gitea.Repository, *gitea.Response, error) {\n\tif g.createRepo != nil {\n\t\treturn g.createRepo()\n\t}\n\treturn &gitea.Repository{}, &gitea.Response{}, nil\n}\n\nfunc (g mockGitea) GetRepo(owner, reponame string) (*gitea.Repository, *gitea.Response, error) {\n\tif g.getRepo != nil {\n\t\treturn g.getRepo()\n\t}\n\treturn &gitea.Repository{}, &gitea.Response{}, nil\n}\n\ntype expect struct {\n\tresource v1alpha1.GitRepositoryStatus\n\terr      error\n}\n\ntype testCase struct {\n\tgiteaClient GiteaClient\n\tinput       v1alpha1.GitRepository\n\texpect      expect\n}\n\nfunc (t testCase) giteaProvider(ctx context.Context, repo *v1alpha1.GitRepository, kubeClient client.Client, scheme *runtime.Scheme, tmplConfig v1alpha1.BuildCustomizationSpec) (gitProvider, error) {\n\treturn &giteaProvider{\n\t\tClient:      kubeClient,\n\t\tScheme:      scheme,\n\t\tgiteaClient: t.giteaClient,\n\t\tconfig:      tmplConfig,\n\t}, nil\n}\n\ntype fakeClient struct {\n\tclient.Client\n\tpatchObj client.Object\n}\n\nfunc (f *fakeClient) Get(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error {\n\ts := obj.(*v1.Secret)\n\ts.Data = map[string][]byte{\n\t\tgiteaAdminUsernameKey:   []byte(\"abc\"),\n\t\tgiteaAdminPasswordKey:   []byte(\"abc\"),\n\t\tcorev1.TLSCertKey:       []byte(\"abc\"),\n\t\tcorev1.TLSPrivateKeyKey: []byte(\"abc\"),\n\t}\n\treturn nil\n}\n\nfunc (f *fakeClient) Status() client.StatusWriter {\n\treturn fakeStatusWriter{}\n}\n\nfunc (f *fakeClient) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error {\n\tf.patchObj = obj\n\treturn nil\n}\n\ntype fakeStatusWriter struct {\n\tclient.StatusWriter\n}\n\nfunc (f fakeStatusWriter) Update(ctx context.Context, obj client.Object, opts ...client.SubResourceUpdateOption) error {\n\treturn nil\n}\n\nfunc setUpLocalRepo() (string, string, error) {\n\trepoDir, err := os.MkdirTemp(\"\", fmt.Sprintf(\"test\"))\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"creating temporary directory: %w\", err)\n\t}\n\t// create a repo for pushing. MUST BE BARE\n\trepo, err := git.PlainInit(repoDir, true)\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"repo init: %w\", err)\n\t}\n\n\t// init it with a static file (in-memory), set default branch name, then get the hash\n\tdefaultBranchName := plumbing.ReferenceName(fmt.Sprintf(\"refs/heads/%s\", DefaultBranchName))\n\n\trepoConfig, _ := repo.Config()\n\trepoConfig.Init.DefaultBranch = DefaultBranchName\n\trepo.SetConfig(repoConfig)\n\n\th := plumbing.NewSymbolicReference(plumbing.HEAD, defaultBranchName)\n\trepo.Storer.SetReference(h)\n\n\tfileObject := plumbing.MemoryObject{}\n\tfileObject.SetType(plumbing.BlobObject)\n\tw, _ := fileObject.Writer()\n\n\tfile, err := os.ReadFile(\"test/resources/file1\")\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"reading file from resources dir: %w\", err)\n\t}\n\tw.Write(file)\n\tw.Close()\n\n\tfileHash, _ := repo.Storer.SetEncodedObject(&fileObject)\n\n\ttreeEntry := object.TreeEntry{\n\t\tName: \"file1\",\n\t\tMode: filemode.Regular,\n\t\tHash: fileHash,\n\t}\n\n\ttree := object.Tree{\n\t\tEntries: []object.TreeEntry{treeEntry},\n\t}\n\n\ttreeObject := plumbing.MemoryObject{}\n\ttree.Encode(&treeObject)\n\n\tinitHash, _ := repo.Storer.SetEncodedObject(&treeObject)\n\n\tcommit := object.Commit{\n\t\tAuthor: object.Signature{\n\t\t\tName:  gitCommitAuthorName,\n\t\t\tEmail: gitCommitAuthorEmail,\n\t\t\tWhen:  time.Now(),\n\t\t},\n\t\tMessage:  \"init\",\n\t\tTreeHash: initHash,\n\t}\n\n\tcommitObject := plumbing.MemoryObject{}\n\tcommit.Encode(&commitObject)\n\n\tcommitHash, _ := repo.Storer.SetEncodedObject(&commitObject)\n\n\trepo.Storer.SetReference(plumbing.NewHashReference(defaultBranchName, commitHash))\n\n\treturn repoDir, commitHash.String(), nil\n}\n\nfunc setupDir() (string, error) {\n\ttempDir, err := os.MkdirTemp(\"\", fmt.Sprintf(\"test\"))\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"creating temporary directory: %w\", err)\n\t}\n\n\tfile, err := os.ReadFile(\"test/resources/file1\")\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"reading file from resources dir: %w\", err)\n\t}\n\terr = os.WriteFile(filepath.Join(tempDir, \"file1\"), file, 0644)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"writing file to temp dir: %w\", err)\n\t}\n\n\terr = os.WriteFile(filepath.Join(tempDir, \"add\"), []byte(addFileContent), 0644)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"writing file: %w\", err)\n\t}\n\n\treturn tempDir, nil\n}\n\nfunc TestGitRepositoryContentReconcile(t *testing.T) {\n\tctx := context.Background()\n\tlocalRepoDir, _, err := setUpLocalRepo()\n\tdefer os.RemoveAll(localRepoDir)\n\tif err != nil {\n\t\tt.Fatalf(\"failed setting up local git repo: %v\", err)\n\t}\n\n\tsrcDir, err := setupDir()\n\tdefer os.RemoveAll(srcDir)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to set up dirs: %v\", err)\n\t}\n\n\ttestCloneDir, _ := os.MkdirTemp(\"\", \"gitrepo-test\")\n\tdefer os.RemoveAll(testCloneDir)\n\n\tm := metav1.ObjectMeta{\n\t\tName:      \"test\",\n\t\tNamespace: \"test\",\n\t}\n\tresource := v1alpha1.GitRepository{\n\t\tObjectMeta: m,\n\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\tPath: srcDir,\n\t\t\t\tType: \"local\",\n\t\t\t},\n\t\t},\n\t}\n\n\tt.Run(\"files modified\", func(t *testing.T) {\n\t\tp := giteaProvider{\n\t\t\tClient:      &fakeClient{},\n\t\t\tgiteaClient: mockGitea{},\n\t\t}\n\t\t// add file to source directory, reconcile, clone the repo and check if the added file exists\n\t\terr = p.updateRepoContent(ctx, &resource, repoInfo{cloneUrl: localRepoDir}, gitProviderCredentials{}, testCloneDir, util.NewRepoLock())\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed adding %v\", err)\n\t\t}\n\n\t\trepo, _ := git.PlainClone(testCloneDir, false, &git.CloneOptions{\n\t\t\tURL: localRepoDir,\n\t\t})\n\t\tc, err := os.ReadFile(filepath.Join(testCloneDir, \"add\"))\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed to read file at %s. %v\", filepath.Join(testCloneDir, \"add\"), err)\n\t\t}\n\t\tif string(c) != addFileContent {\n\t\t\tt.Fatalf(\"expected %s, got %s\", addFileContent, c)\n\t\t}\n\n\t\t// remove added file, reconcile, pull, check if the file is removed\n\t\terr = os.Remove(filepath.Join(srcDir, \"add\"))\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed to remove added file %v\", err)\n\t\t}\n\t\terr = p.updateRepoContent(ctx, &resource, repoInfo{cloneUrl: localRepoDir}, gitProviderCredentials{}, testCloneDir, util.NewRepoLock())\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed removing %v\", err)\n\t\t}\n\n\t\tw, _ := repo.Worktree()\n\t\terr = w.Pull(&git.PullOptions{})\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed pulling changes %v\", err)\n\t\t}\n\n\t\t_, err = os.Stat(filepath.Join(testCloneDir, \"add\"))\n\t\tif err == nil {\n\t\t\tt.Fatalf(\"file should not exist\")\n\t\t}\n\t\tif !errors.Is(err, os.ErrNotExist) {\n\t\t\tt.Fatalf(\"received unexpected error %v\", err)\n\t\t}\n\t})\n}\n\nfunc TestGitRepositoryContentReconcileEmbedded(t *testing.T) {\n\tctx := context.Background()\n\tlocalRepoDir, _, err := setUpLocalRepo()\n\tdefer os.RemoveAll(localRepoDir)\n\tif err != nil {\n\t\tt.Fatalf(\"failed setting up local git repo: %v\", err)\n\t}\n\n\ttmpDir, _ := os.MkdirTemp(\"\", \"add\")\n\tdefer os.RemoveAll(tmpDir)\n\n\tm := metav1.ObjectMeta{\n\t\tName:      \"test\",\n\t\tNamespace: \"test\",\n\t}\n\tresource := v1alpha1.GitRepository{\n\t\tObjectMeta: m,\n\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\tEmbeddedAppName: \"nginx\",\n\t\t\t\tType:            \"embedded\",\n\t\t\t},\n\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\tInternalGitURL: \"http://cnoe.io\",\n\t\t\t},\n\t\t},\n\t}\n\n\tt.Run(\"should update content\", func(t *testing.T) {\n\t\tp := giteaProvider{\n\t\t\tClient:      &fakeClient{},\n\t\t\tgiteaClient: mockGitea{},\n\t\t}\n\t\terr = p.updateRepoContent(ctx, &resource, repoInfo{cloneUrl: localRepoDir}, gitProviderCredentials{}, tmpDir, util.NewRepoLock())\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed adding %v\", err)\n\t\t}\n\t})\n}\n\nfunc TestGitRepositoryReconcile(t *testing.T) {\n\tlocalReoDir, hash, err := setUpLocalRepo()\n\tdefer os.RemoveAll(localReoDir)\n\tif err != nil {\n\t\tt.Fatalf(\"failed setting up local git repo: %v\", err)\n\t}\n\tresourcePath, err := filepath.Abs(\"./test/resources\")\n\tif err != nil {\n\t\tt.Fatalf(\"failed to get absolute path: %v\", err)\n\t}\n\tupdateDir, _, _ := setUpLocalRepo()\n\tdefer os.RemoveAll(updateDir)\n\n\taddDir, err := setupDir()\n\tfmt.Println(addDir)\n\tdefer os.RemoveAll(addDir)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to set up dirs: %v\", err)\n\t}\n\n\ttmpDir, _ := os.MkdirTemp(\"\", \"gitrepo-test\")\n\tdefer os.RemoveAll(tmpDir)\n\n\tm := metav1.ObjectMeta{\n\t\tName:      \"test\",\n\t\tNamespace: \"test\",\n\t}\n\n\tcases := map[string]testCase{\n\t\t\"no op\": {\n\t\t\tgiteaClient: mockGitea{\n\t\t\t\tgetRepo: func() (*gitea.Repository, *gitea.Response, error) {\n\t\t\t\t\treturn &gitea.Repository{CloneURL: localReoDir}, nil, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tinput: v1alpha1.GitRepository{\n\t\t\t\tObjectMeta: m,\n\t\t\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\t\t\tPath: resourcePath,\n\t\t\t\t\t\tType: \"local\",\n\t\t\t\t\t},\n\t\t\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\t\t\tName:           v1alpha1.GitProviderGitea,\n\t\t\t\t\t\tInternalGitURL: \"http://cnoe.io\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpect: expect{\n\t\t\t\tresource: v1alpha1.GitRepositoryStatus{\n\t\t\t\t\tExternalGitRepositoryUrl: localReoDir,\n\t\t\t\t\tLatestCommit:             v1alpha1.Commit{Hash: hash},\n\t\t\t\t\tSynced:                   true,\n\t\t\t\t\tInternalGitRepositoryUrl: \"http://cnoe.io/giteaAdmin/test-test.git\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"update\": {\n\t\t\tgiteaClient: mockGitea{\n\t\t\t\tgetRepo: func() (*gitea.Repository, *gitea.Response, error) {\n\t\t\t\t\treturn &gitea.Repository{CloneURL: updateDir}, nil, nil\n\t\t\t\t},\n\t\t\t},\n\t\t\tinput: v1alpha1.GitRepository{\n\t\t\t\tObjectMeta: m,\n\t\t\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\t\t\tPath: addDir,\n\t\t\t\t\t\tType: \"local\",\n\t\t\t\t\t},\n\t\t\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\t\t\tName:           v1alpha1.GitProviderGitea,\n\t\t\t\t\t\tInternalGitURL: \"http://cnoe.io\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpect: expect{\n\t\t\t\tresource: v1alpha1.GitRepositoryStatus{\n\t\t\t\t\tExternalGitRepositoryUrl: updateDir,\n\t\t\t\t\tSynced:                   true,\n\t\t\t\t\tInternalGitRepositoryUrl: \"http://cnoe.io/giteaAdmin/test-test.git\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tctx := context.Background()\n\n\tt.Run(\"repo updates\", func(t *testing.T) {\n\t\tfor k := range cases {\n\t\t\tv := cases[k]\n\t\t\tr := RepositoryReconciler{\n\t\t\t\tClient:          &fakeClient{},\n\t\t\t\tGitProviderFunc: v.giteaProvider,\n\t\t\t\tTempDir:         tmpDir,\n\t\t\t\tRepoMap:         util.NewRepoLock(),\n\t\t\t}\n\t\t\t_, err := r.reconcileGitRepo(ctx, &v.input)\n\t\t\tif v.expect.err == nil && err != nil {\n\t\t\t\tt.Fatalf(\"failed %s: %v\", k, err)\n\t\t\t}\n\n\t\t\tif v.expect.resource.LatestCommit.Hash == \"\" {\n\t\t\t\tv.expect.resource.LatestCommit.Hash = v.input.Status.LatestCommit.Hash\n\t\t\t}\n\t\t\tassert.Equal(t, v.input.Status, v.expect.resource)\n\t\t}\n\t})\n}\n\nfunc TestGitRepositoryPostReconcile(t *testing.T) {\n\tc := fakeClient{}\n\ttmpDir, _ := os.MkdirTemp(\"\", \"repo-updates-test\")\n\tdefer os.RemoveAll(tmpDir)\n\treconciler := RepositoryReconciler{\n\t\tClient:  &c,\n\t\tTempDir: tmpDir,\n\t\tRepoMap: util.NewRepoLock(),\n\t}\n\ttestTime := time.Now().Format(time.RFC3339Nano)\n\trepo := v1alpha1.GitRepository{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      \"test\",\n\t\t\tNamespace: \"test\",\n\t\t\tAnnotations: map[string]string{\n\t\t\t\tv1alpha1.CliStartTimeAnnotation: testTime,\n\t\t\t},\n\t\t},\n\t}\n\n\treconciler.postProcessReconcile(context.Background(), ctrl.Request{}, &repo)\n\tannotations := c.patchObj.GetAnnotations()\n\tv, ok := annotations[v1alpha1.LastObservedCLIStartTimeAnnotation]\n\tif !ok {\n\t\tt.Fatalf(\"expected annotation not found: %s\", v1alpha1.LastObservedCLIStartTimeAnnotation)\n\t}\n\tif v != testTime {\n\t\tt.Fatalf(\"annotation values does not match\")\n\t}\n\n\trepo.Annotations[v1alpha1.LastObservedCLIStartTimeAnnotation] = \"abc\"\n\treconciler.postProcessReconcile(context.Background(), ctrl.Request{}, &repo)\n\tv = annotations[v1alpha1.LastObservedCLIStartTimeAnnotation]\n\tif v != testTime {\n\t\tt.Fatalf(\"annotation values does not match\")\n\t}\n}\n"
  },
  {
    "path": "pkg/controllers/gitrepository/git_repository.go",
    "content": "package gitrepository\n\nimport (\n\t\"context\"\n\n\t\"code.gitea.io/sdk/gitea\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"github.com/google/go-github/v61/github\"\n)\n\ntype GiteaClient interface {\n\tCreateAccessToken(option gitea.CreateAccessTokenOption) (*gitea.AccessToken, *gitea.Response, error)\n\tCreateOrg(opt gitea.CreateOrgOption) (*gitea.Organization, *gitea.Response, error)\n\tCreateRepo(opt gitea.CreateRepoOption) (*gitea.Repository, *gitea.Response, error)\n\tDeleteOrg(orgname string) (*gitea.Response, error)\n\tDeleteRepo(owner, repo string) (*gitea.Response, error)\n\tGetOrg(orgname string) (*gitea.Organization, *gitea.Response, error)\n\tGetRepo(owner, reponame string) (*gitea.Repository, *gitea.Response, error)\n\tSetBasicAuth(username, password string)\n\tSetContext(ctx context.Context)\n}\n\ntype gitHubClient interface {\n\tgetRepo(ctx context.Context, owner, repo string) (*github.Repository, *github.Response, error)\n\tcreateRepo(ctx context.Context, owner string, req *github.Repository) (*github.Repository, *github.Response, error)\n\tsetToken(token string) error\n}\n\ntype repoInfo struct {\n\tname                     string\n\tcloneUrl                 string\n\tinternalGitRepositoryUrl string\n\tfullName                 string\n}\n\ntype gitProviderCredentials struct {\n\tusername    string\n\tpassword    string\n\taccessToken string\n}\n\ntype gitProvider interface {\n\tcreateRepository(ctx context.Context, repo *v1alpha1.GitRepository) (repoInfo, error)\n\tgetProviderCredentials(ctx context.Context, repo *v1alpha1.GitRepository) (gitProviderCredentials, error)\n\tgetRepository(ctx context.Context, repo *v1alpha1.GitRepository) (repoInfo, error)\n\tsetProviderCredentials(ctx context.Context, repo *v1alpha1.GitRepository, creds gitProviderCredentials) error\n\tupdateRepoContent(ctx context.Context, repo *v1alpha1.GitRepository, repoInfo repoInfo, creds gitProviderCredentials, tmpDir string, repoMap *util.RepoMap) error\n}\n"
  },
  {
    "path": "pkg/controllers/gitrepository/gitea.go",
    "content": "package gitrepository\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util/files\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"code.gitea.io/sdk/gitea\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/controllers/localbuild\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\tgithttp \"github.com/go-git/go-git/v5/plumbing/transport/http\"\n\tv1 \"k8s.io/api/core/v1\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/apimachinery/pkg/types\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nconst (\n\tgiteaAdminUsernameKey = \"username\"\n\tgiteaAdminPasswordKey = \"password\"\n)\n\ntype GiteaClientFunc func(url string, options ...gitea.ClientOption) (GiteaClient, error)\n\ntype giteaProvider struct {\n\tclient.Client\n\tScheme      *runtime.Scheme\n\tgiteaClient GiteaClient\n\tconfig      v1alpha1.BuildCustomizationSpec\n}\n\nfunc (g *giteaProvider) createRepository(ctx context.Context, repo *v1alpha1.GitRepository) (repoInfo, error) {\n\tresp, _, err := g.giteaClient.CreateRepo(gitea.CreateRepoOption{\n\t\tName:        getRepositoryName(*repo),\n\t\tDescription: fmt.Sprintf(\"created by Git Repository controller for %s in %s namespace\", repo.Name, repo.Namespace),\n\t\t// we should reconsider this when targeting non-local clusters.\n\t\tPrivate:       false,\n\t\tDefaultBranch: DefaultBranchName,\n\t\tAutoInit:      true,\n\t})\n\n\tif err != nil {\n\t\treturn repoInfo{}, fmt.Errorf(\"failed to create git repository: %w\", err)\n\t}\n\treturn repoInfo{\n\t\tname:     resp.Name,\n\t\tfullName: resp.FullName,\n\t\tcloneUrl: resp.CloneURL,\n\t}, nil\n}\n\nfunc (g *giteaProvider) getProviderCredentials(ctx context.Context, repo *v1alpha1.GitRepository) (gitProviderCredentials, error) {\n\tvar secret v1.Secret\n\terr := g.Client.Get(ctx, types.NamespacedName{\n\t\tNamespace: repo.Spec.SecretRef.Namespace,\n\t\tName:      repo.Spec.SecretRef.Name,\n\t}, &secret)\n\tif err != nil {\n\t\treturn gitProviderCredentials{}, err\n\t}\n\n\tusername, ok := secret.Data[giteaAdminUsernameKey]\n\tif !ok {\n\t\treturn gitProviderCredentials{}, fmt.Errorf(\"%s key not found in secret %s in %s ns\", giteaAdminUsernameKey, repo.Spec.SecretRef.Name, repo.Spec.SecretRef.Namespace)\n\t}\n\tpassword, ok := secret.Data[giteaAdminPasswordKey]\n\tif !ok {\n\t\treturn gitProviderCredentials{}, fmt.Errorf(\"%s key not found in secret %s in %s ns\", giteaAdminPasswordKey, repo.Spec.SecretRef.Name, repo.Spec.SecretRef.Namespace)\n\t}\n\n\treturn gitProviderCredentials{\n\t\tusername: string(username),\n\t\tpassword: string(password),\n\t}, nil\n}\n\nfunc (g *giteaProvider) setProviderCredentials(ctx context.Context, repo *v1alpha1.GitRepository, creds gitProviderCredentials) error {\n\tg.giteaClient.SetBasicAuth(creds.username, creds.password)\n\tg.giteaClient.SetContext(ctx)\n\treturn nil\n}\n\nfunc (g *giteaProvider) getRepository(ctx context.Context, repo *v1alpha1.GitRepository) (repoInfo, error) {\n\tresp, repoResp, err := g.giteaClient.GetRepo(getOrganizationName(*repo), getRepositoryName(*repo))\n\tif err != nil {\n\t\tif repoResp != nil && repoResp.StatusCode == 404 {\n\t\t\treturn repoInfo{}, notFoundError{}\n\t\t}\n\t\treturn repoInfo{}, err\n\t}\n\n\treturn repoInfo{\n\t\tname:                     resp.Name,\n\t\tfullName:                 resp.FullName,\n\t\tcloneUrl:                 resp.CloneURL,\n\t\tinternalGitRepositoryUrl: getInternalGiteaRepositoryURL(repo.Namespace, repo.Name, repo.Spec.Provider.InternalGitURL),\n\t}, nil\n}\n\nfunc (g *giteaProvider) updateRepoContent(\n\tctx context.Context,\n\trepo *v1alpha1.GitRepository,\n\trepoInfo repoInfo,\n\tcreds gitProviderCredentials,\n\ttmpDir string,\n\trepoMap *util.RepoMap,\n) error {\n\tswitch repo.Spec.Source.Type {\n\tcase v1alpha1.SourceTypeLocal, v1alpha1.SourceTypeEmbedded:\n\t\treturn reconcileLocalRepoContent(ctx, repo, repoInfo, creds, g.Scheme, g.config, tmpDir, repoMap)\n\tcase v1alpha1.SourceTypeRemote:\n\t\treturn reconcileRemoteRepoContent(ctx, repo, repoInfo, creds, tmpDir, repoMap)\n\tdefault:\n\t\treturn nil\n\t}\n}\n\nfunc writeRepoContents(repo *v1alpha1.GitRepository, dstPath string, config v1alpha1.BuildCustomizationSpec, scheme *runtime.Scheme) error {\n\tif repo.Spec.Source.EmbeddedAppName != \"\" {\n\t\tresources, err := localbuild.GetEmbeddedRawInstallResources(\n\t\t\trepo.Spec.Source.EmbeddedAppName, config,\n\t\t\tv1alpha1.PackageCustomization{Name: repo.Spec.Customization.Name, FilePath: repo.Spec.Customization.FilePath}, scheme)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"getting embedded resource; %w\", err)\n\t\t}\n\n\t\tfor i := range resources {\n\t\t\tfilePath := filepath.Join(dstPath, fmt.Sprintf(\"resource%d.yaml\", i))\n\t\t\terr = os.WriteFile(filePath, resources[i], 0644)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"writing embedded resource; %w\", err)\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\terr := files.CopyDirectory(repo.Spec.Source.Path, dstPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"copying files: %w\", err)\n\t}\n\treturn nil\n}\n\nfunc getBasicAuth(creds gitProviderCredentials) (githttp.BasicAuth, error) {\n\tb := githttp.BasicAuth{\n\t\tUsername: creds.username,\n\t\tPassword: creds.password,\n\t}\n\tif creds.password == \"\" {\n\t\tb.Password = creds.accessToken\n\t}\n\treturn b, nil\n}\n\nfunc NewGiteaClient(url string, options ...gitea.ClientOption) (GiteaClient, error) {\n\treturn gitea.NewClient(url, options...)\n}\n\nfunc getInternalGiteaRepositoryURL(namespace, name, baseUrl string) string {\n\treturn fmt.Sprintf(\"%s/%s/%s-%s.git\", baseUrl, v1alpha1.GiteaAdminUserName, namespace, name)\n}\n"
  },
  {
    "path": "pkg/controllers/gitrepository/github.go",
    "content": "package gitrepository\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"github.com/google/go-github/v61/github\"\n\tv1 \"k8s.io/api/core/v1\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/apimachinery/pkg/types\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nconst (\n\tgitHubTokenKey = \"token\"\n)\n\ntype ghClient struct {\n\tc *github.Client\n}\n\nfunc (g *ghClient) getRepo(ctx context.Context, owner, repo string) (*github.Repository, *github.Response, error) {\n\treturn g.c.Repositories.Get(ctx, owner, repo)\n}\n\nfunc (g *ghClient) createRepo(ctx context.Context, owner string, req *github.Repository) (*github.Repository, *github.Response, error) {\n\treturn g.c.Repositories.Create(ctx, owner, req)\n}\n\nfunc (g *ghClient) setToken(token string) error {\n\tg.c = g.c.WithAuthToken(token)\n\treturn nil\n}\n\ntype gitHubProvider struct {\n\tclient.Client\n\tScheme       *runtime.Scheme\n\tgitHubClient gitHubClient\n\tconfig       v1alpha1.BuildCustomizationSpec\n}\n\nfunc (g *gitHubProvider) createRepository(ctx context.Context, repo *v1alpha1.GitRepository) (repoInfo, error) {\n\treq := github.Repository{\n\t\tName:    github.String(getRepositoryName(*repo)),\n\t\tPrivate: github.Bool(true),\n\t}\n\tr, _, err := g.gitHubClient.createRepo(ctx, getOrganizationName(*repo), &req)\n\tif err != nil {\n\t\treturn repoInfo{}, fmt.Errorf(\"creating repo: %w\", err)\n\t}\n\n\treturn repoInfo{\n\t\tname:                     *r.Name,\n\t\tcloneUrl:                 *r.CloneURL,\n\t\tinternalGitRepositoryUrl: \"\",\n\t\tfullName:                 *r.FullName,\n\t}, nil\n}\n\nfunc (g *gitHubProvider) getRepository(ctx context.Context, repo *v1alpha1.GitRepository) (repoInfo, error) {\n\tr, resp, err := g.gitHubClient.getRepo(ctx, getOrganizationName(*repo), getRepositoryName(*repo))\n\tif err != nil {\n\t\tif resp != nil && resp.StatusCode == http.StatusNotFound {\n\t\t\treturn repoInfo{}, notFoundError{}\n\t\t} else {\n\t\t\treturn repoInfo{}, fmt.Errorf(\"getting repo: %w\", err)\n\t\t}\n\t}\n\n\treturn repoInfo{\n\t\tname:                     *r.Name,\n\t\tcloneUrl:                 *r.CloneURL,\n\t\tinternalGitRepositoryUrl: \"\",\n\t\tfullName:                 *r.FullName,\n\t}, nil\n}\n\nfunc (g *gitHubProvider) getProviderCredentials(ctx context.Context, repo *v1alpha1.GitRepository) (gitProviderCredentials, error) {\n\tvar secret v1.Secret\n\terr := g.Client.Get(ctx, types.NamespacedName{\n\t\tNamespace: repo.Spec.SecretRef.Namespace,\n\t\tName:      repo.Spec.SecretRef.Name,\n\t}, &secret)\n\tif err != nil {\n\t\treturn gitProviderCredentials{}, err\n\t}\n\n\ttoken, ok := secret.Data[gitHubTokenKey]\n\tif !ok {\n\t\treturn gitProviderCredentials{}, fmt.Errorf(\"%s key not found in secret %s in %s ns\", giteaAdminUsernameKey, repo.Spec.SecretRef.Name, repo.Spec.SecretRef.Namespace)\n\t}\n\n\treturn gitProviderCredentials{\n\t\taccessToken: string(token),\n\t}, nil\n}\n\nfunc (g *gitHubProvider) setProviderCredentials(ctx context.Context, repo *v1alpha1.GitRepository, creds gitProviderCredentials) error {\n\treturn g.gitHubClient.setToken(creds.accessToken)\n}\n\nfunc (g *gitHubProvider) updateRepoContent(\n\tctx context.Context,\n\trepo *v1alpha1.GitRepository,\n\trepoInfo repoInfo,\n\tcreds gitProviderCredentials,\n\ttmpDir string,\n\trepoMap *util.RepoMap,\n) error {\n\treturn reconcileLocalRepoContent(ctx, repo, repoInfo, creds, g.Scheme, g.config, tmpDir, repoMap)\n}\n\nfunc newGitHubClient(httpClient *http.Client) gitHubClient {\n\treturn &ghClient{\n\t\tc: github.NewClient(httpClient),\n\t}\n}\n"
  },
  {
    "path": "pkg/controllers/gitrepository/github_test.go",
    "content": "package gitrepository\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/google/go-github/v61/github\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/mock\"\n\tv1 \"k8s.io/api/core/v1\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/types\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\ntype fakeGH struct {\n\tmock.Mock\n}\n\nfunc (f *fakeGH) getRepo(ctx context.Context, owner, repo string) (*github.Repository, *github.Response, error) {\n\targs := f.Called(ctx, owner, repo)\n\treturn args.Get(0).(*github.Repository), args.Get(1).(*github.Response), args.Error(2)\n}\n\nfunc (f *fakeGH) createRepo(ctx context.Context, owner string, req *github.Repository) (*github.Repository, *github.Response, error) {\n\targs := f.Called(ctx, owner, req)\n\treturn args.Get(0).(*github.Repository), args.Get(1).(*github.Response), args.Error(2)\n}\n\nfunc (f *fakeGH) setToken(token string) error {\n\treturn nil\n}\n\nfunc newResponse(r http.Response) *github.Response {\n\tresponse := &github.Response{Response: &r}\n\treturn response\n}\n\ntype fakeKubeClient struct {\n\tmock.Mock\n\tclient.Client\n}\n\nfunc (f *fakeKubeClient) Get(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error {\n\targs := f.Called(ctx, key, obj, opts)\n\treturn args.Error(0)\n}\n\nfunc TestGitHubCreateRepository(t *testing.T) {\n\tfakeGH := new(fakeGH)\n\tctx := context.Background()\n\tgh := gitHubProvider{\n\t\tClient:       &fakeClient{},\n\t\tgitHubClient: fakeGH,\n\t}\n\trepoExpected := repoInfo{\n\t\tname:                     \"repo1\",\n\t\tcloneUrl:                 \"\",\n\t\tinternalGitRepositoryUrl: \"\",\n\t\tfullName:                 \"owner/test-test\",\n\t}\n\tresource := v1alpha1.GitRepository{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      \"test\",\n\t\t\tNamespace: \"test\",\n\t\t},\n\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\tPath: \"ac\",\n\t\t\t\tType: \"local\",\n\t\t\t},\n\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\tName:             \"github\",\n\t\t\t\tOrganizationName: \"owner\",\n\t\t\t},\n\t\t},\n\t}\n\n\texpectedInput := &github.Repository{\n\t\tName:    github.String(getRepositoryName(resource)),\n\t\tPrivate: github.Bool(true),\n\t}\n\n\tfakeGH.On(\"createRepo\", ctx, \"owner\", expectedInput).Return(\n\t\t&github.Repository{\n\t\t\tName:     &repoExpected.name,\n\t\t\tCloneURL: &repoExpected.cloneUrl,\n\t\t\tFullName: &repoExpected.fullName,\n\t\t},\n\t\tnewResponse(http.Response{StatusCode: http.StatusOK}),\n\t\tnil,\n\t)\n\n\tresp, err := gh.createRepository(ctx, &resource)\n\tassert.Nil(t, err)\n\tassert.Equal(t, repoExpected, resp)\n\tfakeGH.AssertExpectations(t)\n}\n\nfunc TestGitHubGetProviderCredentials(t *testing.T) {\n\tfakeK8sClient := new(fakeKubeClient)\n\tctx := context.Background()\n\tgh := gitHubProvider{\n\t\tClient: fakeK8sClient,\n\t}\n\n\tresource := v1alpha1.GitRepository{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      \"test\",\n\t\t\tNamespace: \"test\",\n\t\t},\n\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\tSecretRef: v1alpha1.SecretReference{\n\t\t\t\tName:      \"test\",\n\t\t\t\tNamespace: \"testNS\",\n\t\t\t},\n\t\t},\n\t}\n\tinputSecret := &v1.Secret{}\n\tfakeK8sClient.On(\"Get\", ctx, types.NamespacedName{\n\t\tNamespace: \"testNS\",\n\t\tName:      \"test\",\n\t}, inputSecret, []client.GetOption(nil)).Run(func(args mock.Arguments) {\n\t\tsec := args.Get(2).(*v1.Secret)\n\t\tsec.Data = make(map[string][]byte, 1)\n\t\tsec.Data[gitHubTokenKey] = []byte(\"token\")\n\t}).Return(nil)\n\n\tcreds, err := gh.getProviderCredentials(ctx, &resource)\n\tassert.Nil(t, err)\n\tassert.Equal(t, creds.accessToken, \"token\")\n\tfakeK8sClient.AssertExpectations(t)\n\n}\n\nfunc TestGitHubGetRepository(t *testing.T) {\n\tfakeGH := new(fakeGH)\n\tctx := context.Background()\n\tgh := gitHubProvider{\n\t\tClient:       &fakeClient{},\n\t\tgitHubClient: fakeGH,\n\t}\n\n\trepoExpected := repoInfo{\n\t\tname:                     \"repo1\",\n\t\tcloneUrl:                 \"\",\n\t\tinternalGitRepositoryUrl: \"\",\n\t\tfullName:                 \"owner/test-test\",\n\t}\n\n\tfakeGetRepo := fakeGH.On(\"getRepo\", ctx, \"owner\", \"test-test\").Return(\n\t\t&github.Repository{\n\t\t\tName:     &repoExpected.name,\n\t\t\tCloneURL: &repoExpected.cloneUrl,\n\t\t\tFullName: &repoExpected.fullName,\n\t\t},\n\t\tnewResponse(http.Response{StatusCode: http.StatusOK}),\n\t\tnil,\n\t)\n\n\tresource := v1alpha1.GitRepository{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      \"test\",\n\t\t\tNamespace: \"test\",\n\t\t},\n\t\tSpec: v1alpha1.GitRepositorySpec{\n\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\tPath: \"ac\",\n\t\t\t\tType: \"local\",\n\t\t\t},\n\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\tName:             \"github\",\n\t\t\t\tOrganizationName: \"owner\",\n\t\t\t},\n\t\t},\n\t}\n\n\tresp, err := gh.getRepository(ctx, &resource)\n\tassert.Nil(t, err)\n\tassert.Equal(t, repoExpected, resp)\n\tfakeGH.AssertExpectations(t)\n\n\tfakeGetRepo.Unset()\n\tfakeGH.On(\"getRepo\", ctx, \"owner\", \"test-test\").Return(\n\t\t&github.Repository{},\n\t\tnewResponse(http.Response{StatusCode: http.StatusNotFound}),\n\t\tfmt.Errorf(\"some error\"),\n\t)\n\n\tresp, err = gh.getRepository(ctx, &resource)\n\tassert.Equal(t, notFoundError{}, err)\n\tassert.Equal(t, repoInfo{}, resp)\n\tfakeGH.AssertExpectations(t)\n}\n"
  },
  {
    "path": "pkg/controllers/gitrepository/test/resources/file1",
    "content": "hello"
  },
  {
    "path": "pkg/controllers/localbuild/argo.go",
    "content": "package localbuild\n\nimport (\n\t\"context\"\n\t\"embed\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/globals\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/apimachinery/pkg/runtime/schema\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n)\n\n//go:embed resources/argo/*\nvar installArgoFS embed.FS\n\nfunc RawArgocdInstallResources(templateData any, config v1alpha1.PackageCustomization, scheme *runtime.Scheme) ([][]byte, error) {\n\treturn k8s.BuildCustomizedManifests(config.FilePath, \"resources/argo\", installArgoFS, scheme, templateData)\n}\n\nfunc (r *LocalbuildReconciler) ReconcileArgo(ctx context.Context, req ctrl.Request, resource *v1alpha1.Localbuild) (ctrl.Result, error) {\n\targocd := EmbeddedInstallation{\n\t\tname:         \"Argo CD\",\n\t\tresourcePath: \"resources/argo\",\n\t\tresourceFS:   installArgoFS,\n\t\tnamespace:    globals.ArgoCDNamespace,\n\t\tmonitoredResources: map[string]schema.GroupVersionKind{\n\t\t\t\"argocd-server\": {\n\t\t\t\tGroup:   \"apps\",\n\t\t\t\tVersion: \"v1\",\n\t\t\t\tKind:    \"Deployment\",\n\t\t\t},\n\t\t\t\"argocd-repo-server\": {\n\t\t\t\tGroup:   \"apps\",\n\t\t\t\tVersion: \"v1\",\n\t\t\t\tKind:    \"Deployment\",\n\t\t\t},\n\t\t\t\"argocd-application-controller\": {\n\t\t\t\tGroup:   \"apps\",\n\t\t\t\tVersion: \"v1\",\n\t\t\t\tKind:    \"StatefulSet\",\n\t\t\t},\n\t\t},\n\t\tskipReadinessCheck: true,\n\t}\n\n\tv, ok := resource.Spec.PackageConfigs.CorePackageCustomization[v1alpha1.ArgoCDPackageName]\n\tif ok {\n\t\targocd.customization = v\n\t}\n\n\tif result, err := argocd.Install(ctx, resource, r.Client, r.Scheme, r.Config); err != nil {\n\t\treturn result, err\n\t}\n\n\tresource.Status.ArgoCD.Available = true\n\treturn ctrl.Result{}, nil\n}\n"
  },
  {
    "path": "pkg/controllers/localbuild/argo_test.go",
    "content": "package localbuild\n\nimport (\n\t\"context\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util/fs\"\n\t\"testing\"\n\n\targov1alpha1 \"github.com/cnoe-io/argocd-api/api/argo/application/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/globals\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/mock\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured\"\n\t\"k8s.io/apimachinery/pkg/runtime/schema\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\ntype fakeKubeClient struct {\n\tmock.Mock\n\tclient.Client\n}\n\nfunc (f *fakeKubeClient) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error {\n\targs := f.Called(ctx, list, opts)\n\treturn args.Error(0)\n}\n\nfunc (f *fakeKubeClient) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error {\n\targs := f.Called(ctx, obj, patch, opts)\n\treturn args.Error(0)\n}\n\ntype testCase struct {\n\terr         error\n\tlistApps    []argov1alpha1.Application\n\tannotations []map[string]string\n}\n\nfunc TestGetRawInstallResources(t *testing.T) {\n\te := EmbeddedInstallation{\n\t\tresourceFS:   installArgoFS,\n\t\tresourcePath: \"resources/argo\",\n\t}\n\tresources, err := fs.ConvertFSToBytes(e.resourceFS, e.resourcePath,\n\t\tv1alpha1.BuildCustomizationSpec{\n\t\t\tProtocol:       \"\",\n\t\t\tHost:           \"\",\n\t\t\tPort:           \"\",\n\t\t\tUsePathRouting: false,\n\t\t},\n\t)\n\tif err != nil {\n\t\tt.Fatalf(\"GetRawInstallResources() error: %v\", err)\n\t}\n\tif len(resources) != 2 {\n\t\tt.Fatalf(\"GetRawInstallResources() resources len != 2, got %d\", len(resources))\n\t}\n\n\tresourcePrefix := \"# UCP ARGO INSTALL RESOURCES\\n\"\n\tcheckPrefix := resources[1][0:len(resourcePrefix)]\n\tif resourcePrefix != string(checkPrefix) {\n\t\tt.Fatalf(\"GetRawInstallResources() expected 1 resource with prefix %q, got %q\", resourcePrefix, checkPrefix)\n\t}\n}\n\nfunc TestGetK8sInstallResources(t *testing.T) {\n\te := EmbeddedInstallation{\n\t\tresourceFS:   installArgoFS,\n\t\tresourcePath: \"resources/argo\",\n\t}\n\tobjs, err := e.installResources(k8s.GetScheme(), v1alpha1.BuildCustomizationSpec{\n\t\tProtocol:       \"\",\n\t\tHost:           \"\",\n\t\tPort:           \"\",\n\t\tUsePathRouting: false,\n\t})\n\tif err != nil {\n\t\tt.Fatalf(\"GetK8sInstallResources() error: %v\", err)\n\t}\n\n\tif len(objs) != 60 {\n\t\tt.Fatalf(\"Expected 60 Argo Install Resources, got: %d\", len(objs))\n\t}\n}\n\nfunc TestArgoCDAppAnnotation(t *testing.T) {\n\tctx := context.Background()\n\n\tcases := []testCase{\n\t\t{\n\t\t\terr: nil,\n\t\t\tlistApps: []argov1alpha1.Application{\n\t\t\t\t{\n\t\t\t\t\tTypeMeta: metav1.TypeMeta{\n\t\t\t\t\t\tKind:       argov1alpha1.ApplicationSchemaGroupVersionKind.Kind,\n\t\t\t\t\t\tAPIVersion: argov1alpha1.ApplicationSchemaGroupVersionKind.GroupVersion().String(),\n\t\t\t\t\t},\n\t\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\t\tName:      \"nil-annotation\",\n\t\t\t\t\t\tNamespace: \"argocd\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tannotations: []map[string]string{\n\t\t\t\t{\n\t\t\t\t\targoCDApplicationAnnotationKeyRefresh: argoCDApplicationAnnotationValueRefreshNormal,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\terr: nil,\n\t\t\tlistApps: []argov1alpha1.Application{\n\t\t\t\t{\n\t\t\t\t\tTypeMeta: metav1.TypeMeta{\n\t\t\t\t\t\tKind:       argov1alpha1.ApplicationSchemaGroupVersionKind.Kind,\n\t\t\t\t\t\tAPIVersion: argov1alpha1.ApplicationSchemaGroupVersionKind.GroupVersion().String(),\n\t\t\t\t\t},\n\t\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\t\tName:      \"existing-annotation\",\n\t\t\t\t\t\tNamespace: \"argocd\",\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\t\"test\": \"value\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tannotations: []map[string]string{\n\t\t\t\t{\n\t\t\t\t\t\"test\":                                \"value\",\n\t\t\t\t\targoCDApplicationAnnotationKeyRefresh: argoCDApplicationAnnotationValueRefreshNormal,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\terr: nil,\n\t\t\tlistApps: []argov1alpha1.Application{\n\t\t\t\t{\n\t\t\t\t\tTypeMeta: metav1.TypeMeta{\n\t\t\t\t\t\tKind:       argov1alpha1.ApplicationSchemaGroupVersionKind.Kind,\n\t\t\t\t\t\tAPIVersion: argov1alpha1.ApplicationSchemaGroupVersionKind.GroupVersion().String(),\n\t\t\t\t\t},\n\t\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\t\tName:      \"owned-by-appset\",\n\t\t\t\t\t\tNamespace: \"argocd\",\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\t\"test\": \"value\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOwnerReferences: []metav1.OwnerReference{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKind: \"ApplicationSet\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tannotations: nil,\n\t\t},\n\t\t{\n\t\t\terr: nil,\n\t\t\tlistApps: []argov1alpha1.Application{\n\t\t\t\t{\n\t\t\t\t\tTypeMeta: metav1.TypeMeta{\n\t\t\t\t\t\tKind:       argov1alpha1.ApplicationSchemaGroupVersionKind.Kind,\n\t\t\t\t\t\tAPIVersion: argov1alpha1.ApplicationSchemaGroupVersionKind.GroupVersion().String(),\n\t\t\t\t\t},\n\t\t\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\t\t\tName:      \"owned-by-non-appset\",\n\t\t\t\t\t\tNamespace: \"argocd\",\n\t\t\t\t\t\tOwnerReferences: []metav1.OwnerReference{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKind: \"Something\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tannotations: []map[string]string{\n\t\t\t\t{\n\t\t\t\t\targoCDApplicationAnnotationKeyRefresh: argoCDApplicationAnnotationValueRefreshNormal,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i := range cases {\n\t\tc := cases[i]\n\t\tfClient := new(fakeKubeClient)\n\t\tfClient.On(\"List\", ctx, mock.Anything, []client.ListOption{client.InNamespace(globals.ArgoCDNamespace)}).\n\t\t\tRun(func(args mock.Arguments) {\n\t\t\t\tapps := args.Get(1).(*argov1alpha1.ApplicationList)\n\t\t\t\tapps.Items = c.listApps\n\t\t\t}).Return(c.err)\n\t\tfor j := range c.annotations {\n\t\t\tapp := c.listApps[j]\n\t\t\tu := makeUnstructured(app.Name, app.Namespace, app.GroupVersionKind(), c.annotations[j])\n\t\t\tfClient.On(\"Patch\", ctx, u, client.Apply, []client.PatchOption{client.FieldOwner(v1alpha1.FieldManager)}).Return(nil)\n\t\t}\n\t\trec := LocalbuildReconciler{\n\t\t\tClient: fClient,\n\t\t}\n\t\terr := rec.requestArgoCDAppRefresh(ctx)\n\t\tfClient.AssertExpectations(t)\n\t\tassert.NoError(t, err)\n\t}\n}\n\nfunc makeUnstructured(name, namespace string, gvk schema.GroupVersionKind, annotations map[string]string) *unstructured.Unstructured {\n\tu := &unstructured.Unstructured{}\n\tu.SetAnnotations(annotations)\n\tu.SetName(name)\n\tu.SetNamespace(namespace)\n\tu.SetGroupVersionKind(gvk)\n\treturn u\n}\n"
  },
  {
    "path": "pkg/controllers/localbuild/controller.go",
    "content": "package localbuild\n\nimport (\n\t\"bytes\"\n\t\"code.gitea.io/sdk/gitea\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"k8s.io/apimachinery/pkg/types\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\targocdapp \"github.com/cnoe-io/argocd-api/api/argo/application\"\n\targov1alpha1 \"github.com/cnoe-io/argocd-api/api/argo/application/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/globals\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/resources/localbuild\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tk8serrors \"k8s.io/apimachinery/pkg/api/errors\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured\"\n\t\"k8s.io/apimachinery/pkg/labels\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/apimachinery/pkg/runtime/schema\"\n\t\"k8s.io/apimachinery/pkg/selection\"\n\t\"k8s.io/client-go/kubernetes/scheme\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil\"\n\t\"sigs.k8s.io/controller-runtime/pkg/log\"\n)\n\nconst (\n\tdefaultArgoCDProjectName string = \"default\"\n\tdefaultRequeueTime              = time.Second * 15\n\terrRequeueTime                  = time.Second * 5\n\n\targoCDApplicationAnnotationKeyRefresh         = \"argocd.argoproj.io/refresh\"\n\targoCDApplicationAnnotationValueRefreshNormal = \"normal\"\n\targoCDApplicationSetAnnotationKeyRefresh      = \"argocd.argoproj.io/application-set-refresh\"\n\targoCDApplicationSetAnnotationKeyRefreshTrue  = \"true\"\n)\n\ntype ArgocdSession struct {\n\tToken string `json:\"token\"`\n}\n\ntype LocalbuildReconciler struct {\n\tclient.Client\n\tScheme         *runtime.Scheme\n\tCancelFunc     context.CancelFunc\n\tExitOnSync     bool\n\tshouldShutdown bool\n\tConfig         v1alpha1.BuildCustomizationSpec\n\tTempDir        string\n\tRepoMap        *util.RepoMap\n}\n\ntype subReconciler func(ctx context.Context, req ctrl.Request, resource *v1alpha1.Localbuild) (ctrl.Result, error)\n\nfunc (r *LocalbuildReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\tlogger.V(1).Info(\"Reconciling\", \"resource\", req.NamespacedName)\n\n\tvar localBuild v1alpha1.Localbuild\n\tif err := r.Get(ctx, req.NamespacedName, &localBuild); err != nil {\n\t\tlogger.Error(err, \"unable to fetch Resource\")\n\t\t// we'll ignore not-found errors, since they can't be fixed by an immediate\n\t\t// requeue (we'll need to wait for a new notification), and we can get them\n\t\t// on deleted requests.\n\t\treturn ctrl.Result{}, client.IgnoreNotFound(err)\n\t}\n\t// Make sure we post process\n\tdefer r.postProcessReconcile(ctx, req, &localBuild)\n\n\t_, err := r.ReconcileProjectNamespace(ctx, req, &localBuild)\n\tif err != nil {\n\t\treturn ctrl.Result{}, err\n\t}\n\n\tinstCtx, cancel := context.WithCancel(ctx)\n\tdefer cancel()\n\terrChan := make(chan error, 3)\n\n\tgo r.installCorePackages(instCtx, req, &localBuild, errChan)\n\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn ctrl.Result{}, nil\n\tcase instErr := <-errChan:\n\t\tif instErr != nil {\n\t\t\t// likely due to ingress-nginx admission hook not ready. debug log and try again.\n\t\t\tlogger.V(1).Info(\"failed installing core package. likely not fatal. will try again\", \"error\", instErr)\n\t\t\treturn ctrl.Result{RequeueAfter: errRequeueTime}, nil\n\t\t}\n\t}\n\n\tif r.Config.StaticPassword {\n\t\tlogger.V(1).Info(\"static password is enabled\")\n\n\t\t// Check if the Argocd Initial admin secret exists\n\t\targocdInitialAdminPassword, err := r.extractArgocdInitialAdminSecret(ctx)\n\t\tif err != nil {\n\t\t\t// Argocd initial admin secret is not yet available ...\n\t\t\treturn ctrl.Result{RequeueAfter: defaultRequeueTime}, nil\n\t\t}\n\n\t\tlogger.V(1).Info(\"Initial argocd admin secret found ...\")\n\n\t\t// Secret containing the initial argocd password exists\n\t\t// Lets try to update the password\n\t\tif argocdInitialAdminPassword != \"\" && argocdInitialAdminPassword != util.StaticPassword {\n\t\t\terr = r.updateArgocdPassword(ctx, argocdInitialAdminPassword)\n\t\t\tif err != nil {\n\t\t\t\treturn ctrl.Result{}, err\n\t\t\t} else {\n\t\t\t\tlogger.V(1).Info(fmt.Sprintf(\"Argocd admin password change succeeded !\"))\n\t\t\t}\n\t\t}\n\n\t\t// Check if the Gitea credentials secret exists\n\t\tgiteaAdminPassword, err := r.extractGiteaAdminSecret(ctx)\n\t\tif err != nil {\n\t\t\t// Gitea admin secret is not yet available ...\n\t\t\treturn ctrl.Result{RequeueAfter: defaultRequeueTime}, nil\n\t\t}\n\t\tlogger.V(1).Info(\"Gitea admin secret found ...\")\n\t\t// Secret containing the gitea password exists\n\t\t// Lets try to update the password\n\t\tif giteaAdminPassword != \"\" && giteaAdminPassword != util.StaticPassword {\n\t\t\terr = r.updateGiteaPassword(ctx, giteaAdminPassword)\n\t\t\tif err != nil {\n\t\t\t\treturn ctrl.Result{}, err\n\t\t\t} else {\n\t\t\t\tlogger.V(1).Info(fmt.Sprintf(\"Gitea admin password change succeeded !\"))\n\t\t\t}\n\t\t}\n\t}\n\n\tlogger.V(1).Info(\"done installing core packages. passing control to argocd\")\n\t_, err = r.ReconcileArgoAppsWithGitea(ctx, req, &localBuild)\n\tif err != nil {\n\t\treturn ctrl.Result{}, err\n\t}\n\n\treturn ctrl.Result{RequeueAfter: defaultRequeueTime}, nil\n}\n\nfunc (r *LocalbuildReconciler) installCorePackages(ctx context.Context, req ctrl.Request, resource *v1alpha1.Localbuild, errChan chan error) {\n\tlogger := log.FromContext(ctx)\n\tdefer close(errChan)\n\tvar wg sync.WaitGroup\n\n\tinstallers := map[string]subReconciler{\n\t\tv1alpha1.IngressNginxPackageName: r.ReconcileNginx,\n\t\tv1alpha1.ArgoCDPackageName:       r.ReconcileArgo,\n\t\tv1alpha1.GiteaPackageName:        r.ReconcileGitea,\n\t}\n\tlogger.V(1).Info(\"installing core packages\")\n\tfor k, v := range installers {\n\t\twg.Add(1)\n\t\tname := k\n\t\tinst := v\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\t_, iErr := inst(ctx, req, resource)\n\t\t\tif iErr != nil {\n\t\t\t\tlogger.V(1).Info(\"failed installing\", \"name\", name, \"error\", iErr)\n\t\t\t\terrChan <- fmt.Errorf(\"failed installing %s: %w\", name, iErr)\n\t\t\t}\n\t\t}()\n\t}\n\twg.Wait()\n}\n\n// Responsible to updating ObservedGeneration in status\nfunc (r *LocalbuildReconciler) postProcessReconcile(ctx context.Context, req ctrl.Request, resource *v1alpha1.Localbuild) {\n\tlogger := log.FromContext(ctx)\n\n\tlogger.Info(\"Checking if we should shutdown\")\n\tif r.shouldShutdown {\n\t\tlogger.Info(\"Shutting Down\")\n\t\terr := r.requestArgoCDAppRefresh(ctx)\n\t\tif err != nil {\n\t\t\tlogger.V(1).Info(\"failed requesting argocd application refresh\", \"error\", err)\n\t\t}\n\t\terr = r.requestArgoCDAppSetRefresh(ctx)\n\t\tif err != nil {\n\t\t\tlogger.V(1).Info(\"failed requesting argocd application set refresh\", \"error\", err)\n\t\t}\n\t\tr.CancelFunc()\n\t\treturn\n\t}\n\n\tresource.Status.ObservedGeneration = resource.GetGeneration()\n\tif err := r.Status().Update(ctx, resource); err != nil {\n\t\tlogger.Error(err, \"Failed to update resource status after reconcile\")\n\t}\n}\n\nfunc (r *LocalbuildReconciler) ReconcileProjectNamespace(ctx context.Context, req ctrl.Request, resource *v1alpha1.Localbuild) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\n\tnsResource := &corev1.Namespace{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName: globals.GetProjectNamespace(resource.Name),\n\t\t},\n\t}\n\n\tlogger.V(1).Info(\"Create or update namespace\", \"resource\", nsResource)\n\t_, err := controllerutil.CreateOrUpdate(ctx, r.Client, nsResource, func() error {\n\t\tif err := controllerutil.SetControllerReference(resource, nsResource, r.Scheme); err != nil {\n\t\t\tlogger.Error(err, \"Setting controller ref on namespace resource\")\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\tlogger.Error(err, \"Create or update namespace resource\")\n\t}\n\treturn ctrl.Result{}, err\n}\n\n// SetupWithManager sets up the controller with the Manager.\nfunc (r *LocalbuildReconciler) SetupWithManager(mgr ctrl.Manager) error {\n\treturn ctrl.NewControllerManagedBy(mgr).\n\t\tFor(&v1alpha1.Localbuild{}).\n\t\tComplete(r)\n}\n\nfunc (r *LocalbuildReconciler) ReconcileArgoAppsWithGitea(ctx context.Context, req ctrl.Request, resource *v1alpha1.Localbuild) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\tlogger.Info(\"installing bootstrap apps to ArgoCD\")\n\n\t// push bootstrap app manifests to Gitea. let ArgoCD take over\n\t// will need a way to filter them based on user input\n\tbootStrapApps := []string{v1alpha1.ArgoCDPackageName, v1alpha1.IngressNginxPackageName, v1alpha1.GiteaPackageName}\n\tfor _, n := range bootStrapApps {\n\t\tresult, err := r.reconcileEmbeddedApp(ctx, n, resource)\n\t\tif err != nil {\n\t\t\treturn result, fmt.Errorf(\"reconciling bootstrap apps %w\", err)\n\t\t}\n\t}\n\n\t// Process packages in REVERSE order (highest priority first) to avoid creating\n\t// lower priority packages first then having to delete them\n\tfor i := len(resource.Spec.PackageConfigs.CustomPackageDirs) - 1; i >= 0; i-- {\n\t\ts := resource.Spec.PackageConfigs.CustomPackageDirs[i]\n\t\tresult, err := r.reconcileCustomPkgDir(ctx, resource, s, i)\n\t\tif err != nil {\n\t\t\treturn result, err\n\t\t}\n\t}\n\n\tfor i := len(resource.Spec.PackageConfigs.CustomPackageFiles) - 1; i >= 0; i-- {\n\t\ts := resource.Spec.PackageConfigs.CustomPackageFiles[i]\n\t\tresult, err := r.reconcileCustomPkgFile(ctx, resource, s, i)\n\t\tif err != nil {\n\t\t\treturn result, err\n\t\t}\n\t}\n\n\tfor i := len(resource.Spec.PackageConfigs.CustomPackageUrls) - 1; i >= 0; i-- {\n\t\ts := resource.Spec.PackageConfigs.CustomPackageUrls[i]\n\t\tresult, err := r.reconcileCustomPkgUrl(ctx, resource, s, i)\n\t\tif err != nil {\n\t\t\treturn result, err\n\t\t}\n\t}\n\n\tshutdown, err := r.shouldShutDown(ctx, resource)\n\tif err != nil {\n\t\treturn ctrl.Result{Requeue: true}, err\n\t}\n\tr.shouldShutdown = shutdown\n\n\treturn ctrl.Result{}, nil\n}\n\nfunc (r *LocalbuildReconciler) reconcileEmbeddedApp(ctx context.Context, appName string, resource *v1alpha1.Localbuild) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\n\tlogger.V(1).Info(\"Ensuring embedded ArgoCD Application\", \"name\", appName)\n\trepo, err := r.reconcileGitRepo(ctx, resource, \"embedded\", appName, appName, \"\")\n\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"creating %s repo CR: %w\", appName, err)\n\t}\n\n\tapp := &argov1alpha1.Application{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      appName,\n\t\t\tNamespace: globals.ArgoCDNamespace,\n\t\t},\n\t}\n\n\tutil.SetPackageLabels(app)\n\n\tif err := controllerutil.SetControllerReference(resource, app, r.Scheme); err != nil {\n\t\treturn ctrl.Result{}, err\n\t}\n\n\terr = r.Client.Get(ctx, client.ObjectKeyFromObject(app), app)\n\tif err != nil && k8serrors.IsNotFound(err) {\n\t\tlocalbuild.SetApplicationSpec(\n\t\t\tapp,\n\t\t\trepo.Status.InternalGitRepositoryUrl,\n\t\t\t\".\",\n\t\t\tdefaultArgoCDProjectName,\n\t\t\tappName,\n\t\t\tnil,\n\t\t)\n\t\terr = r.Client.Create(ctx, app)\n\t\tif err != nil {\n\t\t\treturn ctrl.Result{}, fmt.Errorf(\"creating %s app CR: %w\", appName, err)\n\t\t}\n\t}\n\n\tlocalbuild.SetApplicationSpec(\n\t\tapp,\n\t\trepo.Status.InternalGitRepositoryUrl,\n\t\t\".\",\n\t\tdefaultArgoCDProjectName,\n\t\tappName,\n\t\tnil,\n\t)\n\terr = r.Client.Update(ctx, app)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"updating argoapp: %w\", err)\n\t}\n\n\treturn ctrl.Result{}, nil\n}\n\nfunc (r *LocalbuildReconciler) shouldShutDown(ctx context.Context, resource *v1alpha1.Localbuild) (bool, error) {\n\tlogger := log.FromContext(ctx)\n\n\tif !r.ExitOnSync {\n\t\treturn false, nil\n\t}\n\n\tcliStartTime, err := util.GetCLIStartTimeAnnotationValue(resource.Annotations)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\t// check if core packages are ready\n\tselector := labels.NewSelector()\n\treq, err := labels.NewRequirement(v1alpha1.PackageTypeLabelKey, selection.Equals, []string{v1alpha1.PackageTypeLabelCore})\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"building labels with key %s and value %s : %w\", v1alpha1.PackageTypeLabelKey, v1alpha1.PackageTypeLabelCore, err)\n\t}\n\n\topts := client.ListOptions{\n\t\tLabelSelector: selector.Add(*req),\n\t\tNamespace:     \"\",\n\t}\n\tapps := argov1alpha1.ApplicationList{}\n\terr = r.Client.List(ctx, &apps, &opts)\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"listing core packages: %w\", err)\n\t}\n\n\tfor _, app := range apps.Items {\n\t\tif app.Status.Health.Status != \"Healthy\" {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\t// check if repositories are ready\n\trepos := &v1alpha1.GitRepositoryList{}\n\terr = r.Client.List(ctx, repos, client.InNamespace(resource.Namespace))\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"listing repositories %w\", err)\n\t}\n\n\tfor i := range repos.Items {\n\t\trepo := repos.Items[i]\n\n\t\tstartTimeAnnotation, gErr := util.GetCLIStartTimeAnnotationValue(repo.ObjectMeta.Annotations)\n\t\tif gErr != nil {\n\t\t\t// this means this repository resource is not managed by localbuild\n\t\t\tcontinue\n\t\t}\n\n\t\t// this object is not part of this CLI invocation\n\t\tif startTimeAnnotation != cliStartTime {\n\t\t\tcontinue\n\t\t}\n\n\t\tobservedTime, gErr := util.GetLastObservedSyncTimeAnnotationValue(repo.ObjectMeta.Annotations)\n\t\tif gErr != nil {\n\t\t\tlogger.Info(gErr.Error())\n\t\t\treturn false, nil\n\t\t}\n\n\t\tif !repo.Status.Synced || cliStartTime != observedTime {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\t// check if custom packages are ready\n\tpkgs := &v1alpha1.CustomPackageList{}\n\terr = r.Client.List(ctx, pkgs, client.InNamespace(resource.Namespace))\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"listing custom packages %w\", err)\n\t}\n\tfor i := range pkgs.Items {\n\t\tpkg := pkgs.Items[i]\n\t\tstartTimeAnnotation, gErr := util.GetCLIStartTimeAnnotationValue(pkg.ObjectMeta.Annotations)\n\t\tif gErr != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif startTimeAnnotation != cliStartTime {\n\t\t\treturn false, nil\n\t\t}\n\n\t\tobservedTime, gErr := util.GetLastObservedSyncTimeAnnotationValue(pkg.ObjectMeta.Annotations)\n\t\tif gErr != nil {\n\t\t\tlogger.Info(gErr.Error())\n\t\t\treturn false, nil\n\t\t}\n\t\tif !pkg.Status.Synced || cliStartTime != observedTime {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\nfunc (r *LocalbuildReconciler) reconcileCustomPkg(\n\tctx context.Context,\n\tresource *v1alpha1.Localbuild,\n\tb []byte,\n\tfilePath string,\n\tremote *util.KustomizeRemote,\n\tpriority int,\n\tsourcePath string,\n) error {\n\to := &unstructured.Unstructured{}\n\t_, gvk, fErr := scheme.Codecs.UniversalDeserializer().Decode(b, nil, o)\n\tif fErr != nil {\n\t\treturn fErr\n\t}\n\n\tif isSupportedArgoCDTypes(gvk) {\n\t\tkind := o.GetKind()\n\t\tappName := o.GetName()\n\t\tappNS := o.GetNamespace()\n\n\t\t// Check if a higher-priority CustomPackage already exists for this app\n\t\tprojectNS := globals.GetProjectNamespace(resource.Name)\n\t\texistingPkgs := &v1alpha1.CustomPackageList{}\n\t\tif err := r.Client.List(ctx, existingPkgs, client.InNamespace(projectNS)); err != nil {\n\t\t\treturn fmt.Errorf(\"listing existing custom packages: %w\", err)\n\t\t}\n\n\t\tfor i := range existingPkgs.Items {\n\t\t\texistingPkg := &existingPkgs.Items[i]\n\t\t\t// Check if this package is for the same ArgoCD app\n\t\t\tif existingPkg.Spec.ArgoCD.Name == appName {\n\t\t\t\t// Get existing package's priority\n\t\t\t\texistingPriorityStr, exists := existingPkg.ObjectMeta.Annotations[v1alpha1.PackagePriorityAnnotation]\n\t\t\t\tif exists {\n\t\t\t\t\tvar existingPriority int\n\t\t\t\t\tif _, err := fmt.Sscanf(existingPriorityStr, \"%d\", &existingPriority); err == nil {\n\t\t\t\t\t\tif existingPriority > priority {\n\t\t\t\t\t\t\t// A higher priority package already exists, skip this one\n\t\t\t\t\t\t\texistingSourcePath := existingPkg.ObjectMeta.Annotations[v1alpha1.PackageSourcePathAnnotation]\n\t\t\t\t\t\t\tlog.FromContext(ctx).Info(\"Skipping CustomPackage creation - higher priority package already exists\",\n\t\t\t\t\t\t\t\t\"appName\", appName,\n\t\t\t\t\t\t\t\t\"skippingPackage\", sourcePath,\n\t\t\t\t\t\t\t\t\"skippingPriority\", priority,\n\t\t\t\t\t\t\t\t\"keepingPackage\", existingSourcePath,\n\t\t\t\t\t\t\t\t\"keepingPriority\", existingPriority)\n\t\t\t\t\t\t\treturn nil\n\t\t\t\t\t\t} else if existingPriority < priority {\n\t\t\t\t\t\t\t// We have higher priority, delete the existing lower-priority package\n\t\t\t\t\t\t\texistingSourcePath := existingPkg.ObjectMeta.Annotations[v1alpha1.PackageSourcePathAnnotation]\n\t\t\t\t\t\t\tlog.FromContext(ctx).Info(\"Deleting lower priority CustomPackage\",\n\t\t\t\t\t\t\t\t\"appName\", appName,\n\t\t\t\t\t\t\t\t\"deletingPackage\", existingSourcePath,\n\t\t\t\t\t\t\t\t\"deletingPriority\", existingPriority,\n\t\t\t\t\t\t\t\t\"usingPackage\", sourcePath,\n\t\t\t\t\t\t\t\t\"usingPriority\", priority)\n\t\t\t\t\t\t\tif err := r.Client.Delete(ctx, existingPkg); err != nil && !k8serrors.IsNotFound(err) {\n\t\t\t\t\t\t\t\treturn fmt.Errorf(\"deleting lower priority package: %w\", err)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcustomPkg := &v1alpha1.CustomPackage{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tName:      getCustomPackageName(filepath.Base(filePath), appName),\n\t\t\t\tNamespace: projectNS,\n\t\t\t},\n\t\t}\n\n\t\tcliStartTime, _ := util.GetCLIStartTimeAnnotationValue(resource.ObjectMeta.Annotations)\n\n\t\t_, fErr = controllerutil.CreateOrUpdate(ctx, r.Client, customPkg, func() error {\n\t\t\tif err := controllerutil.SetControllerReference(resource, customPkg, r.Scheme); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif customPkg.ObjectMeta.Annotations == nil {\n\t\t\t\tcustomPkg.ObjectMeta.Annotations = make(map[string]string)\n\t\t\t}\n\n\t\t\tutil.SetCLIStartTimeAnnotationValue(customPkg.ObjectMeta.Annotations, cliStartTime)\n\t\t\tcustomPkg.ObjectMeta.Annotations[v1alpha1.PackagePriorityAnnotation] = fmt.Sprintf(\"%d\", priority)\n\t\t\tcustomPkg.ObjectMeta.Annotations[v1alpha1.PackageSourcePathAnnotation] = sourcePath\n\n\t\t\tcustomPkg.Spec = v1alpha1.CustomPackageSpec{\n\t\t\t\tReplicate:           true,\n\t\t\t\tGitServerURL:        resource.Status.Gitea.ExternalURL,\n\t\t\t\tInternalGitServeURL: resource.Status.Gitea.InternalURL,\n\t\t\t\tGitServerAuthSecretRef: v1alpha1.SecretReference{\n\t\t\t\t\tName:      resource.Status.Gitea.AdminUserSecretName,\n\t\t\t\t\tNamespace: resource.Status.Gitea.AdminUserSecretNamespace,\n\t\t\t\t},\n\t\t\t\tArgoCD: v1alpha1.ArgoCDPackageSpec{\n\t\t\t\t\tApplicationFile: filePath,\n\t\t\t\t\tName:            appName,\n\t\t\t\t\tNamespace:       appNS,\n\t\t\t\t\tType:            kind,\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tif remote != nil {\n\t\t\t\tcustomPkg.Spec.RemoteRepository = v1alpha1.RemoteRepositorySpec{\n\t\t\t\t\tUrl:             remote.CloneUrl(),\n\t\t\t\t\tRef:             remote.Ref,\n\t\t\t\t\tCloneSubmodules: remote.Submodules,\n\t\t\t\t\tPath:            remote.Path(),\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn nil\n\t\t})\n\t\treturn fErr\n\t}\n\treturn nil\n}\n\nfunc (r *LocalbuildReconciler) reconcileCustomPkgUrl(ctx context.Context, resource *v1alpha1.Localbuild, pkgUrl string, priority int) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\n\tremote, err := util.NewKustomizeRemote(pkgUrl)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"parsing url, %s: %w\", pkgUrl, err)\n\t}\n\trs := v1alpha1.RemoteRepositorySpec{\n\t\tUrl:             remote.CloneUrl(),\n\t\tRef:             remote.Ref,\n\t\tCloneSubmodules: remote.Submodules,\n\t\tPath:            remote.Path(),\n\t}\n\n\tcloneDir := util.RepoDir(rs.Url, r.TempDir)\n\tst := r.RepoMap.LoadOrStore(rs.Url, cloneDir)\n\tst.MU.Lock()\n\tdefer st.MU.Unlock()\n\twt, _, err := util.CloneRemoteRepoToDir(ctx, rs, 1, false, cloneDir, \"\")\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"cloning repo, %s: %w\", pkgUrl, err)\n\t}\n\n\tyamlFiles, err := util.GetWorktreeYamlFiles(remote.Path(), wt, false)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"getting yaml files from repo, %s: %w\", pkgUrl, err)\n\t}\n\n\tfor _, yamlFile := range yamlFiles {\n\t\tb, fErr := util.ReadWorktreeFile(wt, yamlFile)\n\t\tif fErr != nil {\n\t\t\tlogger.V(1).Info(\"processing\", \"file\", yamlFile, \"err\", fErr)\n\t\t\tcontinue\n\t\t}\n\n\t\trErr := r.reconcileCustomPkg(ctx, resource, b, yamlFile, remote, priority, pkgUrl)\n\t\tif rErr != nil {\n\t\t\tlogger.Error(rErr, \"reconciling custom pkg\", \"file\", yamlFile, \"pkgUrl\", pkgUrl)\n\t\t}\n\t}\n\treturn ctrl.Result{}, nil\n}\n\nfunc (r *LocalbuildReconciler) reconcileCustomPkgDir(ctx context.Context, resource *v1alpha1.Localbuild, pkgDir string, priority int) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\n\tfiles, err := os.ReadDir(pkgDir)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"reading dir, %s: %w\", pkgDir, err)\n\t}\n\n\tfor i := range files {\n\t\tfile := files[i]\n\t\tif !file.Type().IsRegular() || !util.IsYamlFile(file.Name()) {\n\t\t\tcontinue\n\t\t}\n\n\t\tfilePath := filepath.Join(pkgDir, file.Name())\n\t\tb, fErr := os.ReadFile(filePath)\n\t\tif fErr != nil {\n\t\t\tlogger.Error(fErr, \"reading file\", \"file\", filePath)\n\t\t\tcontinue\n\t\t}\n\n\t\trErr := r.reconcileCustomPkg(ctx, resource, b, filePath, nil, priority, pkgDir)\n\t\tif rErr != nil {\n\t\t\tlogger.Error(rErr, \"reconciling custom pkg\", \"file\", filePath, \"pkgDir\", pkgDir)\n\t\t}\n\t}\n\n\treturn ctrl.Result{}, nil\n}\n\nfunc (r *LocalbuildReconciler) reconcileCustomPkgFile(ctx context.Context, resource *v1alpha1.Localbuild, pkgFile string, priority int) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\n\tfile, err := os.Open(pkgFile)\n\tdefer file.Close()\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"opening file, %s: %w\", pkgFile, err)\n\t}\n\n\tfType, err := file.Stat()\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"getting file info, %s: %w\", pkgFile, err)\n\t}\n\n\tif !fType.Mode().IsRegular() {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"file is not a regular file, %s: %w\", pkgFile, err)\n\t}\n\n\tif !util.IsYamlFile(file.Name()) {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"file is not a yaml file, %s: %w\", pkgFile, err)\n\t}\n\n\tb, fErr := os.ReadFile(pkgFile)\n\tif fErr != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"reading file, %s: %w\", pkgFile, err)\n\t}\n\n\trErr := r.reconcileCustomPkg(ctx, resource, b, pkgFile, nil, priority, pkgFile)\n\tif rErr != nil {\n\t\tlogger.Error(rErr, \"reconciling custom pkg\", \"file\", pkgFile)\n\t}\n\n\treturn ctrl.Result{}, nil\n}\n\nfunc (r *LocalbuildReconciler) reconcileGitRepo(ctx context.Context, resource *v1alpha1.Localbuild, repoType, repoName, embeddedName, absPath string) (*v1alpha1.GitRepository, error) {\n\trepo := &v1alpha1.GitRepository{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      repoName,\n\t\t\tNamespace: globals.GetProjectNamespace(resource.Name),\n\t\t},\n\t}\n\n\tcliStartTime, err := util.GetCLIStartTimeAnnotationValue(resource.Annotations)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t_, err = controllerutil.CreateOrUpdate(ctx, r.Client, repo, func() error {\n\t\tif err := controllerutil.SetControllerReference(resource, repo, r.Scheme); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif repo.ObjectMeta.Annotations == nil {\n\t\t\trepo.ObjectMeta.Annotations = make(map[string]string)\n\t\t}\n\t\tutil.SetCLIStartTimeAnnotationValue(repo.ObjectMeta.Annotations, cliStartTime)\n\n\t\trepo.Spec = v1alpha1.GitRepositorySpec{\n\t\t\tSource: v1alpha1.GitRepositorySource{\n\t\t\t\tType: repoType,\n\t\t\t},\n\t\t\tProvider: v1alpha1.Provider{\n\t\t\t\tName:             v1alpha1.GitProviderGitea,\n\t\t\t\tGitURL:           resource.Status.Gitea.ExternalURL,\n\t\t\t\tInternalGitURL:   resource.Status.Gitea.InternalURL,\n\t\t\t\tOrganizationName: v1alpha1.GiteaAdminUserName,\n\t\t\t},\n\t\t\tSecretRef: v1alpha1.SecretReference{\n\t\t\t\tName:      resource.Status.Gitea.AdminUserSecretName,\n\t\t\t\tNamespace: resource.Status.Gitea.AdminUserSecretNamespace,\n\t\t\t},\n\t\t}\n\n\t\tif repoType == v1alpha1.SourceTypeEmbedded {\n\t\t\trepo.Spec.Source.EmbeddedAppName = embeddedName\n\t\t} else {\n\t\t\trepo.Spec.Source.Path = absPath\n\t\t}\n\t\tf, ok := resource.Spec.PackageConfigs.CorePackageCustomization[embeddedName]\n\t\tif ok {\n\t\t\trepo.Spec.Customization = v1alpha1.PackageCustomization{\n\t\t\t\tName:     embeddedName,\n\t\t\t\tFilePath: f.FilePath,\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t})\n\n\treturn repo, err\n}\n\nfunc (r *LocalbuildReconciler) requestArgoCDAppRefresh(ctx context.Context) error {\n\tapps := &argov1alpha1.ApplicationList{}\n\terr := r.Client.List(ctx, apps, client.InNamespace(globals.ArgoCDNamespace))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"listing argocd apps for refresh: %w\", err)\n\t}\n\napps:\n\tfor i := range apps.Items {\n\t\tapp := apps.Items[i]\n\t\tfor _, o := range app.OwnerReferences {\n\t\t\t// if this app is owned by an ApplicationSet, we should let the ApplicationSet refresh.\n\t\t\tif o.Kind == argocdapp.ApplicationSetKind {\n\t\t\t\tcontinue apps\n\t\t\t}\n\t\t}\n\t\taErr := r.applyArgoCDAnnotation(ctx, &app, argocdapp.ApplicationKind, argoCDApplicationAnnotationKeyRefresh, argoCDApplicationAnnotationValueRefreshNormal)\n\t\tif aErr != nil {\n\t\t\treturn aErr\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (r *LocalbuildReconciler) requestArgoCDAppSetRefresh(ctx context.Context) error {\n\tappsets := &argov1alpha1.ApplicationSetList{}\n\terr := r.Client.List(ctx, appsets, client.InNamespace(globals.ArgoCDNamespace))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"listing argocd apps for refresh: %w\", err)\n\t}\n\n\tfor i := range appsets.Items {\n\t\tappset := appsets.Items[i]\n\t\taErr := r.applyArgoCDAnnotation(ctx, &appset, argocdapp.ApplicationSetKind, argoCDApplicationSetAnnotationKeyRefresh, argoCDApplicationSetAnnotationKeyRefreshTrue)\n\t\tif aErr != nil {\n\t\t\treturn aErr\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (r *LocalbuildReconciler) extractArgocdInitialAdminSecret(ctx context.Context) (string, error) {\n\tsec := util.ArgocdInitialAdminSecretObject()\n\terr := r.Client.Get(ctx, types.NamespacedName{\n\t\tNamespace: sec.GetNamespace(),\n\t\tName:      sec.GetName(),\n\t}, &sec)\n\n\tif err != nil {\n\t\tif k8serrors.IsNotFound(err) {\n\t\t\treturn \"\", fmt.Errorf(\"initial admin secret not found\")\n\t\t}\n\t}\n\treturn string(sec.Data[\"password\"]), nil\n}\n\nfunc (r *LocalbuildReconciler) extractGiteaAdminSecret(ctx context.Context) (string, error) {\n\tsec := util.GiteaAdminSecretObject()\n\terr := r.Client.Get(ctx, types.NamespacedName{\n\t\tNamespace: sec.GetNamespace(),\n\t\tName:      sec.GetName(),\n\t}, &sec)\n\n\tif err != nil {\n\t\tif k8serrors.IsNotFound(err) {\n\t\t\treturn \"\", fmt.Errorf(\"gitea admin secret not found\")\n\t\t}\n\t}\n\treturn string(sec.Data[\"password\"]), nil\n}\n\nfunc (r *LocalbuildReconciler) updateGiteaPassword(ctx context.Context, adminPassword string) error {\n\tgiteaBaseUrl := util.GiteaBaseUrl(r.Config)\n\n\tclient, err := gitea.NewClient(giteaBaseUrl, gitea.SetHTTPClient(util.GetHttpClient()),\n\t\tgitea.SetBasicAuth(\"giteaAdmin\", adminPassword), gitea.SetContext(ctx),\n\t)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"cannot create gitea client: %w\", err)\n\t}\n\n\topts := gitea.EditUserOption{\n\t\tLoginName: \"giteaAdmin\",\n\t\tPassword:  util.StaticPassword,\n\t}\n\n\tresp, err := client.AdminEditUser(\"giteaAdmin\", opts)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"cannot update gitea admin user. status: %d error : %w\", resp.StatusCode, err)\n\t}\n\n\terr = util.PatchPasswordSecret(ctx, r.Client, r.Config, util.GiteaNamespace, util.GiteaAdminSecret, util.GiteaAdminName, util.StaticPassword)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"patching the gitea credentials failed : %w\", err)\n\t}\n\treturn nil\n}\n\nfunc (r *LocalbuildReconciler) updateArgocdPassword(ctx context.Context, adminPassword string) error {\n\targocdBaseUrl := util.ArgocdBaseUrl(r.Config)\n\n\targocdEndpoint := argocdBaseUrl + \"/api/v1\"\n\n\tpayload := map[string]string{\n\t\t\"username\": \"admin\",\n\t\t\"password\": adminPassword,\n\t}\n\tpayloadBytes, err := json.Marshal(payload)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Error creating JSON payload: %v\\n\", err)\n\t}\n\n\t// Create an HTTP POST request to get the Session token\n\treq, err := http.NewRequest(\"POST\", argocdEndpoint+\"/session\", bytes.NewBuffer(payloadBytes))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Error creating HTTP request: %v\\n\", err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\n\t// Create an HTTP c and disable TLS verification\n\tc := util.GetHttpClient()\n\n\t// Send the request\n\tresp, err := c.Do(req)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Error sending request: %v\\n\", err)\n\t}\n\tdefer resp.Body.Close()\n\n\t// Read the response body\n\tbody, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Error reading response body: %v\\n\", err)\n\t}\n\n\t// We got a session Token, so we can update the Argocd admin password\n\tif resp.StatusCode == 200 {\n\t\tvar argocdSession ArgocdSession\n\n\t\terr := json.Unmarshal([]byte(body), &argocdSession)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Error unmarshalling JSON: %v\", err)\n\t\t}\n\n\t\tpayload := map[string]string{\n\t\t\t\"name\":            \"admin\",\n\t\t\t\"currentPassword\": adminPassword,\n\t\t\t\"newPassword\":     util.StaticPassword,\n\t\t}\n\n\t\tpayloadBytes, err := json.Marshal(payload)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Error creating JSON payload: %v\\n\", err)\n\t\t}\n\n\t\treq, err := http.NewRequest(\"PUT\", argocdEndpoint+\"/account/password\", bytes.NewBuffer(payloadBytes))\n\t\tif req != nil {\n\t\t\treq.Header.Set(\"Authorization\", fmt.Sprintf(\"Bearer %s\", argocdSession.Token))\n\t\t\treq.Header.Set(\"Content-Type\", \"application/json\")\n\t\t}\n\n\t\tresp, err := c.Do(req)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Error sending request: %v\\n\", err)\n\t\t}\n\t\tdefer resp.Body.Close()\n\n\t\t// Lets checking the new admin password\n\t\tpayload = map[string]string{\n\t\t\t\"username\": \"admin\",\n\t\t\t\"password\": util.StaticPassword,\n\t\t}\n\t\tpayloadBytes, err = json.Marshal(payload)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Error creating JSON payload: %v\\n\", err)\n\t\t}\n\n\t\t// Define the request able to verify if the username and password changed works\n\t\treq, err = http.NewRequest(\"POST\", argocdEndpoint+\"/session\", bytes.NewBuffer(payloadBytes))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Error creating HTTP request: %v\\n\", err)\n\t\t}\n\t\treq.Header.Set(\"Content-Type\", \"application/json\")\n\n\t\t// Send the request\n\t\tresp, err = c.Do(req)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Error sending request: %v\\n\", err)\n\t\t}\n\t\tdefer resp.Body.Close()\n\n\t\t// Password verification succeeded !\n\t\tif resp.StatusCode == 200 {\n\t\t\t// Let's patch the existing secret now\n\t\t\terr = util.PatchPasswordSecret(ctx, r.Client, r.Config, util.ArgocdNamespace, util.ArgocdInitialAdminSecretName, util.ArgocdAdminName, util.StaticPassword)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"patching the argocd initial secret failed : %w\", err)\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t}\n\t// No session token has been received and by consequence the admin password has not been changed\n\treturn nil\n}\n\nfunc (r *LocalbuildReconciler) applyArgoCDAnnotation(ctx context.Context, obj client.Object, argoCDType, annotationKey, annotationValue string) error {\n\tannotations := obj.GetAnnotations()\n\tif annotations != nil {\n\t\t_, ok := annotations[annotationKey]\n\t\tif !ok {\n\t\t\tannotations[annotationKey] = annotationValue\n\t\t\terr := util.ApplyAnnotation(ctx, r.Client, obj, annotations, client.FieldOwner(v1alpha1.FieldManager))\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"applying %s refresh annotation for %s: %w\", argoCDType, obj.GetName(), err)\n\t\t\t}\n\t\t}\n\t} else {\n\t\ta := map[string]string{\n\t\t\tannotationKey: annotationValue,\n\t\t}\n\t\terr := util.ApplyAnnotation(ctx, r.Client, obj, a, client.FieldOwner(v1alpha1.FieldManager))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"applying %s refresh annotation for %s: %w\", argoCDType, obj.GetName(), err)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc getCustomPackageName(fileName, appName string) string {\n\ts := strings.Split(fileName, \".\")\n\treturn fmt.Sprintf(\"%s-%s\", strings.ToLower(s[0]), appName)\n}\n\nfunc isSupportedArgoCDTypes(gvk *schema.GroupVersionKind) bool {\n\tif gvk == nil {\n\t\treturn false\n\t}\n\treturn gvk.Group == argocdapp.Group && (gvk.Kind == argocdapp.ApplicationKind || gvk.Kind == argocdapp.ApplicationSetKind)\n}\n\nfunc GetEmbeddedRawInstallResources(name string, templateData any, config v1alpha1.PackageCustomization, scheme *runtime.Scheme) ([][]byte, error) {\n\tswitch name {\n\tcase v1alpha1.ArgoCDPackageName:\n\t\treturn RawArgocdInstallResources(templateData, config, scheme)\n\tcase v1alpha1.GiteaPackageName:\n\t\treturn RawGiteaInstallResources(templateData, config, scheme)\n\tcase v1alpha1.IngressNginxPackageName:\n\t\treturn RawNginxInstallResources(templateData, config, scheme)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unsupported embedded app name %s\", name)\n\t}\n}\n"
  },
  {
    "path": "pkg/controllers/localbuild/gitea.go",
    "content": "package localbuild\n\nimport (\n\t\"context\"\n\t\"embed\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\t\"net/http\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tk8serrors \"k8s.io/apimachinery/pkg/api/errors\"\n\t\"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/apimachinery/pkg/runtime/schema\"\n\t\"k8s.io/apimachinery/pkg/types\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/controller-runtime/pkg/log\"\n)\n\n//go:embed resources/gitea/k8s/*\nvar installGiteaFS embed.FS\n\nfunc RawGiteaInstallResources(templateData any, config v1alpha1.PackageCustomization, scheme *runtime.Scheme) ([][]byte, error) {\n\treturn k8s.BuildCustomizedManifests(config.FilePath, \"resources/gitea/k8s\", installGiteaFS, scheme, templateData)\n}\n\nfunc (r *LocalbuildReconciler) newGiteaAdminSecret(password string) corev1.Secret {\n\tobj := util.GiteaAdminSecretObject()\n\tobj.StringData = map[string]string{\n\t\t\"username\": v1alpha1.GiteaAdminUserName,\n\t\t\"password\": password,\n\t}\n\treturn obj\n}\n\nfunc (r *LocalbuildReconciler) ReconcileGitea(ctx context.Context, req ctrl.Request, resource *v1alpha1.Localbuild) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx, \"installer\", \"gitea\")\n\tgitea := EmbeddedInstallation{\n\t\tname:         \"Gitea\",\n\t\tresourcePath: \"resources/gitea/k8s\",\n\t\tresourceFS:   installGiteaFS,\n\t\tnamespace:    util.GiteaNamespace,\n\t\tmonitoredResources: map[string]schema.GroupVersionKind{\n\t\t\t\"my-gitea\": {\n\t\t\t\tGroup:   \"apps\",\n\t\t\t\tVersion: \"v1\",\n\t\t\t\tKind:    \"Deployment\",\n\t\t\t},\n\t\t},\n\t}\n\n\tsec := util.GiteaAdminSecretObject()\n\terr := r.Client.Get(ctx, types.NamespacedName{\n\t\tNamespace: sec.GetNamespace(),\n\t\tName:      sec.GetName(),\n\t}, &sec)\n\n\tif err != nil {\n\t\tif k8serrors.IsNotFound(err) {\n\t\t\tgenPassword, err := util.GeneratePassword()\n\t\t\tif err != nil {\n\t\t\t\treturn ctrl.Result{}, fmt.Errorf(\"generating gitea password: %w\", err)\n\t\t\t}\n\n\t\t\tgiteaCreds := r.newGiteaAdminSecret(genPassword)\n\t\t\tif err != nil {\n\t\t\t\treturn ctrl.Result{}, fmt.Errorf(\"generating gitea admin secret: %w\", err)\n\t\t\t}\n\t\t\tgitea.unmanagedResources = []client.Object{&giteaCreds}\n\t\t\tsec = giteaCreds\n\t\t} else {\n\t\t\treturn ctrl.Result{}, fmt.Errorf(\"getting gitea secret: %w\", err)\n\t\t}\n\t}\n\n\tv, ok := resource.Spec.PackageConfigs.CorePackageCustomization[v1alpha1.GiteaPackageName]\n\tif ok {\n\t\tgitea.customization = v\n\t}\n\n\tif result, err := gitea.Install(ctx, resource, r.Client, r.Scheme, r.Config); err != nil {\n\t\treturn result, err\n\t}\n\n\tbaseUrl := util.GiteaBaseUrl(r.Config)\n\n\t// need this to ensure gitrepository controller can reach the api endpoint.\n\tlogger.V(1).Info(\"checking gitea api endpoint\", \"url\", baseUrl)\n\tc := util.GetHttpClient()\n\tresp, err := c.Get(baseUrl)\n\tif err != nil {\n\t\treturn ctrl.Result{}, err\n\t}\n\tif resp != nil {\n\t\tresp.Body.Close()\n\t\tif resp.StatusCode != http.StatusOK {\n\t\t\tlogger.V(1).Info(\"gitea manifests installed successfully. endpoint not ready\", \"statusCode\", resp.StatusCode)\n\t\t\treturn ctrl.Result{RequeueAfter: errRequeueTime}, nil\n\t\t}\n\t}\n\n\terr = r.setGiteaToken(ctx, sec, baseUrl)\n\tif err != nil {\n\t\treturn ctrl.Result{}, fmt.Errorf(\"creating gitea token: %w\", err)\n\t}\n\n\tresource.Status.Gitea.ExternalURL = baseUrl\n\tresource.Status.Gitea.InternalURL = util.GiteaBaseUrl(r.Config)\n\tresource.Status.Gitea.AdminUserSecretName = util.GiteaAdminSecret\n\tresource.Status.Gitea.AdminUserSecretNamespace = util.GiteaNamespace\n\tresource.Status.Gitea.Available = true\n\treturn ctrl.Result{}, nil\n}\n\nfunc (r *LocalbuildReconciler) setGiteaToken(ctx context.Context, secret corev1.Secret, baseUrl string) error {\n\t_, ok := secret.Data[util.GiteaAdminTokenFieldName]\n\tif ok {\n\t\treturn nil\n\t}\n\n\tu := unstructured.Unstructured{}\n\tu.SetName(util.GiteaAdminSecret)\n\tu.SetNamespace(util.GiteaNamespace)\n\tu.SetGroupVersionKind(corev1.SchemeGroupVersion.WithKind(\"Secret\"))\n\n\tuser, ok := secret.Data[\"username\"]\n\tif !ok {\n\t\treturn fmt.Errorf(\"username field not found in gitea secret\")\n\t}\n\n\tpass, ok := secret.Data[\"password\"]\n\tif !ok {\n\t\treturn fmt.Errorf(\"password field not found in gitea secret\")\n\t}\n\n\tt, err := util.GetGiteaToken(ctx, baseUrl, string(user), string(pass))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting gitea token: %w\", err)\n\t}\n\n\ttoken := base64.StdEncoding.EncodeToString([]byte(t))\n\terr = unstructured.SetNestedField(u.Object, token, \"data\", util.GiteaAdminTokenFieldName)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"setting gitea token field: %w\", err)\n\t}\n\n\treturn r.Client.Patch(ctx, &u, client.Apply, client.ForceOwnership, client.FieldOwner(v1alpha1.FieldManager))\n}\n"
  },
  {
    "path": "pkg/controllers/localbuild/gitea_test.go",
    "content": "package localbuild\n\nimport (\n\t\"context\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGetGiteaToken(t *testing.T) {\n\tts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\ttime.Sleep(time.Second * 35)\n\t}))\n\tdefer ts.Close()\n\tctx := context.Background()\n\t_, err := util.GetGiteaToken(ctx, ts.URL, \"\", \"\")\n\trequire.Error(t, err)\n}\n"
  },
  {
    "path": "pkg/controllers/localbuild/installer.go",
    "content": "package localbuild\n\nimport (\n\t\"context\"\n\t\"embed\"\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\tappsv1 \"k8s.io/api/apps/v1\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/apimachinery/pkg/runtime/schema\"\n\t\"k8s.io/apimachinery/pkg/types\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/controller-runtime/pkg/log\"\n)\n\nvar timeout = time.After(5 * time.Minute)\n\ntype EmbeddedInstallation struct {\n\tname         string\n\tresourcePath string\n\tnamespace    string\n\n\t// skips waiting on expected resources to become ready\n\tskipReadinessCheck bool\n\n\t// name and gvk pair for resources that need to be monitored\n\tmonitoredResources map[string]schema.GroupVersionKind\n\tcustomization      v1alpha1.PackageCustomization\n\tresourceFS         embed.FS\n\n\t// resources that need to be created without using static manifests or gitops\n\tunmanagedResources []client.Object\n}\n\nfunc (e *EmbeddedInstallation) installResources(scheme *runtime.Scheme, templateData any) ([]client.Object, error) {\n\treturn k8s.BuildCustomizedObjects(e.customization.FilePath, e.resourcePath, e.resourceFS, scheme, templateData)\n}\n\nfunc (e *EmbeddedInstallation) newNamespace(namespace string) *corev1.Namespace {\n\treturn &corev1.Namespace{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName: namespace,\n\t\t},\n\t}\n}\n\nfunc (e *EmbeddedInstallation) Install(ctx context.Context, resource *v1alpha1.Localbuild, cli client.Client, sc *runtime.Scheme, cfg v1alpha1.BuildCustomizationSpec) (ctrl.Result, error) {\n\tlogger := log.FromContext(ctx)\n\n\tnsClient := client.NewNamespacedClient(cli, e.namespace)\n\tinstallObjs, err := e.installResources(sc, cfg)\n\tif err != nil {\n\t\treturn ctrl.Result{}, err\n\t}\n\n\tif err = k8s.EnsureNamespace(ctx, nsClient, e.namespace); err != nil {\n\t\treturn ctrl.Result{}, err\n\t}\n\n\tfor i := range e.unmanagedResources {\n\t\terr = k8s.EnsureObject(ctx, nsClient, e.unmanagedResources[i], e.namespace)\n\t\tif err != nil {\n\t\t\treturn ctrl.Result{}, err\n\t\t}\n\t}\n\n\tsch := runtime.NewScheme()\n\tappsv1.AddToScheme(sch)\n\n\tfor _, obj := range installObjs {\n\t\t// Create object\n\t\tif err = k8s.EnsureObject(ctx, nsClient, obj, e.namespace); err != nil {\n\t\t\treturn ctrl.Result{}, err\n\t\t}\n\t}\n\n\t// return early if readiness check is disabled\n\tif e.skipReadinessCheck {\n\t\treturn ctrl.Result{}, nil\n\t}\n\n\t// wait for expected resources to become available\n\terrCh := make(chan error)\n\tvar wg sync.WaitGroup\n\n\tfor _, obj := range installObjs {\n\t\tif gvk, ok := e.monitoredResources[obj.GetName()]; ok {\n\t\t\tif obj.GetObjectKind().GroupVersionKind() != gvk {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\twg.Add(1)\n\t\t\tgo func(obj client.Object, gvk schema.GroupVersionKind) {\n\t\t\t\tdefer wg.Done()\n\n\t\t\t\tgvkObj, err := sch.New(gvk)\n\t\t\t\tif err != nil {\n\t\t\t\t\terrCh <- err\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tfor {\n\t\t\t\t\tif gotObj, ok := gvkObj.(client.Object); ok {\n\t\t\t\t\t\tif err := cli.Get(ctx, types.NamespacedName{Namespace: e.namespace, Name: obj.GetName()}, gotObj); err != nil {\n\t\t\t\t\t\t\terrCh <- err\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tswitch t := gotObj.(type) {\n\t\t\t\t\t\tcase *appsv1.Deployment:\n\t\t\t\t\t\t\tif t.Status.AvailableReplicas >= 1 {\n\t\t\t\t\t\t\t\tlogger.V(1).Info(t.GetName(), \"deployment\", t.Status.AvailableReplicas)\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase *appsv1.StatefulSet:\n\t\t\t\t\t\t\tif t.Status.AvailableReplicas >= 1 {\n\t\t\t\t\t\t\t\tlogger.V(1).Info(t.GetName(), \"statefulset\", t.Status.AvailableReplicas)\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlogger.Info(fmt.Sprintf(\"Waiting for %s %s to become ready\", gvk.Kind, obj.GetName()))\n\t\t\t\t\ttime.Sleep(30 * time.Second)\n\t\t\t\t}\n\t\t\t}(obj, gvk)\n\t\t}\n\t}\n\n\tgo func() {\n\t\twg.Wait()\n\t\tclose(errCh)\n\t}()\n\n\tselect {\n\tcase <-timeout:\n\t\terr := errors.New(\"Timeout\")\n\t\tlogger.Error(err, fmt.Sprintf(\"Didn't reconcile %s on time\", e.name))\n\t\treturn ctrl.Result{}, err\n\tcase err, errOccurred := <-errCh:\n\t\tif !errOccurred {\n\t\t\tlogger.V(1).Info(fmt.Sprintf(\"%s is ready!\", e.name))\n\t\t} else {\n\t\t\tlogger.Error(err, fmt.Sprintf(\"failed to reconcile the %s resources\", e.name))\n\t\t\treturn ctrl.Result{}, err\n\t\t}\n\t}\n\n\treturn ctrl.Result{}, nil\n}\n"
  },
  {
    "path": "pkg/controllers/localbuild/nginx.go",
    "content": "package localbuild\n\nimport (\n\t\"context\"\n\t\"embed\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/globals\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/apimachinery/pkg/runtime/schema\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n)\n\n//go:embed resources/nginx/k8s/*\nvar installNginxFS embed.FS\n\nfunc RawNginxInstallResources(templateData any, config v1alpha1.PackageCustomization, scheme *runtime.Scheme) ([][]byte, error) {\n\treturn k8s.BuildCustomizedManifests(config.FilePath, \"resources/nginx/k8s\", installNginxFS, scheme, templateData)\n}\n\nfunc (r *LocalbuildReconciler) ReconcileNginx(ctx context.Context, req ctrl.Request, resource *v1alpha1.Localbuild) (ctrl.Result, error) {\n\tnginx := EmbeddedInstallation{\n\t\tname:         \"Nginx\",\n\t\tresourcePath: \"resources/nginx/k8s\",\n\t\tresourceFS:   installNginxFS,\n\t\tnamespace:    globals.NginxNamespace,\n\t\tmonitoredResources: map[string]schema.GroupVersionKind{\n\t\t\t\"ingress-nginx-controller\": {\n\t\t\t\tGroup:   \"apps\",\n\t\t\t\tVersion: \"v1\",\n\t\t\t\tKind:    \"Deployment\",\n\t\t\t},\n\t\t},\n\t}\n\n\tv, ok := resource.Spec.PackageConfigs.CorePackageCustomization[v1alpha1.IngressNginxPackageName]\n\tif ok {\n\t\tnginx.customization = v\n\t}\n\n\tif result, err := nginx.Install(ctx, resource, r.Client, r.Scheme, r.Config); err != nil {\n\t\treturn result, err\n\t}\n\n\tresource.Status.Nginx.Available = true\n\treturn ctrl.Result{}, nil\n}\n"
  },
  {
    "path": "pkg/controllers/localbuild/resources/argo/ingress.yaml",
    "content": "{{- if .UsePathRouting -}}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: argocd-server-ingress-http\n  namespace: argocd\n  annotations:\n    nginx.ingress.kubernetes.io/backend-protocol: \"HTTP\"\n    nginx.ingress.kubernetes.io/use-regex: \"true\"\n    nginx.ingress.kubernetes.io/rewrite-target: /$2\nspec:\n  ingressClassName: nginx\n  rules:\n    - host: {{ .IngressHost }}\n      http:\n        paths:\n          - path: /argocd(/|$)(.*)\n            pathType: ImplementationSpecific\n            backend:\n              service:\n                name: argocd-server\n                port:\n                  name: http\n{{- if ne .IngressHost .Host }}\n    - host: {{ .Host }}\n      http:\n        paths:\n          - path: /argocd(/|$)(.*)\n            pathType: ImplementationSpecific\n            backend:\n              service:\n                name: argocd-server\n                port:\n                  name: http\n{{ end }}\n{{- else -}}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: argocd-server-ingress\n  namespace: argocd\n  annotations:\n    nginx.ingress.kubernetes.io/force-ssl-redirect: \"true\"\n    nginx.ingress.kubernetes.io/ssl-passthrough: \"true\"\nspec:\n  ingressClassName: \"nginx\"\n  rules:\n    - host: argocd.{{ .IngressHost }}\n      http:\n        paths:\n          - path: /\n            pathType: Prefix\n            backend:\n              service:\n                name: argocd-server\n                port:\n                  name: https\n{{- if ne .IngressHost .Host }}\n    - host: argocd.{{ .Host }}\n      http:\n        paths:\n          - path: /\n            pathType: Prefix\n            backend:\n              service:\n                name: argocd-server\n                port:\n                  name: https\n{{ end }}\n{{ end }}\n"
  },
  {
    "path": "pkg/controllers/localbuild/resources/argo/install.yaml",
    "content": "# UCP ARGO INSTALL RESOURCES\n# This file is auto-generated with 'hack/argo-cd/generate-manifests.sh'\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app.kubernetes.io/name: applications.argoproj.io\n    app.kubernetes.io/part-of: argocd\n  name: applications.argoproj.io\nspec:\n  group: argoproj.io\n  names:\n    kind: Application\n    listKind: ApplicationList\n    plural: applications\n    shortNames:\n    - app\n    - apps\n    singular: application\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - jsonPath: .status.sync.status\n      name: Sync Status\n      type: string\n    - jsonPath: .status.health.status\n      name: Health Status\n      type: string\n    - jsonPath: .status.sync.revision\n      name: Revision\n      priority: 10\n      type: string\n    - jsonPath: .spec.project\n      name: Project\n      priority: 10\n      type: string\n    name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: Application is a definition of Application resource.\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          operation:\n            description: Operation contains information about a requested or running\n              operation\n            properties:\n              info:\n                description: Info is a list of informational items for this operation\n                items:\n                  properties:\n                    name:\n                      type: string\n                    value:\n                      type: string\n                  required:\n                  - name\n                  - value\n                  type: object\n                type: array\n              initiatedBy:\n                description: InitiatedBy contains information about who initiated\n                  the operations\n                properties:\n                  automated:\n                    description: Automated is set to true if operation was initiated\n                      automatically by the application controller.\n                    type: boolean\n                  username:\n                    description: Username contains the name of a user who started\n                      operation\n                    type: string\n                type: object\n              retry:\n                description: Retry controls the strategy to apply if a sync fails\n                properties:\n                  backoff:\n                    description: Backoff controls how to backoff on subsequent retries\n                      of failed syncs\n                    properties:\n                      duration:\n                        description: Duration is the amount to back off. Default unit\n                          is seconds, but could also be a duration (e.g. \"2m\", \"1h\")\n                        type: string\n                      factor:\n                        description: Factor is a factor to multiply the base duration\n                          after each failed retry\n                        format: int64\n                        type: integer\n                      maxDuration:\n                        description: MaxDuration is the maximum amount of time allowed\n                          for the backoff strategy\n                        type: string\n                    type: object\n                  limit:\n                    description: Limit is the maximum number of attempts for retrying\n                      a failed sync. If set to 0, no retries will be performed.\n                    format: int64\n                    type: integer\n                type: object\n              sync:\n                description: Sync contains parameters for the operation\n                properties:\n                  autoHealAttemptsCount:\n                    description: SelfHealAttemptsCount contains the number of auto-heal\n                      attempts\n                    format: int64\n                    type: integer\n                  dryRun:\n                    description: DryRun specifies to perform a `kubectl apply --dry-run`\n                      without actually performing the sync\n                    type: boolean\n                  manifests:\n                    description: Manifests is an optional field that overrides sync\n                      source with a local directory for development\n                    items:\n                      type: string\n                    type: array\n                  prune:\n                    description: Prune specifies to delete resources from the cluster\n                      that are no longer tracked in git\n                    type: boolean\n                  resources:\n                    description: Resources describes which resources shall be part\n                      of the sync\n                    items:\n                      description: SyncOperationResource contains resources to sync.\n                      properties:\n                        group:\n                          type: string\n                        kind:\n                          type: string\n                        name:\n                          type: string\n                        namespace:\n                          type: string\n                      required:\n                      - kind\n                      - name\n                      type: object\n                    type: array\n                  revision:\n                    description: |-\n                      Revision is the revision (Git) or chart version (Helm) which to sync the application to\n                      If omitted, will use the revision specified in app spec.\n                    type: string\n                  revisions:\n                    description: |-\n                      Revisions is the list of revision (Git) or chart version (Helm) which to sync each source in sources field for the application to\n                      If omitted, will use the revision specified in app spec.\n                    items:\n                      type: string\n                    type: array\n                  source:\n                    description: |-\n                      Source overrides the source definition set in the application.\n                      This is typically set in a Rollback operation and is nil during a Sync operation\n                    properties:\n                      chart:\n                        description: Chart is a Helm chart name, and must be specified\n                          for applications sourced from a Helm repo.\n                        type: string\n                      directory:\n                        description: Directory holds path/directory specific options\n                        properties:\n                          exclude:\n                            description: Exclude contains a glob pattern to match\n                              paths against that should be explicitly excluded from\n                              being used during manifest generation\n                            type: string\n                          include:\n                            description: Include contains a glob pattern to match\n                              paths against that should be explicitly included during\n                              manifest generation\n                            type: string\n                          jsonnet:\n                            description: Jsonnet holds options specific to Jsonnet\n                            properties:\n                              extVars:\n                                description: ExtVars is a list of Jsonnet External\n                                  Variables\n                                items:\n                                  description: JsonnetVar represents a variable to\n                                    be passed to jsonnet during manifest generation\n                                  properties:\n                                    code:\n                                      type: boolean\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              libs:\n                                description: Additional library search dirs\n                                items:\n                                  type: string\n                                type: array\n                              tlas:\n                                description: TLAS is a list of Jsonnet Top-level Arguments\n                                items:\n                                  description: JsonnetVar represents a variable to\n                                    be passed to jsonnet during manifest generation\n                                  properties:\n                                    code:\n                                      type: boolean\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                            type: object\n                          recurse:\n                            description: Recurse specifies whether to scan a directory\n                              recursively for manifests\n                            type: boolean\n                        type: object\n                      helm:\n                        description: Helm holds helm specific options\n                        properties:\n                          apiVersions:\n                            description: |-\n                              APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                              Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                            items:\n                              type: string\n                            type: array\n                          fileParameters:\n                            description: FileParameters are file parameters to the\n                              helm template\n                            items:\n                              description: HelmFileParameter is a file parameter that's\n                                passed to helm template during manifest generation\n                              properties:\n                                name:\n                                  description: Name is the name of the Helm parameter\n                                  type: string\n                                path:\n                                  description: Path is the path to the file containing\n                                    the values for the Helm parameter\n                                  type: string\n                              type: object\n                            type: array\n                          ignoreMissingValueFiles:\n                            description: IgnoreMissingValueFiles prevents helm template\n                              from failing when valueFiles do not exist locally by\n                              not appending them to helm template --values\n                            type: boolean\n                          kubeVersion:\n                            description: |-\n                              KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                              uses the Kubernetes version of the target cluster.\n                            type: string\n                          namespace:\n                            description: Namespace is an optional namespace to template\n                              with. If left empty, defaults to the app's destination\n                              namespace.\n                            type: string\n                          parameters:\n                            description: Parameters is a list of Helm parameters which\n                              are passed to the helm template command upon manifest\n                              generation\n                            items:\n                              description: HelmParameter is a parameter that's passed\n                                to helm template during manifest generation\n                              properties:\n                                forceString:\n                                  description: ForceString determines whether to tell\n                                    Helm to interpret booleans and numbers as strings\n                                  type: boolean\n                                name:\n                                  description: Name is the name of the Helm parameter\n                                  type: string\n                                value:\n                                  description: Value is the value for the Helm parameter\n                                  type: string\n                              type: object\n                            type: array\n                          passCredentials:\n                            description: PassCredentials pass credentials to all domains\n                              (Helm's --pass-credentials)\n                            type: boolean\n                          releaseName:\n                            description: ReleaseName is the Helm release name to use.\n                              If omitted it will use the application name\n                            type: string\n                          skipCrds:\n                            description: SkipCrds skips custom resource definition\n                              installation step (Helm's --skip-crds)\n                            type: boolean\n                          skipSchemaValidation:\n                            description: SkipSchemaValidation skips JSON schema validation\n                              (Helm's --skip-schema-validation)\n                            type: boolean\n                          skipTests:\n                            description: SkipTests skips test manifest installation\n                              step (Helm's --skip-tests).\n                            type: boolean\n                          valueFiles:\n                            description: ValuesFiles is a list of Helm value files\n                              to use when generating a template\n                            items:\n                              type: string\n                            type: array\n                          values:\n                            description: Values specifies Helm values to be passed\n                              to helm template, typically defined as a block. ValuesObject\n                              takes precedence over Values, so use one or the other.\n                            type: string\n                          valuesObject:\n                            description: ValuesObject specifies Helm values to be\n                              passed to helm template, defined as a map. This takes\n                              precedence over Values.\n                            type: object\n                            x-kubernetes-preserve-unknown-fields: true\n                          version:\n                            description: Version is the Helm version to use for templating\n                              (\"3\")\n                            type: string\n                        type: object\n                      kustomize:\n                        description: Kustomize holds kustomize specific options\n                        properties:\n                          apiVersions:\n                            description: |-\n                              APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                              Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                            items:\n                              type: string\n                            type: array\n                          commonAnnotations:\n                            additionalProperties:\n                              type: string\n                            description: CommonAnnotations is a list of additional\n                              annotations to add to rendered manifests\n                            type: object\n                          commonAnnotationsEnvsubst:\n                            description: CommonAnnotationsEnvsubst specifies whether\n                              to apply env variables substitution for annotation values\n                            type: boolean\n                          commonLabels:\n                            additionalProperties:\n                              type: string\n                            description: CommonLabels is a list of additional labels\n                              to add to rendered manifests\n                            type: object\n                          components:\n                            description: Components specifies a list of kustomize\n                              components to add to the kustomization before building\n                            items:\n                              type: string\n                            type: array\n                          forceCommonAnnotations:\n                            description: ForceCommonAnnotations specifies whether\n                              to force applying common annotations to resources for\n                              Kustomize apps\n                            type: boolean\n                          forceCommonLabels:\n                            description: ForceCommonLabels specifies whether to force\n                              applying common labels to resources for Kustomize apps\n                            type: boolean\n                          ignoreMissingComponents:\n                            description: IgnoreMissingComponents prevents kustomize\n                              from failing when components do not exist locally by\n                              not appending them to kustomization file\n                            type: boolean\n                          images:\n                            description: Images is a list of Kustomize image override\n                              specifications\n                            items:\n                              description: KustomizeImage represents a Kustomize image\n                                definition in the format [old_image_name=]<image_name>:<image_tag>\n                              type: string\n                            type: array\n                          kubeVersion:\n                            description: |-\n                              KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                              uses the Kubernetes version of the target cluster.\n                            type: string\n                          labelIncludeTemplates:\n                            description: LabelIncludeTemplates specifies whether to\n                              apply common labels to resource templates or not\n                            type: boolean\n                          labelWithoutSelector:\n                            description: LabelWithoutSelector specifies whether to\n                              apply common labels to resource selectors or not\n                            type: boolean\n                          namePrefix:\n                            description: NamePrefix is a prefix appended to resources\n                              for Kustomize apps\n                            type: string\n                          nameSuffix:\n                            description: NameSuffix is a suffix appended to resources\n                              for Kustomize apps\n                            type: string\n                          namespace:\n                            description: Namespace sets the namespace that Kustomize\n                              adds to all resources\n                            type: string\n                          patches:\n                            description: Patches is a list of Kustomize patches\n                            items:\n                              properties:\n                                options:\n                                  additionalProperties:\n                                    type: boolean\n                                  type: object\n                                patch:\n                                  type: string\n                                path:\n                                  type: string\n                                target:\n                                  properties:\n                                    annotationSelector:\n                                      type: string\n                                    group:\n                                      type: string\n                                    kind:\n                                      type: string\n                                    labelSelector:\n                                      type: string\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    version:\n                                      type: string\n                                  type: object\n                              type: object\n                            type: array\n                          replicas:\n                            description: Replicas is a list of Kustomize Replicas\n                              override specifications\n                            items:\n                              properties:\n                                count:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number of replicas\n                                  x-kubernetes-int-or-string: true\n                                name:\n                                  description: Name of Deployment or StatefulSet\n                                  type: string\n                              required:\n                              - count\n                              - name\n                              type: object\n                            type: array\n                          version:\n                            description: Version controls which version of Kustomize\n                              to use for rendering manifests\n                            type: string\n                        type: object\n                      name:\n                        description: Name is used to refer to a source and is displayed\n                          in the UI. It is used in multi-source Applications.\n                        type: string\n                      path:\n                        description: Path is a directory path within the Git repository,\n                          and is only valid for applications sourced from Git.\n                        type: string\n                      plugin:\n                        description: Plugin holds config management plugin specific\n                          options\n                        properties:\n                          env:\n                            description: Env is a list of environment variable entries\n                            items:\n                              description: EnvEntry represents an entry in the application's\n                                environment\n                              properties:\n                                name:\n                                  description: Name is the name of the variable, usually\n                                    expressed in uppercase\n                                  type: string\n                                value:\n                                  description: Value is the value of the variable\n                                  type: string\n                              required:\n                              - name\n                              - value\n                              type: object\n                            type: array\n                          name:\n                            type: string\n                          parameters:\n                            items:\n                              properties:\n                                array:\n                                  description: Array is the value of an array type\n                                    parameter.\n                                  items:\n                                    type: string\n                                  type: array\n                                map:\n                                  additionalProperties:\n                                    type: string\n                                  description: Map is the value of a map type parameter.\n                                  type: object\n                                name:\n                                  description: Name is the name identifying a parameter.\n                                  type: string\n                                string:\n                                  description: String_ is the value of a string type\n                                    parameter.\n                                  type: string\n                              type: object\n                            type: array\n                        type: object\n                      ref:\n                        description: Ref is reference to another source within sources\n                          field. This field will not be used if used with a `source`\n                          tag.\n                        type: string\n                      repoURL:\n                        description: RepoURL is the URL to the repository (Git or\n                          Helm) that contains the application manifests\n                        type: string\n                      targetRevision:\n                        description: |-\n                          TargetRevision defines the revision of the source to sync the application to.\n                          In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                          In case of Helm, this is a semver tag for the Chart's version.\n                        type: string\n                    required:\n                    - repoURL\n                    type: object\n                  sources:\n                    description: |-\n                      Sources overrides the source definition set in the application.\n                      This is typically set in a Rollback operation and is nil during a Sync operation\n                    items:\n                      description: ApplicationSource contains all required information\n                        about the source of an application\n                      properties:\n                        chart:\n                          description: Chart is a Helm chart name, and must be specified\n                            for applications sourced from a Helm repo.\n                          type: string\n                        directory:\n                          description: Directory holds path/directory specific options\n                          properties:\n                            exclude:\n                              description: Exclude contains a glob pattern to match\n                                paths against that should be explicitly excluded from\n                                being used during manifest generation\n                              type: string\n                            include:\n                              description: Include contains a glob pattern to match\n                                paths against that should be explicitly included during\n                                manifest generation\n                              type: string\n                            jsonnet:\n                              description: Jsonnet holds options specific to Jsonnet\n                              properties:\n                                extVars:\n                                  description: ExtVars is a list of Jsonnet External\n                                    Variables\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                libs:\n                                  description: Additional library search dirs\n                                  items:\n                                    type: string\n                                  type: array\n                                tlas:\n                                  description: TLAS is a list of Jsonnet Top-level\n                                    Arguments\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                              type: object\n                            recurse:\n                              description: Recurse specifies whether to scan a directory\n                                recursively for manifests\n                              type: boolean\n                          type: object\n                        helm:\n                          description: Helm holds helm specific options\n                          properties:\n                            apiVersions:\n                              description: |-\n                                APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                              items:\n                                type: string\n                              type: array\n                            fileParameters:\n                              description: FileParameters are file parameters to the\n                                helm template\n                              items:\n                                description: HelmFileParameter is a file parameter\n                                  that's passed to helm template during manifest generation\n                                properties:\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  path:\n                                    description: Path is the path to the file containing\n                                      the values for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            ignoreMissingValueFiles:\n                              description: IgnoreMissingValueFiles prevents helm template\n                                from failing when valueFiles do not exist locally\n                                by not appending them to helm template --values\n                              type: boolean\n                            kubeVersion:\n                              description: |-\n                                KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                uses the Kubernetes version of the target cluster.\n                              type: string\n                            namespace:\n                              description: Namespace is an optional namespace to template\n                                with. If left empty, defaults to the app's destination\n                                namespace.\n                              type: string\n                            parameters:\n                              description: Parameters is a list of Helm parameters\n                                which are passed to the helm template command upon\n                                manifest generation\n                              items:\n                                description: HelmParameter is a parameter that's passed\n                                  to helm template during manifest generation\n                                properties:\n                                  forceString:\n                                    description: ForceString determines whether to\n                                      tell Helm to interpret booleans and numbers\n                                      as strings\n                                    type: boolean\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  value:\n                                    description: Value is the value for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            passCredentials:\n                              description: PassCredentials pass credentials to all\n                                domains (Helm's --pass-credentials)\n                              type: boolean\n                            releaseName:\n                              description: ReleaseName is the Helm release name to\n                                use. If omitted it will use the application name\n                              type: string\n                            skipCrds:\n                              description: SkipCrds skips custom resource definition\n                                installation step (Helm's --skip-crds)\n                              type: boolean\n                            skipSchemaValidation:\n                              description: SkipSchemaValidation skips JSON schema\n                                validation (Helm's --skip-schema-validation)\n                              type: boolean\n                            skipTests:\n                              description: SkipTests skips test manifest installation\n                                step (Helm's --skip-tests).\n                              type: boolean\n                            valueFiles:\n                              description: ValuesFiles is a list of Helm value files\n                                to use when generating a template\n                              items:\n                                type: string\n                              type: array\n                            values:\n                              description: Values specifies Helm values to be passed\n                                to helm template, typically defined as a block. ValuesObject\n                                takes precedence over Values, so use one or the other.\n                              type: string\n                            valuesObject:\n                              description: ValuesObject specifies Helm values to be\n                                passed to helm template, defined as a map. This takes\n                                precedence over Values.\n                              type: object\n                              x-kubernetes-preserve-unknown-fields: true\n                            version:\n                              description: Version is the Helm version to use for\n                                templating (\"3\")\n                              type: string\n                          type: object\n                        kustomize:\n                          description: Kustomize holds kustomize specific options\n                          properties:\n                            apiVersions:\n                              description: |-\n                                APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                              items:\n                                type: string\n                              type: array\n                            commonAnnotations:\n                              additionalProperties:\n                                type: string\n                              description: CommonAnnotations is a list of additional\n                                annotations to add to rendered manifests\n                              type: object\n                            commonAnnotationsEnvsubst:\n                              description: CommonAnnotationsEnvsubst specifies whether\n                                to apply env variables substitution for annotation\n                                values\n                              type: boolean\n                            commonLabels:\n                              additionalProperties:\n                                type: string\n                              description: CommonLabels is a list of additional labels\n                                to add to rendered manifests\n                              type: object\n                            components:\n                              description: Components specifies a list of kustomize\n                                components to add to the kustomization before building\n                              items:\n                                type: string\n                              type: array\n                            forceCommonAnnotations:\n                              description: ForceCommonAnnotations specifies whether\n                                to force applying common annotations to resources\n                                for Kustomize apps\n                              type: boolean\n                            forceCommonLabels:\n                              description: ForceCommonLabels specifies whether to\n                                force applying common labels to resources for Kustomize\n                                apps\n                              type: boolean\n                            ignoreMissingComponents:\n                              description: IgnoreMissingComponents prevents kustomize\n                                from failing when components do not exist locally\n                                by not appending them to kustomization file\n                              type: boolean\n                            images:\n                              description: Images is a list of Kustomize image override\n                                specifications\n                              items:\n                                description: KustomizeImage represents a Kustomize\n                                  image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                type: string\n                              type: array\n                            kubeVersion:\n                              description: |-\n                                KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                uses the Kubernetes version of the target cluster.\n                              type: string\n                            labelIncludeTemplates:\n                              description: LabelIncludeTemplates specifies whether\n                                to apply common labels to resource templates or not\n                              type: boolean\n                            labelWithoutSelector:\n                              description: LabelWithoutSelector specifies whether\n                                to apply common labels to resource selectors or not\n                              type: boolean\n                            namePrefix:\n                              description: NamePrefix is a prefix appended to resources\n                                for Kustomize apps\n                              type: string\n                            nameSuffix:\n                              description: NameSuffix is a suffix appended to resources\n                                for Kustomize apps\n                              type: string\n                            namespace:\n                              description: Namespace sets the namespace that Kustomize\n                                adds to all resources\n                              type: string\n                            patches:\n                              description: Patches is a list of Kustomize patches\n                              items:\n                                properties:\n                                  options:\n                                    additionalProperties:\n                                      type: boolean\n                                    type: object\n                                  patch:\n                                    type: string\n                                  path:\n                                    type: string\n                                  target:\n                                    properties:\n                                      annotationSelector:\n                                        type: string\n                                      group:\n                                        type: string\n                                      kind:\n                                        type: string\n                                      labelSelector:\n                                        type: string\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                      version:\n                                        type: string\n                                    type: object\n                                type: object\n                              type: array\n                            replicas:\n                              description: Replicas is a list of Kustomize Replicas\n                                override specifications\n                              items:\n                                properties:\n                                  count:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Number of replicas\n                                    x-kubernetes-int-or-string: true\n                                  name:\n                                    description: Name of Deployment or StatefulSet\n                                    type: string\n                                required:\n                                - count\n                                - name\n                                type: object\n                              type: array\n                            version:\n                              description: Version controls which version of Kustomize\n                                to use for rendering manifests\n                              type: string\n                          type: object\n                        name:\n                          description: Name is used to refer to a source and is displayed\n                            in the UI. It is used in multi-source Applications.\n                          type: string\n                        path:\n                          description: Path is a directory path within the Git repository,\n                            and is only valid for applications sourced from Git.\n                          type: string\n                        plugin:\n                          description: Plugin holds config management plugin specific\n                            options\n                          properties:\n                            env:\n                              description: Env is a list of environment variable entries\n                              items:\n                                description: EnvEntry represents an entry in the application's\n                                  environment\n                                properties:\n                                  name:\n                                    description: Name is the name of the variable,\n                                      usually expressed in uppercase\n                                    type: string\n                                  value:\n                                    description: Value is the value of the variable\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            name:\n                              type: string\n                            parameters:\n                              items:\n                                properties:\n                                  array:\n                                    description: Array is the value of an array type\n                                      parameter.\n                                    items:\n                                      type: string\n                                    type: array\n                                  map:\n                                    additionalProperties:\n                                      type: string\n                                    description: Map is the value of a map type parameter.\n                                    type: object\n                                  name:\n                                    description: Name is the name identifying a parameter.\n                                    type: string\n                                  string:\n                                    description: String_ is the value of a string\n                                      type parameter.\n                                    type: string\n                                type: object\n                              type: array\n                          type: object\n                        ref:\n                          description: Ref is reference to another source within sources\n                            field. This field will not be used if used with a `source`\n                            tag.\n                          type: string\n                        repoURL:\n                          description: RepoURL is the URL to the repository (Git or\n                            Helm) that contains the application manifests\n                          type: string\n                        targetRevision:\n                          description: |-\n                            TargetRevision defines the revision of the source to sync the application to.\n                            In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                            In case of Helm, this is a semver tag for the Chart's version.\n                          type: string\n                      required:\n                      - repoURL\n                      type: object\n                    type: array\n                  syncOptions:\n                    description: SyncOptions provide per-sync sync-options, e.g. Validate=false\n                    items:\n                      type: string\n                    type: array\n                  syncStrategy:\n                    description: SyncStrategy describes how to perform the sync\n                    properties:\n                      apply:\n                        description: Apply will perform a `kubectl apply` to perform\n                          the sync.\n                        properties:\n                          force:\n                            description: |-\n                              Force indicates whether or not to supply the --force flag to `kubectl apply`.\n                              The --force flag deletes and re-create the resource, when PATCH encounters conflict and has\n                              retried for 5 times.\n                            type: boolean\n                        type: object\n                      hook:\n                        description: Hook will submit any referenced resources to\n                          perform the sync. This is the default strategy\n                        properties:\n                          force:\n                            description: |-\n                              Force indicates whether or not to supply the --force flag to `kubectl apply`.\n                              The --force flag deletes and re-create the resource, when PATCH encounters conflict and has\n                              retried for 5 times.\n                            type: boolean\n                        type: object\n                    type: object\n                type: object\n            type: object\n          spec:\n            description: ApplicationSpec represents desired application state. Contains\n              link to repository with application definition and additional parameters\n              link definition revision.\n            properties:\n              destination:\n                description: Destination is a reference to the target Kubernetes server\n                  and namespace\n                properties:\n                  name:\n                    description: Name is an alternate way of specifying the target\n                      cluster by its symbolic name. This must be set if Server is\n                      not set.\n                    type: string\n                  namespace:\n                    description: |-\n                      Namespace specifies the target namespace for the application's resources.\n                      The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace\n                    type: string\n                  server:\n                    description: Server specifies the URL of the target cluster's\n                      Kubernetes control plane API. This must be set if Name is not\n                      set.\n                    type: string\n                type: object\n              ignoreDifferences:\n                description: IgnoreDifferences is a list of resources and their fields\n                  which should be ignored during comparison\n                items:\n                  description: ResourceIgnoreDifferences contains resource filter\n                    and list of json paths which should be ignored during comparison\n                    with live state.\n                  properties:\n                    group:\n                      type: string\n                    jqPathExpressions:\n                      items:\n                        type: string\n                      type: array\n                    jsonPointers:\n                      items:\n                        type: string\n                      type: array\n                    kind:\n                      type: string\n                    managedFieldsManagers:\n                      description: |-\n                        ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the\n                        desired state defined in the SCM and won't be displayed in diffs\n                      items:\n                        type: string\n                      type: array\n                    name:\n                      type: string\n                    namespace:\n                      type: string\n                  required:\n                  - kind\n                  type: object\n                type: array\n              info:\n                description: Info contains a list of information (URLs, email addresses,\n                  and plain text) that relates to the application\n                items:\n                  properties:\n                    name:\n                      type: string\n                    value:\n                      type: string\n                  required:\n                  - name\n                  - value\n                  type: object\n                type: array\n              project:\n                description: |-\n                  Project is a reference to the project this application belongs to.\n                  The empty string means that application belongs to the 'default' project.\n                type: string\n              revisionHistoryLimit:\n                description: |-\n                  RevisionHistoryLimit limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions.\n                  This should only be changed in exceptional circumstances.\n                  Setting to zero will store no history. This will reduce storage used.\n                  Increasing will increase the space used to store the history, so we do not recommend increasing it.\n                  Default is 10.\n                format: int64\n                type: integer\n              source:\n                description: Source is a reference to the location of the application's\n                  manifests or chart\n                properties:\n                  chart:\n                    description: Chart is a Helm chart name, and must be specified\n                      for applications sourced from a Helm repo.\n                    type: string\n                  directory:\n                    description: Directory holds path/directory specific options\n                    properties:\n                      exclude:\n                        description: Exclude contains a glob pattern to match paths\n                          against that should be explicitly excluded from being used\n                          during manifest generation\n                        type: string\n                      include:\n                        description: Include contains a glob pattern to match paths\n                          against that should be explicitly included during manifest\n                          generation\n                        type: string\n                      jsonnet:\n                        description: Jsonnet holds options specific to Jsonnet\n                        properties:\n                          extVars:\n                            description: ExtVars is a list of Jsonnet External Variables\n                            items:\n                              description: JsonnetVar represents a variable to be\n                                passed to jsonnet during manifest generation\n                              properties:\n                                code:\n                                  type: boolean\n                                name:\n                                  type: string\n                                value:\n                                  type: string\n                              required:\n                              - name\n                              - value\n                              type: object\n                            type: array\n                          libs:\n                            description: Additional library search dirs\n                            items:\n                              type: string\n                            type: array\n                          tlas:\n                            description: TLAS is a list of Jsonnet Top-level Arguments\n                            items:\n                              description: JsonnetVar represents a variable to be\n                                passed to jsonnet during manifest generation\n                              properties:\n                                code:\n                                  type: boolean\n                                name:\n                                  type: string\n                                value:\n                                  type: string\n                              required:\n                              - name\n                              - value\n                              type: object\n                            type: array\n                        type: object\n                      recurse:\n                        description: Recurse specifies whether to scan a directory\n                          recursively for manifests\n                        type: boolean\n                    type: object\n                  helm:\n                    description: Helm holds helm specific options\n                    properties:\n                      apiVersions:\n                        description: |-\n                          APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                          Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                        items:\n                          type: string\n                        type: array\n                      fileParameters:\n                        description: FileParameters are file parameters to the helm\n                          template\n                        items:\n                          description: HelmFileParameter is a file parameter that's\n                            passed to helm template during manifest generation\n                          properties:\n                            name:\n                              description: Name is the name of the Helm parameter\n                              type: string\n                            path:\n                              description: Path is the path to the file containing\n                                the values for the Helm parameter\n                              type: string\n                          type: object\n                        type: array\n                      ignoreMissingValueFiles:\n                        description: IgnoreMissingValueFiles prevents helm template\n                          from failing when valueFiles do not exist locally by not\n                          appending them to helm template --values\n                        type: boolean\n                      kubeVersion:\n                        description: |-\n                          KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                          uses the Kubernetes version of the target cluster.\n                        type: string\n                      namespace:\n                        description: Namespace is an optional namespace to template\n                          with. If left empty, defaults to the app's destination namespace.\n                        type: string\n                      parameters:\n                        description: Parameters is a list of Helm parameters which\n                          are passed to the helm template command upon manifest generation\n                        items:\n                          description: HelmParameter is a parameter that's passed\n                            to helm template during manifest generation\n                          properties:\n                            forceString:\n                              description: ForceString determines whether to tell\n                                Helm to interpret booleans and numbers as strings\n                              type: boolean\n                            name:\n                              description: Name is the name of the Helm parameter\n                              type: string\n                            value:\n                              description: Value is the value for the Helm parameter\n                              type: string\n                          type: object\n                        type: array\n                      passCredentials:\n                        description: PassCredentials pass credentials to all domains\n                          (Helm's --pass-credentials)\n                        type: boolean\n                      releaseName:\n                        description: ReleaseName is the Helm release name to use.\n                          If omitted it will use the application name\n                        type: string\n                      skipCrds:\n                        description: SkipCrds skips custom resource definition installation\n                          step (Helm's --skip-crds)\n                        type: boolean\n                      skipSchemaValidation:\n                        description: SkipSchemaValidation skips JSON schema validation\n                          (Helm's --skip-schema-validation)\n                        type: boolean\n                      skipTests:\n                        description: SkipTests skips test manifest installation step\n                          (Helm's --skip-tests).\n                        type: boolean\n                      valueFiles:\n                        description: ValuesFiles is a list of Helm value files to\n                          use when generating a template\n                        items:\n                          type: string\n                        type: array\n                      values:\n                        description: Values specifies Helm values to be passed to\n                          helm template, typically defined as a block. ValuesObject\n                          takes precedence over Values, so use one or the other.\n                        type: string\n                      valuesObject:\n                        description: ValuesObject specifies Helm values to be passed\n                          to helm template, defined as a map. This takes precedence\n                          over Values.\n                        type: object\n                        x-kubernetes-preserve-unknown-fields: true\n                      version:\n                        description: Version is the Helm version to use for templating\n                          (\"3\")\n                        type: string\n                    type: object\n                  kustomize:\n                    description: Kustomize holds kustomize specific options\n                    properties:\n                      apiVersions:\n                        description: |-\n                          APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                          Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                        items:\n                          type: string\n                        type: array\n                      commonAnnotations:\n                        additionalProperties:\n                          type: string\n                        description: CommonAnnotations is a list of additional annotations\n                          to add to rendered manifests\n                        type: object\n                      commonAnnotationsEnvsubst:\n                        description: CommonAnnotationsEnvsubst specifies whether to\n                          apply env variables substitution for annotation values\n                        type: boolean\n                      commonLabels:\n                        additionalProperties:\n                          type: string\n                        description: CommonLabels is a list of additional labels to\n                          add to rendered manifests\n                        type: object\n                      components:\n                        description: Components specifies a list of kustomize components\n                          to add to the kustomization before building\n                        items:\n                          type: string\n                        type: array\n                      forceCommonAnnotations:\n                        description: ForceCommonAnnotations specifies whether to force\n                          applying common annotations to resources for Kustomize apps\n                        type: boolean\n                      forceCommonLabels:\n                        description: ForceCommonLabels specifies whether to force\n                          applying common labels to resources for Kustomize apps\n                        type: boolean\n                      ignoreMissingComponents:\n                        description: IgnoreMissingComponents prevents kustomize from\n                          failing when components do not exist locally by not appending\n                          them to kustomization file\n                        type: boolean\n                      images:\n                        description: Images is a list of Kustomize image override\n                          specifications\n                        items:\n                          description: KustomizeImage represents a Kustomize image\n                            definition in the format [old_image_name=]<image_name>:<image_tag>\n                          type: string\n                        type: array\n                      kubeVersion:\n                        description: |-\n                          KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                          uses the Kubernetes version of the target cluster.\n                        type: string\n                      labelIncludeTemplates:\n                        description: LabelIncludeTemplates specifies whether to apply\n                          common labels to resource templates or not\n                        type: boolean\n                      labelWithoutSelector:\n                        description: LabelWithoutSelector specifies whether to apply\n                          common labels to resource selectors or not\n                        type: boolean\n                      namePrefix:\n                        description: NamePrefix is a prefix appended to resources\n                          for Kustomize apps\n                        type: string\n                      nameSuffix:\n                        description: NameSuffix is a suffix appended to resources\n                          for Kustomize apps\n                        type: string\n                      namespace:\n                        description: Namespace sets the namespace that Kustomize adds\n                          to all resources\n                        type: string\n                      patches:\n                        description: Patches is a list of Kustomize patches\n                        items:\n                          properties:\n                            options:\n                              additionalProperties:\n                                type: boolean\n                              type: object\n                            patch:\n                              type: string\n                            path:\n                              type: string\n                            target:\n                              properties:\n                                annotationSelector:\n                                  type: string\n                                group:\n                                  type: string\n                                kind:\n                                  type: string\n                                labelSelector:\n                                  type: string\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                                version:\n                                  type: string\n                              type: object\n                          type: object\n                        type: array\n                      replicas:\n                        description: Replicas is a list of Kustomize Replicas override\n                          specifications\n                        items:\n                          properties:\n                            count:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number of replicas\n                              x-kubernetes-int-or-string: true\n                            name:\n                              description: Name of Deployment or StatefulSet\n                              type: string\n                          required:\n                          - count\n                          - name\n                          type: object\n                        type: array\n                      version:\n                        description: Version controls which version of Kustomize to\n                          use for rendering manifests\n                        type: string\n                    type: object\n                  name:\n                    description: Name is used to refer to a source and is displayed\n                      in the UI. It is used in multi-source Applications.\n                    type: string\n                  path:\n                    description: Path is a directory path within the Git repository,\n                      and is only valid for applications sourced from Git.\n                    type: string\n                  plugin:\n                    description: Plugin holds config management plugin specific options\n                    properties:\n                      env:\n                        description: Env is a list of environment variable entries\n                        items:\n                          description: EnvEntry represents an entry in the application's\n                            environment\n                          properties:\n                            name:\n                              description: Name is the name of the variable, usually\n                                expressed in uppercase\n                              type: string\n                            value:\n                              description: Value is the value of the variable\n                              type: string\n                          required:\n                          - name\n                          - value\n                          type: object\n                        type: array\n                      name:\n                        type: string\n                      parameters:\n                        items:\n                          properties:\n                            array:\n                              description: Array is the value of an array type parameter.\n                              items:\n                                type: string\n                              type: array\n                            map:\n                              additionalProperties:\n                                type: string\n                              description: Map is the value of a map type parameter.\n                              type: object\n                            name:\n                              description: Name is the name identifying a parameter.\n                              type: string\n                            string:\n                              description: String_ is the value of a string type parameter.\n                              type: string\n                          type: object\n                        type: array\n                    type: object\n                  ref:\n                    description: Ref is reference to another source within sources\n                      field. This field will not be used if used with a `source` tag.\n                    type: string\n                  repoURL:\n                    description: RepoURL is the URL to the repository (Git or Helm)\n                      that contains the application manifests\n                    type: string\n                  targetRevision:\n                    description: |-\n                      TargetRevision defines the revision of the source to sync the application to.\n                      In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                      In case of Helm, this is a semver tag for the Chart's version.\n                    type: string\n                required:\n                - repoURL\n                type: object\n              sourceHydrator:\n                description: SourceHydrator provides a way to push hydrated manifests\n                  back to git before syncing them to the cluster.\n                properties:\n                  drySource:\n                    description: DrySource specifies where the dry \"don't repeat yourself\"\n                      manifest source lives.\n                    properties:\n                      path:\n                        description: Path is a directory path within the Git repository\n                          where the manifests are located\n                        type: string\n                      repoURL:\n                        description: RepoURL is the URL to the git repository that\n                          contains the application manifests\n                        type: string\n                      targetRevision:\n                        description: TargetRevision defines the revision of the source\n                          to hydrate\n                        type: string\n                    required:\n                    - path\n                    - repoURL\n                    - targetRevision\n                    type: object\n                  hydrateTo:\n                    description: |-\n                      HydrateTo specifies an optional \"staging\" location to push hydrated manifests to. An external system would then\n                      have to move manifests to the SyncSource, e.g. by pull request.\n                    properties:\n                      targetBranch:\n                        description: TargetBranch is the branch to which hydrated\n                          manifests should be committed\n                        type: string\n                    required:\n                    - targetBranch\n                    type: object\n                  syncSource:\n                    description: SyncSource specifies where to sync hydrated manifests\n                      from.\n                    properties:\n                      path:\n                        description: |-\n                          Path is a directory path within the git repository where hydrated manifests should be committed to and synced\n                          from. If hydrateTo is set, this is just the path from which hydrated manifests will be synced.\n                        type: string\n                      targetBranch:\n                        description: TargetBranch is the branch to which hydrated\n                          manifests should be committed\n                        type: string\n                    required:\n                    - path\n                    - targetBranch\n                    type: object\n                required:\n                - drySource\n                - syncSource\n                type: object\n              sources:\n                description: Sources is a reference to the location of the application's\n                  manifests or chart\n                items:\n                  description: ApplicationSource contains all required information\n                    about the source of an application\n                  properties:\n                    chart:\n                      description: Chart is a Helm chart name, and must be specified\n                        for applications sourced from a Helm repo.\n                      type: string\n                    directory:\n                      description: Directory holds path/directory specific options\n                      properties:\n                        exclude:\n                          description: Exclude contains a glob pattern to match paths\n                            against that should be explicitly excluded from being\n                            used during manifest generation\n                          type: string\n                        include:\n                          description: Include contains a glob pattern to match paths\n                            against that should be explicitly included during manifest\n                            generation\n                          type: string\n                        jsonnet:\n                          description: Jsonnet holds options specific to Jsonnet\n                          properties:\n                            extVars:\n                              description: ExtVars is a list of Jsonnet External Variables\n                              items:\n                                description: JsonnetVar represents a variable to be\n                                  passed to jsonnet during manifest generation\n                                properties:\n                                  code:\n                                    type: boolean\n                                  name:\n                                    type: string\n                                  value:\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            libs:\n                              description: Additional library search dirs\n                              items:\n                                type: string\n                              type: array\n                            tlas:\n                              description: TLAS is a list of Jsonnet Top-level Arguments\n                              items:\n                                description: JsonnetVar represents a variable to be\n                                  passed to jsonnet during manifest generation\n                                properties:\n                                  code:\n                                    type: boolean\n                                  name:\n                                    type: string\n                                  value:\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                          type: object\n                        recurse:\n                          description: Recurse specifies whether to scan a directory\n                            recursively for manifests\n                          type: boolean\n                      type: object\n                    helm:\n                      description: Helm holds helm specific options\n                      properties:\n                        apiVersions:\n                          description: |-\n                            APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                            Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                          items:\n                            type: string\n                          type: array\n                        fileParameters:\n                          description: FileParameters are file parameters to the helm\n                            template\n                          items:\n                            description: HelmFileParameter is a file parameter that's\n                              passed to helm template during manifest generation\n                            properties:\n                              name:\n                                description: Name is the name of the Helm parameter\n                                type: string\n                              path:\n                                description: Path is the path to the file containing\n                                  the values for the Helm parameter\n                                type: string\n                            type: object\n                          type: array\n                        ignoreMissingValueFiles:\n                          description: IgnoreMissingValueFiles prevents helm template\n                            from failing when valueFiles do not exist locally by not\n                            appending them to helm template --values\n                          type: boolean\n                        kubeVersion:\n                          description: |-\n                            KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                            uses the Kubernetes version of the target cluster.\n                          type: string\n                        namespace:\n                          description: Namespace is an optional namespace to template\n                            with. If left empty, defaults to the app's destination\n                            namespace.\n                          type: string\n                        parameters:\n                          description: Parameters is a list of Helm parameters which\n                            are passed to the helm template command upon manifest\n                            generation\n                          items:\n                            description: HelmParameter is a parameter that's passed\n                              to helm template during manifest generation\n                            properties:\n                              forceString:\n                                description: ForceString determines whether to tell\n                                  Helm to interpret booleans and numbers as strings\n                                type: boolean\n                              name:\n                                description: Name is the name of the Helm parameter\n                                type: string\n                              value:\n                                description: Value is the value for the Helm parameter\n                                type: string\n                            type: object\n                          type: array\n                        passCredentials:\n                          description: PassCredentials pass credentials to all domains\n                            (Helm's --pass-credentials)\n                          type: boolean\n                        releaseName:\n                          description: ReleaseName is the Helm release name to use.\n                            If omitted it will use the application name\n                          type: string\n                        skipCrds:\n                          description: SkipCrds skips custom resource definition installation\n                            step (Helm's --skip-crds)\n                          type: boolean\n                        skipSchemaValidation:\n                          description: SkipSchemaValidation skips JSON schema validation\n                            (Helm's --skip-schema-validation)\n                          type: boolean\n                        skipTests:\n                          description: SkipTests skips test manifest installation\n                            step (Helm's --skip-tests).\n                          type: boolean\n                        valueFiles:\n                          description: ValuesFiles is a list of Helm value files to\n                            use when generating a template\n                          items:\n                            type: string\n                          type: array\n                        values:\n                          description: Values specifies Helm values to be passed to\n                            helm template, typically defined as a block. ValuesObject\n                            takes precedence over Values, so use one or the other.\n                          type: string\n                        valuesObject:\n                          description: ValuesObject specifies Helm values to be passed\n                            to helm template, defined as a map. This takes precedence\n                            over Values.\n                          type: object\n                          x-kubernetes-preserve-unknown-fields: true\n                        version:\n                          description: Version is the Helm version to use for templating\n                            (\"3\")\n                          type: string\n                      type: object\n                    kustomize:\n                      description: Kustomize holds kustomize specific options\n                      properties:\n                        apiVersions:\n                          description: |-\n                            APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                            Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                          items:\n                            type: string\n                          type: array\n                        commonAnnotations:\n                          additionalProperties:\n                            type: string\n                          description: CommonAnnotations is a list of additional annotations\n                            to add to rendered manifests\n                          type: object\n                        commonAnnotationsEnvsubst:\n                          description: CommonAnnotationsEnvsubst specifies whether\n                            to apply env variables substitution for annotation values\n                          type: boolean\n                        commonLabels:\n                          additionalProperties:\n                            type: string\n                          description: CommonLabels is a list of additional labels\n                            to add to rendered manifests\n                          type: object\n                        components:\n                          description: Components specifies a list of kustomize components\n                            to add to the kustomization before building\n                          items:\n                            type: string\n                          type: array\n                        forceCommonAnnotations:\n                          description: ForceCommonAnnotations specifies whether to\n                            force applying common annotations to resources for Kustomize\n                            apps\n                          type: boolean\n                        forceCommonLabels:\n                          description: ForceCommonLabels specifies whether to force\n                            applying common labels to resources for Kustomize apps\n                          type: boolean\n                        ignoreMissingComponents:\n                          description: IgnoreMissingComponents prevents kustomize\n                            from failing when components do not exist locally by not\n                            appending them to kustomization file\n                          type: boolean\n                        images:\n                          description: Images is a list of Kustomize image override\n                            specifications\n                          items:\n                            description: KustomizeImage represents a Kustomize image\n                              definition in the format [old_image_name=]<image_name>:<image_tag>\n                            type: string\n                          type: array\n                        kubeVersion:\n                          description: |-\n                            KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                            uses the Kubernetes version of the target cluster.\n                          type: string\n                        labelIncludeTemplates:\n                          description: LabelIncludeTemplates specifies whether to\n                            apply common labels to resource templates or not\n                          type: boolean\n                        labelWithoutSelector:\n                          description: LabelWithoutSelector specifies whether to apply\n                            common labels to resource selectors or not\n                          type: boolean\n                        namePrefix:\n                          description: NamePrefix is a prefix appended to resources\n                            for Kustomize apps\n                          type: string\n                        nameSuffix:\n                          description: NameSuffix is a suffix appended to resources\n                            for Kustomize apps\n                          type: string\n                        namespace:\n                          description: Namespace sets the namespace that Kustomize\n                            adds to all resources\n                          type: string\n                        patches:\n                          description: Patches is a list of Kustomize patches\n                          items:\n                            properties:\n                              options:\n                                additionalProperties:\n                                  type: boolean\n                                type: object\n                              patch:\n                                type: string\n                              path:\n                                type: string\n                              target:\n                                properties:\n                                  annotationSelector:\n                                    type: string\n                                  group:\n                                    type: string\n                                  kind:\n                                    type: string\n                                  labelSelector:\n                                    type: string\n                                  name:\n                                    type: string\n                                  namespace:\n                                    type: string\n                                  version:\n                                    type: string\n                                type: object\n                            type: object\n                          type: array\n                        replicas:\n                          description: Replicas is a list of Kustomize Replicas override\n                            specifications\n                          items:\n                            properties:\n                              count:\n                                anyOf:\n                                - type: integer\n                                - type: string\n                                description: Number of replicas\n                                x-kubernetes-int-or-string: true\n                              name:\n                                description: Name of Deployment or StatefulSet\n                                type: string\n                            required:\n                            - count\n                            - name\n                            type: object\n                          type: array\n                        version:\n                          description: Version controls which version of Kustomize\n                            to use for rendering manifests\n                          type: string\n                      type: object\n                    name:\n                      description: Name is used to refer to a source and is displayed\n                        in the UI. It is used in multi-source Applications.\n                      type: string\n                    path:\n                      description: Path is a directory path within the Git repository,\n                        and is only valid for applications sourced from Git.\n                      type: string\n                    plugin:\n                      description: Plugin holds config management plugin specific\n                        options\n                      properties:\n                        env:\n                          description: Env is a list of environment variable entries\n                          items:\n                            description: EnvEntry represents an entry in the application's\n                              environment\n                            properties:\n                              name:\n                                description: Name is the name of the variable, usually\n                                  expressed in uppercase\n                                type: string\n                              value:\n                                description: Value is the value of the variable\n                                type: string\n                            required:\n                            - name\n                            - value\n                            type: object\n                          type: array\n                        name:\n                          type: string\n                        parameters:\n                          items:\n                            properties:\n                              array:\n                                description: Array is the value of an array type parameter.\n                                items:\n                                  type: string\n                                type: array\n                              map:\n                                additionalProperties:\n                                  type: string\n                                description: Map is the value of a map type parameter.\n                                type: object\n                              name:\n                                description: Name is the name identifying a parameter.\n                                type: string\n                              string:\n                                description: String_ is the value of a string type\n                                  parameter.\n                                type: string\n                            type: object\n                          type: array\n                      type: object\n                    ref:\n                      description: Ref is reference to another source within sources\n                        field. This field will not be used if used with a `source`\n                        tag.\n                      type: string\n                    repoURL:\n                      description: RepoURL is the URL to the repository (Git or Helm)\n                        that contains the application manifests\n                      type: string\n                    targetRevision:\n                      description: |-\n                        TargetRevision defines the revision of the source to sync the application to.\n                        In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                        In case of Helm, this is a semver tag for the Chart's version.\n                      type: string\n                  required:\n                  - repoURL\n                  type: object\n                type: array\n              syncPolicy:\n                description: SyncPolicy controls when and how a sync will be performed\n                properties:\n                  automated:\n                    description: Automated will keep an application synced to the\n                      target revision\n                    properties:\n                      allowEmpty:\n                        description: 'AllowEmpty allows apps have zero live resources\n                          (default: false)'\n                        type: boolean\n                      enabled:\n                        description: Enable allows apps to explicitly control automated\n                          sync\n                        type: boolean\n                      prune:\n                        description: 'Prune specifies whether to delete resources\n                          from the cluster that are not found in the sources anymore\n                          as part of automated sync (default: false)'\n                        type: boolean\n                      selfHeal:\n                        description: 'SelfHeal specifies whether to revert resources\n                          back to their desired state upon modification in the cluster\n                          (default: false)'\n                        type: boolean\n                    type: object\n                  managedNamespaceMetadata:\n                    description: ManagedNamespaceMetadata controls metadata in the\n                      given namespace (if CreateNamespace=true)\n                    properties:\n                      annotations:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      labels:\n                        additionalProperties:\n                          type: string\n                        type: object\n                    type: object\n                  retry:\n                    description: Retry controls failed sync retry behavior\n                    properties:\n                      backoff:\n                        description: Backoff controls how to backoff on subsequent\n                          retries of failed syncs\n                        properties:\n                          duration:\n                            description: Duration is the amount to back off. Default\n                              unit is seconds, but could also be a duration (e.g.\n                              \"2m\", \"1h\")\n                            type: string\n                          factor:\n                            description: Factor is a factor to multiply the base duration\n                              after each failed retry\n                            format: int64\n                            type: integer\n                          maxDuration:\n                            description: MaxDuration is the maximum amount of time\n                              allowed for the backoff strategy\n                            type: string\n                        type: object\n                      limit:\n                        description: Limit is the maximum number of attempts for retrying\n                          a failed sync. If set to 0, no retries will be performed.\n                        format: int64\n                        type: integer\n                    type: object\n                  syncOptions:\n                    description: Options allow you to specify whole app sync-options\n                    items:\n                      type: string\n                    type: array\n                type: object\n            required:\n            - destination\n            - project\n            type: object\n          status:\n            description: ApplicationStatus contains status information for the application\n            properties:\n              conditions:\n                description: Conditions is a list of currently observed application\n                  conditions\n                items:\n                  description: ApplicationCondition contains details about an application\n                    condition, which is usually an error or warning\n                  properties:\n                    lastTransitionTime:\n                      description: LastTransitionTime is the time the condition was\n                        last observed\n                      format: date-time\n                      type: string\n                    message:\n                      description: Message contains human-readable message indicating\n                        details about condition\n                      type: string\n                    type:\n                      description: Type is an application condition type\n                      type: string\n                  required:\n                  - message\n                  - type\n                  type: object\n                type: array\n              controllerNamespace:\n                description: ControllerNamespace indicates the namespace in which\n                  the application controller is located\n                type: string\n              health:\n                description: Health contains information about the application's current\n                  health status\n                properties:\n                  lastTransitionTime:\n                    description: LastTransitionTime is the time the HealthStatus was\n                      set or updated\n                    format: date-time\n                    type: string\n                  message:\n                    description: |-\n                      Message is a human-readable informational message describing the health status\n\n                      Deprecated: this field is not used and will be removed in a future release.\n                    type: string\n                  status:\n                    description: Status holds the status code of the application\n                    type: string\n                type: object\n              history:\n                description: History contains information about the application's\n                  sync history\n                items:\n                  description: RevisionHistory contains history information about\n                    a previous sync\n                  properties:\n                    deployStartedAt:\n                      description: DeployStartedAt holds the time the sync operation\n                        started\n                      format: date-time\n                      type: string\n                    deployedAt:\n                      description: DeployedAt holds the time the sync operation completed\n                      format: date-time\n                      type: string\n                    id:\n                      description: ID is an auto incrementing identifier of the RevisionHistory\n                      format: int64\n                      type: integer\n                    initiatedBy:\n                      description: InitiatedBy contains information about who initiated\n                        the operations\n                      properties:\n                        automated:\n                          description: Automated is set to true if operation was initiated\n                            automatically by the application controller.\n                          type: boolean\n                        username:\n                          description: Username contains the name of a user who started\n                            operation\n                          type: string\n                      type: object\n                    revision:\n                      description: Revision holds the revision the sync was performed\n                        against\n                      type: string\n                    revisions:\n                      description: Revisions holds the revision of each source in\n                        sources field the sync was performed against\n                      items:\n                        type: string\n                      type: array\n                    source:\n                      description: Source is a reference to the application source\n                        used for the sync operation\n                      properties:\n                        chart:\n                          description: Chart is a Helm chart name, and must be specified\n                            for applications sourced from a Helm repo.\n                          type: string\n                        directory:\n                          description: Directory holds path/directory specific options\n                          properties:\n                            exclude:\n                              description: Exclude contains a glob pattern to match\n                                paths against that should be explicitly excluded from\n                                being used during manifest generation\n                              type: string\n                            include:\n                              description: Include contains a glob pattern to match\n                                paths against that should be explicitly included during\n                                manifest generation\n                              type: string\n                            jsonnet:\n                              description: Jsonnet holds options specific to Jsonnet\n                              properties:\n                                extVars:\n                                  description: ExtVars is a list of Jsonnet External\n                                    Variables\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                libs:\n                                  description: Additional library search dirs\n                                  items:\n                                    type: string\n                                  type: array\n                                tlas:\n                                  description: TLAS is a list of Jsonnet Top-level\n                                    Arguments\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                              type: object\n                            recurse:\n                              description: Recurse specifies whether to scan a directory\n                                recursively for manifests\n                              type: boolean\n                          type: object\n                        helm:\n                          description: Helm holds helm specific options\n                          properties:\n                            apiVersions:\n                              description: |-\n                                APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                              items:\n                                type: string\n                              type: array\n                            fileParameters:\n                              description: FileParameters are file parameters to the\n                                helm template\n                              items:\n                                description: HelmFileParameter is a file parameter\n                                  that's passed to helm template during manifest generation\n                                properties:\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  path:\n                                    description: Path is the path to the file containing\n                                      the values for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            ignoreMissingValueFiles:\n                              description: IgnoreMissingValueFiles prevents helm template\n                                from failing when valueFiles do not exist locally\n                                by not appending them to helm template --values\n                              type: boolean\n                            kubeVersion:\n                              description: |-\n                                KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                uses the Kubernetes version of the target cluster.\n                              type: string\n                            namespace:\n                              description: Namespace is an optional namespace to template\n                                with. If left empty, defaults to the app's destination\n                                namespace.\n                              type: string\n                            parameters:\n                              description: Parameters is a list of Helm parameters\n                                which are passed to the helm template command upon\n                                manifest generation\n                              items:\n                                description: HelmParameter is a parameter that's passed\n                                  to helm template during manifest generation\n                                properties:\n                                  forceString:\n                                    description: ForceString determines whether to\n                                      tell Helm to interpret booleans and numbers\n                                      as strings\n                                    type: boolean\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  value:\n                                    description: Value is the value for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            passCredentials:\n                              description: PassCredentials pass credentials to all\n                                domains (Helm's --pass-credentials)\n                              type: boolean\n                            releaseName:\n                              description: ReleaseName is the Helm release name to\n                                use. If omitted it will use the application name\n                              type: string\n                            skipCrds:\n                              description: SkipCrds skips custom resource definition\n                                installation step (Helm's --skip-crds)\n                              type: boolean\n                            skipSchemaValidation:\n                              description: SkipSchemaValidation skips JSON schema\n                                validation (Helm's --skip-schema-validation)\n                              type: boolean\n                            skipTests:\n                              description: SkipTests skips test manifest installation\n                                step (Helm's --skip-tests).\n                              type: boolean\n                            valueFiles:\n                              description: ValuesFiles is a list of Helm value files\n                                to use when generating a template\n                              items:\n                                type: string\n                              type: array\n                            values:\n                              description: Values specifies Helm values to be passed\n                                to helm template, typically defined as a block. ValuesObject\n                                takes precedence over Values, so use one or the other.\n                              type: string\n                            valuesObject:\n                              description: ValuesObject specifies Helm values to be\n                                passed to helm template, defined as a map. This takes\n                                precedence over Values.\n                              type: object\n                              x-kubernetes-preserve-unknown-fields: true\n                            version:\n                              description: Version is the Helm version to use for\n                                templating (\"3\")\n                              type: string\n                          type: object\n                        kustomize:\n                          description: Kustomize holds kustomize specific options\n                          properties:\n                            apiVersions:\n                              description: |-\n                                APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                              items:\n                                type: string\n                              type: array\n                            commonAnnotations:\n                              additionalProperties:\n                                type: string\n                              description: CommonAnnotations is a list of additional\n                                annotations to add to rendered manifests\n                              type: object\n                            commonAnnotationsEnvsubst:\n                              description: CommonAnnotationsEnvsubst specifies whether\n                                to apply env variables substitution for annotation\n                                values\n                              type: boolean\n                            commonLabels:\n                              additionalProperties:\n                                type: string\n                              description: CommonLabels is a list of additional labels\n                                to add to rendered manifests\n                              type: object\n                            components:\n                              description: Components specifies a list of kustomize\n                                components to add to the kustomization before building\n                              items:\n                                type: string\n                              type: array\n                            forceCommonAnnotations:\n                              description: ForceCommonAnnotations specifies whether\n                                to force applying common annotations to resources\n                                for Kustomize apps\n                              type: boolean\n                            forceCommonLabels:\n                              description: ForceCommonLabels specifies whether to\n                                force applying common labels to resources for Kustomize\n                                apps\n                              type: boolean\n                            ignoreMissingComponents:\n                              description: IgnoreMissingComponents prevents kustomize\n                                from failing when components do not exist locally\n                                by not appending them to kustomization file\n                              type: boolean\n                            images:\n                              description: Images is a list of Kustomize image override\n                                specifications\n                              items:\n                                description: KustomizeImage represents a Kustomize\n                                  image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                type: string\n                              type: array\n                            kubeVersion:\n                              description: |-\n                                KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                uses the Kubernetes version of the target cluster.\n                              type: string\n                            labelIncludeTemplates:\n                              description: LabelIncludeTemplates specifies whether\n                                to apply common labels to resource templates or not\n                              type: boolean\n                            labelWithoutSelector:\n                              description: LabelWithoutSelector specifies whether\n                                to apply common labels to resource selectors or not\n                              type: boolean\n                            namePrefix:\n                              description: NamePrefix is a prefix appended to resources\n                                for Kustomize apps\n                              type: string\n                            nameSuffix:\n                              description: NameSuffix is a suffix appended to resources\n                                for Kustomize apps\n                              type: string\n                            namespace:\n                              description: Namespace sets the namespace that Kustomize\n                                adds to all resources\n                              type: string\n                            patches:\n                              description: Patches is a list of Kustomize patches\n                              items:\n                                properties:\n                                  options:\n                                    additionalProperties:\n                                      type: boolean\n                                    type: object\n                                  patch:\n                                    type: string\n                                  path:\n                                    type: string\n                                  target:\n                                    properties:\n                                      annotationSelector:\n                                        type: string\n                                      group:\n                                        type: string\n                                      kind:\n                                        type: string\n                                      labelSelector:\n                                        type: string\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                      version:\n                                        type: string\n                                    type: object\n                                type: object\n                              type: array\n                            replicas:\n                              description: Replicas is a list of Kustomize Replicas\n                                override specifications\n                              items:\n                                properties:\n                                  count:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Number of replicas\n                                    x-kubernetes-int-or-string: true\n                                  name:\n                                    description: Name of Deployment or StatefulSet\n                                    type: string\n                                required:\n                                - count\n                                - name\n                                type: object\n                              type: array\n                            version:\n                              description: Version controls which version of Kustomize\n                                to use for rendering manifests\n                              type: string\n                          type: object\n                        name:\n                          description: Name is used to refer to a source and is displayed\n                            in the UI. It is used in multi-source Applications.\n                          type: string\n                        path:\n                          description: Path is a directory path within the Git repository,\n                            and is only valid for applications sourced from Git.\n                          type: string\n                        plugin:\n                          description: Plugin holds config management plugin specific\n                            options\n                          properties:\n                            env:\n                              description: Env is a list of environment variable entries\n                              items:\n                                description: EnvEntry represents an entry in the application's\n                                  environment\n                                properties:\n                                  name:\n                                    description: Name is the name of the variable,\n                                      usually expressed in uppercase\n                                    type: string\n                                  value:\n                                    description: Value is the value of the variable\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            name:\n                              type: string\n                            parameters:\n                              items:\n                                properties:\n                                  array:\n                                    description: Array is the value of an array type\n                                      parameter.\n                                    items:\n                                      type: string\n                                    type: array\n                                  map:\n                                    additionalProperties:\n                                      type: string\n                                    description: Map is the value of a map type parameter.\n                                    type: object\n                                  name:\n                                    description: Name is the name identifying a parameter.\n                                    type: string\n                                  string:\n                                    description: String_ is the value of a string\n                                      type parameter.\n                                    type: string\n                                type: object\n                              type: array\n                          type: object\n                        ref:\n                          description: Ref is reference to another source within sources\n                            field. This field will not be used if used with a `source`\n                            tag.\n                          type: string\n                        repoURL:\n                          description: RepoURL is the URL to the repository (Git or\n                            Helm) that contains the application manifests\n                          type: string\n                        targetRevision:\n                          description: |-\n                            TargetRevision defines the revision of the source to sync the application to.\n                            In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                            In case of Helm, this is a semver tag for the Chart's version.\n                          type: string\n                      required:\n                      - repoURL\n                      type: object\n                    sources:\n                      description: Sources is a reference to the application sources\n                        used for the sync operation\n                      items:\n                        description: ApplicationSource contains all required information\n                          about the source of an application\n                        properties:\n                          chart:\n                            description: Chart is a Helm chart name, and must be specified\n                              for applications sourced from a Helm repo.\n                            type: string\n                          directory:\n                            description: Directory holds path/directory specific options\n                            properties:\n                              exclude:\n                                description: Exclude contains a glob pattern to match\n                                  paths against that should be explicitly excluded\n                                  from being used during manifest generation\n                                type: string\n                              include:\n                                description: Include contains a glob pattern to match\n                                  paths against that should be explicitly included\n                                  during manifest generation\n                                type: string\n                              jsonnet:\n                                description: Jsonnet holds options specific to Jsonnet\n                                properties:\n                                  extVars:\n                                    description: ExtVars is a list of Jsonnet External\n                                      Variables\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    description: Additional library search dirs\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    description: TLAS is a list of Jsonnet Top-level\n                                      Arguments\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                description: Recurse specifies whether to scan a directory\n                                  recursively for manifests\n                                type: boolean\n                            type: object\n                          helm:\n                            description: Helm holds helm specific options\n                            properties:\n                              apiVersions:\n                                description: |-\n                                  APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                  Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                items:\n                                  type: string\n                                type: array\n                              fileParameters:\n                                description: FileParameters are file parameters to\n                                  the helm template\n                                items:\n                                  description: HelmFileParameter is a file parameter\n                                    that's passed to helm template during manifest\n                                    generation\n                                  properties:\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    path:\n                                      description: Path is the path to the file containing\n                                        the values for the Helm parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                description: IgnoreMissingValueFiles prevents helm\n                                  template from failing when valueFiles do not exist\n                                  locally by not appending them to helm template --values\n                                type: boolean\n                              kubeVersion:\n                                description: |-\n                                  KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                  uses the Kubernetes version of the target cluster.\n                                type: string\n                              namespace:\n                                description: Namespace is an optional namespace to\n                                  template with. If left empty, defaults to the app's\n                                  destination namespace.\n                                type: string\n                              parameters:\n                                description: Parameters is a list of Helm parameters\n                                  which are passed to the helm template command upon\n                                  manifest generation\n                                items:\n                                  description: HelmParameter is a parameter that's\n                                    passed to helm template during manifest generation\n                                  properties:\n                                    forceString:\n                                      description: ForceString determines whether\n                                        to tell Helm to interpret booleans and numbers\n                                        as strings\n                                      type: boolean\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    value:\n                                      description: Value is the value for the Helm\n                                        parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                description: PassCredentials pass credentials to all\n                                  domains (Helm's --pass-credentials)\n                                type: boolean\n                              releaseName:\n                                description: ReleaseName is the Helm release name\n                                  to use. If omitted it will use the application name\n                                type: string\n                              skipCrds:\n                                description: SkipCrds skips custom resource definition\n                                  installation step (Helm's --skip-crds)\n                                type: boolean\n                              skipSchemaValidation:\n                                description: SkipSchemaValidation skips JSON schema\n                                  validation (Helm's --skip-schema-validation)\n                                type: boolean\n                              skipTests:\n                                description: SkipTests skips test manifest installation\n                                  step (Helm's --skip-tests).\n                                type: boolean\n                              valueFiles:\n                                description: ValuesFiles is a list of Helm value files\n                                  to use when generating a template\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                description: Values specifies Helm values to be passed\n                                  to helm template, typically defined as a block.\n                                  ValuesObject takes precedence over Values, so use\n                                  one or the other.\n                                type: string\n                              valuesObject:\n                                description: ValuesObject specifies Helm values to\n                                  be passed to helm template, defined as a map. This\n                                  takes precedence over Values.\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                description: Version is the Helm version to use for\n                                  templating (\"3\")\n                                type: string\n                            type: object\n                          kustomize:\n                            description: Kustomize holds kustomize specific options\n                            properties:\n                              apiVersions:\n                                description: |-\n                                  APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                  Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                items:\n                                  type: string\n                                type: array\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                description: CommonAnnotations is a list of additional\n                                  annotations to add to rendered manifests\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                description: CommonAnnotationsEnvsubst specifies whether\n                                  to apply env variables substitution for annotation\n                                  values\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                description: CommonLabels is a list of additional\n                                  labels to add to rendered manifests\n                                type: object\n                              components:\n                                description: Components specifies a list of kustomize\n                                  components to add to the kustomization before building\n                                items:\n                                  type: string\n                                type: array\n                              forceCommonAnnotations:\n                                description: ForceCommonAnnotations specifies whether\n                                  to force applying common annotations to resources\n                                  for Kustomize apps\n                                type: boolean\n                              forceCommonLabels:\n                                description: ForceCommonLabels specifies whether to\n                                  force applying common labels to resources for Kustomize\n                                  apps\n                                type: boolean\n                              ignoreMissingComponents:\n                                description: IgnoreMissingComponents prevents kustomize\n                                  from failing when components do not exist locally\n                                  by not appending them to kustomization file\n                                type: boolean\n                              images:\n                                description: Images is a list of Kustomize image override\n                                  specifications\n                                items:\n                                  description: KustomizeImage represents a Kustomize\n                                    image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                  type: string\n                                type: array\n                              kubeVersion:\n                                description: |-\n                                  KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                  uses the Kubernetes version of the target cluster.\n                                type: string\n                              labelIncludeTemplates:\n                                description: LabelIncludeTemplates specifies whether\n                                  to apply common labels to resource templates or\n                                  not\n                                type: boolean\n                              labelWithoutSelector:\n                                description: LabelWithoutSelector specifies whether\n                                  to apply common labels to resource selectors or\n                                  not\n                                type: boolean\n                              namePrefix:\n                                description: NamePrefix is a prefix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              nameSuffix:\n                                description: NameSuffix is a suffix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              namespace:\n                                description: Namespace sets the namespace that Kustomize\n                                  adds to all resources\n                                type: string\n                              patches:\n                                description: Patches is a list of Kustomize patches\n                                items:\n                                  properties:\n                                    options:\n                                      additionalProperties:\n                                        type: boolean\n                                      type: object\n                                    patch:\n                                      type: string\n                                    path:\n                                      type: string\n                                    target:\n                                      properties:\n                                        annotationSelector:\n                                          type: string\n                                        group:\n                                          type: string\n                                        kind:\n                                          type: string\n                                        labelSelector:\n                                          type: string\n                                        name:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        version:\n                                          type: string\n                                      type: object\n                                  type: object\n                                type: array\n                              replicas:\n                                description: Replicas is a list of Kustomize Replicas\n                                  override specifications\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      description: Number of replicas\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      description: Name of Deployment or StatefulSet\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                description: Version controls which version of Kustomize\n                                  to use for rendering manifests\n                                type: string\n                            type: object\n                          name:\n                            description: Name is used to refer to a source and is\n                              displayed in the UI. It is used in multi-source Applications.\n                            type: string\n                          path:\n                            description: Path is a directory path within the Git repository,\n                              and is only valid for applications sourced from Git.\n                            type: string\n                          plugin:\n                            description: Plugin holds config management plugin specific\n                              options\n                            properties:\n                              env:\n                                description: Env is a list of environment variable\n                                  entries\n                                items:\n                                  description: EnvEntry represents an entry in the\n                                    application's environment\n                                  properties:\n                                    name:\n                                      description: Name is the name of the variable,\n                                        usually expressed in uppercase\n                                      type: string\n                                    value:\n                                      description: Value is the value of the variable\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      description: Array is the value of an array\n                                        type parameter.\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      description: Map is the value of a map type\n                                        parameter.\n                                      type: object\n                                    name:\n                                      description: Name is the name identifying a\n                                        parameter.\n                                      type: string\n                                    string:\n                                      description: String_ is the value of a string\n                                        type parameter.\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            description: Ref is reference to another source within\n                              sources field. This field will not be used if used with\n                              a `source` tag.\n                            type: string\n                          repoURL:\n                            description: RepoURL is the URL to the repository (Git\n                              or Helm) that contains the application manifests\n                            type: string\n                          targetRevision:\n                            description: |-\n                              TargetRevision defines the revision of the source to sync the application to.\n                              In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                              In case of Helm, this is a semver tag for the Chart's version.\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      type: array\n                  required:\n                  - deployedAt\n                  - id\n                  type: object\n                type: array\n              observedAt:\n                description: |-\n                  ObservedAt indicates when the application state was updated without querying latest git state\n                  Deprecated: controller no longer updates ObservedAt field\n                format: date-time\n                type: string\n              operationState:\n                description: OperationState contains information about any ongoing\n                  operations, such as a sync\n                properties:\n                  finishedAt:\n                    description: FinishedAt contains time of operation completion\n                    format: date-time\n                    type: string\n                  message:\n                    description: Message holds any pertinent messages when attempting\n                      to perform operation (typically errors).\n                    type: string\n                  operation:\n                    description: Operation is the original requested operation\n                    properties:\n                      info:\n                        description: Info is a list of informational items for this\n                          operation\n                        items:\n                          properties:\n                            name:\n                              type: string\n                            value:\n                              type: string\n                          required:\n                          - name\n                          - value\n                          type: object\n                        type: array\n                      initiatedBy:\n                        description: InitiatedBy contains information about who initiated\n                          the operations\n                        properties:\n                          automated:\n                            description: Automated is set to true if operation was\n                              initiated automatically by the application controller.\n                            type: boolean\n                          username:\n                            description: Username contains the name of a user who\n                              started operation\n                            type: string\n                        type: object\n                      retry:\n                        description: Retry controls the strategy to apply if a sync\n                          fails\n                        properties:\n                          backoff:\n                            description: Backoff controls how to backoff on subsequent\n                              retries of failed syncs\n                            properties:\n                              duration:\n                                description: Duration is the amount to back off. Default\n                                  unit is seconds, but could also be a duration (e.g.\n                                  \"2m\", \"1h\")\n                                type: string\n                              factor:\n                                description: Factor is a factor to multiply the base\n                                  duration after each failed retry\n                                format: int64\n                                type: integer\n                              maxDuration:\n                                description: MaxDuration is the maximum amount of\n                                  time allowed for the backoff strategy\n                                type: string\n                            type: object\n                          limit:\n                            description: Limit is the maximum number of attempts for\n                              retrying a failed sync. If set to 0, no retries will\n                              be performed.\n                            format: int64\n                            type: integer\n                        type: object\n                      sync:\n                        description: Sync contains parameters for the operation\n                        properties:\n                          autoHealAttemptsCount:\n                            description: SelfHealAttemptsCount contains the number\n                              of auto-heal attempts\n                            format: int64\n                            type: integer\n                          dryRun:\n                            description: DryRun specifies to perform a `kubectl apply\n                              --dry-run` without actually performing the sync\n                            type: boolean\n                          manifests:\n                            description: Manifests is an optional field that overrides\n                              sync source with a local directory for development\n                            items:\n                              type: string\n                            type: array\n                          prune:\n                            description: Prune specifies to delete resources from\n                              the cluster that are no longer tracked in git\n                            type: boolean\n                          resources:\n                            description: Resources describes which resources shall\n                              be part of the sync\n                            items:\n                              description: SyncOperationResource contains resources\n                                to sync.\n                              properties:\n                                group:\n                                  type: string\n                                kind:\n                                  type: string\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              required:\n                              - kind\n                              - name\n                              type: object\n                            type: array\n                          revision:\n                            description: |-\n                              Revision is the revision (Git) or chart version (Helm) which to sync the application to\n                              If omitted, will use the revision specified in app spec.\n                            type: string\n                          revisions:\n                            description: |-\n                              Revisions is the list of revision (Git) or chart version (Helm) which to sync each source in sources field for the application to\n                              If omitted, will use the revision specified in app spec.\n                            items:\n                              type: string\n                            type: array\n                          source:\n                            description: |-\n                              Source overrides the source definition set in the application.\n                              This is typically set in a Rollback operation and is nil during a Sync operation\n                            properties:\n                              chart:\n                                description: Chart is a Helm chart name, and must\n                                  be specified for applications sourced from a Helm\n                                  repo.\n                                type: string\n                              directory:\n                                description: Directory holds path/directory specific\n                                  options\n                                properties:\n                                  exclude:\n                                    description: Exclude contains a glob pattern to\n                                      match paths against that should be explicitly\n                                      excluded from being used during manifest generation\n                                    type: string\n                                  include:\n                                    description: Include contains a glob pattern to\n                                      match paths against that should be explicitly\n                                      included during manifest generation\n                                    type: string\n                                  jsonnet:\n                                    description: Jsonnet holds options specific to\n                                      Jsonnet\n                                    properties:\n                                      extVars:\n                                        description: ExtVars is a list of Jsonnet\n                                          External Variables\n                                        items:\n                                          description: JsonnetVar represents a variable\n                                            to be passed to jsonnet during manifest\n                                            generation\n                                          properties:\n                                            code:\n                                              type: boolean\n                                            name:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - name\n                                          - value\n                                          type: object\n                                        type: array\n                                      libs:\n                                        description: Additional library search dirs\n                                        items:\n                                          type: string\n                                        type: array\n                                      tlas:\n                                        description: TLAS is a list of Jsonnet Top-level\n                                          Arguments\n                                        items:\n                                          description: JsonnetVar represents a variable\n                                            to be passed to jsonnet during manifest\n                                            generation\n                                          properties:\n                                            code:\n                                              type: boolean\n                                            name:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - name\n                                          - value\n                                          type: object\n                                        type: array\n                                    type: object\n                                  recurse:\n                                    description: Recurse specifies whether to scan\n                                      a directory recursively for manifests\n                                    type: boolean\n                                type: object\n                              helm:\n                                description: Helm holds helm specific options\n                                properties:\n                                  apiVersions:\n                                    description: |-\n                                      APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                      Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                    items:\n                                      type: string\n                                    type: array\n                                  fileParameters:\n                                    description: FileParameters are file parameters\n                                      to the helm template\n                                    items:\n                                      description: HelmFileParameter is a file parameter\n                                        that's passed to helm template during manifest\n                                        generation\n                                      properties:\n                                        name:\n                                          description: Name is the name of the Helm\n                                            parameter\n                                          type: string\n                                        path:\n                                          description: Path is the path to the file\n                                            containing the values for the Helm parameter\n                                          type: string\n                                      type: object\n                                    type: array\n                                  ignoreMissingValueFiles:\n                                    description: IgnoreMissingValueFiles prevents\n                                      helm template from failing when valueFiles do\n                                      not exist locally by not appending them to helm\n                                      template --values\n                                    type: boolean\n                                  kubeVersion:\n                                    description: |-\n                                      KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                      uses the Kubernetes version of the target cluster.\n                                    type: string\n                                  namespace:\n                                    description: Namespace is an optional namespace\n                                      to template with. If left empty, defaults to\n                                      the app's destination namespace.\n                                    type: string\n                                  parameters:\n                                    description: Parameters is a list of Helm parameters\n                                      which are passed to the helm template command\n                                      upon manifest generation\n                                    items:\n                                      description: HelmParameter is a parameter that's\n                                        passed to helm template during manifest generation\n                                      properties:\n                                        forceString:\n                                          description: ForceString determines whether\n                                            to tell Helm to interpret booleans and\n                                            numbers as strings\n                                          type: boolean\n                                        name:\n                                          description: Name is the name of the Helm\n                                            parameter\n                                          type: string\n                                        value:\n                                          description: Value is the value for the\n                                            Helm parameter\n                                          type: string\n                                      type: object\n                                    type: array\n                                  passCredentials:\n                                    description: PassCredentials pass credentials\n                                      to all domains (Helm's --pass-credentials)\n                                    type: boolean\n                                  releaseName:\n                                    description: ReleaseName is the Helm release name\n                                      to use. If omitted it will use the application\n                                      name\n                                    type: string\n                                  skipCrds:\n                                    description: SkipCrds skips custom resource definition\n                                      installation step (Helm's --skip-crds)\n                                    type: boolean\n                                  skipSchemaValidation:\n                                    description: SkipSchemaValidation skips JSON schema\n                                      validation (Helm's --skip-schema-validation)\n                                    type: boolean\n                                  skipTests:\n                                    description: SkipTests skips test manifest installation\n                                      step (Helm's --skip-tests).\n                                    type: boolean\n                                  valueFiles:\n                                    description: ValuesFiles is a list of Helm value\n                                      files to use when generating a template\n                                    items:\n                                      type: string\n                                    type: array\n                                  values:\n                                    description: Values specifies Helm values to be\n                                      passed to helm template, typically defined as\n                                      a block. ValuesObject takes precedence over\n                                      Values, so use one or the other.\n                                    type: string\n                                  valuesObject:\n                                    description: ValuesObject specifies Helm values\n                                      to be passed to helm template, defined as a\n                                      map. This takes precedence over Values.\n                                    type: object\n                                    x-kubernetes-preserve-unknown-fields: true\n                                  version:\n                                    description: Version is the Helm version to use\n                                      for templating (\"3\")\n                                    type: string\n                                type: object\n                              kustomize:\n                                description: Kustomize holds kustomize specific options\n                                properties:\n                                  apiVersions:\n                                    description: |-\n                                      APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                      Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                    items:\n                                      type: string\n                                    type: array\n                                  commonAnnotations:\n                                    additionalProperties:\n                                      type: string\n                                    description: CommonAnnotations is a list of additional\n                                      annotations to add to rendered manifests\n                                    type: object\n                                  commonAnnotationsEnvsubst:\n                                    description: CommonAnnotationsEnvsubst specifies\n                                      whether to apply env variables substitution\n                                      for annotation values\n                                    type: boolean\n                                  commonLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: CommonLabels is a list of additional\n                                      labels to add to rendered manifests\n                                    type: object\n                                  components:\n                                    description: Components specifies a list of kustomize\n                                      components to add to the kustomization before\n                                      building\n                                    items:\n                                      type: string\n                                    type: array\n                                  forceCommonAnnotations:\n                                    description: ForceCommonAnnotations specifies\n                                      whether to force applying common annotations\n                                      to resources for Kustomize apps\n                                    type: boolean\n                                  forceCommonLabels:\n                                    description: ForceCommonLabels specifies whether\n                                      to force applying common labels to resources\n                                      for Kustomize apps\n                                    type: boolean\n                                  ignoreMissingComponents:\n                                    description: IgnoreMissingComponents prevents\n                                      kustomize from failing when components do not\n                                      exist locally by not appending them to kustomization\n                                      file\n                                    type: boolean\n                                  images:\n                                    description: Images is a list of Kustomize image\n                                      override specifications\n                                    items:\n                                      description: KustomizeImage represents a Kustomize\n                                        image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                      type: string\n                                    type: array\n                                  kubeVersion:\n                                    description: |-\n                                      KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                      uses the Kubernetes version of the target cluster.\n                                    type: string\n                                  labelIncludeTemplates:\n                                    description: LabelIncludeTemplates specifies whether\n                                      to apply common labels to resource templates\n                                      or not\n                                    type: boolean\n                                  labelWithoutSelector:\n                                    description: LabelWithoutSelector specifies whether\n                                      to apply common labels to resource selectors\n                                      or not\n                                    type: boolean\n                                  namePrefix:\n                                    description: NamePrefix is a prefix appended to\n                                      resources for Kustomize apps\n                                    type: string\n                                  nameSuffix:\n                                    description: NameSuffix is a suffix appended to\n                                      resources for Kustomize apps\n                                    type: string\n                                  namespace:\n                                    description: Namespace sets the namespace that\n                                      Kustomize adds to all resources\n                                    type: string\n                                  patches:\n                                    description: Patches is a list of Kustomize patches\n                                    items:\n                                      properties:\n                                        options:\n                                          additionalProperties:\n                                            type: boolean\n                                          type: object\n                                        patch:\n                                          type: string\n                                        path:\n                                          type: string\n                                        target:\n                                          properties:\n                                            annotationSelector:\n                                              type: string\n                                            group:\n                                              type: string\n                                            kind:\n                                              type: string\n                                            labelSelector:\n                                              type: string\n                                            name:\n                                              type: string\n                                            namespace:\n                                              type: string\n                                            version:\n                                              type: string\n                                          type: object\n                                      type: object\n                                    type: array\n                                  replicas:\n                                    description: Replicas is a list of Kustomize Replicas\n                                      override specifications\n                                    items:\n                                      properties:\n                                        count:\n                                          anyOf:\n                                          - type: integer\n                                          - type: string\n                                          description: Number of replicas\n                                          x-kubernetes-int-or-string: true\n                                        name:\n                                          description: Name of Deployment or StatefulSet\n                                          type: string\n                                      required:\n                                      - count\n                                      - name\n                                      type: object\n                                    type: array\n                                  version:\n                                    description: Version controls which version of\n                                      Kustomize to use for rendering manifests\n                                    type: string\n                                type: object\n                              name:\n                                description: Name is used to refer to a source and\n                                  is displayed in the UI. It is used in multi-source\n                                  Applications.\n                                type: string\n                              path:\n                                description: Path is a directory path within the Git\n                                  repository, and is only valid for applications sourced\n                                  from Git.\n                                type: string\n                              plugin:\n                                description: Plugin holds config management plugin\n                                  specific options\n                                properties:\n                                  env:\n                                    description: Env is a list of environment variable\n                                      entries\n                                    items:\n                                      description: EnvEntry represents an entry in\n                                        the application's environment\n                                      properties:\n                                        name:\n                                          description: Name is the name of the variable,\n                                            usually expressed in uppercase\n                                          type: string\n                                        value:\n                                          description: Value is the value of the variable\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  name:\n                                    type: string\n                                  parameters:\n                                    items:\n                                      properties:\n                                        array:\n                                          description: Array is the value of an array\n                                            type parameter.\n                                          items:\n                                            type: string\n                                          type: array\n                                        map:\n                                          additionalProperties:\n                                            type: string\n                                          description: Map is the value of a map type\n                                            parameter.\n                                          type: object\n                                        name:\n                                          description: Name is the name identifying\n                                            a parameter.\n                                          type: string\n                                        string:\n                                          description: String_ is the value of a string\n                                            type parameter.\n                                          type: string\n                                      type: object\n                                    type: array\n                                type: object\n                              ref:\n                                description: Ref is reference to another source within\n                                  sources field. This field will not be used if used\n                                  with a `source` tag.\n                                type: string\n                              repoURL:\n                                description: RepoURL is the URL to the repository\n                                  (Git or Helm) that contains the application manifests\n                                type: string\n                              targetRevision:\n                                description: |-\n                                  TargetRevision defines the revision of the source to sync the application to.\n                                  In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                                  In case of Helm, this is a semver tag for the Chart's version.\n                                type: string\n                            required:\n                            - repoURL\n                            type: object\n                          sources:\n                            description: |-\n                              Sources overrides the source definition set in the application.\n                              This is typically set in a Rollback operation and is nil during a Sync operation\n                            items:\n                              description: ApplicationSource contains all required\n                                information about the source of an application\n                              properties:\n                                chart:\n                                  description: Chart is a Helm chart name, and must\n                                    be specified for applications sourced from a Helm\n                                    repo.\n                                  type: string\n                                directory:\n                                  description: Directory holds path/directory specific\n                                    options\n                                  properties:\n                                    exclude:\n                                      description: Exclude contains a glob pattern\n                                        to match paths against that should be explicitly\n                                        excluded from being used during manifest generation\n                                      type: string\n                                    include:\n                                      description: Include contains a glob pattern\n                                        to match paths against that should be explicitly\n                                        included during manifest generation\n                                      type: string\n                                    jsonnet:\n                                      description: Jsonnet holds options specific\n                                        to Jsonnet\n                                      properties:\n                                        extVars:\n                                          description: ExtVars is a list of Jsonnet\n                                            External Variables\n                                          items:\n                                            description: JsonnetVar represents a variable\n                                              to be passed to jsonnet during manifest\n                                              generation\n                                            properties:\n                                              code:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        libs:\n                                          description: Additional library search dirs\n                                          items:\n                                            type: string\n                                          type: array\n                                        tlas:\n                                          description: TLAS is a list of Jsonnet Top-level\n                                            Arguments\n                                          items:\n                                            description: JsonnetVar represents a variable\n                                              to be passed to jsonnet during manifest\n                                              generation\n                                            properties:\n                                              code:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                      type: object\n                                    recurse:\n                                      description: Recurse specifies whether to scan\n                                        a directory recursively for manifests\n                                      type: boolean\n                                  type: object\n                                helm:\n                                  description: Helm holds helm specific options\n                                  properties:\n                                    apiVersions:\n                                      description: |-\n                                        APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                        Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                      items:\n                                        type: string\n                                      type: array\n                                    fileParameters:\n                                      description: FileParameters are file parameters\n                                        to the helm template\n                                      items:\n                                        description: HelmFileParameter is a file parameter\n                                          that's passed to helm template during manifest\n                                          generation\n                                        properties:\n                                          name:\n                                            description: Name is the name of the Helm\n                                              parameter\n                                            type: string\n                                          path:\n                                            description: Path is the path to the file\n                                              containing the values for the Helm parameter\n                                            type: string\n                                        type: object\n                                      type: array\n                                    ignoreMissingValueFiles:\n                                      description: IgnoreMissingValueFiles prevents\n                                        helm template from failing when valueFiles\n                                        do not exist locally by not appending them\n                                        to helm template --values\n                                      type: boolean\n                                    kubeVersion:\n                                      description: |-\n                                        KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                        uses the Kubernetes version of the target cluster.\n                                      type: string\n                                    namespace:\n                                      description: Namespace is an optional namespace\n                                        to template with. If left empty, defaults\n                                        to the app's destination namespace.\n                                      type: string\n                                    parameters:\n                                      description: Parameters is a list of Helm parameters\n                                        which are passed to the helm template command\n                                        upon manifest generation\n                                      items:\n                                        description: HelmParameter is a parameter\n                                          that's passed to helm template during manifest\n                                          generation\n                                        properties:\n                                          forceString:\n                                            description: ForceString determines whether\n                                              to tell Helm to interpret booleans and\n                                              numbers as strings\n                                            type: boolean\n                                          name:\n                                            description: Name is the name of the Helm\n                                              parameter\n                                            type: string\n                                          value:\n                                            description: Value is the value for the\n                                              Helm parameter\n                                            type: string\n                                        type: object\n                                      type: array\n                                    passCredentials:\n                                      description: PassCredentials pass credentials\n                                        to all domains (Helm's --pass-credentials)\n                                      type: boolean\n                                    releaseName:\n                                      description: ReleaseName is the Helm release\n                                        name to use. If omitted it will use the application\n                                        name\n                                      type: string\n                                    skipCrds:\n                                      description: SkipCrds skips custom resource\n                                        definition installation step (Helm's --skip-crds)\n                                      type: boolean\n                                    skipSchemaValidation:\n                                      description: SkipSchemaValidation skips JSON\n                                        schema validation (Helm's --skip-schema-validation)\n                                      type: boolean\n                                    skipTests:\n                                      description: SkipTests skips test manifest installation\n                                        step (Helm's --skip-tests).\n                                      type: boolean\n                                    valueFiles:\n                                      description: ValuesFiles is a list of Helm value\n                                        files to use when generating a template\n                                      items:\n                                        type: string\n                                      type: array\n                                    values:\n                                      description: Values specifies Helm values to\n                                        be passed to helm template, typically defined\n                                        as a block. ValuesObject takes precedence\n                                        over Values, so use one or the other.\n                                      type: string\n                                    valuesObject:\n                                      description: ValuesObject specifies Helm values\n                                        to be passed to helm template, defined as\n                                        a map. This takes precedence over Values.\n                                      type: object\n                                      x-kubernetes-preserve-unknown-fields: true\n                                    version:\n                                      description: Version is the Helm version to\n                                        use for templating (\"3\")\n                                      type: string\n                                  type: object\n                                kustomize:\n                                  description: Kustomize holds kustomize specific\n                                    options\n                                  properties:\n                                    apiVersions:\n                                      description: |-\n                                        APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                        Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                      items:\n                                        type: string\n                                      type: array\n                                    commonAnnotations:\n                                      additionalProperties:\n                                        type: string\n                                      description: CommonAnnotations is a list of\n                                        additional annotations to add to rendered\n                                        manifests\n                                      type: object\n                                    commonAnnotationsEnvsubst:\n                                      description: CommonAnnotationsEnvsubst specifies\n                                        whether to apply env variables substitution\n                                        for annotation values\n                                      type: boolean\n                                    commonLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: CommonLabels is a list of additional\n                                        labels to add to rendered manifests\n                                      type: object\n                                    components:\n                                      description: Components specifies a list of\n                                        kustomize components to add to the kustomization\n                                        before building\n                                      items:\n                                        type: string\n                                      type: array\n                                    forceCommonAnnotations:\n                                      description: ForceCommonAnnotations specifies\n                                        whether to force applying common annotations\n                                        to resources for Kustomize apps\n                                      type: boolean\n                                    forceCommonLabels:\n                                      description: ForceCommonLabels specifies whether\n                                        to force applying common labels to resources\n                                        for Kustomize apps\n                                      type: boolean\n                                    ignoreMissingComponents:\n                                      description: IgnoreMissingComponents prevents\n                                        kustomize from failing when components do\n                                        not exist locally by not appending them to\n                                        kustomization file\n                                      type: boolean\n                                    images:\n                                      description: Images is a list of Kustomize image\n                                        override specifications\n                                      items:\n                                        description: KustomizeImage represents a Kustomize\n                                          image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                        type: string\n                                      type: array\n                                    kubeVersion:\n                                      description: |-\n                                        KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                        uses the Kubernetes version of the target cluster.\n                                      type: string\n                                    labelIncludeTemplates:\n                                      description: LabelIncludeTemplates specifies\n                                        whether to apply common labels to resource\n                                        templates or not\n                                      type: boolean\n                                    labelWithoutSelector:\n                                      description: LabelWithoutSelector specifies\n                                        whether to apply common labels to resource\n                                        selectors or not\n                                      type: boolean\n                                    namePrefix:\n                                      description: NamePrefix is a prefix appended\n                                        to resources for Kustomize apps\n                                      type: string\n                                    nameSuffix:\n                                      description: NameSuffix is a suffix appended\n                                        to resources for Kustomize apps\n                                      type: string\n                                    namespace:\n                                      description: Namespace sets the namespace that\n                                        Kustomize adds to all resources\n                                      type: string\n                                    patches:\n                                      description: Patches is a list of Kustomize\n                                        patches\n                                      items:\n                                        properties:\n                                          options:\n                                            additionalProperties:\n                                              type: boolean\n                                            type: object\n                                          patch:\n                                            type: string\n                                          path:\n                                            type: string\n                                          target:\n                                            properties:\n                                              annotationSelector:\n                                                type: string\n                                              group:\n                                                type: string\n                                              kind:\n                                                type: string\n                                              labelSelector:\n                                                type: string\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              version:\n                                                type: string\n                                            type: object\n                                        type: object\n                                      type: array\n                                    replicas:\n                                      description: Replicas is a list of Kustomize\n                                        Replicas override specifications\n                                      items:\n                                        properties:\n                                          count:\n                                            anyOf:\n                                            - type: integer\n                                            - type: string\n                                            description: Number of replicas\n                                            x-kubernetes-int-or-string: true\n                                          name:\n                                            description: Name of Deployment or StatefulSet\n                                            type: string\n                                        required:\n                                        - count\n                                        - name\n                                        type: object\n                                      type: array\n                                    version:\n                                      description: Version controls which version\n                                        of Kustomize to use for rendering manifests\n                                      type: string\n                                  type: object\n                                name:\n                                  description: Name is used to refer to a source and\n                                    is displayed in the UI. It is used in multi-source\n                                    Applications.\n                                  type: string\n                                path:\n                                  description: Path is a directory path within the\n                                    Git repository, and is only valid for applications\n                                    sourced from Git.\n                                  type: string\n                                plugin:\n                                  description: Plugin holds config management plugin\n                                    specific options\n                                  properties:\n                                    env:\n                                      description: Env is a list of environment variable\n                                        entries\n                                      items:\n                                        description: EnvEntry represents an entry\n                                          in the application's environment\n                                        properties:\n                                          name:\n                                            description: Name is the name of the variable,\n                                              usually expressed in uppercase\n                                            type: string\n                                          value:\n                                            description: Value is the value of the\n                                              variable\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    name:\n                                      type: string\n                                    parameters:\n                                      items:\n                                        properties:\n                                          array:\n                                            description: Array is the value of an\n                                              array type parameter.\n                                            items:\n                                              type: string\n                                            type: array\n                                          map:\n                                            additionalProperties:\n                                              type: string\n                                            description: Map is the value of a map\n                                              type parameter.\n                                            type: object\n                                          name:\n                                            description: Name is the name identifying\n                                              a parameter.\n                                            type: string\n                                          string:\n                                            description: String_ is the value of a\n                                              string type parameter.\n                                            type: string\n                                        type: object\n                                      type: array\n                                  type: object\n                                ref:\n                                  description: Ref is reference to another source\n                                    within sources field. This field will not be used\n                                    if used with a `source` tag.\n                                  type: string\n                                repoURL:\n                                  description: RepoURL is the URL to the repository\n                                    (Git or Helm) that contains the application manifests\n                                  type: string\n                                targetRevision:\n                                  description: |-\n                                    TargetRevision defines the revision of the source to sync the application to.\n                                    In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                                    In case of Helm, this is a semver tag for the Chart's version.\n                                  type: string\n                              required:\n                              - repoURL\n                              type: object\n                            type: array\n                          syncOptions:\n                            description: SyncOptions provide per-sync sync-options,\n                              e.g. Validate=false\n                            items:\n                              type: string\n                            type: array\n                          syncStrategy:\n                            description: SyncStrategy describes how to perform the\n                              sync\n                            properties:\n                              apply:\n                                description: Apply will perform a `kubectl apply`\n                                  to perform the sync.\n                                properties:\n                                  force:\n                                    description: |-\n                                      Force indicates whether or not to supply the --force flag to `kubectl apply`.\n                                      The --force flag deletes and re-create the resource, when PATCH encounters conflict and has\n                                      retried for 5 times.\n                                    type: boolean\n                                type: object\n                              hook:\n                                description: Hook will submit any referenced resources\n                                  to perform the sync. This is the default strategy\n                                properties:\n                                  force:\n                                    description: |-\n                                      Force indicates whether or not to supply the --force flag to `kubectl apply`.\n                                      The --force flag deletes and re-create the resource, when PATCH encounters conflict and has\n                                      retried for 5 times.\n                                    type: boolean\n                                type: object\n                            type: object\n                        type: object\n                    type: object\n                  phase:\n                    description: Phase is the current phase of the operation\n                    type: string\n                  retryCount:\n                    description: RetryCount contains time of operation retries\n                    format: int64\n                    type: integer\n                  startedAt:\n                    description: StartedAt contains time of operation start\n                    format: date-time\n                    type: string\n                  syncResult:\n                    description: SyncResult is the result of a Sync operation\n                    properties:\n                      managedNamespaceMetadata:\n                        description: ManagedNamespaceMetadata contains the current\n                          sync state of managed namespace metadata\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            type: object\n                        type: object\n                      resources:\n                        description: Resources contains a list of sync result items\n                          for each individual resource in a sync operation\n                        items:\n                          description: ResourceResult holds the operation result details\n                            of a specific resource\n                          properties:\n                            group:\n                              description: Group specifies the API group of the resource\n                              type: string\n                            hookPhase:\n                              description: |-\n                                HookPhase contains the state of any operation associated with this resource OR hook\n                                This can also contain values for non-hook resources.\n                              type: string\n                            hookType:\n                              description: HookType specifies the type of the hook.\n                                Empty for non-hook resources\n                              type: string\n                            images:\n                              description: Images contains the images related to the\n                                ResourceResult\n                              items:\n                                type: string\n                              type: array\n                            kind:\n                              description: Kind specifies the API kind of the resource\n                              type: string\n                            message:\n                              description: Message contains an informational or error\n                                message for the last sync OR operation\n                              type: string\n                            name:\n                              description: Name specifies the name of the resource\n                              type: string\n                            namespace:\n                              description: Namespace specifies the target namespace\n                                of the resource\n                              type: string\n                            status:\n                              description: Status holds the final result of the sync.\n                                Will be empty if the resources is yet to be applied/pruned\n                                and is always zero-value for hooks\n                              type: string\n                            syncPhase:\n                              description: SyncPhase indicates the particular phase\n                                of the sync that this result was acquired in\n                              type: string\n                            version:\n                              description: Version specifies the API version of the\n                                resource\n                              type: string\n                          required:\n                          - group\n                          - kind\n                          - name\n                          - namespace\n                          - version\n                          type: object\n                        type: array\n                      revision:\n                        description: Revision holds the revision this sync operation\n                          was performed to\n                        type: string\n                      revisions:\n                        description: Revisions holds the revision this sync operation\n                          was performed for respective indexed source in sources field\n                        items:\n                          type: string\n                        type: array\n                      source:\n                        description: Source records the application source information\n                          of the sync, used for comparing auto-sync\n                        properties:\n                          chart:\n                            description: Chart is a Helm chart name, and must be specified\n                              for applications sourced from a Helm repo.\n                            type: string\n                          directory:\n                            description: Directory holds path/directory specific options\n                            properties:\n                              exclude:\n                                description: Exclude contains a glob pattern to match\n                                  paths against that should be explicitly excluded\n                                  from being used during manifest generation\n                                type: string\n                              include:\n                                description: Include contains a glob pattern to match\n                                  paths against that should be explicitly included\n                                  during manifest generation\n                                type: string\n                              jsonnet:\n                                description: Jsonnet holds options specific to Jsonnet\n                                properties:\n                                  extVars:\n                                    description: ExtVars is a list of Jsonnet External\n                                      Variables\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    description: Additional library search dirs\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    description: TLAS is a list of Jsonnet Top-level\n                                      Arguments\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                description: Recurse specifies whether to scan a directory\n                                  recursively for manifests\n                                type: boolean\n                            type: object\n                          helm:\n                            description: Helm holds helm specific options\n                            properties:\n                              apiVersions:\n                                description: |-\n                                  APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                  Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                items:\n                                  type: string\n                                type: array\n                              fileParameters:\n                                description: FileParameters are file parameters to\n                                  the helm template\n                                items:\n                                  description: HelmFileParameter is a file parameter\n                                    that's passed to helm template during manifest\n                                    generation\n                                  properties:\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    path:\n                                      description: Path is the path to the file containing\n                                        the values for the Helm parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                description: IgnoreMissingValueFiles prevents helm\n                                  template from failing when valueFiles do not exist\n                                  locally by not appending them to helm template --values\n                                type: boolean\n                              kubeVersion:\n                                description: |-\n                                  KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                  uses the Kubernetes version of the target cluster.\n                                type: string\n                              namespace:\n                                description: Namespace is an optional namespace to\n                                  template with. If left empty, defaults to the app's\n                                  destination namespace.\n                                type: string\n                              parameters:\n                                description: Parameters is a list of Helm parameters\n                                  which are passed to the helm template command upon\n                                  manifest generation\n                                items:\n                                  description: HelmParameter is a parameter that's\n                                    passed to helm template during manifest generation\n                                  properties:\n                                    forceString:\n                                      description: ForceString determines whether\n                                        to tell Helm to interpret booleans and numbers\n                                        as strings\n                                      type: boolean\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    value:\n                                      description: Value is the value for the Helm\n                                        parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                description: PassCredentials pass credentials to all\n                                  domains (Helm's --pass-credentials)\n                                type: boolean\n                              releaseName:\n                                description: ReleaseName is the Helm release name\n                                  to use. If omitted it will use the application name\n                                type: string\n                              skipCrds:\n                                description: SkipCrds skips custom resource definition\n                                  installation step (Helm's --skip-crds)\n                                type: boolean\n                              skipSchemaValidation:\n                                description: SkipSchemaValidation skips JSON schema\n                                  validation (Helm's --skip-schema-validation)\n                                type: boolean\n                              skipTests:\n                                description: SkipTests skips test manifest installation\n                                  step (Helm's --skip-tests).\n                                type: boolean\n                              valueFiles:\n                                description: ValuesFiles is a list of Helm value files\n                                  to use when generating a template\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                description: Values specifies Helm values to be passed\n                                  to helm template, typically defined as a block.\n                                  ValuesObject takes precedence over Values, so use\n                                  one or the other.\n                                type: string\n                              valuesObject:\n                                description: ValuesObject specifies Helm values to\n                                  be passed to helm template, defined as a map. This\n                                  takes precedence over Values.\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                description: Version is the Helm version to use for\n                                  templating (\"3\")\n                                type: string\n                            type: object\n                          kustomize:\n                            description: Kustomize holds kustomize specific options\n                            properties:\n                              apiVersions:\n                                description: |-\n                                  APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                  Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                items:\n                                  type: string\n                                type: array\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                description: CommonAnnotations is a list of additional\n                                  annotations to add to rendered manifests\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                description: CommonAnnotationsEnvsubst specifies whether\n                                  to apply env variables substitution for annotation\n                                  values\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                description: CommonLabels is a list of additional\n                                  labels to add to rendered manifests\n                                type: object\n                              components:\n                                description: Components specifies a list of kustomize\n                                  components to add to the kustomization before building\n                                items:\n                                  type: string\n                                type: array\n                              forceCommonAnnotations:\n                                description: ForceCommonAnnotations specifies whether\n                                  to force applying common annotations to resources\n                                  for Kustomize apps\n                                type: boolean\n                              forceCommonLabels:\n                                description: ForceCommonLabels specifies whether to\n                                  force applying common labels to resources for Kustomize\n                                  apps\n                                type: boolean\n                              ignoreMissingComponents:\n                                description: IgnoreMissingComponents prevents kustomize\n                                  from failing when components do not exist locally\n                                  by not appending them to kustomization file\n                                type: boolean\n                              images:\n                                description: Images is a list of Kustomize image override\n                                  specifications\n                                items:\n                                  description: KustomizeImage represents a Kustomize\n                                    image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                  type: string\n                                type: array\n                              kubeVersion:\n                                description: |-\n                                  KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                  uses the Kubernetes version of the target cluster.\n                                type: string\n                              labelIncludeTemplates:\n                                description: LabelIncludeTemplates specifies whether\n                                  to apply common labels to resource templates or\n                                  not\n                                type: boolean\n                              labelWithoutSelector:\n                                description: LabelWithoutSelector specifies whether\n                                  to apply common labels to resource selectors or\n                                  not\n                                type: boolean\n                              namePrefix:\n                                description: NamePrefix is a prefix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              nameSuffix:\n                                description: NameSuffix is a suffix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              namespace:\n                                description: Namespace sets the namespace that Kustomize\n                                  adds to all resources\n                                type: string\n                              patches:\n                                description: Patches is a list of Kustomize patches\n                                items:\n                                  properties:\n                                    options:\n                                      additionalProperties:\n                                        type: boolean\n                                      type: object\n                                    patch:\n                                      type: string\n                                    path:\n                                      type: string\n                                    target:\n                                      properties:\n                                        annotationSelector:\n                                          type: string\n                                        group:\n                                          type: string\n                                        kind:\n                                          type: string\n                                        labelSelector:\n                                          type: string\n                                        name:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        version:\n                                          type: string\n                                      type: object\n                                  type: object\n                                type: array\n                              replicas:\n                                description: Replicas is a list of Kustomize Replicas\n                                  override specifications\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      description: Number of replicas\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      description: Name of Deployment or StatefulSet\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                description: Version controls which version of Kustomize\n                                  to use for rendering manifests\n                                type: string\n                            type: object\n                          name:\n                            description: Name is used to refer to a source and is\n                              displayed in the UI. It is used in multi-source Applications.\n                            type: string\n                          path:\n                            description: Path is a directory path within the Git repository,\n                              and is only valid for applications sourced from Git.\n                            type: string\n                          plugin:\n                            description: Plugin holds config management plugin specific\n                              options\n                            properties:\n                              env:\n                                description: Env is a list of environment variable\n                                  entries\n                                items:\n                                  description: EnvEntry represents an entry in the\n                                    application's environment\n                                  properties:\n                                    name:\n                                      description: Name is the name of the variable,\n                                        usually expressed in uppercase\n                                      type: string\n                                    value:\n                                      description: Value is the value of the variable\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      description: Array is the value of an array\n                                        type parameter.\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      description: Map is the value of a map type\n                                        parameter.\n                                      type: object\n                                    name:\n                                      description: Name is the name identifying a\n                                        parameter.\n                                      type: string\n                                    string:\n                                      description: String_ is the value of a string\n                                        type parameter.\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            description: Ref is reference to another source within\n                              sources field. This field will not be used if used with\n                              a `source` tag.\n                            type: string\n                          repoURL:\n                            description: RepoURL is the URL to the repository (Git\n                              or Helm) that contains the application manifests\n                            type: string\n                          targetRevision:\n                            description: |-\n                              TargetRevision defines the revision of the source to sync the application to.\n                              In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                              In case of Helm, this is a semver tag for the Chart's version.\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      sources:\n                        description: Source records the application source information\n                          of the sync, used for comparing auto-sync\n                        items:\n                          description: ApplicationSource contains all required information\n                            about the source of an application\n                          properties:\n                            chart:\n                              description: Chart is a Helm chart name, and must be\n                                specified for applications sourced from a Helm repo.\n                              type: string\n                            directory:\n                              description: Directory holds path/directory specific\n                                options\n                              properties:\n                                exclude:\n                                  description: Exclude contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    excluded from being used during manifest generation\n                                  type: string\n                                include:\n                                  description: Include contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    included during manifest generation\n                                  type: string\n                                jsonnet:\n                                  description: Jsonnet holds options specific to Jsonnet\n                                  properties:\n                                    extVars:\n                                      description: ExtVars is a list of Jsonnet External\n                                        Variables\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    libs:\n                                      description: Additional library search dirs\n                                      items:\n                                        type: string\n                                      type: array\n                                    tlas:\n                                      description: TLAS is a list of Jsonnet Top-level\n                                        Arguments\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                  type: object\n                                recurse:\n                                  description: Recurse specifies whether to scan a\n                                    directory recursively for manifests\n                                  type: boolean\n                              type: object\n                            helm:\n                              description: Helm holds helm specific options\n                              properties:\n                                apiVersions:\n                                  description: |-\n                                    APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                    Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                  items:\n                                    type: string\n                                  type: array\n                                fileParameters:\n                                  description: FileParameters are file parameters\n                                    to the helm template\n                                  items:\n                                    description: HelmFileParameter is a file parameter\n                                      that's passed to helm template during manifest\n                                      generation\n                                    properties:\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      path:\n                                        description: Path is the path to the file\n                                          containing the values for the Helm parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                ignoreMissingValueFiles:\n                                  description: IgnoreMissingValueFiles prevents helm\n                                    template from failing when valueFiles do not exist\n                                    locally by not appending them to helm template\n                                    --values\n                                  type: boolean\n                                kubeVersion:\n                                  description: |-\n                                    KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                    uses the Kubernetes version of the target cluster.\n                                  type: string\n                                namespace:\n                                  description: Namespace is an optional namespace\n                                    to template with. If left empty, defaults to the\n                                    app's destination namespace.\n                                  type: string\n                                parameters:\n                                  description: Parameters is a list of Helm parameters\n                                    which are passed to the helm template command\n                                    upon manifest generation\n                                  items:\n                                    description: HelmParameter is a parameter that's\n                                      passed to helm template during manifest generation\n                                    properties:\n                                      forceString:\n                                        description: ForceString determines whether\n                                          to tell Helm to interpret booleans and numbers\n                                          as strings\n                                        type: boolean\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      value:\n                                        description: Value is the value for the Helm\n                                          parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                passCredentials:\n                                  description: PassCredentials pass credentials to\n                                    all domains (Helm's --pass-credentials)\n                                  type: boolean\n                                releaseName:\n                                  description: ReleaseName is the Helm release name\n                                    to use. If omitted it will use the application\n                                    name\n                                  type: string\n                                skipCrds:\n                                  description: SkipCrds skips custom resource definition\n                                    installation step (Helm's --skip-crds)\n                                  type: boolean\n                                skipSchemaValidation:\n                                  description: SkipSchemaValidation skips JSON schema\n                                    validation (Helm's --skip-schema-validation)\n                                  type: boolean\n                                skipTests:\n                                  description: SkipTests skips test manifest installation\n                                    step (Helm's --skip-tests).\n                                  type: boolean\n                                valueFiles:\n                                  description: ValuesFiles is a list of Helm value\n                                    files to use when generating a template\n                                  items:\n                                    type: string\n                                  type: array\n                                values:\n                                  description: Values specifies Helm values to be\n                                    passed to helm template, typically defined as\n                                    a block. ValuesObject takes precedence over Values,\n                                    so use one or the other.\n                                  type: string\n                                valuesObject:\n                                  description: ValuesObject specifies Helm values\n                                    to be passed to helm template, defined as a map.\n                                    This takes precedence over Values.\n                                  type: object\n                                  x-kubernetes-preserve-unknown-fields: true\n                                version:\n                                  description: Version is the Helm version to use\n                                    for templating (\"3\")\n                                  type: string\n                              type: object\n                            kustomize:\n                              description: Kustomize holds kustomize specific options\n                              properties:\n                                apiVersions:\n                                  description: |-\n                                    APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                    Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                  items:\n                                    type: string\n                                  type: array\n                                commonAnnotations:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonAnnotations is a list of additional\n                                    annotations to add to rendered manifests\n                                  type: object\n                                commonAnnotationsEnvsubst:\n                                  description: CommonAnnotationsEnvsubst specifies\n                                    whether to apply env variables substitution for\n                                    annotation values\n                                  type: boolean\n                                commonLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonLabels is a list of additional\n                                    labels to add to rendered manifests\n                                  type: object\n                                components:\n                                  description: Components specifies a list of kustomize\n                                    components to add to the kustomization before\n                                    building\n                                  items:\n                                    type: string\n                                  type: array\n                                forceCommonAnnotations:\n                                  description: ForceCommonAnnotations specifies whether\n                                    to force applying common annotations to resources\n                                    for Kustomize apps\n                                  type: boolean\n                                forceCommonLabels:\n                                  description: ForceCommonLabels specifies whether\n                                    to force applying common labels to resources for\n                                    Kustomize apps\n                                  type: boolean\n                                ignoreMissingComponents:\n                                  description: IgnoreMissingComponents prevents kustomize\n                                    from failing when components do not exist locally\n                                    by not appending them to kustomization file\n                                  type: boolean\n                                images:\n                                  description: Images is a list of Kustomize image\n                                    override specifications\n                                  items:\n                                    description: KustomizeImage represents a Kustomize\n                                      image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                    type: string\n                                  type: array\n                                kubeVersion:\n                                  description: |-\n                                    KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                    uses the Kubernetes version of the target cluster.\n                                  type: string\n                                labelIncludeTemplates:\n                                  description: LabelIncludeTemplates specifies whether\n                                    to apply common labels to resource templates or\n                                    not\n                                  type: boolean\n                                labelWithoutSelector:\n                                  description: LabelWithoutSelector specifies whether\n                                    to apply common labels to resource selectors or\n                                    not\n                                  type: boolean\n                                namePrefix:\n                                  description: NamePrefix is a prefix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                nameSuffix:\n                                  description: NameSuffix is a suffix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                namespace:\n                                  description: Namespace sets the namespace that Kustomize\n                                    adds to all resources\n                                  type: string\n                                patches:\n                                  description: Patches is a list of Kustomize patches\n                                  items:\n                                    properties:\n                                      options:\n                                        additionalProperties:\n                                          type: boolean\n                                        type: object\n                                      patch:\n                                        type: string\n                                      path:\n                                        type: string\n                                      target:\n                                        properties:\n                                          annotationSelector:\n                                            type: string\n                                          group:\n                                            type: string\n                                          kind:\n                                            type: string\n                                          labelSelector:\n                                            type: string\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          version:\n                                            type: string\n                                        type: object\n                                    type: object\n                                  type: array\n                                replicas:\n                                  description: Replicas is a list of Kustomize Replicas\n                                    override specifications\n                                  items:\n                                    properties:\n                                      count:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        description: Number of replicas\n                                        x-kubernetes-int-or-string: true\n                                      name:\n                                        description: Name of Deployment or StatefulSet\n                                        type: string\n                                    required:\n                                    - count\n                                    - name\n                                    type: object\n                                  type: array\n                                version:\n                                  description: Version controls which version of Kustomize\n                                    to use for rendering manifests\n                                  type: string\n                              type: object\n                            name:\n                              description: Name is used to refer to a source and is\n                                displayed in the UI. It is used in multi-source Applications.\n                              type: string\n                            path:\n                              description: Path is a directory path within the Git\n                                repository, and is only valid for applications sourced\n                                from Git.\n                              type: string\n                            plugin:\n                              description: Plugin holds config management plugin specific\n                                options\n                              properties:\n                                env:\n                                  description: Env is a list of environment variable\n                                    entries\n                                  items:\n                                    description: EnvEntry represents an entry in the\n                                      application's environment\n                                    properties:\n                                      name:\n                                        description: Name is the name of the variable,\n                                          usually expressed in uppercase\n                                        type: string\n                                      value:\n                                        description: Value is the value of the variable\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                name:\n                                  type: string\n                                parameters:\n                                  items:\n                                    properties:\n                                      array:\n                                        description: Array is the value of an array\n                                          type parameter.\n                                        items:\n                                          type: string\n                                        type: array\n                                      map:\n                                        additionalProperties:\n                                          type: string\n                                        description: Map is the value of a map type\n                                          parameter.\n                                        type: object\n                                      name:\n                                        description: Name is the name identifying\n                                          a parameter.\n                                        type: string\n                                      string:\n                                        description: String_ is the value of a string\n                                          type parameter.\n                                        type: string\n                                    type: object\n                                  type: array\n                              type: object\n                            ref:\n                              description: Ref is reference to another source within\n                                sources field. This field will not be used if used\n                                with a `source` tag.\n                              type: string\n                            repoURL:\n                              description: RepoURL is the URL to the repository (Git\n                                or Helm) that contains the application manifests\n                              type: string\n                            targetRevision:\n                              description: |-\n                                TargetRevision defines the revision of the source to sync the application to.\n                                In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                                In case of Helm, this is a semver tag for the Chart's version.\n                              type: string\n                          required:\n                          - repoURL\n                          type: object\n                        type: array\n                    required:\n                    - revision\n                    type: object\n                required:\n                - operation\n                - phase\n                - startedAt\n                type: object\n              reconciledAt:\n                description: ReconciledAt indicates when the application state was\n                  reconciled using the latest git version\n                format: date-time\n                type: string\n              resourceHealthSource:\n                description: 'ResourceHealthSource indicates where the resource health\n                  status is stored: inline if not set or appTree'\n                type: string\n              resources:\n                description: Resources is a list of Kubernetes resources managed by\n                  this application\n                items:\n                  description: ResourceStatus holds the current synchronization and\n                    health status of a Kubernetes resource.\n                  properties:\n                    group:\n                      description: Group represents the API group of the resource\n                        (e.g., \"apps\" for Deployments).\n                      type: string\n                    health:\n                      description: Health indicates the health status of the resource\n                        (e.g., Healthy, Degraded, Progressing).\n                      properties:\n                        lastTransitionTime:\n                          description: |-\n                            LastTransitionTime is the time the HealthStatus was set or updated\n\n                            Deprecated: this field is not used and will be removed in a future release.\n                          format: date-time\n                          type: string\n                        message:\n                          description: Message is a human-readable informational message\n                            describing the health status\n                          type: string\n                        status:\n                          description: Status holds the status code of the resource\n                          type: string\n                      type: object\n                    hook:\n                      description: Hook is true if the resource is used as a lifecycle\n                        hook in an Argo CD application.\n                      type: boolean\n                    kind:\n                      description: Kind specifies the type of the resource (e.g.,\n                        \"Deployment\", \"Service\").\n                      type: string\n                    name:\n                      description: Name is the unique name of the resource within\n                        the namespace.\n                      type: string\n                    namespace:\n                      description: Namespace defines the Kubernetes namespace where\n                        the resource is located.\n                      type: string\n                    requiresDeletionConfirmation:\n                      description: RequiresDeletionConfirmation is true if the resource\n                        requires explicit user confirmation before deletion.\n                      type: boolean\n                    requiresPruning:\n                      description: RequiresPruning is true if the resource needs to\n                        be pruned (deleted) as part of synchronization.\n                      type: boolean\n                    status:\n                      description: Status represents the synchronization state of\n                        the resource (e.g., Synced, OutOfSync).\n                      type: string\n                    syncWave:\n                      description: |-\n                        SyncWave determines the order in which resources are applied during a sync operation.\n                        Lower values are applied first.\n                      format: int64\n                      type: integer\n                    version:\n                      description: Version indicates the API version of the resource\n                        (e.g., \"v1\", \"v1beta1\").\n                      type: string\n                  type: object\n                type: array\n              sourceHydrator:\n                description: SourceHydrator stores information about the current state\n                  of source hydration\n                properties:\n                  currentOperation:\n                    description: CurrentOperation holds the status of the hydrate\n                      operation\n                    properties:\n                      drySHA:\n                        description: DrySHA holds the resolved revision (sha) of the\n                          dry source as of the most recent reconciliation\n                        type: string\n                      finishedAt:\n                        description: FinishedAt indicates when the hydrate operation\n                          finished\n                        format: date-time\n                        type: string\n                      hydratedSHA:\n                        description: HydratedSHA holds the resolved revision (sha)\n                          of the hydrated source as of the most recent reconciliation\n                        type: string\n                      message:\n                        description: Message contains a message describing the current\n                          status of the hydrate operation\n                        type: string\n                      phase:\n                        description: Phase indicates the status of the hydrate operation\n                        enum:\n                        - Hydrating\n                        - Failed\n                        - Hydrated\n                        type: string\n                      sourceHydrator:\n                        description: SourceHydrator holds the hydrator config used\n                          for the hydrate operation\n                        properties:\n                          drySource:\n                            description: DrySource specifies where the dry \"don't\n                              repeat yourself\" manifest source lives.\n                            properties:\n                              path:\n                                description: Path is a directory path within the Git\n                                  repository where the manifests are located\n                                type: string\n                              repoURL:\n                                description: RepoURL is the URL to the git repository\n                                  that contains the application manifests\n                                type: string\n                              targetRevision:\n                                description: TargetRevision defines the revision of\n                                  the source to hydrate\n                                type: string\n                            required:\n                            - path\n                            - repoURL\n                            - targetRevision\n                            type: object\n                          hydrateTo:\n                            description: |-\n                              HydrateTo specifies an optional \"staging\" location to push hydrated manifests to. An external system would then\n                              have to move manifests to the SyncSource, e.g. by pull request.\n                            properties:\n                              targetBranch:\n                                description: TargetBranch is the branch to which hydrated\n                                  manifests should be committed\n                                type: string\n                            required:\n                            - targetBranch\n                            type: object\n                          syncSource:\n                            description: SyncSource specifies where to sync hydrated\n                              manifests from.\n                            properties:\n                              path:\n                                description: |-\n                                  Path is a directory path within the git repository where hydrated manifests should be committed to and synced\n                                  from. If hydrateTo is set, this is just the path from which hydrated manifests will be synced.\n                                type: string\n                              targetBranch:\n                                description: TargetBranch is the branch to which hydrated\n                                  manifests should be committed\n                                type: string\n                            required:\n                            - path\n                            - targetBranch\n                            type: object\n                        required:\n                        - drySource\n                        - syncSource\n                        type: object\n                      startedAt:\n                        description: StartedAt indicates when the hydrate operation\n                          started\n                        format: date-time\n                        type: string\n                    required:\n                    - message\n                    - phase\n                    type: object\n                  lastSuccessfulOperation:\n                    description: LastSuccessfulOperation holds info about the most\n                      recent successful hydration\n                    properties:\n                      drySHA:\n                        description: DrySHA holds the resolved revision (sha) of the\n                          dry source as of the most recent reconciliation\n                        type: string\n                      hydratedSHA:\n                        description: HydratedSHA holds the resolved revision (sha)\n                          of the hydrated source as of the most recent reconciliation\n                        type: string\n                      sourceHydrator:\n                        description: SourceHydrator holds the hydrator config used\n                          for the hydrate operation\n                        properties:\n                          drySource:\n                            description: DrySource specifies where the dry \"don't\n                              repeat yourself\" manifest source lives.\n                            properties:\n                              path:\n                                description: Path is a directory path within the Git\n                                  repository where the manifests are located\n                                type: string\n                              repoURL:\n                                description: RepoURL is the URL to the git repository\n                                  that contains the application manifests\n                                type: string\n                              targetRevision:\n                                description: TargetRevision defines the revision of\n                                  the source to hydrate\n                                type: string\n                            required:\n                            - path\n                            - repoURL\n                            - targetRevision\n                            type: object\n                          hydrateTo:\n                            description: |-\n                              HydrateTo specifies an optional \"staging\" location to push hydrated manifests to. An external system would then\n                              have to move manifests to the SyncSource, e.g. by pull request.\n                            properties:\n                              targetBranch:\n                                description: TargetBranch is the branch to which hydrated\n                                  manifests should be committed\n                                type: string\n                            required:\n                            - targetBranch\n                            type: object\n                          syncSource:\n                            description: SyncSource specifies where to sync hydrated\n                              manifests from.\n                            properties:\n                              path:\n                                description: |-\n                                  Path is a directory path within the git repository where hydrated manifests should be committed to and synced\n                                  from. If hydrateTo is set, this is just the path from which hydrated manifests will be synced.\n                                type: string\n                              targetBranch:\n                                description: TargetBranch is the branch to which hydrated\n                                  manifests should be committed\n                                type: string\n                            required:\n                            - path\n                            - targetBranch\n                            type: object\n                        required:\n                        - drySource\n                        - syncSource\n                        type: object\n                    type: object\n                type: object\n              sourceType:\n                description: SourceType specifies the type of this application\n                type: string\n              sourceTypes:\n                description: SourceTypes specifies the type of the sources included\n                  in the application\n                items:\n                  description: ApplicationSourceType specifies the type of the application's\n                    source\n                  type: string\n                type: array\n              summary:\n                description: Summary contains a list of URLs and container images\n                  used by this application\n                properties:\n                  externalURLs:\n                    description: ExternalURLs holds all external URLs of application\n                      child resources.\n                    items:\n                      type: string\n                    type: array\n                  images:\n                    description: Images holds all images of application child resources.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              sync:\n                description: Sync contains information about the application's current\n                  sync status\n                properties:\n                  comparedTo:\n                    description: ComparedTo contains information about what has been\n                      compared\n                    properties:\n                      destination:\n                        description: Destination is a reference to the application's\n                          destination used for comparison\n                        properties:\n                          name:\n                            description: Name is an alternate way of specifying the\n                              target cluster by its symbolic name. This must be set\n                              if Server is not set.\n                            type: string\n                          namespace:\n                            description: |-\n                              Namespace specifies the target namespace for the application's resources.\n                              The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace\n                            type: string\n                          server:\n                            description: Server specifies the URL of the target cluster's\n                              Kubernetes control plane API. This must be set if Name\n                              is not set.\n                            type: string\n                        type: object\n                      ignoreDifferences:\n                        description: IgnoreDifferences is a reference to the application's\n                          ignored differences used for comparison\n                        items:\n                          description: ResourceIgnoreDifferences contains resource\n                            filter and list of json paths which should be ignored\n                            during comparison with live state.\n                          properties:\n                            group:\n                              type: string\n                            jqPathExpressions:\n                              items:\n                                type: string\n                              type: array\n                            jsonPointers:\n                              items:\n                                type: string\n                              type: array\n                            kind:\n                              type: string\n                            managedFieldsManagers:\n                              description: |-\n                                ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the\n                                desired state defined in the SCM and won't be displayed in diffs\n                              items:\n                                type: string\n                              type: array\n                            name:\n                              type: string\n                            namespace:\n                              type: string\n                          required:\n                          - kind\n                          type: object\n                        type: array\n                      source:\n                        description: Source is a reference to the application's source\n                          used for comparison\n                        properties:\n                          chart:\n                            description: Chart is a Helm chart name, and must be specified\n                              for applications sourced from a Helm repo.\n                            type: string\n                          directory:\n                            description: Directory holds path/directory specific options\n                            properties:\n                              exclude:\n                                description: Exclude contains a glob pattern to match\n                                  paths against that should be explicitly excluded\n                                  from being used during manifest generation\n                                type: string\n                              include:\n                                description: Include contains a glob pattern to match\n                                  paths against that should be explicitly included\n                                  during manifest generation\n                                type: string\n                              jsonnet:\n                                description: Jsonnet holds options specific to Jsonnet\n                                properties:\n                                  extVars:\n                                    description: ExtVars is a list of Jsonnet External\n                                      Variables\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    description: Additional library search dirs\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    description: TLAS is a list of Jsonnet Top-level\n                                      Arguments\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                description: Recurse specifies whether to scan a directory\n                                  recursively for manifests\n                                type: boolean\n                            type: object\n                          helm:\n                            description: Helm holds helm specific options\n                            properties:\n                              apiVersions:\n                                description: |-\n                                  APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                  Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                items:\n                                  type: string\n                                type: array\n                              fileParameters:\n                                description: FileParameters are file parameters to\n                                  the helm template\n                                items:\n                                  description: HelmFileParameter is a file parameter\n                                    that's passed to helm template during manifest\n                                    generation\n                                  properties:\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    path:\n                                      description: Path is the path to the file containing\n                                        the values for the Helm parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                description: IgnoreMissingValueFiles prevents helm\n                                  template from failing when valueFiles do not exist\n                                  locally by not appending them to helm template --values\n                                type: boolean\n                              kubeVersion:\n                                description: |-\n                                  KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                  uses the Kubernetes version of the target cluster.\n                                type: string\n                              namespace:\n                                description: Namespace is an optional namespace to\n                                  template with. If left empty, defaults to the app's\n                                  destination namespace.\n                                type: string\n                              parameters:\n                                description: Parameters is a list of Helm parameters\n                                  which are passed to the helm template command upon\n                                  manifest generation\n                                items:\n                                  description: HelmParameter is a parameter that's\n                                    passed to helm template during manifest generation\n                                  properties:\n                                    forceString:\n                                      description: ForceString determines whether\n                                        to tell Helm to interpret booleans and numbers\n                                        as strings\n                                      type: boolean\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    value:\n                                      description: Value is the value for the Helm\n                                        parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                description: PassCredentials pass credentials to all\n                                  domains (Helm's --pass-credentials)\n                                type: boolean\n                              releaseName:\n                                description: ReleaseName is the Helm release name\n                                  to use. If omitted it will use the application name\n                                type: string\n                              skipCrds:\n                                description: SkipCrds skips custom resource definition\n                                  installation step (Helm's --skip-crds)\n                                type: boolean\n                              skipSchemaValidation:\n                                description: SkipSchemaValidation skips JSON schema\n                                  validation (Helm's --skip-schema-validation)\n                                type: boolean\n                              skipTests:\n                                description: SkipTests skips test manifest installation\n                                  step (Helm's --skip-tests).\n                                type: boolean\n                              valueFiles:\n                                description: ValuesFiles is a list of Helm value files\n                                  to use when generating a template\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                description: Values specifies Helm values to be passed\n                                  to helm template, typically defined as a block.\n                                  ValuesObject takes precedence over Values, so use\n                                  one or the other.\n                                type: string\n                              valuesObject:\n                                description: ValuesObject specifies Helm values to\n                                  be passed to helm template, defined as a map. This\n                                  takes precedence over Values.\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                description: Version is the Helm version to use for\n                                  templating (\"3\")\n                                type: string\n                            type: object\n                          kustomize:\n                            description: Kustomize holds kustomize specific options\n                            properties:\n                              apiVersions:\n                                description: |-\n                                  APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                  Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                items:\n                                  type: string\n                                type: array\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                description: CommonAnnotations is a list of additional\n                                  annotations to add to rendered manifests\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                description: CommonAnnotationsEnvsubst specifies whether\n                                  to apply env variables substitution for annotation\n                                  values\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                description: CommonLabels is a list of additional\n                                  labels to add to rendered manifests\n                                type: object\n                              components:\n                                description: Components specifies a list of kustomize\n                                  components to add to the kustomization before building\n                                items:\n                                  type: string\n                                type: array\n                              forceCommonAnnotations:\n                                description: ForceCommonAnnotations specifies whether\n                                  to force applying common annotations to resources\n                                  for Kustomize apps\n                                type: boolean\n                              forceCommonLabels:\n                                description: ForceCommonLabels specifies whether to\n                                  force applying common labels to resources for Kustomize\n                                  apps\n                                type: boolean\n                              ignoreMissingComponents:\n                                description: IgnoreMissingComponents prevents kustomize\n                                  from failing when components do not exist locally\n                                  by not appending them to kustomization file\n                                type: boolean\n                              images:\n                                description: Images is a list of Kustomize image override\n                                  specifications\n                                items:\n                                  description: KustomizeImage represents a Kustomize\n                                    image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                  type: string\n                                type: array\n                              kubeVersion:\n                                description: |-\n                                  KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                  uses the Kubernetes version of the target cluster.\n                                type: string\n                              labelIncludeTemplates:\n                                description: LabelIncludeTemplates specifies whether\n                                  to apply common labels to resource templates or\n                                  not\n                                type: boolean\n                              labelWithoutSelector:\n                                description: LabelWithoutSelector specifies whether\n                                  to apply common labels to resource selectors or\n                                  not\n                                type: boolean\n                              namePrefix:\n                                description: NamePrefix is a prefix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              nameSuffix:\n                                description: NameSuffix is a suffix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              namespace:\n                                description: Namespace sets the namespace that Kustomize\n                                  adds to all resources\n                                type: string\n                              patches:\n                                description: Patches is a list of Kustomize patches\n                                items:\n                                  properties:\n                                    options:\n                                      additionalProperties:\n                                        type: boolean\n                                      type: object\n                                    patch:\n                                      type: string\n                                    path:\n                                      type: string\n                                    target:\n                                      properties:\n                                        annotationSelector:\n                                          type: string\n                                        group:\n                                          type: string\n                                        kind:\n                                          type: string\n                                        labelSelector:\n                                          type: string\n                                        name:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        version:\n                                          type: string\n                                      type: object\n                                  type: object\n                                type: array\n                              replicas:\n                                description: Replicas is a list of Kustomize Replicas\n                                  override specifications\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      description: Number of replicas\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      description: Name of Deployment or StatefulSet\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                description: Version controls which version of Kustomize\n                                  to use for rendering manifests\n                                type: string\n                            type: object\n                          name:\n                            description: Name is used to refer to a source and is\n                              displayed in the UI. It is used in multi-source Applications.\n                            type: string\n                          path:\n                            description: Path is a directory path within the Git repository,\n                              and is only valid for applications sourced from Git.\n                            type: string\n                          plugin:\n                            description: Plugin holds config management plugin specific\n                              options\n                            properties:\n                              env:\n                                description: Env is a list of environment variable\n                                  entries\n                                items:\n                                  description: EnvEntry represents an entry in the\n                                    application's environment\n                                  properties:\n                                    name:\n                                      description: Name is the name of the variable,\n                                        usually expressed in uppercase\n                                      type: string\n                                    value:\n                                      description: Value is the value of the variable\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      description: Array is the value of an array\n                                        type parameter.\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      description: Map is the value of a map type\n                                        parameter.\n                                      type: object\n                                    name:\n                                      description: Name is the name identifying a\n                                        parameter.\n                                      type: string\n                                    string:\n                                      description: String_ is the value of a string\n                                        type parameter.\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            description: Ref is reference to another source within\n                              sources field. This field will not be used if used with\n                              a `source` tag.\n                            type: string\n                          repoURL:\n                            description: RepoURL is the URL to the repository (Git\n                              or Helm) that contains the application manifests\n                            type: string\n                          targetRevision:\n                            description: |-\n                              TargetRevision defines the revision of the source to sync the application to.\n                              In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                              In case of Helm, this is a semver tag for the Chart's version.\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      sources:\n                        description: Sources is a reference to the application's multiple\n                          sources used for comparison\n                        items:\n                          description: ApplicationSource contains all required information\n                            about the source of an application\n                          properties:\n                            chart:\n                              description: Chart is a Helm chart name, and must be\n                                specified for applications sourced from a Helm repo.\n                              type: string\n                            directory:\n                              description: Directory holds path/directory specific\n                                options\n                              properties:\n                                exclude:\n                                  description: Exclude contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    excluded from being used during manifest generation\n                                  type: string\n                                include:\n                                  description: Include contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    included during manifest generation\n                                  type: string\n                                jsonnet:\n                                  description: Jsonnet holds options specific to Jsonnet\n                                  properties:\n                                    extVars:\n                                      description: ExtVars is a list of Jsonnet External\n                                        Variables\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    libs:\n                                      description: Additional library search dirs\n                                      items:\n                                        type: string\n                                      type: array\n                                    tlas:\n                                      description: TLAS is a list of Jsonnet Top-level\n                                        Arguments\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                  type: object\n                                recurse:\n                                  description: Recurse specifies whether to scan a\n                                    directory recursively for manifests\n                                  type: boolean\n                              type: object\n                            helm:\n                              description: Helm holds helm specific options\n                              properties:\n                                apiVersions:\n                                  description: |-\n                                    APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                    Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                  items:\n                                    type: string\n                                  type: array\n                                fileParameters:\n                                  description: FileParameters are file parameters\n                                    to the helm template\n                                  items:\n                                    description: HelmFileParameter is a file parameter\n                                      that's passed to helm template during manifest\n                                      generation\n                                    properties:\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      path:\n                                        description: Path is the path to the file\n                                          containing the values for the Helm parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                ignoreMissingValueFiles:\n                                  description: IgnoreMissingValueFiles prevents helm\n                                    template from failing when valueFiles do not exist\n                                    locally by not appending them to helm template\n                                    --values\n                                  type: boolean\n                                kubeVersion:\n                                  description: |-\n                                    KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                    uses the Kubernetes version of the target cluster.\n                                  type: string\n                                namespace:\n                                  description: Namespace is an optional namespace\n                                    to template with. If left empty, defaults to the\n                                    app's destination namespace.\n                                  type: string\n                                parameters:\n                                  description: Parameters is a list of Helm parameters\n                                    which are passed to the helm template command\n                                    upon manifest generation\n                                  items:\n                                    description: HelmParameter is a parameter that's\n                                      passed to helm template during manifest generation\n                                    properties:\n                                      forceString:\n                                        description: ForceString determines whether\n                                          to tell Helm to interpret booleans and numbers\n                                          as strings\n                                        type: boolean\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      value:\n                                        description: Value is the value for the Helm\n                                          parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                passCredentials:\n                                  description: PassCredentials pass credentials to\n                                    all domains (Helm's --pass-credentials)\n                                  type: boolean\n                                releaseName:\n                                  description: ReleaseName is the Helm release name\n                                    to use. If omitted it will use the application\n                                    name\n                                  type: string\n                                skipCrds:\n                                  description: SkipCrds skips custom resource definition\n                                    installation step (Helm's --skip-crds)\n                                  type: boolean\n                                skipSchemaValidation:\n                                  description: SkipSchemaValidation skips JSON schema\n                                    validation (Helm's --skip-schema-validation)\n                                  type: boolean\n                                skipTests:\n                                  description: SkipTests skips test manifest installation\n                                    step (Helm's --skip-tests).\n                                  type: boolean\n                                valueFiles:\n                                  description: ValuesFiles is a list of Helm value\n                                    files to use when generating a template\n                                  items:\n                                    type: string\n                                  type: array\n                                values:\n                                  description: Values specifies Helm values to be\n                                    passed to helm template, typically defined as\n                                    a block. ValuesObject takes precedence over Values,\n                                    so use one or the other.\n                                  type: string\n                                valuesObject:\n                                  description: ValuesObject specifies Helm values\n                                    to be passed to helm template, defined as a map.\n                                    This takes precedence over Values.\n                                  type: object\n                                  x-kubernetes-preserve-unknown-fields: true\n                                version:\n                                  description: Version is the Helm version to use\n                                    for templating (\"3\")\n                                  type: string\n                              type: object\n                            kustomize:\n                              description: Kustomize holds kustomize specific options\n                              properties:\n                                apiVersions:\n                                  description: |-\n                                    APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,\n                                    Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.\n                                  items:\n                                    type: string\n                                  type: array\n                                commonAnnotations:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonAnnotations is a list of additional\n                                    annotations to add to rendered manifests\n                                  type: object\n                                commonAnnotationsEnvsubst:\n                                  description: CommonAnnotationsEnvsubst specifies\n                                    whether to apply env variables substitution for\n                                    annotation values\n                                  type: boolean\n                                commonLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonLabels is a list of additional\n                                    labels to add to rendered manifests\n                                  type: object\n                                components:\n                                  description: Components specifies a list of kustomize\n                                    components to add to the kustomization before\n                                    building\n                                  items:\n                                    type: string\n                                  type: array\n                                forceCommonAnnotations:\n                                  description: ForceCommonAnnotations specifies whether\n                                    to force applying common annotations to resources\n                                    for Kustomize apps\n                                  type: boolean\n                                forceCommonLabels:\n                                  description: ForceCommonLabels specifies whether\n                                    to force applying common labels to resources for\n                                    Kustomize apps\n                                  type: boolean\n                                ignoreMissingComponents:\n                                  description: IgnoreMissingComponents prevents kustomize\n                                    from failing when components do not exist locally\n                                    by not appending them to kustomization file\n                                  type: boolean\n                                images:\n                                  description: Images is a list of Kustomize image\n                                    override specifications\n                                  items:\n                                    description: KustomizeImage represents a Kustomize\n                                      image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                    type: string\n                                  type: array\n                                kubeVersion:\n                                  description: |-\n                                    KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD\n                                    uses the Kubernetes version of the target cluster.\n                                  type: string\n                                labelIncludeTemplates:\n                                  description: LabelIncludeTemplates specifies whether\n                                    to apply common labels to resource templates or\n                                    not\n                                  type: boolean\n                                labelWithoutSelector:\n                                  description: LabelWithoutSelector specifies whether\n                                    to apply common labels to resource selectors or\n                                    not\n                                  type: boolean\n                                namePrefix:\n                                  description: NamePrefix is a prefix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                nameSuffix:\n                                  description: NameSuffix is a suffix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                namespace:\n                                  description: Namespace sets the namespace that Kustomize\n                                    adds to all resources\n                                  type: string\n                                patches:\n                                  description: Patches is a list of Kustomize patches\n                                  items:\n                                    properties:\n                                      options:\n                                        additionalProperties:\n                                          type: boolean\n                                        type: object\n                                      patch:\n                                        type: string\n                                      path:\n                                        type: string\n                                      target:\n                                        properties:\n                                          annotationSelector:\n                                            type: string\n                                          group:\n                                            type: string\n                                          kind:\n                                            type: string\n                                          labelSelector:\n                                            type: string\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          version:\n                                            type: string\n                                        type: object\n                                    type: object\n                                  type: array\n                                replicas:\n                                  description: Replicas is a list of Kustomize Replicas\n                                    override specifications\n                                  items:\n                                    properties:\n                                      count:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        description: Number of replicas\n                                        x-kubernetes-int-or-string: true\n                                      name:\n                                        description: Name of Deployment or StatefulSet\n                                        type: string\n                                    required:\n                                    - count\n                                    - name\n                                    type: object\n                                  type: array\n                                version:\n                                  description: Version controls which version of Kustomize\n                                    to use for rendering manifests\n                                  type: string\n                              type: object\n                            name:\n                              description: Name is used to refer to a source and is\n                                displayed in the UI. It is used in multi-source Applications.\n                              type: string\n                            path:\n                              description: Path is a directory path within the Git\n                                repository, and is only valid for applications sourced\n                                from Git.\n                              type: string\n                            plugin:\n                              description: Plugin holds config management plugin specific\n                                options\n                              properties:\n                                env:\n                                  description: Env is a list of environment variable\n                                    entries\n                                  items:\n                                    description: EnvEntry represents an entry in the\n                                      application's environment\n                                    properties:\n                                      name:\n                                        description: Name is the name of the variable,\n                                          usually expressed in uppercase\n                                        type: string\n                                      value:\n                                        description: Value is the value of the variable\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                name:\n                                  type: string\n                                parameters:\n                                  items:\n                                    properties:\n                                      array:\n                                        description: Array is the value of an array\n                                          type parameter.\n                                        items:\n                                          type: string\n                                        type: array\n                                      map:\n                                        additionalProperties:\n                                          type: string\n                                        description: Map is the value of a map type\n                                          parameter.\n                                        type: object\n                                      name:\n                                        description: Name is the name identifying\n                                          a parameter.\n                                        type: string\n                                      string:\n                                        description: String_ is the value of a string\n                                          type parameter.\n                                        type: string\n                                    type: object\n                                  type: array\n                              type: object\n                            ref:\n                              description: Ref is reference to another source within\n                                sources field. This field will not be used if used\n                                with a `source` tag.\n                              type: string\n                            repoURL:\n                              description: RepoURL is the URL to the repository (Git\n                                or Helm) that contains the application manifests\n                              type: string\n                            targetRevision:\n                              description: |-\n                                TargetRevision defines the revision of the source to sync the application to.\n                                In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.\n                                In case of Helm, this is a semver tag for the Chart's version.\n                              type: string\n                          required:\n                          - repoURL\n                          type: object\n                        type: array\n                    required:\n                    - destination\n                    type: object\n                  revision:\n                    description: Revision contains information about the revision\n                      the comparison has been performed to\n                    type: string\n                  revisions:\n                    description: Revisions contains information about the revisions\n                      of multiple sources the comparison has been performed to\n                    items:\n                      type: string\n                    type: array\n                  status:\n                    description: Status is the sync state of the comparison\n                    type: string\n                required:\n                - status\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app.kubernetes.io/name: applicationsets.argoproj.io\n    app.kubernetes.io/part-of: argocd\n  name: applicationsets.argoproj.io\nspec:\n  group: argoproj.io\n  names:\n    kind: ApplicationSet\n    listKind: ApplicationSetList\n    plural: applicationsets\n    shortNames:\n    - appset\n    - appsets\n    singular: applicationset\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        properties:\n          apiVersion:\n            type: string\n          kind:\n            type: string\n          metadata:\n            type: object\n          spec:\n            properties:\n              applyNestedSelectors:\n                type: boolean\n              generators:\n                items:\n                  properties:\n                    clusterDecisionResource:\n                      properties:\n                        configMapRef:\n                          type: string\n                        labelSelector:\n                          properties:\n                            matchExpressions:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  operator:\n                                    type: string\n                                  values:\n                                    items:\n                                      type: string\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                required:\n                                - key\n                                - operator\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            matchLabels:\n                              additionalProperties:\n                                type: string\n                              type: object\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        name:\n                          type: string\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        kubeVersion:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        skipSchemaValidation:\n                                          type: boolean\n                                        skipTests:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        components:\n                                          items:\n                                            type: string\n                                          type: array\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        ignoreMissingComponents:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        kubeVersion:\n                                          type: string\n                                        labelIncludeTemplates:\n                                          type: boolean\n                                        labelWithoutSelector:\n                                          type: boolean\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        patches:\n                                          items:\n                                            properties:\n                                              options:\n                                                additionalProperties:\n                                                  type: boolean\n                                                type: object\n                                              patch:\n                                                type: string\n                                              path:\n                                                type: string\n                                              target:\n                                                properties:\n                                                  annotationSelector:\n                                                    type: string\n                                                  group:\n                                                    type: string\n                                                  kind:\n                                                    type: string\n                                                  labelSelector:\n                                                    type: string\n                                                  name:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  version:\n                                                    type: string\n                                                type: object\n                                            type: object\n                                          type: array\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sourceHydrator:\n                                  properties:\n                                    drySource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        repoURL:\n                                          type: string\n                                        targetRevision:\n                                          type: string\n                                      required:\n                                      - path\n                                      - repoURL\n                                      - targetRevision\n                                      type: object\n                                    hydrateTo:\n                                      properties:\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - targetBranch\n                                      type: object\n                                    syncSource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - path\n                                      - targetBranch\n                                      type: object\n                                  required:\n                                  - drySource\n                                  - syncSource\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          kubeVersion:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          skipSchemaValidation:\n                                            type: boolean\n                                          skipTests:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          components:\n                                            items:\n                                              type: string\n                                            type: array\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          ignoreMissingComponents:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          kubeVersion:\n                                            type: string\n                                          labelIncludeTemplates:\n                                            type: boolean\n                                          labelWithoutSelector:\n                                            type: boolean\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          patches:\n                                            items:\n                                              properties:\n                                                options:\n                                                  additionalProperties:\n                                                    type: boolean\n                                                  type: object\n                                                patch:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                target:\n                                                  properties:\n                                                    annotationSelector:\n                                                      type: string\n                                                    group:\n                                                      type: string\n                                                    kind:\n                                                      type: string\n                                                    labelSelector:\n                                                      type: string\n                                                    name:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                              type: object\n                                            type: array\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        enabled:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      required:\n                      - configMapRef\n                      type: object\n                    clusters:\n                      properties:\n                        flatList:\n                          type: boolean\n                        selector:\n                          properties:\n                            matchExpressions:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  operator:\n                                    type: string\n                                  values:\n                                    items:\n                                      type: string\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                required:\n                                - key\n                                - operator\n                                type: object\n                              type: array\n                              x-kubernetes-list-type: atomic\n                            matchLabels:\n                              additionalProperties:\n                                type: string\n                              type: object\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        kubeVersion:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        skipSchemaValidation:\n                                          type: boolean\n                                        skipTests:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        components:\n                                          items:\n                                            type: string\n                                          type: array\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        ignoreMissingComponents:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        kubeVersion:\n                                          type: string\n                                        labelIncludeTemplates:\n                                          type: boolean\n                                        labelWithoutSelector:\n                                          type: boolean\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        patches:\n                                          items:\n                                            properties:\n                                              options:\n                                                additionalProperties:\n                                                  type: boolean\n                                                type: object\n                                              patch:\n                                                type: string\n                                              path:\n                                                type: string\n                                              target:\n                                                properties:\n                                                  annotationSelector:\n                                                    type: string\n                                                  group:\n                                                    type: string\n                                                  kind:\n                                                    type: string\n                                                  labelSelector:\n                                                    type: string\n                                                  name:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  version:\n                                                    type: string\n                                                type: object\n                                            type: object\n                                          type: array\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sourceHydrator:\n                                  properties:\n                                    drySource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        repoURL:\n                                          type: string\n                                        targetRevision:\n                                          type: string\n                                      required:\n                                      - path\n                                      - repoURL\n                                      - targetRevision\n                                      type: object\n                                    hydrateTo:\n                                      properties:\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - targetBranch\n                                      type: object\n                                    syncSource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - path\n                                      - targetBranch\n                                      type: object\n                                  required:\n                                  - drySource\n                                  - syncSource\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          kubeVersion:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          skipSchemaValidation:\n                                            type: boolean\n                                          skipTests:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          components:\n                                            items:\n                                              type: string\n                                            type: array\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          ignoreMissingComponents:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          kubeVersion:\n                                            type: string\n                                          labelIncludeTemplates:\n                                            type: boolean\n                                          labelWithoutSelector:\n                                            type: boolean\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          patches:\n                                            items:\n                                              properties:\n                                                options:\n                                                  additionalProperties:\n                                                    type: boolean\n                                                  type: object\n                                                patch:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                target:\n                                                  properties:\n                                                    annotationSelector:\n                                                      type: string\n                                                    group:\n                                                      type: string\n                                                    kind:\n                                                      type: string\n                                                    labelSelector:\n                                                      type: string\n                                                    name:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                              type: object\n                                            type: array\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        enabled:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      type: object\n                    git:\n                      properties:\n                        directories:\n                          items:\n                            properties:\n                              exclude:\n                                type: boolean\n                              path:\n                                type: string\n                            required:\n                            - path\n                            type: object\n                          type: array\n                        files:\n                          items:\n                            properties:\n                              exclude:\n                                type: boolean\n                              path:\n                                type: string\n                            required:\n                            - path\n                            type: object\n                          type: array\n                        pathParamPrefix:\n                          type: string\n                        repoURL:\n                          type: string\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        revision:\n                          type: string\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        kubeVersion:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        skipSchemaValidation:\n                                          type: boolean\n                                        skipTests:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        components:\n                                          items:\n                                            type: string\n                                          type: array\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        ignoreMissingComponents:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        kubeVersion:\n                                          type: string\n                                        labelIncludeTemplates:\n                                          type: boolean\n                                        labelWithoutSelector:\n                                          type: boolean\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        patches:\n                                          items:\n                                            properties:\n                                              options:\n                                                additionalProperties:\n                                                  type: boolean\n                                                type: object\n                                              patch:\n                                                type: string\n                                              path:\n                                                type: string\n                                              target:\n                                                properties:\n                                                  annotationSelector:\n                                                    type: string\n                                                  group:\n                                                    type: string\n                                                  kind:\n                                                    type: string\n                                                  labelSelector:\n                                                    type: string\n                                                  name:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  version:\n                                                    type: string\n                                                type: object\n                                            type: object\n                                          type: array\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sourceHydrator:\n                                  properties:\n                                    drySource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        repoURL:\n                                          type: string\n                                        targetRevision:\n                                          type: string\n                                      required:\n                                      - path\n                                      - repoURL\n                                      - targetRevision\n                                      type: object\n                                    hydrateTo:\n                                      properties:\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - targetBranch\n                                      type: object\n                                    syncSource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - path\n                                      - targetBranch\n                                      type: object\n                                  required:\n                                  - drySource\n                                  - syncSource\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          kubeVersion:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          skipSchemaValidation:\n                                            type: boolean\n                                          skipTests:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          components:\n                                            items:\n                                              type: string\n                                            type: array\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          ignoreMissingComponents:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          kubeVersion:\n                                            type: string\n                                          labelIncludeTemplates:\n                                            type: boolean\n                                          labelWithoutSelector:\n                                            type: boolean\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          patches:\n                                            items:\n                                              properties:\n                                                options:\n                                                  additionalProperties:\n                                                    type: boolean\n                                                  type: object\n                                                patch:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                target:\n                                                  properties:\n                                                    annotationSelector:\n                                                      type: string\n                                                    group:\n                                                      type: string\n                                                    kind:\n                                                      type: string\n                                                    labelSelector:\n                                                      type: string\n                                                    name:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                              type: object\n                                            type: array\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        enabled:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      required:\n                      - repoURL\n                      - revision\n                      type: object\n                    list:\n                      properties:\n                        elements:\n                          items:\n                            x-kubernetes-preserve-unknown-fields: true\n                          type: array\n                        elementsYaml:\n                          type: string\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        kubeVersion:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        skipSchemaValidation:\n                                          type: boolean\n                                        skipTests:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        components:\n                                          items:\n                                            type: string\n                                          type: array\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        ignoreMissingComponents:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        kubeVersion:\n                                          type: string\n                                        labelIncludeTemplates:\n                                          type: boolean\n                                        labelWithoutSelector:\n                                          type: boolean\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        patches:\n                                          items:\n                                            properties:\n                                              options:\n                                                additionalProperties:\n                                                  type: boolean\n                                                type: object\n                                              patch:\n                                                type: string\n                                              path:\n                                                type: string\n                                              target:\n                                                properties:\n                                                  annotationSelector:\n                                                    type: string\n                                                  group:\n                                                    type: string\n                                                  kind:\n                                                    type: string\n                                                  labelSelector:\n                                                    type: string\n                                                  name:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  version:\n                                                    type: string\n                                                type: object\n                                            type: object\n                                          type: array\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sourceHydrator:\n                                  properties:\n                                    drySource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        repoURL:\n                                          type: string\n                                        targetRevision:\n                                          type: string\n                                      required:\n                                      - path\n                                      - repoURL\n                                      - targetRevision\n                                      type: object\n                                    hydrateTo:\n                                      properties:\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - targetBranch\n                                      type: object\n                                    syncSource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - path\n                                      - targetBranch\n                                      type: object\n                                  required:\n                                  - drySource\n                                  - syncSource\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          kubeVersion:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          skipSchemaValidation:\n                                            type: boolean\n                                          skipTests:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          components:\n                                            items:\n                                              type: string\n                                            type: array\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          ignoreMissingComponents:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          kubeVersion:\n                                            type: string\n                                          labelIncludeTemplates:\n                                            type: boolean\n                                          labelWithoutSelector:\n                                            type: boolean\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          patches:\n                                            items:\n                                              properties:\n                                                options:\n                                                  additionalProperties:\n                                                    type: boolean\n                                                  type: object\n                                                patch:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                target:\n                                                  properties:\n                                                    annotationSelector:\n                                                      type: string\n                                                    group:\n                                                      type: string\n                                                    kind:\n                                                      type: string\n                                                    labelSelector:\n                                                      type: string\n                                                    name:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                              type: object\n                                            type: array\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        enabled:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                      type: object\n                    matrix:\n                      properties:\n                        generators:\n                          items:\n                            properties:\n                              clusterDecisionResource:\n                                properties:\n                                  configMapRef:\n                                    type: string\n                                  labelSelector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  name:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              clusters:\n                                properties:\n                                  flatList:\n                                    type: boolean\n                                  selector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              git:\n                                properties:\n                                  directories:\n                                    items:\n                                      properties:\n                                        exclude:\n                                          type: boolean\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  files:\n                                    items:\n                                      properties:\n                                        exclude:\n                                          type: boolean\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  pathParamPrefix:\n                                    type: string\n                                  repoURL:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  revision:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - repoURL\n                                - revision\n                                type: object\n                              list:\n                                properties:\n                                  elements:\n                                    items:\n                                      x-kubernetes-preserve-unknown-fields: true\n                                    type: array\n                                  elementsYaml:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                type: object\n                              matrix:\n                                x-kubernetes-preserve-unknown-fields: true\n                              merge:\n                                x-kubernetes-preserve-unknown-fields: true\n                              plugin:\n                                properties:\n                                  configMapRef:\n                                    properties:\n                                      name:\n                                        type: string\n                                    required:\n                                    - name\n                                    type: object\n                                  input:\n                                    properties:\n                                      parameters:\n                                        additionalProperties:\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        type: object\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              pullRequest:\n                                properties:\n                                  azuredevops:\n                                    properties:\n                                      api:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      organization:\n                                        type: string\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    - project\n                                    - repo\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      bearerToken:\n                                        properties:\n                                          tokenRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                        required:\n                                        - tokenRef\n                                        type: object\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      bearerToken:\n                                        properties:\n                                          tokenRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                        required:\n                                        - tokenRef\n                                        type: object\n                                      caRef:\n                                        properties:\n                                          configMapName:\n                                            type: string\n                                          key:\n                                            type: string\n                                        required:\n                                        - configMapName\n                                        - key\n                                        type: object\n                                      insecure:\n                                        type: boolean\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    - repo\n                                    type: object\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        targetBranchMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    - repo\n                                    type: object\n                                  github:\n                                    properties:\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      api:\n                                        type: string\n                                      caRef:\n                                        properties:\n                                          configMapName:\n                                            type: string\n                                          key:\n                                            type: string\n                                        required:\n                                        - configMapName\n                                        - key\n                                        type: object\n                                      insecure:\n                                        type: boolean\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      project:\n                                        type: string\n                                      pullRequestState:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - project\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              scmProvider:\n                                properties:\n                                  awsCodeCommit:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      region:\n                                        type: string\n                                      role:\n                                        type: string\n                                      tagFilters:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - key\n                                          type: object\n                                        type: array\n                                    type: object\n                                  azureDevOps:\n                                    properties:\n                                      accessTokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      teamProject:\n                                        type: string\n                                    required:\n                                    - accessTokenRef\n                                    - organization\n                                    - teamProject\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      appPasswordRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      owner:\n                                        type: string\n                                      user:\n                                        type: string\n                                    required:\n                                    - appPasswordRef\n                                    - owner\n                                    - user\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      bearerToken:\n                                        properties:\n                                          tokenRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                        required:\n                                        - tokenRef\n                                        type: object\n                                      caRef:\n                                        properties:\n                                          configMapName:\n                                            type: string\n                                          key:\n                                            type: string\n                                        required:\n                                        - configMapName\n                                        - key\n                                        type: object\n                                      insecure:\n                                        type: boolean\n                                      project:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    type: object\n                                  cloneProtocol:\n                                    type: string\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        labelMatch:\n                                          type: string\n                                        pathsDoNotExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        pathsExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        repositoryMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      owner:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    type: object\n                                  github:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      caRef:\n                                        properties:\n                                          configMapName:\n                                            type: string\n                                          key:\n                                            type: string\n                                        required:\n                                        - configMapName\n                                        - key\n                                        type: object\n                                      group:\n                                        type: string\n                                      includeSharedProjects:\n                                        type: boolean\n                                      includeSubgroups:\n                                        type: boolean\n                                      insecure:\n                                        type: boolean\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      topic:\n                                        type: string\n                                    required:\n                                    - group\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              selector:\n                                properties:\n                                  matchExpressions:\n                                    items:\n                                      properties:\n                                        key:\n                                          type: string\n                                        operator:\n                                          type: string\n                                        values:\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          type: array\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        kubeVersion:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        skipSchemaValidation:\n                                          type: boolean\n                                        skipTests:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        components:\n                                          items:\n                                            type: string\n                                          type: array\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        ignoreMissingComponents:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        kubeVersion:\n                                          type: string\n                                        labelIncludeTemplates:\n                                          type: boolean\n                                        labelWithoutSelector:\n                                          type: boolean\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        patches:\n                                          items:\n                                            properties:\n                                              options:\n                                                additionalProperties:\n                                                  type: boolean\n                                                type: object\n                                              patch:\n                                                type: string\n                                              path:\n                                                type: string\n                                              target:\n                                                properties:\n                                                  annotationSelector:\n                                                    type: string\n                                                  group:\n                                                    type: string\n                                                  kind:\n                                                    type: string\n                                                  labelSelector:\n                                                    type: string\n                                                  name:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  version:\n                                                    type: string\n                                                type: object\n                                            type: object\n                                          type: array\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sourceHydrator:\n                                  properties:\n                                    drySource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        repoURL:\n                                          type: string\n                                        targetRevision:\n                                          type: string\n                                      required:\n                                      - path\n                                      - repoURL\n                                      - targetRevision\n                                      type: object\n                                    hydrateTo:\n                                      properties:\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - targetBranch\n                                      type: object\n                                    syncSource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - path\n                                      - targetBranch\n                                      type: object\n                                  required:\n                                  - drySource\n                                  - syncSource\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          kubeVersion:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          skipSchemaValidation:\n                                            type: boolean\n                                          skipTests:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          components:\n                                            items:\n                                              type: string\n                                            type: array\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          ignoreMissingComponents:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          kubeVersion:\n                                            type: string\n                                          labelIncludeTemplates:\n                                            type: boolean\n                                          labelWithoutSelector:\n                                            type: boolean\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          patches:\n                                            items:\n                                              properties:\n                                                options:\n                                                  additionalProperties:\n                                                    type: boolean\n                                                  type: object\n                                                patch:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                target:\n                                                  properties:\n                                                    annotationSelector:\n                                                      type: string\n                                                    group:\n                                                      type: string\n                                                    kind:\n                                                      type: string\n                                                    labelSelector:\n                                                      type: string\n                                                    name:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                              type: object\n                                            type: array\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        enabled:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                      required:\n                      - generators\n                      type: object\n                    merge:\n                      properties:\n                        generators:\n                          items:\n                            properties:\n                              clusterDecisionResource:\n                                properties:\n                                  configMapRef:\n                                    type: string\n                                  labelSelector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  name:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              clusters:\n                                properties:\n                                  flatList:\n                                    type: boolean\n                                  selector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                              x-kubernetes-list-type: atomic\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                        x-kubernetes-list-type: atomic\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              git:\n                                properties:\n                                  directories:\n                                    items:\n                                      properties:\n                                        exclude:\n                                          type: boolean\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  files:\n                                    items:\n                                      properties:\n                                        exclude:\n                                          type: boolean\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  pathParamPrefix:\n                                    type: string\n                                  repoURL:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  revision:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - repoURL\n                                - revision\n                                type: object\n                              list:\n                                properties:\n                                  elements:\n                                    items:\n                                      x-kubernetes-preserve-unknown-fields: true\n                                    type: array\n                                  elementsYaml:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                type: object\n                              matrix:\n                                x-kubernetes-preserve-unknown-fields: true\n                              merge:\n                                x-kubernetes-preserve-unknown-fields: true\n                              plugin:\n                                properties:\n                                  configMapRef:\n                                    properties:\n                                      name:\n                                        type: string\n                                    required:\n                                    - name\n                                    type: object\n                                  input:\n                                    properties:\n                                      parameters:\n                                        additionalProperties:\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        type: object\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              pullRequest:\n                                properties:\n                                  azuredevops:\n                                    properties:\n                                      api:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      organization:\n                                        type: string\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    - project\n                                    - repo\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      bearerToken:\n                                        properties:\n                                          tokenRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                        required:\n                                        - tokenRef\n                                        type: object\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      bearerToken:\n                                        properties:\n                                          tokenRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                        required:\n                                        - tokenRef\n                                        type: object\n                                      caRef:\n                                        properties:\n                                          configMapName:\n                                            type: string\n                                          key:\n                                            type: string\n                                        required:\n                                        - configMapName\n                                        - key\n                                        type: object\n                                      insecure:\n                                        type: boolean\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    - repo\n                                    type: object\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        targetBranchMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    - repo\n                                    type: object\n                                  github:\n                                    properties:\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      api:\n                                        type: string\n                                      caRef:\n                                        properties:\n                                          configMapName:\n                                            type: string\n                                          key:\n                                            type: string\n                                        required:\n                                        - configMapName\n                                        - key\n                                        type: object\n                                      insecure:\n                                        type: boolean\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      project:\n                                        type: string\n                                      pullRequestState:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - project\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              scmProvider:\n                                properties:\n                                  awsCodeCommit:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      region:\n                                        type: string\n                                      role:\n                                        type: string\n                                      tagFilters:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - key\n                                          type: object\n                                        type: array\n                                    type: object\n                                  azureDevOps:\n                                    properties:\n                                      accessTokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      teamProject:\n                                        type: string\n                                    required:\n                                    - accessTokenRef\n                                    - organization\n                                    - teamProject\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      appPasswordRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      owner:\n                                        type: string\n                                      user:\n                                        type: string\n                                    required:\n                                    - appPasswordRef\n                                    - owner\n                                    - user\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      bearerToken:\n                                        properties:\n                                          tokenRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                        required:\n                                        - tokenRef\n                                        type: object\n                                      caRef:\n                                        properties:\n                                          configMapName:\n                                            type: string\n                                          key:\n                                            type: string\n                                        required:\n                                        - configMapName\n                                        - key\n                                        type: object\n                                      insecure:\n                                        type: boolean\n                                      project:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    type: object\n                                  cloneProtocol:\n                                    type: string\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        labelMatch:\n                                          type: string\n                                        pathsDoNotExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        pathsExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        repositoryMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      owner:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    type: object\n                                  github:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      caRef:\n                                        properties:\n                                          configMapName:\n                                            type: string\n                                          key:\n                                            type: string\n                                        required:\n                                        - configMapName\n                                        - key\n                                        type: object\n                                      group:\n                                        type: string\n                                      includeSharedProjects:\n                                        type: boolean\n                                      includeSubgroups:\n                                        type: boolean\n                                      insecure:\n                                        type: boolean\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      topic:\n                                        type: string\n                                    required:\n                                    - group\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  kubeVersion:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  skipSchemaValidation:\n                                                    type: boolean\n                                                  skipTests:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  apiVersions:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  components:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  ignoreMissingComponents:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  kubeVersion:\n                                                    type: string\n                                                  labelIncludeTemplates:\n                                                    type: boolean\n                                                  labelWithoutSelector:\n                                                    type: boolean\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  patches:\n                                                    items:\n                                                      properties:\n                                                        options:\n                                                          additionalProperties:\n                                                            type: boolean\n                                                          type: object\n                                                        patch:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                        target:\n                                                          properties:\n                                                            annotationSelector:\n                                                              type: string\n                                                            group:\n                                                              type: string\n                                                            kind:\n                                                              type: string\n                                                            labelSelector:\n                                                              type: string\n                                                            name:\n                                                              type: string\n                                                            namespace:\n                                                              type: string\n                                                            version:\n                                                              type: string\n                                                          type: object\n                                                      type: object\n                                                    type: array\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sourceHydrator:\n                                            properties:\n                                              drySource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  repoURL:\n                                                    type: string\n                                                  targetRevision:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - repoURL\n                                                - targetRevision\n                                                type: object\n                                              hydrateTo:\n                                                properties:\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - targetBranch\n                                                type: object\n                                              syncSource:\n                                                properties:\n                                                  path:\n                                                    type: string\n                                                  targetBranch:\n                                                    type: string\n                                                required:\n                                                - path\n                                                - targetBranch\n                                                type: object\n                                            required:\n                                            - drySource\n                                            - syncSource\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    kubeVersion:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    skipSchemaValidation:\n                                                      type: boolean\n                                                    skipTests:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    apiVersions:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    components:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    ignoreMissingComponents:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    kubeVersion:\n                                                      type: string\n                                                    labelIncludeTemplates:\n                                                      type: boolean\n                                                    labelWithoutSelector:\n                                                      type: boolean\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    patches:\n                                                      items:\n                                                        properties:\n                                                          options:\n                                                            additionalProperties:\n                                                              type: boolean\n                                                            type: object\n                                                          patch:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                          target:\n                                                            properties:\n                                                              annotationSelector:\n                                                                type: string\n                                                              group:\n                                                                type: string\n                                                              kind:\n                                                                type: string\n                                                              labelSelector:\n                                                                type: string\n                                                              name:\n                                                                type: string\n                                                              namespace:\n                                                                type: string\n                                                              version:\n                                                                type: string\n                                                            type: object\n                                                        type: object\n                                                      type: array\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  enabled:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              selector:\n                                properties:\n                                  matchExpressions:\n                                    items:\n                                      properties:\n                                        key:\n                                          type: string\n                                        operator:\n                                          type: string\n                                        values:\n                                          items:\n                                            type: string\n                                          type: array\n                                          x-kubernetes-list-type: atomic\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-type: atomic\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          type: array\n                        mergeKeys:\n                          items:\n                            type: string\n                          type: array\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        kubeVersion:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        skipSchemaValidation:\n                                          type: boolean\n                                        skipTests:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        components:\n                                          items:\n                                            type: string\n                                          type: array\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        ignoreMissingComponents:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        kubeVersion:\n                                          type: string\n                                        labelIncludeTemplates:\n                                          type: boolean\n                                        labelWithoutSelector:\n                                          type: boolean\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        patches:\n                                          items:\n                                            properties:\n                                              options:\n                                                additionalProperties:\n                                                  type: boolean\n                                                type: object\n                                              patch:\n                                                type: string\n                                              path:\n                                                type: string\n                                              target:\n                                                properties:\n                                                  annotationSelector:\n                                                    type: string\n                                                  group:\n                                                    type: string\n                                                  kind:\n                                                    type: string\n                                                  labelSelector:\n                                                    type: string\n                                                  name:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  version:\n                                                    type: string\n                                                type: object\n                                            type: object\n                                          type: array\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sourceHydrator:\n                                  properties:\n                                    drySource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        repoURL:\n                                          type: string\n                                        targetRevision:\n                                          type: string\n                                      required:\n                                      - path\n                                      - repoURL\n                                      - targetRevision\n                                      type: object\n                                    hydrateTo:\n                                      properties:\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - targetBranch\n                                      type: object\n                                    syncSource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - path\n                                      - targetBranch\n                                      type: object\n                                  required:\n                                  - drySource\n                                  - syncSource\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          kubeVersion:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          skipSchemaValidation:\n                                            type: boolean\n                                          skipTests:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          components:\n                                            items:\n                                              type: string\n                                            type: array\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          ignoreMissingComponents:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          kubeVersion:\n                                            type: string\n                                          labelIncludeTemplates:\n                                            type: boolean\n                                          labelWithoutSelector:\n                                            type: boolean\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          patches:\n                                            items:\n                                              properties:\n                                                options:\n                                                  additionalProperties:\n                                                    type: boolean\n                                                  type: object\n                                                patch:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                target:\n                                                  properties:\n                                                    annotationSelector:\n                                                      type: string\n                                                    group:\n                                                      type: string\n                                                    kind:\n                                                      type: string\n                                                    labelSelector:\n                                                      type: string\n                                                    name:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                              type: object\n                                            type: array\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        enabled:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                      required:\n                      - generators\n                      - mergeKeys\n                      type: object\n                    plugin:\n                      properties:\n                        configMapRef:\n                          properties:\n                            name:\n                              type: string\n                          required:\n                          - name\n                          type: object\n                        input:\n                          properties:\n                            parameters:\n                              additionalProperties:\n                                x-kubernetes-preserve-unknown-fields: true\n                              type: object\n                          type: object\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        kubeVersion:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        skipSchemaValidation:\n                                          type: boolean\n                                        skipTests:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        components:\n                                          items:\n                                            type: string\n                                          type: array\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        ignoreMissingComponents:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        kubeVersion:\n                                          type: string\n                                        labelIncludeTemplates:\n                                          type: boolean\n                                        labelWithoutSelector:\n                                          type: boolean\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        patches:\n                                          items:\n                                            properties:\n                                              options:\n                                                additionalProperties:\n                                                  type: boolean\n                                                type: object\n                                              patch:\n                                                type: string\n                                              path:\n                                                type: string\n                                              target:\n                                                properties:\n                                                  annotationSelector:\n                                                    type: string\n                                                  group:\n                                                    type: string\n                                                  kind:\n                                                    type: string\n                                                  labelSelector:\n                                                    type: string\n                                                  name:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  version:\n                                                    type: string\n                                                type: object\n                                            type: object\n                                          type: array\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sourceHydrator:\n                                  properties:\n                                    drySource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        repoURL:\n                                          type: string\n                                        targetRevision:\n                                          type: string\n                                      required:\n                                      - path\n                                      - repoURL\n                                      - targetRevision\n                                      type: object\n                                    hydrateTo:\n                                      properties:\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - targetBranch\n                                      type: object\n                                    syncSource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - path\n                                      - targetBranch\n                                      type: object\n                                  required:\n                                  - drySource\n                                  - syncSource\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          kubeVersion:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          skipSchemaValidation:\n                                            type: boolean\n                                          skipTests:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          components:\n                                            items:\n                                              type: string\n                                            type: array\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          ignoreMissingComponents:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          kubeVersion:\n                                            type: string\n                                          labelIncludeTemplates:\n                                            type: boolean\n                                          labelWithoutSelector:\n                                            type: boolean\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          patches:\n                                            items:\n                                              properties:\n                                                options:\n                                                  additionalProperties:\n                                                    type: boolean\n                                                  type: object\n                                                patch:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                target:\n                                                  properties:\n                                                    annotationSelector:\n                                                      type: string\n                                                    group:\n                                                      type: string\n                                                    kind:\n                                                      type: string\n                                                    labelSelector:\n                                                      type: string\n                                                    name:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                              type: object\n                                            type: array\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        enabled:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      required:\n                      - configMapRef\n                      type: object\n                    pullRequest:\n                      properties:\n                        azuredevops:\n                          properties:\n                            api:\n                              type: string\n                            labels:\n                              items:\n                                type: string\n                              type: array\n                            organization:\n                              type: string\n                            project:\n                              type: string\n                            repo:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - organization\n                          - project\n                          - repo\n                          type: object\n                        bitbucket:\n                          properties:\n                            api:\n                              type: string\n                            basicAuth:\n                              properties:\n                                passwordRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                                username:\n                                  type: string\n                              required:\n                              - passwordRef\n                              - username\n                              type: object\n                            bearerToken:\n                              properties:\n                                tokenRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                              required:\n                              - tokenRef\n                              type: object\n                            owner:\n                              type: string\n                            repo:\n                              type: string\n                          required:\n                          - owner\n                          - repo\n                          type: object\n                        bitbucketServer:\n                          properties:\n                            api:\n                              type: string\n                            basicAuth:\n                              properties:\n                                passwordRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                                username:\n                                  type: string\n                              required:\n                              - passwordRef\n                              - username\n                              type: object\n                            bearerToken:\n                              properties:\n                                tokenRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                              required:\n                              - tokenRef\n                              type: object\n                            caRef:\n                              properties:\n                                configMapName:\n                                  type: string\n                                key:\n                                  type: string\n                              required:\n                              - configMapName\n                              - key\n                              type: object\n                            insecure:\n                              type: boolean\n                            project:\n                              type: string\n                            repo:\n                              type: string\n                          required:\n                          - api\n                          - project\n                          - repo\n                          type: object\n                        filters:\n                          items:\n                            properties:\n                              branchMatch:\n                                type: string\n                              targetBranchMatch:\n                                type: string\n                            type: object\n                          type: array\n                        gitea:\n                          properties:\n                            api:\n                              type: string\n                            insecure:\n                              type: boolean\n                            labels:\n                              items:\n                                type: string\n                              type: array\n                            owner:\n                              type: string\n                            repo:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - api\n                          - owner\n                          - repo\n                          type: object\n                        github:\n                          properties:\n                            api:\n                              type: string\n                            appSecretName:\n                              type: string\n                            labels:\n                              items:\n                                type: string\n                              type: array\n                            owner:\n                              type: string\n                            repo:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - owner\n                          - repo\n                          type: object\n                        gitlab:\n                          properties:\n                            api:\n                              type: string\n                            caRef:\n                              properties:\n                                configMapName:\n                                  type: string\n                                key:\n                                  type: string\n                              required:\n                              - configMapName\n                              - key\n                              type: object\n                            insecure:\n                              type: boolean\n                            labels:\n                              items:\n                                type: string\n                              type: array\n                            project:\n                              type: string\n                            pullRequestState:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - project\n                          type: object\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        kubeVersion:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        skipSchemaValidation:\n                                          type: boolean\n                                        skipTests:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        components:\n                                          items:\n                                            type: string\n                                          type: array\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        ignoreMissingComponents:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        kubeVersion:\n                                          type: string\n                                        labelIncludeTemplates:\n                                          type: boolean\n                                        labelWithoutSelector:\n                                          type: boolean\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        patches:\n                                          items:\n                                            properties:\n                                              options:\n                                                additionalProperties:\n                                                  type: boolean\n                                                type: object\n                                              patch:\n                                                type: string\n                                              path:\n                                                type: string\n                                              target:\n                                                properties:\n                                                  annotationSelector:\n                                                    type: string\n                                                  group:\n                                                    type: string\n                                                  kind:\n                                                    type: string\n                                                  labelSelector:\n                                                    type: string\n                                                  name:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  version:\n                                                    type: string\n                                                type: object\n                                            type: object\n                                          type: array\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sourceHydrator:\n                                  properties:\n                                    drySource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        repoURL:\n                                          type: string\n                                        targetRevision:\n                                          type: string\n                                      required:\n                                      - path\n                                      - repoURL\n                                      - targetRevision\n                                      type: object\n                                    hydrateTo:\n                                      properties:\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - targetBranch\n                                      type: object\n                                    syncSource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - path\n                                      - targetBranch\n                                      type: object\n                                  required:\n                                  - drySource\n                                  - syncSource\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          kubeVersion:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          skipSchemaValidation:\n                                            type: boolean\n                                          skipTests:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          components:\n                                            items:\n                                              type: string\n                                            type: array\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          ignoreMissingComponents:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          kubeVersion:\n                                            type: string\n                                          labelIncludeTemplates:\n                                            type: boolean\n                                          labelWithoutSelector:\n                                            type: boolean\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          patches:\n                                            items:\n                                              properties:\n                                                options:\n                                                  additionalProperties:\n                                                    type: boolean\n                                                  type: object\n                                                patch:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                target:\n                                                  properties:\n                                                    annotationSelector:\n                                                      type: string\n                                                    group:\n                                                      type: string\n                                                    kind:\n                                                      type: string\n                                                    labelSelector:\n                                                      type: string\n                                                    name:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                              type: object\n                                            type: array\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        enabled:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      type: object\n                    scmProvider:\n                      properties:\n                        awsCodeCommit:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            region:\n                              type: string\n                            role:\n                              type: string\n                            tagFilters:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  value:\n                                    type: string\n                                required:\n                                - key\n                                type: object\n                              type: array\n                          type: object\n                        azureDevOps:\n                          properties:\n                            accessTokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            organization:\n                              type: string\n                            teamProject:\n                              type: string\n                          required:\n                          - accessTokenRef\n                          - organization\n                          - teamProject\n                          type: object\n                        bitbucket:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            appPasswordRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                            owner:\n                              type: string\n                            user:\n                              type: string\n                          required:\n                          - appPasswordRef\n                          - owner\n                          - user\n                          type: object\n                        bitbucketServer:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            basicAuth:\n                              properties:\n                                passwordRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                                username:\n                                  type: string\n                              required:\n                              - passwordRef\n                              - username\n                              type: object\n                            bearerToken:\n                              properties:\n                                tokenRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                              required:\n                              - tokenRef\n                              type: object\n                            caRef:\n                              properties:\n                                configMapName:\n                                  type: string\n                                key:\n                                  type: string\n                              required:\n                              - configMapName\n                              - key\n                              type: object\n                            insecure:\n                              type: boolean\n                            project:\n                              type: string\n                          required:\n                          - api\n                          - project\n                          type: object\n                        cloneProtocol:\n                          type: string\n                        filters:\n                          items:\n                            properties:\n                              branchMatch:\n                                type: string\n                              labelMatch:\n                                type: string\n                              pathsDoNotExist:\n                                items:\n                                  type: string\n                                type: array\n                              pathsExist:\n                                items:\n                                  type: string\n                                type: array\n                              repositoryMatch:\n                                type: string\n                            type: object\n                          type: array\n                        gitea:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            insecure:\n                              type: boolean\n                            owner:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - api\n                          - owner\n                          type: object\n                        github:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            appSecretName:\n                              type: string\n                            organization:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - organization\n                          type: object\n                        gitlab:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            caRef:\n                              properties:\n                                configMapName:\n                                  type: string\n                                key:\n                                  type: string\n                              required:\n                              - configMapName\n                              - key\n                              type: object\n                            group:\n                              type: string\n                            includeSharedProjects:\n                              type: boolean\n                            includeSubgroups:\n                              type: boolean\n                            insecure:\n                              type: boolean\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                            topic:\n                              type: string\n                          required:\n                          - group\n                          type: object\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        kubeVersion:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        skipSchemaValidation:\n                                          type: boolean\n                                        skipTests:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        apiVersions:\n                                          items:\n                                            type: string\n                                          type: array\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        components:\n                                          items:\n                                            type: string\n                                          type: array\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        ignoreMissingComponents:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        kubeVersion:\n                                          type: string\n                                        labelIncludeTemplates:\n                                          type: boolean\n                                        labelWithoutSelector:\n                                          type: boolean\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        patches:\n                                          items:\n                                            properties:\n                                              options:\n                                                additionalProperties:\n                                                  type: boolean\n                                                type: object\n                                              patch:\n                                                type: string\n                                              path:\n                                                type: string\n                                              target:\n                                                properties:\n                                                  annotationSelector:\n                                                    type: string\n                                                  group:\n                                                    type: string\n                                                  kind:\n                                                    type: string\n                                                  labelSelector:\n                                                    type: string\n                                                  name:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  version:\n                                                    type: string\n                                                type: object\n                                            type: object\n                                          type: array\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sourceHydrator:\n                                  properties:\n                                    drySource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        repoURL:\n                                          type: string\n                                        targetRevision:\n                                          type: string\n                                      required:\n                                      - path\n                                      - repoURL\n                                      - targetRevision\n                                      type: object\n                                    hydrateTo:\n                                      properties:\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - targetBranch\n                                      type: object\n                                    syncSource:\n                                      properties:\n                                        path:\n                                          type: string\n                                        targetBranch:\n                                          type: string\n                                      required:\n                                      - path\n                                      - targetBranch\n                                      type: object\n                                  required:\n                                  - drySource\n                                  - syncSource\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          kubeVersion:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          skipSchemaValidation:\n                                            type: boolean\n                                          skipTests:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          apiVersions:\n                                            items:\n                                              type: string\n                                            type: array\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          components:\n                                            items:\n                                              type: string\n                                            type: array\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          ignoreMissingComponents:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          kubeVersion:\n                                            type: string\n                                          labelIncludeTemplates:\n                                            type: boolean\n                                          labelWithoutSelector:\n                                            type: boolean\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          patches:\n                                            items:\n                                              properties:\n                                                options:\n                                                  additionalProperties:\n                                                    type: boolean\n                                                  type: object\n                                                patch:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                                target:\n                                                  properties:\n                                                    annotationSelector:\n                                                      type: string\n                                                    group:\n                                                      type: string\n                                                    kind:\n                                                      type: string\n                                                    labelSelector:\n                                                      type: string\n                                                    name:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                              type: object\n                                            type: array\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        enabled:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      type: object\n                    selector:\n                      properties:\n                        matchExpressions:\n                          items:\n                            properties:\n                              key:\n                                type: string\n                              operator:\n                                type: string\n                              values:\n                                items:\n                                  type: string\n                                type: array\n                                x-kubernetes-list-type: atomic\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                          x-kubernetes-list-type: atomic\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                  type: object\n                type: array\n              goTemplate:\n                type: boolean\n              goTemplateOptions:\n                items:\n                  type: string\n                type: array\n              ignoreApplicationDifferences:\n                items:\n                  properties:\n                    jqPathExpressions:\n                      items:\n                        type: string\n                      type: array\n                    jsonPointers:\n                      items:\n                        type: string\n                      type: array\n                    name:\n                      type: string\n                  type: object\n                type: array\n              preservedFields:\n                properties:\n                  annotations:\n                    items:\n                      type: string\n                    type: array\n                  labels:\n                    items:\n                      type: string\n                    type: array\n                type: object\n              strategy:\n                properties:\n                  rollingSync:\n                    properties:\n                      steps:\n                        items:\n                          properties:\n                            matchExpressions:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  operator:\n                                    type: string\n                                  values:\n                                    items:\n                                      type: string\n                                    type: array\n                                type: object\n                              type: array\n                            maxUpdate:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              x-kubernetes-int-or-string: true\n                          type: object\n                        type: array\n                    type: object\n                  type:\n                    type: string\n                type: object\n              syncPolicy:\n                properties:\n                  applicationsSync:\n                    enum:\n                    - create-only\n                    - create-update\n                    - create-delete\n                    - sync\n                    type: string\n                  preserveResourcesOnDeletion:\n                    type: boolean\n                type: object\n              template:\n                properties:\n                  metadata:\n                    properties:\n                      annotations:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      finalizers:\n                        items:\n                          type: string\n                        type: array\n                      labels:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      name:\n                        type: string\n                      namespace:\n                        type: string\n                    type: object\n                  spec:\n                    properties:\n                      destination:\n                        properties:\n                          name:\n                            type: string\n                          namespace:\n                            type: string\n                          server:\n                            type: string\n                        type: object\n                      ignoreDifferences:\n                        items:\n                          properties:\n                            group:\n                              type: string\n                            jqPathExpressions:\n                              items:\n                                type: string\n                              type: array\n                            jsonPointers:\n                              items:\n                                type: string\n                              type: array\n                            kind:\n                              type: string\n                            managedFieldsManagers:\n                              items:\n                                type: string\n                              type: array\n                            name:\n                              type: string\n                            namespace:\n                              type: string\n                          required:\n                          - kind\n                          type: object\n                        type: array\n                      info:\n                        items:\n                          properties:\n                            name:\n                              type: string\n                            value:\n                              type: string\n                          required:\n                          - name\n                          - value\n                          type: object\n                        type: array\n                      project:\n                        type: string\n                      revisionHistoryLimit:\n                        format: int64\n                        type: integer\n                      source:\n                        properties:\n                          chart:\n                            type: string\n                          directory:\n                            properties:\n                              exclude:\n                                type: string\n                              include:\n                                type: string\n                              jsonnet:\n                                properties:\n                                  extVars:\n                                    items:\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    items:\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                type: boolean\n                            type: object\n                          helm:\n                            properties:\n                              apiVersions:\n                                items:\n                                  type: string\n                                type: array\n                              fileParameters:\n                                items:\n                                  properties:\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                type: boolean\n                              kubeVersion:\n                                type: string\n                              namespace:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    forceString:\n                                      type: boolean\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                type: boolean\n                              releaseName:\n                                type: string\n                              skipCrds:\n                                type: boolean\n                              skipSchemaValidation:\n                                type: boolean\n                              skipTests:\n                                type: boolean\n                              valueFiles:\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                type: string\n                              valuesObject:\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                type: string\n                            type: object\n                          kustomize:\n                            properties:\n                              apiVersions:\n                                items:\n                                  type: string\n                                type: array\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                              components:\n                                items:\n                                  type: string\n                                type: array\n                              forceCommonAnnotations:\n                                type: boolean\n                              forceCommonLabels:\n                                type: boolean\n                              ignoreMissingComponents:\n                                type: boolean\n                              images:\n                                items:\n                                  type: string\n                                type: array\n                              kubeVersion:\n                                type: string\n                              labelIncludeTemplates:\n                                type: boolean\n                              labelWithoutSelector:\n                                type: boolean\n                              namePrefix:\n                                type: string\n                              nameSuffix:\n                                type: string\n                              namespace:\n                                type: string\n                              patches:\n                                items:\n                                  properties:\n                                    options:\n                                      additionalProperties:\n                                        type: boolean\n                                      type: object\n                                    patch:\n                                      type: string\n                                    path:\n                                      type: string\n                                    target:\n                                      properties:\n                                        annotationSelector:\n                                          type: string\n                                        group:\n                                          type: string\n                                        kind:\n                                          type: string\n                                        labelSelector:\n                                          type: string\n                                        name:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        version:\n                                          type: string\n                                      type: object\n                                  type: object\n                                type: array\n                              replicas:\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                type: string\n                            type: object\n                          name:\n                            type: string\n                          path:\n                            type: string\n                          plugin:\n                            properties:\n                              env:\n                                items:\n                                  properties:\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    string:\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            type: string\n                          repoURL:\n                            type: string\n                          targetRevision:\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      sourceHydrator:\n                        properties:\n                          drySource:\n                            properties:\n                              path:\n                                type: string\n                              repoURL:\n                                type: string\n                              targetRevision:\n                                type: string\n                            required:\n                            - path\n                            - repoURL\n                            - targetRevision\n                            type: object\n                          hydrateTo:\n                            properties:\n                              targetBranch:\n                                type: string\n                            required:\n                            - targetBranch\n                            type: object\n                          syncSource:\n                            properties:\n                              path:\n                                type: string\n                              targetBranch:\n                                type: string\n                            required:\n                            - path\n                            - targetBranch\n                            type: object\n                        required:\n                        - drySource\n                        - syncSource\n                        type: object\n                      sources:\n                        items:\n                          properties:\n                            chart:\n                              type: string\n                            directory:\n                              properties:\n                                exclude:\n                                  type: string\n                                include:\n                                  type: string\n                                jsonnet:\n                                  properties:\n                                    extVars:\n                                      items:\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    libs:\n                                      items:\n                                        type: string\n                                      type: array\n                                    tlas:\n                                      items:\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                  type: object\n                                recurse:\n                                  type: boolean\n                              type: object\n                            helm:\n                              properties:\n                                apiVersions:\n                                  items:\n                                    type: string\n                                  type: array\n                                fileParameters:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                    type: object\n                                  type: array\n                                ignoreMissingValueFiles:\n                                  type: boolean\n                                kubeVersion:\n                                  type: string\n                                namespace:\n                                  type: string\n                                parameters:\n                                  items:\n                                    properties:\n                                      forceString:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    type: object\n                                  type: array\n                                passCredentials:\n                                  type: boolean\n                                releaseName:\n                                  type: string\n                                skipCrds:\n                                  type: boolean\n                                skipSchemaValidation:\n                                  type: boolean\n                                skipTests:\n                                  type: boolean\n                                valueFiles:\n                                  items:\n                                    type: string\n                                  type: array\n                                values:\n                                  type: string\n                                valuesObject:\n                                  type: object\n                                  x-kubernetes-preserve-unknown-fields: true\n                                version:\n                                  type: string\n                              type: object\n                            kustomize:\n                              properties:\n                                apiVersions:\n                                  items:\n                                    type: string\n                                  type: array\n                                commonAnnotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                commonAnnotationsEnvsubst:\n                                  type: boolean\n                                commonLabels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                components:\n                                  items:\n                                    type: string\n                                  type: array\n                                forceCommonAnnotations:\n                                  type: boolean\n                                forceCommonLabels:\n                                  type: boolean\n                                ignoreMissingComponents:\n                                  type: boolean\n                                images:\n                                  items:\n                                    type: string\n                                  type: array\n                                kubeVersion:\n                                  type: string\n                                labelIncludeTemplates:\n                                  type: boolean\n                                labelWithoutSelector:\n                                  type: boolean\n                                namePrefix:\n                                  type: string\n                                nameSuffix:\n                                  type: string\n                                namespace:\n                                  type: string\n                                patches:\n                                  items:\n                                    properties:\n                                      options:\n                                        additionalProperties:\n                                          type: boolean\n                                        type: object\n                                      patch:\n                                        type: string\n                                      path:\n                                        type: string\n                                      target:\n                                        properties:\n                                          annotationSelector:\n                                            type: string\n                                          group:\n                                            type: string\n                                          kind:\n                                            type: string\n                                          labelSelector:\n                                            type: string\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          version:\n                                            type: string\n                                        type: object\n                                    type: object\n                                  type: array\n                                replicas:\n                                  items:\n                                    properties:\n                                      count:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        x-kubernetes-int-or-string: true\n                                      name:\n                                        type: string\n                                    required:\n                                    - count\n                                    - name\n                                    type: object\n                                  type: array\n                                version:\n                                  type: string\n                              type: object\n                            name:\n                              type: string\n                            path:\n                              type: string\n                            plugin:\n                              properties:\n                                env:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                name:\n                                  type: string\n                                parameters:\n                                  items:\n                                    properties:\n                                      array:\n                                        items:\n                                          type: string\n                                        type: array\n                                      map:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      string:\n                                        type: string\n                                    type: object\n                                  type: array\n                              type: object\n                            ref:\n                              type: string\n                            repoURL:\n                              type: string\n                            targetRevision:\n                              type: string\n                          required:\n                          - repoURL\n                          type: object\n                        type: array\n                      syncPolicy:\n                        properties:\n                          automated:\n                            properties:\n                              allowEmpty:\n                                type: boolean\n                              enabled:\n                                type: boolean\n                              prune:\n                                type: boolean\n                              selfHeal:\n                                type: boolean\n                            type: object\n                          managedNamespaceMetadata:\n                            properties:\n                              annotations:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                              labels:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                            type: object\n                          retry:\n                            properties:\n                              backoff:\n                                properties:\n                                  duration:\n                                    type: string\n                                  factor:\n                                    format: int64\n                                    type: integer\n                                  maxDuration:\n                                    type: string\n                                type: object\n                              limit:\n                                format: int64\n                                type: integer\n                            type: object\n                          syncOptions:\n                            items:\n                              type: string\n                            type: array\n                        type: object\n                    required:\n                    - destination\n                    - project\n                    type: object\n                required:\n                - metadata\n                - spec\n                type: object\n              templatePatch:\n                type: string\n            required:\n            - generators\n            - template\n            type: object\n          status:\n            properties:\n              applicationStatus:\n                items:\n                  properties:\n                    application:\n                      type: string\n                    lastTransitionTime:\n                      format: date-time\n                      type: string\n                    message:\n                      type: string\n                    status:\n                      type: string\n                    step:\n                      type: string\n                    targetRevisions:\n                      items:\n                        type: string\n                      type: array\n                  required:\n                  - application\n                  - message\n                  - status\n                  - step\n                  - targetRevisions\n                  type: object\n                type: array\n              conditions:\n                items:\n                  properties:\n                    lastTransitionTime:\n                      format: date-time\n                      type: string\n                    message:\n                      type: string\n                    reason:\n                      type: string\n                    status:\n                      type: string\n                    type:\n                      type: string\n                  required:\n                  - message\n                  - reason\n                  - status\n                  - type\n                  type: object\n                type: array\n              resources:\n                items:\n                  properties:\n                    group:\n                      type: string\n                    health:\n                      properties:\n                        lastTransitionTime:\n                          format: date-time\n                          type: string\n                        message:\n                          type: string\n                        status:\n                          type: string\n                      type: object\n                    hook:\n                      type: boolean\n                    kind:\n                      type: string\n                    name:\n                      type: string\n                    namespace:\n                      type: string\n                    requiresDeletionConfirmation:\n                      type: boolean\n                    requiresPruning:\n                      type: boolean\n                    status:\n                      type: string\n                    syncWave:\n                      format: int64\n                      type: integer\n                    version:\n                      type: string\n                  type: object\n                type: array\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app.kubernetes.io/name: appprojects.argoproj.io\n    app.kubernetes.io/part-of: argocd\n  name: appprojects.argoproj.io\nspec:\n  group: argoproj.io\n  names:\n    kind: AppProject\n    listKind: AppProjectList\n    plural: appprojects\n    shortNames:\n    - appproj\n    - appprojs\n    singular: appproject\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: |-\n          AppProject provides a logical grouping of applications, providing controls for:\n          * where the apps may deploy to (cluster whitelist)\n          * what may be deployed (repository whitelist, resource whitelist/blacklist)\n          * who can access these applications (roles, OIDC group claims bindings)\n          * and what they can do (RBAC policies)\n          * automation access to these roles (JWT tokens)\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: AppProjectSpec is the specification of an AppProject\n            properties:\n              clusterResourceBlacklist:\n                description: ClusterResourceBlacklist contains list of blacklisted\n                  cluster level resources\n                items:\n                  description: |-\n                    GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying\n                    concepts during lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              clusterResourceWhitelist:\n                description: ClusterResourceWhitelist contains list of whitelisted\n                  cluster level resources\n                items:\n                  description: |-\n                    GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying\n                    concepts during lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              description:\n                description: Description contains optional project description\n                maxLength: 255\n                type: string\n              destinationServiceAccounts:\n                description: DestinationServiceAccounts holds information about the\n                  service accounts to be impersonated for the application sync operation\n                  for each destination.\n                items:\n                  description: ApplicationDestinationServiceAccount holds information\n                    about the service account to be impersonated for the application\n                    sync operation.\n                  properties:\n                    defaultServiceAccount:\n                      description: DefaultServiceAccount to be used for impersonation\n                        during the sync operation\n                      type: string\n                    namespace:\n                      description: Namespace specifies the target namespace for the\n                        application's resources.\n                      type: string\n                    server:\n                      description: Server specifies the URL of the target cluster's\n                        Kubernetes control plane API.\n                      type: string\n                  required:\n                  - defaultServiceAccount\n                  - server\n                  type: object\n                type: array\n              destinations:\n                description: Destinations contains list of destinations available\n                  for deployment\n                items:\n                  description: ApplicationDestination holds information about the\n                    application's destination\n                  properties:\n                    name:\n                      description: Name is an alternate way of specifying the target\n                        cluster by its symbolic name. This must be set if Server is\n                        not set.\n                      type: string\n                    namespace:\n                      description: |-\n                        Namespace specifies the target namespace for the application's resources.\n                        The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace\n                      type: string\n                    server:\n                      description: Server specifies the URL of the target cluster's\n                        Kubernetes control plane API. This must be set if Name is\n                        not set.\n                      type: string\n                  type: object\n                type: array\n              namespaceResourceBlacklist:\n                description: NamespaceResourceBlacklist contains list of blacklisted\n                  namespace level resources\n                items:\n                  description: |-\n                    GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying\n                    concepts during lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              namespaceResourceWhitelist:\n                description: NamespaceResourceWhitelist contains list of whitelisted\n                  namespace level resources\n                items:\n                  description: |-\n                    GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying\n                    concepts during lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              orphanedResources:\n                description: OrphanedResources specifies if controller should monitor\n                  orphaned resources of apps in this project\n                properties:\n                  ignore:\n                    description: Ignore contains a list of resources that are to be\n                      excluded from orphaned resources monitoring\n                    items:\n                      description: OrphanedResourceKey is a reference to a resource\n                        to be ignored from\n                      properties:\n                        group:\n                          type: string\n                        kind:\n                          type: string\n                        name:\n                          type: string\n                      type: object\n                    type: array\n                  warn:\n                    description: Warn indicates if warning condition should be created\n                      for apps which have orphaned resources\n                    type: boolean\n                type: object\n              permitOnlyProjectScopedClusters:\n                description: PermitOnlyProjectScopedClusters determines whether destinations\n                  can only reference clusters which are project-scoped\n                type: boolean\n              roles:\n                description: Roles are user defined RBAC roles associated with this\n                  project\n                items:\n                  description: ProjectRole represents a role that has access to a\n                    project\n                  properties:\n                    description:\n                      description: Description is a description of the role\n                      type: string\n                    groups:\n                      description: Groups are a list of OIDC group claims bound to\n                        this role\n                      items:\n                        type: string\n                      type: array\n                    jwtTokens:\n                      description: JWTTokens are a list of generated JWT tokens bound\n                        to this role\n                      items:\n                        description: JWTToken holds the issuedAt and expiresAt values\n                          of a token\n                        properties:\n                          exp:\n                            format: int64\n                            type: integer\n                          iat:\n                            format: int64\n                            type: integer\n                          id:\n                            type: string\n                        required:\n                        - iat\n                        type: object\n                      type: array\n                    name:\n                      description: Name is a name for this role\n                      type: string\n                    policies:\n                      description: Policies Stores a list of casbin formatted strings\n                        that define access policies for the role in the project\n                      items:\n                        type: string\n                      type: array\n                  required:\n                  - name\n                  type: object\n                type: array\n              signatureKeys:\n                description: SignatureKeys contains a list of PGP key IDs that commits\n                  in Git must be signed with in order to be allowed for sync\n                items:\n                  description: SignatureKey is the specification of a key required\n                    to verify commit signatures with\n                  properties:\n                    keyID:\n                      description: The ID of the key in hexadecimal notation\n                      type: string\n                  required:\n                  - keyID\n                  type: object\n                type: array\n              sourceNamespaces:\n                description: SourceNamespaces defines the namespaces application resources\n                  are allowed to be created in\n                items:\n                  type: string\n                type: array\n              sourceRepos:\n                description: SourceRepos contains list of repository URLs which can\n                  be used for deployment\n                items:\n                  type: string\n                type: array\n              syncWindows:\n                description: SyncWindows controls when syncs can be run for apps in\n                  this project\n                items:\n                  description: SyncWindow contains the kind, time, duration and attributes\n                    that are used to assign the syncWindows to apps\n                  properties:\n                    andOperator:\n                      description: UseAndOperator use AND operator for matching applications,\n                        namespaces and clusters instead of the default OR operator\n                      type: boolean\n                    applications:\n                      description: Applications contains a list of applications that\n                        the window will apply to\n                      items:\n                        type: string\n                      type: array\n                    clusters:\n                      description: Clusters contains a list of clusters that the window\n                        will apply to\n                      items:\n                        type: string\n                      type: array\n                    description:\n                      description: Description of the sync that will be applied to\n                        the schedule, can be used to add any information such as a\n                        ticket number for example\n                      type: string\n                    duration:\n                      description: Duration is the amount of time the sync window\n                        will be open\n                      type: string\n                    kind:\n                      description: Kind defines if the window allows or blocks syncs\n                      type: string\n                    manualSync:\n                      description: ManualSync enables manual syncs when they would\n                        otherwise be blocked\n                      type: boolean\n                    namespaces:\n                      description: Namespaces contains a list of namespaces that the\n                        window will apply to\n                      items:\n                        type: string\n                      type: array\n                    schedule:\n                      description: Schedule is the time the window will begin, specified\n                        in cron format\n                      type: string\n                    timeZone:\n                      description: TimeZone of the sync that will be applied to the\n                        schedule\n                      type: string\n                  type: object\n                type: array\n            type: object\n          status:\n            description: AppProjectStatus contains status information for AppProject\n              CRs\n            properties:\n              jwtTokensByRole:\n                additionalProperties:\n                  description: JWTTokens represents a list of JWT tokens\n                  properties:\n                    items:\n                      items:\n                        description: JWTToken holds the issuedAt and expiresAt values\n                          of a token\n                        properties:\n                          exp:\n                            format: int64\n                            type: integer\n                          iat:\n                            format: int64\n                            type: integer\n                          id:\n                            type: string\n                        required:\n                        - iat\n                        type: object\n                      type: array\n                  type: object\n                description: JWTTokensByRole contains a list of JWT tokens issued\n                  for a given role\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: repo-server\n    app.kubernetes.io/name: argocd-repo-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-repo-server\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - applicationsets\n  - appprojects\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - update\n  - patch\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - list\n- apiGroups:\n  - apps\n  resources:\n  - deployments\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nrules:\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - applicationsets\n  - applicationsets/finalizers\n  verbs:\n  - create\n  - delete\n  - get\n  - list\n  - patch\n  - update\n  - watch\n- apiGroups:\n  - argoproj.io\n  resources:\n  - appprojects\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applicationsets/status\n  verbs:\n  - get\n  - patch\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - get\n  - list\n  - patch\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - apps\n  - extensions\n  resources:\n  - deployments\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\nrules:\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - appprojects\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - secrets\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - argocd-notifications-cm\n  resources:\n  - configmaps\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - argocd-notifications-secret\n  resources:\n  - secrets\n  verbs:\n  - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\nrules:\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - argocd-redis\n  resources:\n  - secrets\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - update\n  - patch\n  - delete\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - appprojects\n  - applicationsets\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - update\n  - delete\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - list\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nrules:\n- apiGroups:\n  - '*'\n  resources:\n  - '*'\n  verbs:\n  - '*'\n- nonResourceURLs:\n  - '*'\n  verbs:\n  - '*'\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nrules:\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - applicationsets\n  - applicationsets/finalizers\n  verbs:\n  - create\n  - delete\n  - get\n  - list\n  - patch\n  - update\n  - watch\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applicationsets/status\n  verbs:\n  - get\n  - patch\n  - update\n- apiGroups:\n  - argoproj.io\n  resources:\n  - appprojects\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - get\n  - list\n  - patch\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - create\n  - update\n  - delete\n  - get\n  - list\n  - patch\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - apps\n  - extensions\n  resources:\n  - deployments\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - create\n  - delete\n  - get\n  - list\n  - patch\n  - update\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nrules:\n- apiGroups:\n  - '*'\n  resources:\n  - '*'\n  verbs:\n  - delete\n  - get\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - list\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  - pods/log\n  verbs:\n  - get\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - applicationsets\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - batch\n  resources:\n  - jobs\n  verbs:\n  - create\n- apiGroups:\n  - argoproj.io\n  resources:\n  - workflows\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-application-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-application-controller\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-applicationset-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-applicationset-controller\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-dex-server\nsubjects:\n- kind: ServiceAccount\n  name: argocd-dex-server\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-notifications-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-notifications-controller\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-redis\nsubjects:\n- kind: ServiceAccount\n  name: argocd-redis\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-server\nsubjects:\n- kind: ServiceAccount\n  name: argocd-server\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: argocd-application-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-application-controller\n  namespace: argocd\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: argocd-applicationset-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-applicationset-controller\n  namespace: argocd\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: argocd-server\nsubjects:\n- kind: ServiceAccount\n  name: argocd-server\n  namespace: argocd\n---\napiVersion: v1\ndata:\n  accounts.developer: apiKey, login\n  application.resourceTrackingMethod: annotation\n  resource.customizations.ignoreResourceUpdates.ConfigMap: |\n    jqPathExpressions:\n      # Ignore the cluster-autoscaler status\n      - '.metadata.annotations.\"cluster-autoscaler.kubernetes.io/last-updated\"'\n      # Ignore the annotation of the legacy Leases election\n      - '.metadata.annotations.\"control-plane.alpha.kubernetes.io/leader\"'\n  resource.customizations.ignoreResourceUpdates.Endpoints: |\n    jsonPointers:\n      - /metadata\n      - /subsets\n  resource.customizations.ignoreResourceUpdates.all: |\n    jsonPointers:\n      - /status\n  resource.customizations.ignoreResourceUpdates.apps_ReplicaSet: |\n    jqPathExpressions:\n      - '.metadata.annotations.\"deployment.kubernetes.io/desired-replicas\"'\n      - '.metadata.annotations.\"deployment.kubernetes.io/max-replicas\"'\n      - '.metadata.annotations.\"rollout.argoproj.io/desired-replicas\"'\n  resource.customizations.ignoreResourceUpdates.argoproj.io_Application: |\n    jqPathExpressions:\n      - '.metadata.annotations.\"notified.notifications.argoproj.io\"'\n      - '.metadata.annotations.\"argocd.argoproj.io/refresh\"'\n      - '.metadata.annotations.\"argocd.argoproj.io/hydrate\"'\n      - '.operation'\n  resource.customizations.ignoreResourceUpdates.argoproj.io_Rollout: |\n    jqPathExpressions:\n      - '.metadata.annotations.\"notified.notifications.argoproj.io\"'\n  resource.customizations.ignoreResourceUpdates.autoscaling_HorizontalPodAutoscaler: |\n    jqPathExpressions:\n      - '.metadata.annotations.\"autoscaling.alpha.kubernetes.io/behavior\"'\n      - '.metadata.annotations.\"autoscaling.alpha.kubernetes.io/conditions\"'\n      - '.metadata.annotations.\"autoscaling.alpha.kubernetes.io/metrics\"'\n      - '.metadata.annotations.\"autoscaling.alpha.kubernetes.io/current-metrics\"'\n  resource.customizations.ignoreResourceUpdates.discovery.k8s.io_EndpointSlice: |\n    jsonPointers:\n      - /metadata\n      - /endpoints\n      - /ports\n  resource.exclusions: |\n    - kinds:\n        - ProviderConfigUsage\n      apiGroups:\n        - \"*\"\n  timeout.reconciliation: 60s\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-cmd-params-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-cmd-params-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-gpg-keys-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-gpg-keys-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-cm\n---\napiVersion: v1\ndata:\n  policy.csv: |\n    p, role:developer, applications, *, *, allow\n    g, developer, role:developer\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-rbac-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-rbac-cm\n---\napiVersion: v1\ndata:\n  ssh_known_hosts: |\n    # This file was automatically generated by hack/update-ssh-known-hosts.sh. DO NOT EDIT\n    [ssh.github.com]:443 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=\n    [ssh.github.com]:443 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl\n    [ssh.github.com]:443 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=\n    bitbucket.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPIQmuzMBuKdWeF4+a2sjSSpBK0iqitSQ+5BM9KhpexuGt20JpTVM7u5BDZngncgrqDMbWdxMWWOGtZ9UgbqgZE=\n    bitbucket.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIazEu89wgQZ4bqs3d63QSMzYVa0MuJ2e2gKTKqu+UUO\n    bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQeJzhupRu0u0cdegZIa8e86EG2qOCsIsD1Xw0xSeiPDlCr7kq97NLmMbpKTX6Esc30NuoqEEHCuc7yWtwp8dI76EEEB1VqY9QJq6vk+aySyboD5QF61I/1WeTwu+deCbgKMGbUijeXhtfbxSxm6JwGrXrhBdofTsbKRUsrN1WoNgUa8uqN1Vx6WAJw1JHPhglEGGHea6QICwJOAr/6mrui/oB7pkaWKHj3z7d1IC4KWLtY47elvjbaTlkN04Kc/5LFEirorGYVbt15kAUlqGM65pk6ZBxtaO3+30LVlORZkxOh+LKL/BvbZ/iRNhItLqNyieoQj/uh/7Iv4uyH/cV/0b4WDSd3DptigWq84lJubb9t/DnZlrJazxyDCulTmKdOR7vs9gMTo+uoIrPSb8ScTtvw65+odKAlBj59dhnVp9zd7QUojOpXlL62Aw56U4oO+FALuevvMjiWeavKhJqlR7i5n9srYcrNV7ttmDw7kf/97P5zauIhxcjX+xHv4M=\n    github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=\n    github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl\n    github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=\n    gitlab.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=\n    gitlab.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAfuCHKVTjquxvt6CM6tdG4SLp1Btn/nOeHHE5UOzRdf\n    gitlab.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsj2bNKTBSpIYDEGk9KxsGh3mySTRgMtXL583qmBpzeQ+jqCMRgBqB98u3z++J1sKlXHWfM9dyhSevkMwSbhoR8XIq/U0tCNyokEi/ueaBMCvbcTHhO7FcwzY92WK4Yt0aGROY5qX2UKSeOvuP4D6TPqKF1onrSzH9bx9XUf2lEdWT/ia1NEKjunUqu1xOB/StKDHMoX4/OKyIzuS0q/T1zOATthvasJFoPrAjkohTyaDUz2LN5JoH839hViyEG82yB+MjcFV5MU3N1l1QL3cVUCh93xSaua1N85qivl+siMkPGbO5xR/En4iEY6K2XPASUEMaieWVNTRCtJ4S8H+9\n    ssh.dev.azure.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm57XQPVU3/QpyNLHbWDdzwtrlS+ez30S3AdYhLKEOxAG8weOnyrtLJAUen9mTkol8oII1edf7mWWbWVf0nBmly21+nZcmCTISQBtdcyPaEno7fFQMDD26/s0lfKob4Kw8H\n    vs-ssh.visualstudio.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm57XQPVU3/QpyNLHbWDdzwtrlS+ez30S3AdYhLKEOxAG8weOnyrtLJAUen9mTkol8oII1edf7mWWbWVf0nBmly21+nZcmCTISQBtdcyPaEno7fFQMDD26/s0lfKob4Kw8H\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-ssh-known-hosts-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-ssh-known-hosts-cm\n---\napiVersion: v1\ndata:\n  '{{.Host}}': |\n    {{ .SelfSignedCert | indentNewLines 4 }}\n  gitea.{{.Host}}: |\n    {{ .SelfSignedCert | indentNewLines 4 }}\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-tls-certs-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-tls-certs-cm\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-secret\ntype: Opaque\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-secret\n    app.kubernetes.io/part-of: argocd\n  name: argocd-secret\ntype: Opaque\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nspec:\n  ports:\n  - name: webhook\n    port: 7000\n    protocol: TCP\n    targetPort: webhook\n  - name: metrics\n    port: 8080\n    protocol: TCP\n    targetPort: metrics\n  selector:\n    app.kubernetes.io/name: argocd-applicationset-controller\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nspec:\n  ports:\n  - appProtocol: TCP\n    name: http\n    port: 5556\n    protocol: TCP\n    targetPort: 5556\n  - name: grpc\n    port: 5557\n    protocol: TCP\n    targetPort: 5557\n  - name: metrics\n    port: 5558\n    protocol: TCP\n    targetPort: 5558\n  selector:\n    app.kubernetes.io/name: argocd-dex-server\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics\n    app.kubernetes.io/name: argocd-metrics\n    app.kubernetes.io/part-of: argocd\n  name: argocd-metrics\nspec:\n  ports:\n  - name: metrics\n    port: 8082\n    protocol: TCP\n    targetPort: 8082\n  selector:\n    app.kubernetes.io/name: argocd-application-controller\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller-metrics\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller-metrics\nspec:\n  ports:\n  - name: metrics\n    port: 9001\n    protocol: TCP\n    targetPort: 9001\n  selector:\n    app.kubernetes.io/name: argocd-notifications-controller\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\nspec:\n  ports:\n  - name: tcp-redis\n    port: 6379\n    targetPort: 6379\n  selector:\n    app.kubernetes.io/name: argocd-redis\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: repo-server\n    app.kubernetes.io/name: argocd-repo-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-repo-server\nspec:\n  ports:\n  - name: server\n    port: 8081\n    protocol: TCP\n    targetPort: 8081\n  - name: metrics\n    port: 8084\n    protocol: TCP\n    targetPort: 8084\n  selector:\n    app.kubernetes.io/name: argocd-repo-server\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nspec:\n  ports:\n  - name: http\n    port: 80\n    protocol: TCP\n    targetPort: 8080\n  - name: https\n    port: 443\n    protocol: TCP\n    targetPort: 8080\n  selector:\n    app.kubernetes.io/name: argocd-server\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server-metrics\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server-metrics\nspec:\n  ports:\n  - name: metrics\n    port: 8083\n    protocol: TCP\n    targetPort: 8083\n  selector:\n    app.kubernetes.io/name: argocd-server\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-applicationset-controller\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-applicationset-controller\n    spec:\n      containers:\n      - args:\n        - /usr/local/bin/argocd-applicationset-controller\n        env:\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_GLOBAL_PRESERVED_ANNOTATIONS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.global.preserved.annotations\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_GLOBAL_PRESERVED_LABELS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.global.preserved.labels\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_LEADER_ELECTION\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.leader.election\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: repo.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_POLICY\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.policy\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_POLICY_OVERRIDE\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.policy.override\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_DEBUG\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.debug\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_LOG_FORMAT_TIMESTAMP\n          valueFrom:\n            configMapKeyRef:\n              key: log.format.timestamp\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_DRY_RUN\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.dryrun\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_GIT_MODULES_ENABLED\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.git.submodule\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_PROGRESSIVE_SYNCS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.progressive.syncs\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_TOKENREF_STRICT_MODE\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.tokenref.strict.mode\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_NEW_GIT_FILE_GLOBBING\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.new.git.file.globbing\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.repo.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.repo.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.repo.server.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_CONCURRENT_RECONCILIATIONS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.concurrent.reconciliations.max\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_SCM_ROOT_CA_PATH\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.scm.root.ca.path\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ALLOWED_SCM_PROVIDERS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.allowed.scm.providers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_SCM_PROVIDERS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.scm.providers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_GITHUB_API_METRICS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.github.api.metrics\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_WEBHOOK_PARALLELISM_LIMIT\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.webhook.parallelism.limit\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REQUEUE_AFTER\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.requeue.after\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_MAX_RESOURCES_STATUS_COUNT\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.status.max.resources.count\n              name: argocd-cmd-params-cm\n              optional: true\n        image: quay.io/argoproj/argocd:v3.1.7\n        imagePullPolicy: IfNotPresent\n        name: argocd-applicationset-controller\n        ports:\n        - containerPort: 7000\n          name: webhook\n        - containerPort: 8080\n          name: metrics\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/ssh\n          name: ssh-known-hosts\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/gpg/source\n          name: gpg-keys\n        - mountPath: /app/config/gpg/keys\n          name: gpg-keyring\n        - mountPath: /tmp\n          name: tmp\n        - mountPath: /app/config/reposerver/tls\n          name: argocd-repo-server-tls\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: argocd-applicationset-controller\n      volumes:\n      - configMap:\n          name: argocd-ssh-known-hosts-cm\n        name: ssh-known-hosts\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - configMap:\n          name: argocd-gpg-keys-cm\n        name: gpg-keys\n      - emptyDir: {}\n        name: gpg-keyring\n      - emptyDir: {}\n        name: tmp\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nspec:\n  replicas: 0\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-dex-server\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-dex-server\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - command:\n        - /shared/argocd-dex\n        - rundex\n        env:\n        - name: ARGOCD_DEX_SERVER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: dexserver.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_DEX_SERVER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: dexserver.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_LOG_FORMAT_TIMESTAMP\n          valueFrom:\n            configMapKeyRef:\n              key: log.format.timestamp\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_DEX_SERVER_DISABLE_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: dexserver.disable.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        image: ghcr.io/dexidp/dex:v2.43.0\n        imagePullPolicy: IfNotPresent\n        name: dex\n        ports:\n        - containerPort: 5556\n        - containerPort: 5557\n        - containerPort: 5558\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /shared\n          name: static-files\n        - mountPath: /tmp\n          name: dexconfig\n        - mountPath: /tls\n          name: argocd-dex-server-tls\n      initContainers:\n      - command:\n        - /bin/cp\n        - -n\n        - /usr/local/bin/argocd\n        - /shared/argocd-dex\n        image: quay.io/argoproj/argocd:v3.1.7\n        imagePullPolicy: IfNotPresent\n        name: copyutil\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /shared\n          name: static-files\n        - mountPath: /tmp\n          name: dexconfig\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: argocd-dex-server\n      volumes:\n      - emptyDir: {}\n        name: static-files\n      - emptyDir: {}\n        name: dexconfig\n      - name: argocd-dex-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-dex-server-tls\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\nspec:\n  replicas: 0\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-notifications-controller\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-notifications-controller\n    spec:\n      containers:\n      - args:\n        - /usr/local/bin/argocd-notifications\n        env:\n        - name: ARGOCD_NOTIFICATIONS_CONTROLLER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: notificationscontroller.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_NOTIFICATIONS_CONTROLLER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: notificationscontroller.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_LOG_FORMAT_TIMESTAMP\n          valueFrom:\n            configMapKeyRef:\n              key: log.format.timestamp\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: application.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_NOTIFICATION_CONTROLLER_SELF_SERVICE_NOTIFICATION_ENABLED\n          valueFrom:\n            configMapKeyRef:\n              key: notificationscontroller.selfservice.enabled\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_NOTIFICATION_CONTROLLER_REPO_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: notificationscontroller.repo.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        image: quay.io/argoproj/argocd:v3.1.7\n        imagePullPolicy: IfNotPresent\n        livenessProbe:\n          tcpSocket:\n            port: 9001\n        name: argocd-notifications-controller\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n        volumeMounts:\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/reposerver/tls\n          name: argocd-repo-server-tls\n        workingDir: /app\n      nodeSelector:\n        kubernetes.io/os: linux\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: argocd-notifications-controller\n      volumes:\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-redis\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-redis\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-redis\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - args:\n        - --save\n        - \"\"\n        - --appendonly\n        - \"no\"\n        - --requirepass $(REDIS_PASSWORD)\n        env:\n        - name: REDIS_PASSWORD\n          valueFrom:\n            secretKeyRef:\n              key: auth\n              name: argocd-redis\n        image: public.ecr.aws/docker/library/redis:7.2.7-alpine\n        imagePullPolicy: IfNotPresent\n        name: redis\n        ports:\n        - containerPort: 6379\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n      initContainers:\n      - command:\n        - argocd\n        - admin\n        - redis-initial-password\n        image: quay.io/argoproj/argocd:v3.1.7\n        imagePullPolicy: IfNotPresent\n        name: secret-init\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n      nodeSelector:\n        kubernetes.io/os: linux\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 999\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: argocd-redis\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: repo-server\n    app.kubernetes.io/name: argocd-repo-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-repo-server\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-repo-server\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-repo-server\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-repo-server\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      automountServiceAccountToken: false\n      containers:\n      - args:\n        - /usr/local/bin/argocd-repo-server\n        env:\n        - name: REDIS_PASSWORD\n          valueFrom:\n            secretKeyRef:\n              key: auth\n              name: argocd-redis\n        - name: ARGOCD_RECONCILIATION_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: timeout.reconciliation\n              name: argocd-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_LOG_FORMAT_TIMESTAMP\n          valueFrom:\n            configMapKeyRef:\n              key: log.format.timestamp\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_PARALLELISM_LIMIT\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.parallelism.limit\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LISTEN_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LISTEN_METRICS_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.metrics.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_DISABLE_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.disable.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MIN_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.tls.minversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MAX_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.tls.maxversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_CIPHERS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.tls.ciphers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.repo.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: redis.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_COMPRESSION\n          valueFrom:\n            configMapKeyRef:\n              key: redis.compression\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDISDB\n          valueFrom:\n            configMapKeyRef:\n              key: redis.db\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_DEFAULT_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.default.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_OTLP_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_OTLP_INSECURE\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.insecure\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_OTLP_HEADERS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.headers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_OTLP_ATTRS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.attrs\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_MAX_COMBINED_DIRECTORY_MANIFESTS_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.max.combined.directory.manifests.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_PLUGIN_TAR_EXCLUSIONS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.plugin.tar.exclusions\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_PLUGIN_USE_MANIFEST_GENERATE_PATHS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.plugin.use.manifest.generate.paths\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_ALLOW_OUT_OF_BOUNDS_SYMLINKS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.allow.oob.symlinks\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_STREAMED_MANIFEST_MAX_TAR_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.streamed.manifest.max.tar.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_STREAMED_MANIFEST_MAX_EXTRACTED_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.streamed.manifest.max.extracted.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_HELM_MANIFEST_MAX_EXTRACTED_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.helm.manifest.max.extracted.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_DISABLE_HELM_MANIFEST_MAX_EXTRACTED_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.disable.helm.manifest.max.extracted.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_OCI_MANIFEST_MAX_EXTRACTED_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.oci.manifest.max.extracted.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_DISABLE_OCI_MANIFEST_MAX_EXTRACTED_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.disable.oci.manifest.max.extracted.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_OCI_LAYER_MEDIA_TYPES\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.oci.layer.media.types\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REVISION_CACHE_LOCK_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.revision.cache.lock.timeout\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_GIT_MODULES_ENABLED\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.enable.git.submodule\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_GIT_LS_REMOTE_PARALLELISM_LIMIT\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.git.lsremote.parallelism.limit\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_GIT_REQUEST_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.git.request.timeout\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_GRPC_MAX_SIZE_MB\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.grpc.max.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_INCLUDE_HIDDEN_DIRECTORIES\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.include.hidden.directories\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: HELM_CACHE_HOME\n          value: /helm-working-dir\n        - name: HELM_CONFIG_HOME\n          value: /helm-working-dir\n        - name: HELM_DATA_HOME\n          value: /helm-working-dir\n        image: quay.io/argoproj/argocd:v3.1.7\n        imagePullPolicy: IfNotPresent\n        livenessProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /healthz?full=true\n            port: 8084\n          initialDelaySeconds: 30\n          periodSeconds: 30\n          timeoutSeconds: 5\n        name: argocd-repo-server\n        ports:\n        - containerPort: 8081\n        - containerPort: 8084\n        readinessProbe:\n          httpGet:\n            path: /healthz\n            port: 8084\n          initialDelaySeconds: 5\n          periodSeconds: 10\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/ssh\n          name: ssh-known-hosts\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/gpg/source\n          name: gpg-keys\n        - mountPath: /app/config/gpg/keys\n          name: gpg-keyring\n        - mountPath: /app/config/reposerver/tls\n          name: argocd-repo-server-tls\n        - mountPath: /tmp\n          name: tmp\n        - mountPath: /helm-working-dir\n          name: helm-working-dir\n        - mountPath: /home/argocd/cmp-server/plugins\n          name: plugins\n      initContainers:\n      - command:\n        - /bin/cp\n        - -n\n        - /usr/local/bin/argocd\n        - /var/run/argocd/argocd-cmp-server\n        image: quay.io/argoproj/argocd:v3.1.7\n        name: copyutil\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /var/run/argocd\n          name: var-files\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: argocd-repo-server\n      volumes:\n      - configMap:\n          name: argocd-ssh-known-hosts-cm\n        name: ssh-known-hosts\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - configMap:\n          name: argocd-gpg-keys-cm\n        name: gpg-keys\n      - emptyDir: {}\n        name: gpg-keyring\n      - emptyDir: {}\n        name: tmp\n      - emptyDir: {}\n        name: helm-working-dir\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n      - emptyDir: {}\n        name: var-files\n      - emptyDir: {}\n        name: plugins\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-server\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-server\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-server\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - args:\n        - /usr/local/bin/argocd-server\n        - '{{if .UsePathRouting}}'\n        - --insecure\n        - --basehref\n        - /argocd\n        - '{{end}}'\n        env:\n        - name: REDIS_PASSWORD\n          valueFrom:\n            secretKeyRef:\n              key: auth\n              name: argocd-redis\n        - name: ARGOCD_SERVER_INSECURE\n          valueFrom:\n            configMapKeyRef:\n              key: server.insecure\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_BASEHREF\n          valueFrom:\n            configMapKeyRef:\n              key: server.basehref\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_ROOTPATH\n          valueFrom:\n            configMapKeyRef:\n              key: server.rootpath\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: server.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_LOG_LEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: server.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: repo.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DEX_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: server.dex.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DISABLE_AUTH\n          valueFrom:\n            configMapKeyRef:\n              key: server.disable.auth\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_ENABLE_GZIP\n          valueFrom:\n            configMapKeyRef:\n              key: server.enable.gzip\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: server.repo.server.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_X_FRAME_OPTIONS\n          valueFrom:\n            configMapKeyRef:\n              key: server.x.frame.options\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_CONTENT_SECURITY_POLICY\n          valueFrom:\n            configMapKeyRef:\n              key: server.content.security.policy\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: server.repo.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: server.repo.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DEX_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: server.dex.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DEX_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: server.dex.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MIN_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: server.tls.minversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MAX_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: server.tls.maxversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_CIPHERS\n          valueFrom:\n            configMapKeyRef:\n              key: server.tls.ciphers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_CONNECTION_STATUS_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.connection.status.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_OIDC_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.oidc.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_STATIC_ASSETS\n          valueFrom:\n            configMapKeyRef:\n              key: server.staticassets\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APP_STATE_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.app.state.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: redis.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_COMPRESSION\n          valueFrom:\n            configMapKeyRef:\n              key: redis.compression\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDISDB\n          valueFrom:\n            configMapKeyRef:\n              key: redis.db\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_DEFAULT_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.default.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_MAX_COOKIE_NUMBER\n          valueFrom:\n            configMapKeyRef:\n              key: server.http.cookie.maxnumber\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_LISTEN_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: server.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_METRICS_LISTEN_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: server.metrics.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_OTLP_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_OTLP_INSECURE\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.insecure\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_OTLP_HEADERS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.headers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_OTLP_ATTRS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.attrs\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: application.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_ENABLE_PROXY_EXTENSION\n          valueFrom:\n            configMapKeyRef:\n              key: server.enable.proxy.extension\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_K8SCLIENT_RETRY_MAX\n          valueFrom:\n            configMapKeyRef:\n              key: server.k8sclient.retry.max\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_K8SCLIENT_RETRY_BASE_BACKOFF\n          valueFrom:\n            configMapKeyRef:\n              key: server.k8sclient.retry.base.backoff\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_API_CONTENT_TYPES\n          valueFrom:\n            configMapKeyRef:\n              key: server.api.content.types\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_WEBHOOK_PARALLELISM_LIMIT\n          valueFrom:\n            configMapKeyRef:\n              key: server.webhook.parallelism.limit\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_NEW_GIT_FILE_GLOBBING\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.new.git.file.globbing\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_SCM_ROOT_CA_PATH\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.scm.root.ca.path\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ALLOWED_SCM_PROVIDERS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.allowed.scm.providers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_SCM_PROVIDERS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.scm.providers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_GITHUB_API_METRICS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.github.api.metrics\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_HYDRATOR_ENABLED\n          valueFrom:\n            configMapKeyRef:\n              key: hydrator.enabled\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SYNC_WITH_REPLACE_ALLOWED\n          valueFrom:\n            configMapKeyRef:\n              key: server.sync.replace.allowed\n              name: argocd-cmd-params-cm\n              optional: true\n        image: quay.io/argoproj/argocd:v3.1.7\n        imagePullPolicy: IfNotPresent\n        livenessProbe:\n          httpGet:\n            path: /healthz?full=true\n            port: 8080\n          initialDelaySeconds: 3\n          periodSeconds: 30\n          timeoutSeconds: 5\n        name: argocd-server\n        ports:\n        - containerPort: 8080\n        - containerPort: 8083\n        readinessProbe:\n          httpGet:\n            path: /healthz\n            port: 8080\n          initialDelaySeconds: 3\n          periodSeconds: 30\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/ssh\n          name: ssh-known-hosts\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/server/tls\n          name: argocd-repo-server-tls\n        - mountPath: /app/config/dex/tls\n          name: argocd-dex-server-tls\n        - mountPath: /home/argocd\n          name: plugins-home\n        - mountPath: /tmp\n          name: tmp\n        - mountPath: /home/argocd/params\n          name: argocd-cmd-params-cm\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: argocd-server\n      volumes:\n      - emptyDir: {}\n        name: plugins-home\n      - emptyDir: {}\n        name: tmp\n      - configMap:\n          name: argocd-ssh-known-hosts-cm\n        name: ssh-known-hosts\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n      - name: argocd-dex-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-dex-server-tls\n      - configMap:\n          items:\n          - key: server.profile.enabled\n            path: profiler.enabled\n          name: argocd-cmd-params-cm\n          optional: true\n        name: argocd-cmd-params-cm\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-application-controller\n  serviceName: argocd-application-controller\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-application-controller\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-application-controller\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - args:\n        - /usr/local/bin/argocd-application-controller\n        env:\n        - name: REDIS_PASSWORD\n          valueFrom:\n            secretKeyRef:\n              key: auth\n              name: argocd-redis\n        - name: ARGOCD_CONTROLLER_REPLICAS\n          value: \"1\"\n        - name: ARGOCD_RECONCILIATION_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: timeout.reconciliation\n              name: argocd-cm\n              optional: true\n        - name: ARGOCD_HARD_RECONCILIATION_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: timeout.hard.reconciliation\n              name: argocd-cm\n              optional: true\n        - name: ARGOCD_RECONCILIATION_JITTER\n          valueFrom:\n            configMapKeyRef:\n              key: timeout.reconciliation.jitter\n              name: argocd-cm\n              optional: true\n        - name: ARGOCD_REPO_ERROR_GRACE_PERIOD_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.repo.error.grace.period.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: repo.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.repo.server.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_STATUS_PROCESSORS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.status.processors\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_OPERATION_PROCESSORS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.operation.processors\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: controller.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: controller.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_LOG_FORMAT_TIMESTAMP\n          valueFrom:\n            configMapKeyRef:\n              key: log.format.timestamp\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_METRICS_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: controller.metrics.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.self.heal.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_BACKOFF_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.self.heal.backoff.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_BACKOFF_FACTOR\n          valueFrom:\n            configMapKeyRef:\n              key: controller.self.heal.backoff.factor\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_BACKOFF_CAP_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.self.heal.backoff.cap.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_BACKOFF_COOLDOWN_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.self.heal.backoff.cooldown.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_SYNC_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: controller.sync.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: controller.repo.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.repo.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_PERSIST_RESOURCE_HEALTH\n          valueFrom:\n            configMapKeyRef:\n              key: controller.resource.health.persist\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APP_STATE_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: controller.app.state.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: redis.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_COMPRESSION\n          valueFrom:\n            configMapKeyRef:\n              key: redis.compression\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDISDB\n          valueFrom:\n            configMapKeyRef:\n              key: redis.db\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_DEFAULT_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: controller.default.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_OTLP_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_OTLP_INSECURE\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.insecure\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_OTLP_HEADERS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.headers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_OTLP_ATTRS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.attrs\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: application.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_CONTROLLER_SHARDING_ALGORITHM\n          valueFrom:\n            configMapKeyRef:\n              key: controller.sharding.algorithm\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_KUBECTL_PARALLELISM_LIMIT\n          valueFrom:\n            configMapKeyRef:\n              key: controller.kubectl.parallelism.limit\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_K8SCLIENT_RETRY_MAX\n          valueFrom:\n            configMapKeyRef:\n              key: controller.k8sclient.retry.max\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_K8SCLIENT_RETRY_BASE_BACKOFF\n          valueFrom:\n            configMapKeyRef:\n              key: controller.k8sclient.retry.base.backoff\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_SERVER_SIDE_DIFF\n          valueFrom:\n            configMapKeyRef:\n              key: controller.diff.server.side\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_IGNORE_NORMALIZER_JQ_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: controller.ignore.normalizer.jq.timeout\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_HYDRATOR_ENABLED\n          valueFrom:\n            configMapKeyRef:\n              key: hydrator.enabled\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_CLUSTER_CACHE_BATCH_EVENTS_PROCESSING\n          valueFrom:\n            configMapKeyRef:\n              key: controller.cluster.cache.batch.events.processing\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_CLUSTER_CACHE_EVENTS_PROCESSING_INTERVAL\n          valueFrom:\n            configMapKeyRef:\n              key: controller.cluster.cache.events.processing.interval\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_COMMIT_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: commit.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: KUBECACHEDIR\n          value: /tmp/kubecache\n        image: quay.io/argoproj/argocd:v3.1.7\n        imagePullPolicy: IfNotPresent\n        name: argocd-application-controller\n        ports:\n        - containerPort: 8082\n        readinessProbe:\n          httpGet:\n            path: /healthz\n            port: 8082\n          initialDelaySeconds: 5\n          periodSeconds: 10\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/controller/tls\n          name: argocd-repo-server-tls\n        - mountPath: /home/argocd\n          name: argocd-home\n        - mountPath: /home/argocd/params\n          name: argocd-cmd-params-cm\n        - mountPath: /tmp\n          name: argocd-application-controller-tmp\n        workingDir: /home/argocd\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: argocd-application-controller\n      volumes:\n      - emptyDir: {}\n        name: argocd-home\n      - emptyDir: {}\n        name: argocd-application-controller-tmp\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n      - configMap:\n          items:\n          - key: controller.profile.enabled\n            path: profiler.enabled\n          name: argocd-cmd-params-cm\n          optional: true\n        name: argocd-cmd-params-cm\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller-network-policy\nspec:\n  ingress:\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 8082\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-application-controller\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller-network-policy\nspec:\n  ingress:\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 7000\n      protocol: TCP\n    - port: 8080\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-applicationset-controller\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server-network-policy\nspec:\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-server\n    ports:\n    - port: 5556\n      protocol: TCP\n    - port: 5557\n      protocol: TCP\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 5558\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-dex-server\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller-network-policy\nspec:\n  ingress:\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 9001\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-notifications-controller\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis-network-policy\nspec:\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-server\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-repo-server\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-application-controller\n    ports:\n    - port: 6379\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-redis\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: repo-server\n    app.kubernetes.io/name: argocd-repo-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-repo-server-network-policy\nspec:\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-server\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-application-controller\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-notifications-controller\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-applicationset-controller\n    ports:\n    - port: 8081\n      protocol: TCP\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 8084\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-repo-server\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server-network-policy\nspec:\n  ingress:\n  - {}\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-server\n  policyTypes:\n  - Ingress\n"
  },
  {
    "path": "pkg/controllers/localbuild/resources/gitea/k8s/install.yaml",
    "content": "# GITEA INSTALL RESOURCES\n# This file is auto-generated with 'hack/gitea/generate-manifests.sh'\n# Source: gitea/templates/gitea/config.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: my-gitea-inline-config\n  namespace: gitea\n  labels:\n    helm.sh/chart: gitea-12.1.2\n    app: gitea\n    app.kubernetes.io/name: gitea\n    app.kubernetes.io/instance: my-gitea\n    app.kubernetes.io/version: \"1.24.3\"\n    version: \"1.24.3\"\n    app.kubernetes.io/managed-by: Helm\ntype: Opaque\nstringData:\n  _generals_: \"\"\n  cache: |-\n    ADAPTER=memory\n    HOST=\n  database: DB_TYPE=sqlite3\n  indexer: ISSUE_INDEXER_TYPE=db\n  metrics: ENABLED=false\n  queue: |-\n    CONN_STR=\n    TYPE=level\n  repository: ROOT=/data/git/gitea-repositories\n  security: INSTALL_LOCK=true\n  server: |-\n    APP_DATA_PATH=/data\n    DOMAIN={{- if .UsePathRouting -}} {{ .Host }} {{- else -}} gitea.{{- .Host }} {{- end }}\n    ENABLE_PPROF=false\n    HTTP_PORT=3000\n    PROTOCOL=http\n    ROOT_URL={{- if .UsePathRouting }} {{- .Protocol }}://{{ .Host }}:{{ .Port }}/gitea {{- else }} {{- .Protocol }}://gitea.{{ .Host }}:{{ .Port }} {{- end }}\n    SSH_DOMAIN={{- if .UsePathRouting -}} {{ .Host }} {{- else -}} gitea.{{- .Host }} {{- end }}\n    SSH_LISTEN_PORT=2222\n    SSH_PORT=32222\n    START_SSH_SERVER=true\n  session: |-\n    PROVIDER=memory\n    PROVIDER_CONFIG=\n  webhook: |-\n    ALLOWED_HOST_LIST=private\n    SKIP_TLS_VERIFY=true\n---\n# Source: gitea/templates/gitea/config.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: my-gitea\n  namespace: gitea\n  labels:\n    helm.sh/chart: gitea-12.1.2\n    app: gitea\n    app.kubernetes.io/name: gitea\n    app.kubernetes.io/instance: my-gitea\n    app.kubernetes.io/version: \"1.24.3\"\n    version: \"1.24.3\"\n    app.kubernetes.io/managed-by: Helm\ntype: Opaque\nstringData:\n  config_environment.sh: |\n    #!/usr/bin/env bash\n    set -euo pipefail\n  \n    function env2ini::log() {\n      printf \"${1}\\n\"\n    }\n  \n    function env2ini::read_config_to_env() {\n      local section=\"${1}\"\n      local line=\"${2}\"\n  \n      if [[ -z \"${line}\" ]]; then\n        # skip empty line\n        return\n      fi\n  \n      # 'xargs echo -n' trims all leading/trailing whitespaces and a trailing new line\n      local setting=\"$(awk -F '=' '{print $1}' <<< \"${line}\" | xargs echo -n)\"\n  \n      if [[ -z \"${setting}\" ]]; then\n        env2ini::log '  ! invalid setting'\n        exit 1\n      fi\n  \n      local value=''\n      local regex=\"^${setting}(\\s*)=(\\s*)(.*)\"\n      if [[ $line =~ $regex ]]; then\n        value=\"${BASH_REMATCH[3]}\"\n      else\n        env2ini::log '  ! invalid setting'\n        exit 1\n      fi\n  \n      env2ini::log \"    + '${setting}'\"\n  \n      if [[ -z \"${section}\" ]]; then\n        export \"GITEA____${setting^^}=${value}\"                           # '^^' makes the variable content uppercase\n        return\n      fi\n  \n      local masked_section=\"${section//./_0X2E_}\"                            # '//' instructs to replace all matches\n      masked_section=\"${masked_section//-/_0X2D_}\"\n  \n      export \"GITEA__${masked_section^^}__${setting^^}=${value}\"        # '^^' makes the variable content uppercase\n    }\n  \n    function env2ini::reload_preset_envs() {\n      env2ini::log \"Reloading preset envs...\"\n  \n      while read -r line; do\n        if [[ -z \"${line}\" ]]; then\n          # skip empty line\n          return\n        fi\n  \n        # 'xargs echo -n' trims all leading/trailing whitespaces and a trailing new line\n        local setting=\"$(awk -F '=' '{print $1}' <<< \"${line}\" | xargs echo -n)\"\n  \n        if [[ -z \"${setting}\" ]]; then\n          env2ini::log '  ! invalid setting'\n          exit 1\n        fi\n  \n        local value=''\n        local regex=\"^${setting}(\\s*)=(\\s*)(.*)\"\n        if [[ $line =~ $regex ]]; then\n          value=\"${BASH_REMATCH[3]}\"\n        else\n          env2ini::log '  ! invalid setting'\n          exit 1\n        fi\n  \n        env2ini::log \"  + '${setting}'\"\n  \n        export \"${setting^^}=${value}\"                           # '^^' makes the variable content uppercase\n      done < \"$TMP_EXISTING_ENVS_FILE\"\n  \n      rm $TMP_EXISTING_ENVS_FILE\n    }\n  \n  \n    function env2ini::process_config_file() {\n      local config_file=\"${1}\"\n      local section=\"$(basename \"${config_file}\")\"\n  \n      if [[ $section == '_generals_' ]]; then\n        env2ini::log \"  [ini root]\"\n        section=''\n      else\n        env2ini::log \"  ${section}\"\n      fi\n  \n      while read -r line; do\n        env2ini::read_config_to_env \"${section}\" \"${line}\"\n      done < <(awk 1 \"${config_file}\")                             # Helm .toYaml trims the trailing new line which breaks line processing; awk 1 ... adds it back while reading\n    }\n  \n    function env2ini::load_config_sources() {\n      local path=\"${1}\"\n  \n      if [[ -d \"${path}\" ]]; then\n        env2ini::log \"Processing $(basename \"${path}\")...\"\n  \n        while read -d '' configFile; do\n          env2ini::process_config_file \"${configFile}\"\n        done < <(find \"${path}\" -type l -not -name '..data' -print0)\n  \n        env2ini::log \"\\n\"\n      fi\n    }\n  \n    function env2ini::generate_initial_secrets() {\n      # These environment variables will either be\n      #   - overwritten with user defined values,\n      #   - initially used to set up Gitea\n      # Anyway, they won't harm existing app.ini files\n  \n      export GITEA__SECURITY__INTERNAL_TOKEN=$(gitea generate secret INTERNAL_TOKEN)\n      export GITEA__SECURITY__SECRET_KEY=$(gitea generate secret SECRET_KEY)\n      export GITEA__OAUTH2__JWT_SECRET=$(gitea generate secret JWT_SECRET)\n      export GITEA__SERVER__LFS_JWT_SECRET=$(gitea generate secret LFS_JWT_SECRET)\n  \n      env2ini::log \"...Initial secrets generated\\n\"\n    }\n  \n    # save existing envs prior to script execution. Necessary to keep order of preexisting and custom envs\n    env | (grep -e '^GITEA__' || [[ $? == 1 ]]) > $TMP_EXISTING_ENVS_FILE\n  \n    # MUST BE CALLED BEFORE OTHER CONFIGURATION\n    env2ini::generate_initial_secrets\n  \n    env2ini::load_config_sources \"$ENV_TO_INI_MOUNT_POINT/inlines/\"\n    env2ini::load_config_sources \"$ENV_TO_INI_MOUNT_POINT/additionals/\"\n  \n    # load existing envs to override auto generated envs\n    env2ini::reload_preset_envs\n  \n    env2ini::log \"=== All configuration sources loaded ===\\n\"\n  \n    # safety to prevent rewrite of secret keys if an app.ini already exists\n    if [ -f ${GITEA_APP_INI} ]; then\n      env2ini::log 'An app.ini file already exists. To prevent overwriting secret keys, these settings are dropped and remain unchanged:'\n      env2ini::log '  - security.INTERNAL_TOKEN'\n      env2ini::log '  - security.SECRET_KEY'\n      env2ini::log '  - oauth2.JWT_SECRET'\n      env2ini::log '  - server.LFS_JWT_SECRET'\n  \n      unset GITEA__SECURITY__INTERNAL_TOKEN\n      unset GITEA__SECURITY__SECRET_KEY\n      unset GITEA__OAUTH2__JWT_SECRET\n      unset GITEA__SERVER__LFS_JWT_SECRET\n    fi\n  \n    environment-to-ini -o $GITEA_APP_INI\n  assertions: |\n---\n# Source: gitea/templates/gitea/init.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: my-gitea-init\n  namespace: gitea\n  labels:\n    helm.sh/chart: gitea-12.1.2\n    app: gitea\n    app.kubernetes.io/name: gitea\n    app.kubernetes.io/instance: my-gitea\n    app.kubernetes.io/version: \"1.24.3\"\n    version: \"1.24.3\"\n    app.kubernetes.io/managed-by: Helm\ntype: Opaque\nstringData:\n  configure_gpg_environment.sh: |\n    #!/usr/bin/env bash\n    set -eu\n  \n    gpg --batch --import \"$TMP_RAW_GPG_KEY\"\n  init_directory_structure.sh: |-\n    #!/usr/bin/env bash\n\n    set -euo pipefail\n    mkdir -pv /data/git/.ssh\n    chmod -Rv 700 /data/git/.ssh\n    [ ! -d /data/gitea/conf ] && mkdir -pv /data/gitea/conf\n\n    # prepare temp directory structure\n    mkdir -pv \"${GITEA_TEMP}\"\n    chmod -v ug+rwx \"${GITEA_TEMP}\"\n\n    \n\n  configure_gitea.sh: |-\n    #!/usr/bin/env bash\n\n    set -euo pipefail\n\n    echo '==== BEGIN GITEA CONFIGURATION ===='\n\n    { # try\n      gitea migrate\n    } || { # catch\n      echo \"Gitea migrate might fail due to database connection...This init-container will try again in a few seconds\"\n      exit 1\n    }\n    function configure_admin_user() {\n      local full_admin_list=$(gitea admin user list --admin)\n      local actual_user_table=''\n\n      # We might have distorted output due to warning logs, so we have to detect the actual user table by its headline and trim output above that line\n      local regex=\"(.*)(ID\\s+Username\\s+Email\\s+IsActive.*)\"\n      if [[ \"${full_admin_list}\" =~ $regex ]]; then\n        actual_user_table=$(echo \"${BASH_REMATCH[2]}\" | tail -n+2) # tail'ing to drop the table headline\n      else\n        # This code block should never be reached, as long as the output table header remains the same.\n        # If this code block is reached, the regex doesn't match anymore and we probably have to adjust this script.\n\n        echo \"ERROR: 'configure_admin_user' was not able to determine the current list of admin users.\"\n        echo \"       Please review the output of 'gitea admin user list --admin' shown below.\"\n        echo \"       If you think it is an issue with the Helm Chart provisioning, file an issue at https://gitea.com/gitea/helm-gitea/issues.\"\n        echo \"DEBUG: Output of 'gitea admin user list --admin'\"\n        echo \"--\"\n        echo \"${full_admin_list}\"\n        echo \"--\"\n        exit 1\n      fi\n\n      local ACCOUNT_ID=$(echo \"${actual_user_table}\" | grep -E \"\\s+${GITEA_ADMIN_USERNAME}\\s+\" | awk -F \" \" \"{printf \\$1}\")\n      if [[ -z \"${ACCOUNT_ID}\" ]]; then\n        local -a create_args\n        create_args=(--admin --username \"${GITEA_ADMIN_USERNAME}\" --password \"${GITEA_ADMIN_PASSWORD}\" --email \"gitea@local.domain\")\n        if [[ \"${GITEA_ADMIN_PASSWORD_MODE}\" = initialOnlyRequireReset ]]; then\n          create_args+=(--must-change-password=true)\n        else\n          create_args+=(--must-change-password=false)\n        fi\n        echo \"No admin user '${GITEA_ADMIN_USERNAME}' found. Creating now...\"\n        gitea admin user create \"${create_args[@]}\"\n        echo '...created.'\n      else\n        if [[ \"${GITEA_ADMIN_PASSWORD_MODE}\" = keepUpdated ]]; then\n          echo \"Admin account '${GITEA_ADMIN_USERNAME}' already exist. Running update to sync password...\"\n          # See https://gitea.com/gitea/helm-gitea/issues/673\n          # --must-change-password argument was added to change-password, defaulting to true, counter to the previous behavior\n          #   which acted as if it were provided with =false. If the argument is present in this version of gitea, then we\n          #   should add it to prevent requiring frequent admin password resets.\n          local -a change_args\n          change_args=(--username \"${GITEA_ADMIN_USERNAME}\" --password \"${GITEA_ADMIN_PASSWORD}\")\n          if gitea admin user change-password --help | grep -qF -- '--must-change-password'; then\n            change_args+=(--must-change-password=false)\n          fi\n          gitea admin user change-password \"${change_args[@]}\"\n          echo '...password sync done.'\n        else\n          echo \"Admin account '${GITEA_ADMIN_USERNAME}' already exist, but update mode is set to '${GITEA_ADMIN_PASSWORD_MODE}'. Skipping.\"\n        fi\n      fi\n    }\n\n    configure_admin_user\n\n    function configure_ldap() {\n        echo 'no ldap configuration... skipping.'\n    }\n\n    configure_ldap\n\n    function configure_oauth() {\n        echo 'no oauth configuration... skipping.'\n    }\n\n    configure_oauth\n\n    echo '==== END GITEA CONFIGURATION ===='\n---\n# Source: gitea/templates/gitea/pvc.yaml\nkind: PersistentVolumeClaim\napiVersion: v1\nmetadata:\n  name: gitea-shared-storage\n  namespace: gitea\n  annotations:\n    helm.sh/resource-policy: keep\n  labels:\n    {}\nspec:\n  accessModes:\n    - ReadWriteOnce\n  volumeMode: Filesystem\n  \n  resources:\n    requests:\n      storage: 5Gi\n---\n# Source: gitea/templates/gitea/http-svc.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: my-gitea-http\n  namespace: gitea\n  labels:\n    helm.sh/chart: gitea-12.1.2\n    app: gitea\n    app.kubernetes.io/name: gitea\n    app.kubernetes.io/instance: my-gitea\n    app.kubernetes.io/version: \"1.24.3\"\n    version: \"1.24.3\"\n    app.kubernetes.io/managed-by: Helm\n  annotations:\n    {}\nspec:\n  type: NodePort\n  externalTrafficPolicy: Local\n  ports:\n  - name: http\n    port: 3000\n    nodePort: 32223\n    targetPort: \n  selector:\n    app.kubernetes.io/name: gitea\n    app.kubernetes.io/instance: my-gitea\n---\n# Source: gitea/templates/gitea/ssh-svc.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: my-gitea-ssh\n  namespace: gitea\n  labels:\n    helm.sh/chart: gitea-12.1.2\n    app: gitea\n    app.kubernetes.io/name: gitea\n    app.kubernetes.io/instance: my-gitea\n    app.kubernetes.io/version: \"1.24.3\"\n    version: \"1.24.3\"\n    app.kubernetes.io/managed-by: Helm\n  annotations:\n    {}\nspec:\n  type: NodePort\n  externalTrafficPolicy: Local\n  ports:\n  - name: ssh\n    port: 32222\n    targetPort: 2222\n    protocol: TCP\n    nodePort: 32222\n  selector:\n    app.kubernetes.io/name: gitea\n    app.kubernetes.io/instance: my-gitea\n---\n# Source: gitea/templates/gitea/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-gitea\n  namespace: gitea\n  annotations:\n  labels:\n    helm.sh/chart: gitea-12.1.2\n    app: gitea\n    app.kubernetes.io/name: gitea\n    app.kubernetes.io/instance: my-gitea\n    app.kubernetes.io/version: \"1.24.3\"\n    version: \"1.24.3\"\n    app.kubernetes.io/managed-by: Helm\nspec:\n  replicas: 1\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxUnavailable: 0\n      maxSurge: 100%\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: gitea\n      app.kubernetes.io/instance: my-gitea\n  template:\n    metadata:\n      annotations:\n        checksum/config: 529f6c0b7da42b761507752b5efbd94a13eec00379a39efd0b561b3901796044\n      labels:\n        helm.sh/chart: gitea-12.1.2\n        app: gitea\n        app.kubernetes.io/name: gitea\n        app.kubernetes.io/instance: my-gitea\n        app.kubernetes.io/version: \"1.24.3\"\n        version: \"1.24.3\"\n        app.kubernetes.io/managed-by: Helm\n    spec:\n      \n      securityContext:\n        fsGroup: 1000\n      initContainers:\n        - name: init-directories\n          image: \"docker.gitea.com/gitea:1.24.3-rootless\"\n          imagePullPolicy: IfNotPresent\n          command:\n            - \"/usr/sbinx/init_directory_structure.sh\"\n          env:\n            - name: GITEA_APP_INI\n              value: /data/gitea/conf/app.ini\n            - name: GITEA_CUSTOM\n              value: /data/gitea\n            - name: GITEA_WORK_DIR\n              value: /data\n            - name: GITEA_TEMP\n              value: /tmp/gitea\n          volumeMounts:\n            - name: init\n              mountPath: /usr/sbinx\n            - name: temp\n              mountPath: /tmp\n            - name: data\n              mountPath: /data\n            \n          securityContext:\n            {}\n          resources:\n            limits: {}\n            requests:\n              cpu: 100m\n              memory: 128Mi\n        - name: init-app-ini\n          image: \"docker.gitea.com/gitea:1.24.3-rootless\"\n          imagePullPolicy: IfNotPresent\n          command: \n          - \"/usr/sbinx/config_environment.sh\"\n          env:\n            - name: GITEA_APP_INI\n              value: /data/gitea/conf/app.ini\n            - name: GITEA_CUSTOM\n              value: /data/gitea\n            - name: GITEA_WORK_DIR\n              value: /data\n            - name: GITEA_TEMP\n              value: /tmp/gitea\n            - name: TMP_EXISTING_ENVS_FILE\n              value: /tmp/existing-envs\n            - name: ENV_TO_INI_MOUNT_POINT\n              value: /env-to-ini-mounts\n          volumeMounts:\n            - name: config\n              mountPath: /usr/sbinx\n            - name: temp\n              mountPath: /tmp\n            - name: data\n              mountPath: /data\n            - name: inline-config-sources\n              mountPath: /env-to-ini-mounts/inlines/\n            \n          securityContext:\n            {}\n          resources:\n            limits: {}\n            requests:\n              cpu: 100m\n              memory: 128Mi\n        - name: configure-gitea\n          image: \"docker.gitea.com/gitea:1.24.3-rootless\"\n          command:\n          - \"/usr/sbinx/configure_gitea.sh\"\n          imagePullPolicy: IfNotPresent\n          securityContext:\n            runAsUser: 1000\n          env:\n            - name: GITEA_APP_INI\n              value: /data/gitea/conf/app.ini\n            - name: GITEA_CUSTOM\n              value: /data/gitea\n            - name: GITEA_WORK_DIR\n              value: /data\n            - name: GITEA_TEMP\n              value: /tmp/gitea\n            - name: HOME\n              value: /data/gitea/git\n            - name: GITEA_ADMIN_USERNAME\n              valueFrom:\n                secretKeyRef:\n                  key:  username\n                  name: gitea-credential\n            - name: GITEA_ADMIN_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  key:  password\n                  name: gitea-credential\n            - name: GITEA_ADMIN_PASSWORD_MODE\n              value: keepUpdated\n          volumeMounts:\n            - name: init\n              mountPath: /usr/sbinx\n            - name: temp\n              mountPath: /tmp\n            - name: data\n              mountPath: /data\n            \n          resources:\n            limits: {}\n            requests:\n              cpu: 100m\n              memory: 128Mi\n      terminationGracePeriodSeconds: 60\n      containers:\n        - name: gitea\n          image: \"docker.gitea.com/gitea:1.24.3-rootless\"\n          imagePullPolicy: IfNotPresent\n          env:\n            # SSH Port values have to be set here as well for openssh configuration\n            - name: SSH_LISTEN_PORT\n              value: \"2222\"\n            - name: SSH_PORT\n              value: \"32222\"\n            - name: GITEA_APP_INI\n              value: /data/gitea/conf/app.ini\n            - name: GITEA_CUSTOM\n              value: /data/gitea\n            - name: GITEA_WORK_DIR\n              value: /data\n            - name: GITEA_TEMP\n              value: /tmp/gitea\n            - name: TMPDIR\n              value: /tmp/gitea\n            - name: HOME\n              value: /data/gitea/git\n          ports:\n            - name: ssh\n              containerPort: 2222\n            - name: http\n              containerPort: 3000\n          livenessProbe:\n            failureThreshold: 10\n            initialDelaySeconds: 200\n            periodSeconds: 10\n            successThreshold: 1\n            tcpSocket:\n              port: http\n            timeoutSeconds: 1\n          readinessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 5\n            periodSeconds: 10\n            successThreshold: 1\n            tcpSocket:\n              port: http\n            timeoutSeconds: 1\n          resources:\n            {}\n          securityContext:\n            {}\n          volumeMounts:\n            - name: temp\n              mountPath: /tmp\n            - name: data\n              mountPath: /data\n            \n      volumes:\n        - name: init\n          secret:\n            secretName: my-gitea-init\n            defaultMode: 110\n        - name: config\n          secret:\n            secretName: my-gitea\n            defaultMode: 110\n        - name: inline-config-sources\n          secret:\n            secretName: my-gitea-inline-config\n        - name: temp\n          emptyDir: {}\n        - name: data\n          persistentVolumeClaim:\n            claimName: gitea-shared-storage\n{{- if .UsePathRouting }}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: my-gitea-path-oci-root\n  namespace: gitea\n  annotations:\n    nginx.ingress.kubernetes.io/proxy-body-size: 1024m\nspec:\n  ingressClassName: nginx\n  rules:\n    - host: {{ .IngressHost }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /v2\n            pathType: Prefix\n{{- if ne .IngressHost .Host }}\n    - host: {{ .Host }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /v2\n            pathType: Prefix\n{{ end }}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: my-gitea-path-oci-repo\n  namespace: gitea\n  annotations:\n    nginx.ingress.kubernetes.io/proxy-body-size: 1024m\n    nginx.ingress.kubernetes.io/use-regex: \"true\"\n    nginx.ingress.kubernetes.io/rewrite-target: /v2/$2\nspec:\n  ingressClassName: nginx\n  rules:\n    - host: {{ .IngressHost }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /v2/gitea(/|$)(.*)\n            pathType: ImplementationSpecific\n{{- if ne .IngressHost .Host }}\n    - host: {{ .Host }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /v2/gitea(/|$)(.*)\n            pathType: ImplementationSpecific\n{{ end }}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: my-gitea-path\n  namespace: gitea\n  annotations:\n    nginx.ingress.kubernetes.io/proxy-body-size: 1024m\n    nginx.ingress.kubernetes.io/use-regex: \"true\"\n    nginx.ingress.kubernetes.io/rewrite-target: /$2\nspec:\n  ingressClassName: nginx\n  rules:\n    - host: {{ .IngressHost }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /gitea(/|$)(.*)\n            pathType: ImplementationSpecific\n{{- if ne .IngressHost .Host }}\n    - host: {{ .Host }}\n      http:\n        paths:\n          - backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n            path: /gitea(/|$)(.*)\n            pathType: ImplementationSpecific\n{{ end }}\n{{ else }}\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: my-gitea-custom\n  namespace: gitea\n  annotations:\n    nginx.ingress.kubernetes.io/proxy-body-size: 1024m\nspec:\n  ingressClassName: nginx\n  rules:\n    - host: gitea.{{ .IngressHost }}\n      http:\n        paths:\n          - path: /\n            pathType: Prefix\n            backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n{{- if ne .IngressHost .Host }}\n    - host: gitea.{{ .Host }}\n      http:\n        paths:\n          - path: /\n            pathType: Prefix\n            backend:\n              service:\n                name: my-gitea-http\n                port:\n                  number: 3000\n{{ end }}\n{{ end }}\n"
  },
  {
    "path": "pkg/controllers/localbuild/resources/nginx/k8s/ingress-nginx.yaml",
    "content": "# INGRESS-NGINX INSTALL RESOURCES\n# This file is auto-generated with 'hack/ingress-nginx/generate-manifests.sh'\napiVersion: v1\nkind: Namespace\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  name: ingress-nginx\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx\n  namespace: ingress-nginx\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - pods\n  - secrets\n  - endpoints\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses/status\n  verbs:\n  - update\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingressclasses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resourceNames:\n  - ingress-nginx-leader\n  resources:\n  - leases\n  verbs:\n  - get\n  - update\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - create\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n- apiGroups:\n  - discovery.k8s.io\n  resources:\n  - endpointslices\n  verbs:\n  - list\n  - watch\n  - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - endpoints\n  - nodes\n  - pods\n  - secrets\n  - namespaces\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses/status\n  verbs:\n  - update\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingressclasses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - discovery.k8s.io\n  resources:\n  - endpointslices\n  verbs:\n  - list\n  - watch\n  - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx-admission\nrules:\n- apiGroups:\n  - admissionregistration.k8s.io\n  resources:\n  - validatingwebhookconfigurations\n  verbs:\n  - get\n  - update\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx-admission\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx-admission\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx-admission\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: v1\ndata:\n  allow-snippet-annotations: \"true\"\n  proxy-buffer-size: 32k\n  proxy-busy-buffers-size: 32k\n  use-forwarded-headers: \"true\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx-controller-admission\n  namespace: ingress-nginx\nspec:\n  ports:\n  - appProtocol: https\n    name: https-webhook\n    port: 443\n    targetPort: webhook\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: ClusterIP\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  minReadySeconds: 0\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/instance: ingress-nginx\n      app.kubernetes.io/name: ingress-nginx\n  strategy:\n    rollingUpdate:\n      maxUnavailable: 1\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.1\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - /nginx-ingress-controller\n        - --election-id=ingress-nginx-leader\n        - --controller-class=k8s.io/ingress-nginx\n        - --ingress-class=nginx\n        - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller\n        - --validating-webhook=:8443\n        - --validating-webhook-certificate=/usr/local/certificates/cert\n        - --validating-webhook-key=/usr/local/certificates/key\n        - --watch-ingress-without-class=true\n        - --publish-status-address=localhost\n        - --enable-ssl-passthrough\n        - --default-ssl-certificate=ingress-nginx/idpbuilder-cert\n        env:\n        - name: POD_NAME\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.name\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        - name: LD_PRELOAD\n          value: /usr/local/lib/libmimalloc.so\n        image: registry.k8s.io/ingress-nginx/controller:v1.13.0@sha256:dc75a7baec7a3b827a5d7ab0acd10ab507904c7dad692365b3e3b596eca1afd2\n        imagePullPolicy: IfNotPresent\n        lifecycle:\n          preStop:\n            exec:\n              command:\n              - /wait-shutdown\n        livenessProbe:\n          failureThreshold: 5\n          httpGet:\n            path: /healthz\n            port: 10254\n            scheme: HTTP\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 1\n        name: controller\n        ports:\n        - containerPort: 80\n          hostPort: 80\n          name: http\n          protocol: TCP\n        - containerPort: 443\n          hostPort: 443\n          name: https\n          protocol: TCP\n        - containerPort: 8443\n          name: webhook\n          protocol: TCP\n        readinessProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /healthz\n            port: 10254\n            scheme: HTTP\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 1\n        resources:\n          requests:\n            cpu: 100m\n            memory: 90Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            add:\n            - NET_BIND_SERVICE\n            drop:\n            - ALL\n          readOnlyRootFilesystem: false\n          runAsGroup: 82\n          runAsNonRoot: true\n          runAsUser: 101\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /usr/local/certificates/\n          name: webhook-cert\n          readOnly: true\n      dnsPolicy: ClusterFirst\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: ingress-nginx\n      terminationGracePeriodSeconds: 0\n      tolerations:\n      - effect: NoSchedule\n        key: node-role.kubernetes.io/master\n        operator: Equal\n      - effect: NoSchedule\n        key: node-role.kubernetes.io/control-plane\n        operator: Equal\n      volumes:\n      - name: webhook-cert\n        secret:\n          secretName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx-admission-create\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.13.0\n      name: ingress-nginx-admission-create\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - create\n        - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc\n        - --namespace=$(POD_NAMESPACE)\n        - --secret-name=ingress-nginx-admission\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.0@sha256:c9f76a75fd00e975416ea1b73300efd413116de0de8570346ed90766c5b5cefb\n        imagePullPolicy: IfNotPresent\n        name: create\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n          seccompProfile:\n            type: RuntimeDefault\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx-admission-patch\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.13.0\n      name: ingress-nginx-admission-patch\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - patch\n        - --webhook-name=ingress-nginx-admission\n        - --namespace=$(POD_NAMESPACE)\n        - --patch-mutating=false\n        - --secret-name=ingress-nginx-admission\n        - --patch-failure-policy=Fail\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.0@sha256:c9f76a75fd00e975416ea1b73300efd413116de0de8570346ed90766c5b5cefb\n        imagePullPolicy: IfNotPresent\n        name: patch\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n          seccompProfile:\n            type: RuntimeDefault\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: networking.k8s.io/v1\nkind: IngressClass\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: nginx\nspec:\n  controller: k8s.io/ingress-nginx\n---\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.13.0\n  name: ingress-nginx-admission\nwebhooks:\n- admissionReviewVersions:\n  - v1\n  clientConfig:\n    service:\n      name: ingress-nginx-controller-admission\n      namespace: ingress-nginx\n      path: /networking/v1/ingresses\n      port: 443\n  failurePolicy: Fail\n  matchPolicy: Equivalent\n  name: validate.nginx.ingress.kubernetes.io\n  rules:\n  - apiGroups:\n    - networking.k8s.io\n    apiVersions:\n    - v1\n    operations:\n    - CREATE\n    - UPDATE\n    resources:\n    - ingresses\n  sideEffects: None\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  ipFamilies:\n    - IPv4\n  ipFamilyPolicy: SingleStack\n  ports:\n    - appProtocol: {{ .Protocol }}\n      name: {{ .Protocol }}-{{ .Port }}\n      port: {{ .Port }}\n      protocol: TCP\n      targetPort: {{ .Protocol }}\n    - appProtocol: http\n      name: http\n      port: 80\n      protocol: TCP\n      targetPort: http\n    - appProtocol: https\n      name: https\n      port: 443\n      protocol: TCP\n      targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: NodePort\n"
  },
  {
    "path": "pkg/controllers/resources/idpbuilder.cnoe.io_custompackages.yaml",
    "content": "---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.20.0\n  name: custompackages.idpbuilder.cnoe.io\nspec:\n  group: idpbuilder.cnoe.io\n  names:\n    kind: CustomPackage\n    listKind: CustomPackageList\n    plural: custompackages\n    singular: custompackage\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: CustomPackageSpec controls the installation of the custom\n              applications.\n            properties:\n              argoCD:\n                properties:\n                  applicationFile:\n                    description: ApplicationFile specifies the absolute path to the\n                      ArgoCD application file\n                    type: string\n                  name:\n                    type: string\n                  namespace:\n                    type: string\n                  type:\n                    enum:\n                    - Application\n                    - ApplicationSet\n                    type: string\n                required:\n                - applicationFile\n                - name\n                - namespace\n                - type\n                type: object\n              gitServerAuthSecretRef:\n                properties:\n                  name:\n                    type: string\n                  namespace:\n                    type: string\n                required:\n                - name\n                - namespace\n                type: object\n              gitServerURL:\n                description: |-\n                  GitServerURL specifies the base URL for the git server for API calls.\n                  for example, https://gitea.cnoe.localtest.me:8443\n                type: string\n              internalGitServeURL:\n                description: |-\n                  InternalGitServeURL specifies the base URL for the git server accessible within the cluster.\n                  for example, http://my-gitea-http.gitea.svc.cluster.local:3000\n                type: string\n              remoteRepository:\n                description: RemoteRepositorySpec specifies information about remote\n                  repositories.\n                properties:\n                  cloneSubmodules:\n                    type: boolean\n                  path:\n                    type: string\n                  ref:\n                    description: Ref specifies the specific ref supported by git fetch\n                    type: string\n                  url:\n                    description: Url specifies the url to the repository containing\n                      the ArgoCD application file\n                    type: string\n                required:\n                - cloneSubmodules\n                - path\n                - ref\n                - url\n                type: object\n              replicate:\n                default: false\n                description: Replicate specifies whether to replicate remote or local\n                  contents to the local gitea server.\n                type: boolean\n            required:\n            - gitServerAuthSecretRef\n            - gitServerURL\n            - internalGitServeURL\n            - remoteRepository\n            - replicate\n            type: object\n          status:\n            properties:\n              gitRepositoryRefs:\n                items:\n                  properties:\n                    apiVersion:\n                      type: string\n                    kind:\n                      type: string\n                    name:\n                      type: string\n                    namespace:\n                      type: string\n                    uid:\n                      type: string\n                  type: object\n                type: array\n              synced:\n                description: |-\n                  A Custom package is considered synced when the in-cluster repository url is set as the repository URL\n                  This only applies for a package that references local directories\n                type: boolean\n            type: object\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "pkg/controllers/resources/idpbuilder.cnoe.io_gitrepositories.yaml",
    "content": "---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.20.0\n  name: gitrepositories.idpbuilder.cnoe.io\nspec:\n  group: idpbuilder.cnoe.io\n  names:\n    kind: GitRepository\n    listKind: GitRepositoryList\n    plural: gitrepositories\n    singular: gitrepository\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            properties:\n              customization:\n                description: PackageCustomization defines how packages are customized\n                properties:\n                  filePath:\n                    description: FilePath is the absolute file path to a YAML file\n                      that contains Kubernetes manifests.\n                    type: string\n                  name:\n                    description: Name is the name of the package to be customized.\n                      e.g. argocd\n                    type: string\n                required:\n                - name\n                type: object\n              provider:\n                properties:\n                  gitURL:\n                    description: GitURL is the base URL of Git server used for API\n                      calls.\n                    pattern: ^https?:\\/\\/.+$\n                    type: string\n                  internalGitURL:\n                    description: InternalGitURL is the base URL of Git server accessible\n                      within the cluster only.\n                    type: string\n                  name:\n                    enum:\n                    - gitea\n                    - github\n                    type: string\n                  organizationName:\n                    type: string\n                required:\n                - gitURL\n                - internalGitURL\n                - name\n                - organizationName\n                type: object\n              secretRef:\n                description: SecretRef is the reference to secret that contain Git\n                  server credentials\n                properties:\n                  name:\n                    type: string\n                  namespace:\n                    type: string\n                required:\n                - name\n                - namespace\n                type: object\n              source:\n                properties:\n                  embeddedAppName:\n                    enum:\n                    - argocd\n                    - gitea\n                    - nginx\n                    type: string\n                  path:\n                    description: |-\n                      Path is the absolute path to directory that contains Kustomize structure or raw manifests.\n                      This is required when Type is set to local.\n                    type: string\n                  remoteRepository:\n                    description: RemoteRepositorySpec specifies information about\n                      remote repositories.\n                    properties:\n                      cloneSubmodules:\n                        type: boolean\n                      path:\n                        type: string\n                      ref:\n                        description: Ref specifies the specific ref supported by git\n                          fetch\n                        type: string\n                      url:\n                        description: Url specifies the url to the repository containing\n                          the ArgoCD application file\n                        type: string\n                    required:\n                    - cloneSubmodules\n                    - path\n                    - ref\n                    - url\n                    type: object\n                  type:\n                    default: embedded\n                    description: Type is the source type.\n                    enum:\n                    - local\n                    - embedded\n                    - remote\n                    type: string\n                required:\n                - remoteRepository\n                - type\n                type: object\n            required:\n            - provider\n            type: object\n          status:\n            properties:\n              commit:\n                description: LatestCommit is the most recent commit known to the controller\n                properties:\n                  hash:\n                    description: Hash is the digest of the most recent commit\n                    type: string\n                type: object\n              externalGitRepositoryUrl:\n                description: ExternalGitRepositoryUrl is the url for the in-cluster\n                  repository accessible from local machine.\n                type: string\n              internalGitRepositoryUrl:\n                description: InternalGitRepositoryUrl is the url for the in-cluster\n                  repository accessible within the cluster.\n                type: string\n              path:\n                description: Path is the path within the repository that contains\n                  the files.\n                type: string\n              synced:\n                type: boolean\n            required:\n            - synced\n            type: object\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "pkg/controllers/resources/idpbuilder.cnoe.io_localbuilds.yaml",
    "content": "---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.20.0\n  name: localbuilds.idpbuilder.cnoe.io\nspec:\n  group: idpbuilder.cnoe.io\n  names:\n    kind: Localbuild\n    listKind: LocalbuildList\n    plural: localbuilds\n    singular: localbuild\n  scope: Cluster\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        properties:\n          apiVersion:\n            description: |-\n              APIVersion defines the versioned schema of this representation of an object.\n              Servers should convert recognized schemas to the latest internal value, and\n              may reject unrecognized values.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n            type: string\n          kind:\n            description: |-\n              Kind is a string value representing the REST resource this object represents.\n              Servers may infer this from the endpoint the client submits requests to.\n              Cannot be updated.\n              In CamelCase.\n              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n            type: string\n          metadata:\n            type: object\n          spec:\n            properties:\n              buildCustomization:\n                description: BuildCustomizationSpec fields cannot change once a cluster\n                  is created\n                properties:\n                  host:\n                    type: string\n                  ingressHost:\n                    type: string\n                  insecureRegistryMirrors:\n                    type: boolean\n                  port:\n                    type: string\n                  protocol:\n                    type: string\n                  registryMirrors:\n                    items:\n                      description: RegistryMirror defines an external registry mirror\n                        configuration\n                      properties:\n                        registryAddress:\n                          description: RegistryAddress is the address of the mirror\n                            registry (e.g., \"http://kind-registry:5000\")\n                          type: string\n                        targetRegistry:\n                          description: TargetRegistry is the registry that should\n                            be mirrored (e.g., \"docker.io\", \"ghcr.io\")\n                          type: string\n                      type: object\n                    type: array\n                  selfSignedCert:\n                    type: string\n                  staticPassword:\n                    type: boolean\n                  usePathRouting:\n                    type: boolean\n                type: object\n              packageConfigs:\n                properties:\n                  argoPackageConfigs:\n                    description: |-\n                      ArgoPackageConfigSpec Allows for configuration of the ArgoCD Installation.\n                      If no fields are specified then the binary embedded resources will be used to install ArgoCD.\n                    properties:\n                      enabled:\n                        description: Enabled controls whether to install ArgoCD.\n                        type: boolean\n                    type: object\n                  customPackageDirs:\n                    items:\n                      type: string\n                    type: array\n                  customPackageFiles:\n                    items:\n                      type: string\n                    type: array\n                  customPackageUrls:\n                    items:\n                      type: string\n                    type: array\n                  embeddedArgoApplicationsPackageConfigs:\n                    description: EmbeddedArgoApplicationsPackageConfigSpec Controls\n                      the installation of the embedded argo applications.\n                    properties:\n                      enabled:\n                        description: Enabled controls whether to install the embedded\n                          argo applications and the associated GitServer\n                        type: boolean\n                    type: object\n                  packageCustomization:\n                    additionalProperties:\n                      description: PackageCustomization defines how packages are customized\n                      properties:\n                        filePath:\n                          description: FilePath is the absolute file path to a YAML\n                            file that contains Kubernetes manifests.\n                          type: string\n                        name:\n                          description: Name is the name of the package to be customized.\n                            e.g. argocd\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: object\n                type: object\n            type: object\n          status:\n            properties:\n              ArgoCD:\n                properties:\n                  appsCreated:\n                    type: boolean\n                  available:\n                    type: boolean\n                type: object\n              gitea:\n                properties:\n                  adminUserSecretNameecret:\n                    type: string\n                  adminUserSecretNamespace:\n                    type: string\n                  available:\n                    type: boolean\n                  externalURL:\n                    type: string\n                  internalURL:\n                    type: string\n                type: object\n              nginx:\n                properties:\n                  available:\n                    type: boolean\n                type: object\n              observedGeneration:\n                description: ObservedGeneration is the 'Generation' of the Service\n                  that was last processed by the controller.\n                format: int64\n                type: integer\n            type: object\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "pkg/controllers/run.go",
    "content": "package controllers\n\nimport (\n\t\"context\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/controllers/custompackage\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\n\t\"github.com/cnoe-io/idpbuilder/pkg/controllers/gitrepository\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/controllers/localbuild\"\n\t\"sigs.k8s.io/controller-runtime/pkg/log\"\n\t\"sigs.k8s.io/controller-runtime/pkg/manager\"\n)\n\nfunc RunControllers(\n\tctx context.Context,\n\tmgr manager.Manager,\n\texitCh chan error,\n\tctxCancel context.CancelFunc,\n\texitOnSync bool,\n\tcfg v1alpha1.BuildCustomizationSpec,\n\ttmpDir string,\n) error {\n\tlogger := log.FromContext(ctx)\n\n\trepoMap := util.NewRepoLock()\n\n\t// Run Localbuild controller\n\tif err := (&localbuild.LocalbuildReconciler{\n\t\tClient:     mgr.GetClient(),\n\t\tScheme:     mgr.GetScheme(),\n\t\tExitOnSync: exitOnSync,\n\t\tCancelFunc: ctxCancel,\n\t\tConfig:     cfg,\n\t\tTempDir:    tmpDir,\n\t\tRepoMap:    repoMap,\n\t}).SetupWithManager(mgr); err != nil {\n\t\tlogger.Error(err, \"unable to create localbuild controller\")\n\t\treturn err\n\t}\n\n\terr := (&gitrepository.RepositoryReconciler{\n\t\tClient:          mgr.GetClient(),\n\t\tScheme:          mgr.GetScheme(),\n\t\tRecorder:        mgr.GetEventRecorderFor(\"gitrepository-controller\"),\n\t\tConfig:          cfg,\n\t\tGitProviderFunc: gitrepository.GetGitProvider,\n\t\tTempDir:         tmpDir,\n\t\tRepoMap:         repoMap,\n\t}).SetupWithManager(mgr, nil)\n\tif err != nil {\n\t\tlogger.Error(err, \"unable to create repo controller\")\n\t}\n\n\terr = (&custompackage.Reconciler{\n\t\tClient:   mgr.GetClient(),\n\t\tScheme:   mgr.GetScheme(),\n\t\tRecorder: mgr.GetEventRecorderFor(\"custompackage-controller\"),\n\t\tTempDir:  tmpDir,\n\t\tRepoMap:  repoMap,\n\t}).SetupWithManager(mgr)\n\tif err != nil {\n\t\tlogger.Error(err, \"unable to create custom package controller\")\n\t}\n\t// Start our manager in another goroutine\n\tlogger.V(1).Info(\"starting manager\")\n\n\tgo func() {\n\t\texitCh <- mgr.Start(ctx)\n\t\tclose(exitCh)\n\t}()\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/k8s/client.go",
    "content": "package k8s\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tk8serrors \"k8s.io/apimachinery/pkg/api/errors\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured\"\n\t\"k8s.io/apimachinery/pkg/types\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nfunc EnsureObject(ctx context.Context, kubeClient client.Client, obj client.Object, namespace string) error {\n\tcurObj := &unstructured.Unstructured{}\n\tcurObj.SetGroupVersionKind(obj.GetObjectKind().GroupVersionKind())\n\n\t// Fallback to object's namespace\n\tif namespace == \"\" {\n\t\tnamespace = obj.GetNamespace()\n\t}\n\n\t// Get Object if it exists\n\terr := kubeClient.Get(\n\t\tctx,\n\t\ttypes.NamespacedName{\n\t\t\tNamespace: namespace,\n\t\t\tName:      obj.GetName(),\n\t\t},\n\t\tcurObj,\n\t)\n\n\tif err == nil {\n\t\t// Object already exists\n\t\treturn nil\n\t}\n\n\terr = kubeClient.Create(ctx, obj)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// hacky way to restore the GVK for the object after create corrupts it. didn't dig. not sure why?\n\tobj.GetObjectKind().SetGroupVersionKind(curObj.GroupVersionKind())\n\treturn nil\n}\n\nfunc EnsureNamespace(ctx context.Context, kubeClient client.Client, name string) error {\n\tns := &corev1.Namespace{\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName: name,\n\t\t},\n\t}\n\n\terr := kubeClient.Get(ctx, client.ObjectKeyFromObject(ns), ns)\n\tif err != nil {\n\t\tif k8serrors.IsNotFound(err) {\n\t\t\treturn kubeClient.Create(ctx, ns)\n\t\t} else {\n\t\t\treturn fmt.Errorf(\"getting namespace %s: %w\", name, err)\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/k8s/deserialize.go",
    "content": "package k8s\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/apimachinery/pkg/runtime/serializer\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/kustomize/kyaml/kio\"\n\tkyaml \"sigs.k8s.io/kustomize/kyaml/yaml\"\n)\n\ntype ConversionError struct {\n\trtObject runtime.Object\n}\n\nfunc (e *ConversionError) Error() string {\n\treturn fmt.Sprintf(\"Failed to convert object %q\", e.rtObject.GetObjectKind().GroupVersionKind().String())\n}\n\nfunc ConvertYamlToObjects(scheme *runtime.Scheme, objYamls []byte) ([]client.Object, error) {\n\tdecode := serializer.NewCodecFactory(scheme).UniversalDeserializer().Decode\n\n\tvar k8sObjects []client.Object\n\n\tfor _, objYaml := range bytes.Split(objYamls, []byte{'\\n', '-', '-', '-', '\\n'}) {\n\t\tif len(objYaml) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\trtObject, _, err := decode(objYaml, nil, nil)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tobject, ok := rtObject.(client.Object)\n\t\tif !ok {\n\t\t\treturn nil, &ConversionError{rtObject: rtObject}\n\t\t}\n\t\tk8sObjects = append(k8sObjects, object)\n\t}\n\treturn k8sObjects, nil\n}\n\nfunc ConvertRawResourcesToObjects(scheme *runtime.Scheme, rawResources [][]byte) ([]client.Object, error) {\n\tvar ret []client.Object\n\tfor _, resources := range rawResources {\n\t\tobjs, err := ConvertYamlToObjects(scheme, resources)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tret = append(ret, objs...)\n\t}\n\treturn ret, nil\n}\n\n// replace k8s objects in given YAML doc with override objects. returns built yaml file and objects\nfunc ConvertYamlToObjectsWithOverride(scheme *runtime.Scheme, originalFiles [][]byte, overrideYamls []byte) ([][]byte, []client.Object, error) {\n\n\toverrides, err := kio.FromBytes(overrideYamls)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\toverrideMap := make(map[string]*kyaml.RNode)\n\torder := make([]string, 0, len(overrides))\n\tfor i := range overrides {\n\t\to := overrides[i]\n\t\tid := GetObjectIdentifier(o)\n\t\toverrideMap[id] = o\n\t\torder = append(order, id)\n\t}\n\n\toutYaml := make([][]byte, len(originalFiles))\n\toutObjs := make([]client.Object, 0, 10)\n\n\tfor i := range originalFiles {\n\t\toriginalFile := originalFiles[i]\n\t\toriginals, oErr := kio.FromBytes(originalFile)\n\t\tif oErr != nil {\n\t\t\treturn nil, nil, oErr\n\t\t}\n\n\t\tfor j := range originals {\n\t\t\tid := GetObjectIdentifier(originals[j])\n\n\t\t\to, ok := overrideMap[id]\n\t\t\tif ok {\n\t\t\t\t// found an object that needs to be overridden. update manifest and remove from our map.\n\t\t\t\toriginals[j].SetYNode(o.YNode())\n\t\t\t\tdelete(overrideMap, id)\n\t\t\t}\n\t\t}\n\n\t\tmanifest, oErr := kio.StringAll(originals)\n\t\tif oErr != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"converting overridden manifest to string: %w\", oErr)\n\t\t}\n\n\t\tobjs, oErr := ConvertYamlToObjects(scheme, []byte(manifest))\n\t\tif oErr != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"converting overridden manifest to k8s objects: %w\", oErr)\n\t\t}\n\t\toutObjs = append(outObjs, objs...)\n\t\toutYaml[i] = []byte(manifest)\n\t}\n\n\t// if there are objects that are not overriding any original object, create a new file and add them to it.\n\tif len(overrideMap) != 0 {\n\t\t// must preserve original order\n\t\tn := make([]*kyaml.RNode, 0, len(overrideYamls))\n\t\tfor i := range order {\n\t\t\to, ok := overrideMap[order[i]]\n\t\t\tif ok {\n\t\t\t\tn = append(n, o)\n\t\t\t}\n\t\t}\n\n\t\tmanifest, err := kio.StringAll(n)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"converting overridden manifest to string: %w\", err)\n\t\t}\n\n\t\tobjs, oErr := ConvertYamlToObjects(scheme, []byte(manifest))\n\t\tif oErr != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"converting overridden manifest to k8s objects: %w\", oErr)\n\t\t}\n\n\t\toutObjs = append(outObjs, objs...)\n\t\toutYaml = append(outYaml, []byte(manifest))\n\t}\n\n\treturn outYaml, outObjs, nil\n}\n\nfunc GetObjectIdentifier(n *kyaml.RNode) string {\n\treturn fmt.Sprintf(\"%s%s%s%s\", n.GetApiVersion(), n.GetKind(), n.GetNamespace(), n.GetName())\n}\n"
  },
  {
    "path": "pkg/k8s/deserialize_test.go",
    "content": "package k8s\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\tappsv1 \"k8s.io/api/apps/v1\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nfunc newDeployment(name string) *appsv1.Deployment {\n\treturn &appsv1.Deployment{\n\t\tTypeMeta: metav1.TypeMeta{\n\t\t\tKind:       \"Deployment\",\n\t\t\tAPIVersion: appsv1.SchemeGroupVersion.Identifier(),\n\t\t},\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName: name,\n\t\t},\n\t}\n}\n\nfunc TestConvertYamlToObjects(t *testing.T) {\n\tcases := []struct {\n\t\tname          string\n\t\tschemeBuilder runtime.SchemeBuilder\n\t\tinput         string\n\t\texpectErr     error\n\t\texpectObjects []client.Object\n\t}{{\n\t\tname:          \"Single Deployment\",\n\t\tschemeBuilder: appsv1.SchemeBuilder,\n\t\tinput: `\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: test-deployment1\nspec:`,\n\t\texpectErr: nil,\n\t\texpectObjects: []client.Object{\n\t\t\tnewDeployment(\"test-deployment1\"),\n\t\t},\n\t}, {\n\t\tname:          \"Multi Deployment\",\n\t\tschemeBuilder: appsv1.SchemeBuilder,\n\t\tinput: `\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: test-deployment1\nspec:\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: test-deployment2\nspec:`,\n\t\texpectErr: nil,\n\t\texpectObjects: []client.Object{\n\t\t\tnewDeployment(\"test-deployment1\"),\n\t\t\tnewDeployment(\"test-deployment2\"),\n\t\t},\n\t}}\n\n\tfor _, tc := range cases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tscheme := runtime.NewScheme()\n\t\t\ttc.schemeBuilder.AddToScheme(scheme)\n\t\t\tobjs, err := ConvertYamlToObjects(scheme, []byte(tc.input))\n\n\t\t\tif err != tc.expectErr {\n\t\t\t\tt.Fatalf(\"want err: %v, got err %v\", tc.expectErr, err)\n\t\t\t}\n\n\t\t\tif diff := cmp.Diff(tc.expectObjects, objs); diff != \"\" {\n\t\t\t\tt.Errorf(\"ConvertYamlToObjects() mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/k8s/schema.go",
    "content": "package k8s\n\nimport (\n\targov1alpha1 \"github.com/cnoe-io/argocd-api/api/argo/application/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\tadmissionregistrationv1 \"k8s.io/api/admissionregistration/v1\"\n\tappsv1 \"k8s.io/api/apps/v1\"\n\tbatchv1 \"k8s.io/api/batch/v1\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tnetworkingv1 \"k8s.io/api/networking/v1\"\n\trbacv1 \"k8s.io/api/rbac/v1\"\n\tapiextensionsv1 \"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n)\n\nfunc GetScheme() *runtime.Scheme {\n\tscheme := runtime.NewScheme()\n\tschemeBuilder := runtime.NewSchemeBuilder(\n\t\tadmissionregistrationv1.AddToScheme,\n\t\tapiextensionsv1.AddToScheme,\n\t\tappsv1.AddToScheme,\n\t\tbatchv1.AddToScheme,\n\t\tcorev1.AddToScheme,\n\t\tnetworkingv1.AddToScheme,\n\t\trbacv1.AddToScheme,\n\t\targov1alpha1.AddToScheme,\n\t\tv1alpha1.AddToScheme,\n\t)\n\tschemeBuilder.AddToScheme(scheme)\n\treturn scheme\n}\n"
  },
  {
    "path": "pkg/k8s/test-resources/input/argocd/install.yaml",
    "content": "# UCP ARGO INSTALL RESOURCES\n# This file is auto-generated with 'hack/argo-cd/generate-manifests.sh'\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app.kubernetes.io/name: applications.argoproj.io\n    app.kubernetes.io/part-of: argocd\n  name: applications.argoproj.io\nspec:\n  group: argoproj.io\n  names:\n    kind: Application\n    listKind: ApplicationList\n    plural: applications\n    shortNames:\n    - app\n    - apps\n    singular: application\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - jsonPath: .status.sync.status\n      name: Sync Status\n      type: string\n    - jsonPath: .status.health.status\n      name: Health Status\n      type: string\n    - jsonPath: .status.sync.revision\n      name: Revision\n      priority: 10\n      type: string\n    name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: Application is a definition of Application resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          operation:\n            description: Operation contains information about a requested or running\n              operation\n            properties:\n              info:\n                description: Info is a list of informational items for this operation\n                items:\n                  properties:\n                    name:\n                      type: string\n                    value:\n                      type: string\n                  required:\n                  - name\n                  - value\n                  type: object\n                type: array\n              initiatedBy:\n                description: InitiatedBy contains information about who initiated\n                  the operations\n                properties:\n                  automated:\n                    description: Automated is set to true if operation was initiated\n                      automatically by the application controller.\n                    type: boolean\n                  username:\n                    description: Username contains the name of a user who started\n                      operation\n                    type: string\n                type: object\n              retry:\n                description: Retry controls the strategy to apply if a sync fails\n                properties:\n                  backoff:\n                    description: Backoff controls how to backoff on subsequent retries\n                      of failed syncs\n                    properties:\n                      duration:\n                        description: Duration is the amount to back off. Default unit\n                          is seconds, but could also be a duration (e.g. \"2m\", \"1h\")\n                        type: string\n                      factor:\n                        description: Factor is a factor to multiply the base duration\n                          after each failed retry\n                        format: int64\n                        type: integer\n                      maxDuration:\n                        description: MaxDuration is the maximum amount of time allowed\n                          for the backoff strategy\n                        type: string\n                    type: object\n                  limit:\n                    description: Limit is the maximum number of attempts for retrying\n                      a failed sync. If set to 0, no retries will be performed.\n                    format: int64\n                    type: integer\n                type: object\n              sync:\n                description: Sync contains parameters for the operation\n                properties:\n                  dryRun:\n                    description: DryRun specifies to perform a `kubectl apply --dry-run`\n                      without actually performing the sync\n                    type: boolean\n                  manifests:\n                    description: Manifests is an optional field that overrides sync\n                      source with a local directory for development\n                    items:\n                      type: string\n                    type: array\n                  prune:\n                    description: Prune specifies to delete resources from the cluster\n                      that are no longer tracked in git\n                    type: boolean\n                  resources:\n                    description: Resources describes which resources shall be part\n                      of the sync\n                    items:\n                      description: SyncOperationResource contains resources to sync.\n                      properties:\n                        group:\n                          type: string\n                        kind:\n                          type: string\n                        name:\n                          type: string\n                        namespace:\n                          type: string\n                      required:\n                      - kind\n                      - name\n                      type: object\n                    type: array\n                  revision:\n                    description: Revision is the revision (Git) or chart version (Helm)\n                      which to sync the application to If omitted, will use the revision\n                      specified in app spec.\n                    type: string\n                  revisions:\n                    description: Revisions is the list of revision (Git) or chart\n                      version (Helm) which to sync each source in sources field for\n                      the application to If omitted, will use the revision specified\n                      in app spec.\n                    items:\n                      type: string\n                    type: array\n                  source:\n                    description: Source overrides the source definition set in the\n                      application. This is typically set in a Rollback operation and\n                      is nil during a Sync operation\n                    properties:\n                      chart:\n                        description: Chart is a Helm chart name, and must be specified\n                          for applications sourced from a Helm repo.\n                        type: string\n                      directory:\n                        description: Directory holds path/directory specific options\n                        properties:\n                          exclude:\n                            description: Exclude contains a glob pattern to match\n                              paths against that should be explicitly excluded from\n                              being used during manifest generation\n                            type: string\n                          include:\n                            description: Include contains a glob pattern to match\n                              paths against that should be explicitly included during\n                              manifest generation\n                            type: string\n                          jsonnet:\n                            description: Jsonnet holds options specific to Jsonnet\n                            properties:\n                              extVars:\n                                description: ExtVars is a list of Jsonnet External\n                                  Variables\n                                items:\n                                  description: JsonnetVar represents a variable to\n                                    be passed to jsonnet during manifest generation\n                                  properties:\n                                    code:\n                                      type: boolean\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              libs:\n                                description: Additional library search dirs\n                                items:\n                                  type: string\n                                type: array\n                              tlas:\n                                description: TLAS is a list of Jsonnet Top-level Arguments\n                                items:\n                                  description: JsonnetVar represents a variable to\n                                    be passed to jsonnet during manifest generation\n                                  properties:\n                                    code:\n                                      type: boolean\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                            type: object\n                          recurse:\n                            description: Recurse specifies whether to scan a directory\n                              recursively for manifests\n                            type: boolean\n                        type: object\n                      helm:\n                        description: Helm holds helm specific options\n                        properties:\n                          fileParameters:\n                            description: FileParameters are file parameters to the\n                              helm template\n                            items:\n                              description: HelmFileParameter is a file parameter that's\n                                passed to helm template during manifest generation\n                              properties:\n                                name:\n                                  description: Name is the name of the Helm parameter\n                                  type: string\n                                path:\n                                  description: Path is the path to the file containing\n                                    the values for the Helm parameter\n                                  type: string\n                              type: object\n                            type: array\n                          ignoreMissingValueFiles:\n                            description: IgnoreMissingValueFiles prevents helm template\n                              from failing when valueFiles do not exist locally by\n                              not appending them to helm template --values\n                            type: boolean\n                          parameters:\n                            description: Parameters is a list of Helm parameters which\n                              are passed to the helm template command upon manifest\n                              generation\n                            items:\n                              description: HelmParameter is a parameter that's passed\n                                to helm template during manifest generation\n                              properties:\n                                forceString:\n                                  description: ForceString determines whether to tell\n                                    Helm to interpret booleans and numbers as strings\n                                  type: boolean\n                                name:\n                                  description: Name is the name of the Helm parameter\n                                  type: string\n                                value:\n                                  description: Value is the value for the Helm parameter\n                                  type: string\n                              type: object\n                            type: array\n                          passCredentials:\n                            description: PassCredentials pass credentials to all domains\n                              (Helm's --pass-credentials)\n                            type: boolean\n                          releaseName:\n                            description: ReleaseName is the Helm release name to use.\n                              If omitted it will use the application name\n                            type: string\n                          skipCrds:\n                            description: SkipCrds skips custom resource definition\n                              installation step (Helm's --skip-crds)\n                            type: boolean\n                          valueFiles:\n                            description: ValuesFiles is a list of Helm value files\n                              to use when generating a template\n                            items:\n                              type: string\n                            type: array\n                          values:\n                            description: Values specifies Helm values to be passed\n                              to helm template, typically defined as a block. ValuesObject\n                              takes precedence over Values, so use one or the other.\n                            type: string\n                          valuesObject:\n                            description: ValuesObject specifies Helm values to be\n                              passed to helm template, defined as a map. This takes\n                              precedence over Values.\n                            type: object\n                            x-kubernetes-preserve-unknown-fields: true\n                          version:\n                            description: Version is the Helm version to use for templating\n                              (\"3\")\n                            type: string\n                        type: object\n                      kustomize:\n                        description: Kustomize holds kustomize specific options\n                        properties:\n                          commonAnnotations:\n                            additionalProperties:\n                              type: string\n                            description: CommonAnnotations is a list of additional\n                              annotations to add to rendered manifests\n                            type: object\n                          commonAnnotationsEnvsubst:\n                            description: CommonAnnotationsEnvsubst specifies whether\n                              to apply env variables substitution for annotation values\n                            type: boolean\n                          commonLabels:\n                            additionalProperties:\n                              type: string\n                            description: CommonLabels is a list of additional labels\n                              to add to rendered manifests\n                            type: object\n                          forceCommonAnnotations:\n                            description: ForceCommonAnnotations specifies whether\n                              to force applying common annotations to resources for\n                              Kustomize apps\n                            type: boolean\n                          forceCommonLabels:\n                            description: ForceCommonLabels specifies whether to force\n                              applying common labels to resources for Kustomize apps\n                            type: boolean\n                          images:\n                            description: Images is a list of Kustomize image override\n                              specifications\n                            items:\n                              description: KustomizeImage represents a Kustomize image\n                                definition in the format [old_image_name=]<image_name>:<image_tag>\n                              type: string\n                            type: array\n                          namePrefix:\n                            description: NamePrefix is a prefix appended to resources\n                              for Kustomize apps\n                            type: string\n                          nameSuffix:\n                            description: NameSuffix is a suffix appended to resources\n                              for Kustomize apps\n                            type: string\n                          namespace:\n                            description: Namespace sets the namespace that Kustomize\n                              adds to all resources\n                            type: string\n                          replicas:\n                            description: Replicas is a list of Kustomize Replicas\n                              override specifications\n                            items:\n                              properties:\n                                count:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number of replicas\n                                  x-kubernetes-int-or-string: true\n                                name:\n                                  description: Name of Deployment or StatefulSet\n                                  type: string\n                              required:\n                              - count\n                              - name\n                              type: object\n                            type: array\n                          version:\n                            description: Version controls which version of Kustomize\n                              to use for rendering manifests\n                            type: string\n                        type: object\n                      path:\n                        description: Path is a directory path within the Git repository,\n                          and is only valid for applications sourced from Git.\n                        type: string\n                      plugin:\n                        description: Plugin holds config management plugin specific\n                          options\n                        properties:\n                          env:\n                            description: Env is a list of environment variable entries\n                            items:\n                              description: EnvEntry represents an entry in the application's\n                                environment\n                              properties:\n                                name:\n                                  description: Name is the name of the variable, usually\n                                    expressed in uppercase\n                                  type: string\n                                value:\n                                  description: Value is the value of the variable\n                                  type: string\n                              required:\n                              - name\n                              - value\n                              type: object\n                            type: array\n                          name:\n                            type: string\n                          parameters:\n                            items:\n                              properties:\n                                array:\n                                  description: Array is the value of an array type\n                                    parameter.\n                                  items:\n                                    type: string\n                                  type: array\n                                map:\n                                  additionalProperties:\n                                    type: string\n                                  description: Map is the value of a map type parameter.\n                                  type: object\n                                name:\n                                  description: Name is the name identifying a parameter.\n                                  type: string\n                                string:\n                                  description: String_ is the value of a string type\n                                    parameter.\n                                  type: string\n                              type: object\n                            type: array\n                        type: object\n                      ref:\n                        description: Ref is reference to another source within sources\n                          field. This field will not be used if used with a `source`\n                          tag.\n                        type: string\n                      repoURL:\n                        description: RepoURL is the URL to the repository (Git or\n                          Helm) that contains the application manifests\n                        type: string\n                      targetRevision:\n                        description: TargetRevision defines the revision of the source\n                          to sync the application to. In case of Git, this can be\n                          commit, tag, or branch. If omitted, will equal to HEAD.\n                          In case of Helm, this is a semver tag for the Chart's version.\n                        type: string\n                    required:\n                    - repoURL\n                    type: object\n                  sources:\n                    description: Sources overrides the source definition set in the\n                      application. This is typically set in a Rollback operation and\n                      is nil during a Sync operation\n                    items:\n                      description: ApplicationSource contains all required information\n                        about the source of an application\n                      properties:\n                        chart:\n                          description: Chart is a Helm chart name, and must be specified\n                            for applications sourced from a Helm repo.\n                          type: string\n                        directory:\n                          description: Directory holds path/directory specific options\n                          properties:\n                            exclude:\n                              description: Exclude contains a glob pattern to match\n                                paths against that should be explicitly excluded from\n                                being used during manifest generation\n                              type: string\n                            include:\n                              description: Include contains a glob pattern to match\n                                paths against that should be explicitly included during\n                                manifest generation\n                              type: string\n                            jsonnet:\n                              description: Jsonnet holds options specific to Jsonnet\n                              properties:\n                                extVars:\n                                  description: ExtVars is a list of Jsonnet External\n                                    Variables\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                libs:\n                                  description: Additional library search dirs\n                                  items:\n                                    type: string\n                                  type: array\n                                tlas:\n                                  description: TLAS is a list of Jsonnet Top-level\n                                    Arguments\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                              type: object\n                            recurse:\n                              description: Recurse specifies whether to scan a directory\n                                recursively for manifests\n                              type: boolean\n                          type: object\n                        helm:\n                          description: Helm holds helm specific options\n                          properties:\n                            fileParameters:\n                              description: FileParameters are file parameters to the\n                                helm template\n                              items:\n                                description: HelmFileParameter is a file parameter\n                                  that's passed to helm template during manifest generation\n                                properties:\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  path:\n                                    description: Path is the path to the file containing\n                                      the values for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            ignoreMissingValueFiles:\n                              description: IgnoreMissingValueFiles prevents helm template\n                                from failing when valueFiles do not exist locally\n                                by not appending them to helm template --values\n                              type: boolean\n                            parameters:\n                              description: Parameters is a list of Helm parameters\n                                which are passed to the helm template command upon\n                                manifest generation\n                              items:\n                                description: HelmParameter is a parameter that's passed\n                                  to helm template during manifest generation\n                                properties:\n                                  forceString:\n                                    description: ForceString determines whether to\n                                      tell Helm to interpret booleans and numbers\n                                      as strings\n                                    type: boolean\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  value:\n                                    description: Value is the value for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            passCredentials:\n                              description: PassCredentials pass credentials to all\n                                domains (Helm's --pass-credentials)\n                              type: boolean\n                            releaseName:\n                              description: ReleaseName is the Helm release name to\n                                use. If omitted it will use the application name\n                              type: string\n                            skipCrds:\n                              description: SkipCrds skips custom resource definition\n                                installation step (Helm's --skip-crds)\n                              type: boolean\n                            valueFiles:\n                              description: ValuesFiles is a list of Helm value files\n                                to use when generating a template\n                              items:\n                                type: string\n                              type: array\n                            values:\n                              description: Values specifies Helm values to be passed\n                                to helm template, typically defined as a block. ValuesObject\n                                takes precedence over Values, so use one or the other.\n                              type: string\n                            valuesObject:\n                              description: ValuesObject specifies Helm values to be\n                                passed to helm template, defined as a map. This takes\n                                precedence over Values.\n                              type: object\n                              x-kubernetes-preserve-unknown-fields: true\n                            version:\n                              description: Version is the Helm version to use for\n                                templating (\"3\")\n                              type: string\n                          type: object\n                        kustomize:\n                          description: Kustomize holds kustomize specific options\n                          properties:\n                            commonAnnotations:\n                              additionalProperties:\n                                type: string\n                              description: CommonAnnotations is a list of additional\n                                annotations to add to rendered manifests\n                              type: object\n                            commonAnnotationsEnvsubst:\n                              description: CommonAnnotationsEnvsubst specifies whether\n                                to apply env variables substitution for annotation\n                                values\n                              type: boolean\n                            commonLabels:\n                              additionalProperties:\n                                type: string\n                              description: CommonLabels is a list of additional labels\n                                to add to rendered manifests\n                              type: object\n                            forceCommonAnnotations:\n                              description: ForceCommonAnnotations specifies whether\n                                to force applying common annotations to resources\n                                for Kustomize apps\n                              type: boolean\n                            forceCommonLabels:\n                              description: ForceCommonLabels specifies whether to\n                                force applying common labels to resources for Kustomize\n                                apps\n                              type: boolean\n                            images:\n                              description: Images is a list of Kustomize image override\n                                specifications\n                              items:\n                                description: KustomizeImage represents a Kustomize\n                                  image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                type: string\n                              type: array\n                            namePrefix:\n                              description: NamePrefix is a prefix appended to resources\n                                for Kustomize apps\n                              type: string\n                            nameSuffix:\n                              description: NameSuffix is a suffix appended to resources\n                                for Kustomize apps\n                              type: string\n                            namespace:\n                              description: Namespace sets the namespace that Kustomize\n                                adds to all resources\n                              type: string\n                            replicas:\n                              description: Replicas is a list of Kustomize Replicas\n                                override specifications\n                              items:\n                                properties:\n                                  count:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Number of replicas\n                                    x-kubernetes-int-or-string: true\n                                  name:\n                                    description: Name of Deployment or StatefulSet\n                                    type: string\n                                required:\n                                - count\n                                - name\n                                type: object\n                              type: array\n                            version:\n                              description: Version controls which version of Kustomize\n                                to use for rendering manifests\n                              type: string\n                          type: object\n                        path:\n                          description: Path is a directory path within the Git repository,\n                            and is only valid for applications sourced from Git.\n                          type: string\n                        plugin:\n                          description: Plugin holds config management plugin specific\n                            options\n                          properties:\n                            env:\n                              description: Env is a list of environment variable entries\n                              items:\n                                description: EnvEntry represents an entry in the application's\n                                  environment\n                                properties:\n                                  name:\n                                    description: Name is the name of the variable,\n                                      usually expressed in uppercase\n                                    type: string\n                                  value:\n                                    description: Value is the value of the variable\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            name:\n                              type: string\n                            parameters:\n                              items:\n                                properties:\n                                  array:\n                                    description: Array is the value of an array type\n                                      parameter.\n                                    items:\n                                      type: string\n                                    type: array\n                                  map:\n                                    additionalProperties:\n                                      type: string\n                                    description: Map is the value of a map type parameter.\n                                    type: object\n                                  name:\n                                    description: Name is the name identifying a parameter.\n                                    type: string\n                                  string:\n                                    description: String_ is the value of a string\n                                      type parameter.\n                                    type: string\n                                type: object\n                              type: array\n                          type: object\n                        ref:\n                          description: Ref is reference to another source within sources\n                            field. This field will not be used if used with a `source`\n                            tag.\n                          type: string\n                        repoURL:\n                          description: RepoURL is the URL to the repository (Git or\n                            Helm) that contains the application manifests\n                          type: string\n                        targetRevision:\n                          description: TargetRevision defines the revision of the\n                            source to sync the application to. In case of Git, this\n                            can be commit, tag, or branch. If omitted, will equal\n                            to HEAD. In case of Helm, this is a semver tag for the\n                            Chart's version.\n                          type: string\n                      required:\n                      - repoURL\n                      type: object\n                    type: array\n                  syncOptions:\n                    description: SyncOptions provide per-sync sync-options, e.g. Validate=false\n                    items:\n                      type: string\n                    type: array\n                  syncStrategy:\n                    description: SyncStrategy describes how to perform the sync\n                    properties:\n                      apply:\n                        description: Apply will perform a `kubectl apply` to perform\n                          the sync.\n                        properties:\n                          force:\n                            description: Force indicates whether or not to supply\n                              the --force flag to `kubectl apply`. The --force flag\n                              deletes and re-create the resource, when PATCH encounters\n                              conflict and has retried for 5 times.\n                            type: boolean\n                        type: object\n                      hook:\n                        description: Hook will submit any referenced resources to\n                          perform the sync. This is the default strategy\n                        properties:\n                          force:\n                            description: Force indicates whether or not to supply\n                              the --force flag to `kubectl apply`. The --force flag\n                              deletes and re-create the resource, when PATCH encounters\n                              conflict and has retried for 5 times.\n                            type: boolean\n                        type: object\n                    type: object\n                type: object\n            type: object\n          spec:\n            description: ApplicationSpec represents desired application state. Contains\n              link to repository with application definition and additional parameters\n              link definition revision.\n            properties:\n              destination:\n                description: Destination is a reference to the target Kubernetes server\n                  and namespace\n                properties:\n                  name:\n                    description: Name is an alternate way of specifying the target\n                      cluster by its symbolic name\n                    type: string\n                  namespace:\n                    description: Namespace specifies the target namespace for the\n                      application's resources. The namespace will only be set for\n                      namespace-scoped resources that have not set a value for .metadata.namespace\n                    type: string\n                  server:\n                    description: Server specifies the URL of the target cluster and\n                      must be set to the Kubernetes control plane API\n                    type: string\n                type: object\n              ignoreDifferences:\n                description: IgnoreDifferences is a list of resources and their fields\n                  which should be ignored during comparison\n                items:\n                  description: ResourceIgnoreDifferences contains resource filter\n                    and list of json paths which should be ignored during comparison\n                    with live state.\n                  properties:\n                    group:\n                      type: string\n                    jqPathExpressions:\n                      items:\n                        type: string\n                      type: array\n                    jsonPointers:\n                      items:\n                        type: string\n                      type: array\n                    kind:\n                      type: string\n                    managedFieldsManagers:\n                      description: ManagedFieldsManagers is a list of trusted managers.\n                        Fields mutated by those managers will take precedence over\n                        the desired state defined in the SCM and won't be displayed\n                        in diffs\n                      items:\n                        type: string\n                      type: array\n                    name:\n                      type: string\n                    namespace:\n                      type: string\n                  required:\n                  - kind\n                  type: object\n                type: array\n              info:\n                description: Info contains a list of information (URLs, email addresses,\n                  and plain text) that relates to the application\n                items:\n                  properties:\n                    name:\n                      type: string\n                    value:\n                      type: string\n                  required:\n                  - name\n                  - value\n                  type: object\n                type: array\n              project:\n                description: Project is a reference to the project this application\n                  belongs to. The empty string means that application belongs to the\n                  'default' project.\n                type: string\n              revisionHistoryLimit:\n                description: RevisionHistoryLimit limits the number of items kept\n                  in the application's revision history, which is used for informational\n                  purposes as well as for rollbacks to previous versions. This should\n                  only be changed in exceptional circumstances. Setting to zero will\n                  store no history. This will reduce storage used. Increasing will\n                  increase the space used to store the history, so we do not recommend\n                  increasing it. Default is 10.\n                format: int64\n                type: integer\n              source:\n                description: Source is a reference to the location of the application's\n                  manifests or chart\n                properties:\n                  chart:\n                    description: Chart is a Helm chart name, and must be specified\n                      for applications sourced from a Helm repo.\n                    type: string\n                  directory:\n                    description: Directory holds path/directory specific options\n                    properties:\n                      exclude:\n                        description: Exclude contains a glob pattern to match paths\n                          against that should be explicitly excluded from being used\n                          during manifest generation\n                        type: string\n                      include:\n                        description: Include contains a glob pattern to match paths\n                          against that should be explicitly included during manifest\n                          generation\n                        type: string\n                      jsonnet:\n                        description: Jsonnet holds options specific to Jsonnet\n                        properties:\n                          extVars:\n                            description: ExtVars is a list of Jsonnet External Variables\n                            items:\n                              description: JsonnetVar represents a variable to be\n                                passed to jsonnet during manifest generation\n                              properties:\n                                code:\n                                  type: boolean\n                                name:\n                                  type: string\n                                value:\n                                  type: string\n                              required:\n                              - name\n                              - value\n                              type: object\n                            type: array\n                          libs:\n                            description: Additional library search dirs\n                            items:\n                              type: string\n                            type: array\n                          tlas:\n                            description: TLAS is a list of Jsonnet Top-level Arguments\n                            items:\n                              description: JsonnetVar represents a variable to be\n                                passed to jsonnet during manifest generation\n                              properties:\n                                code:\n                                  type: boolean\n                                name:\n                                  type: string\n                                value:\n                                  type: string\n                              required:\n                              - name\n                              - value\n                              type: object\n                            type: array\n                        type: object\n                      recurse:\n                        description: Recurse specifies whether to scan a directory\n                          recursively for manifests\n                        type: boolean\n                    type: object\n                  helm:\n                    description: Helm holds helm specific options\n                    properties:\n                      fileParameters:\n                        description: FileParameters are file parameters to the helm\n                          template\n                        items:\n                          description: HelmFileParameter is a file parameter that's\n                            passed to helm template during manifest generation\n                          properties:\n                            name:\n                              description: Name is the name of the Helm parameter\n                              type: string\n                            path:\n                              description: Path is the path to the file containing\n                                the values for the Helm parameter\n                              type: string\n                          type: object\n                        type: array\n                      ignoreMissingValueFiles:\n                        description: IgnoreMissingValueFiles prevents helm template\n                          from failing when valueFiles do not exist locally by not\n                          appending them to helm template --values\n                        type: boolean\n                      parameters:\n                        description: Parameters is a list of Helm parameters which\n                          are passed to the helm template command upon manifest generation\n                        items:\n                          description: HelmParameter is a parameter that's passed\n                            to helm template during manifest generation\n                          properties:\n                            forceString:\n                              description: ForceString determines whether to tell\n                                Helm to interpret booleans and numbers as strings\n                              type: boolean\n                            name:\n                              description: Name is the name of the Helm parameter\n                              type: string\n                            value:\n                              description: Value is the value for the Helm parameter\n                              type: string\n                          type: object\n                        type: array\n                      passCredentials:\n                        description: PassCredentials pass credentials to all domains\n                          (Helm's --pass-credentials)\n                        type: boolean\n                      releaseName:\n                        description: ReleaseName is the Helm release name to use.\n                          If omitted it will use the application name\n                        type: string\n                      skipCrds:\n                        description: SkipCrds skips custom resource definition installation\n                          step (Helm's --skip-crds)\n                        type: boolean\n                      valueFiles:\n                        description: ValuesFiles is a list of Helm value files to\n                          use when generating a template\n                        items:\n                          type: string\n                        type: array\n                      values:\n                        description: Values specifies Helm values to be passed to\n                          helm template, typically defined as a block. ValuesObject\n                          takes precedence over Values, so use one or the other.\n                        type: string\n                      valuesObject:\n                        description: ValuesObject specifies Helm values to be passed\n                          to helm template, defined as a map. This takes precedence\n                          over Values.\n                        type: object\n                        x-kubernetes-preserve-unknown-fields: true\n                      version:\n                        description: Version is the Helm version to use for templating\n                          (\"3\")\n                        type: string\n                    type: object\n                  kustomize:\n                    description: Kustomize holds kustomize specific options\n                    properties:\n                      commonAnnotations:\n                        additionalProperties:\n                          type: string\n                        description: CommonAnnotations is a list of additional annotations\n                          to add to rendered manifests\n                        type: object\n                      commonAnnotationsEnvsubst:\n                        description: CommonAnnotationsEnvsubst specifies whether to\n                          apply env variables substitution for annotation values\n                        type: boolean\n                      commonLabels:\n                        additionalProperties:\n                          type: string\n                        description: CommonLabels is a list of additional labels to\n                          add to rendered manifests\n                        type: object\n                      forceCommonAnnotations:\n                        description: ForceCommonAnnotations specifies whether to force\n                          applying common annotations to resources for Kustomize apps\n                        type: boolean\n                      forceCommonLabels:\n                        description: ForceCommonLabels specifies whether to force\n                          applying common labels to resources for Kustomize apps\n                        type: boolean\n                      images:\n                        description: Images is a list of Kustomize image override\n                          specifications\n                        items:\n                          description: KustomizeImage represents a Kustomize image\n                            definition in the format [old_image_name=]<image_name>:<image_tag>\n                          type: string\n                        type: array\n                      namePrefix:\n                        description: NamePrefix is a prefix appended to resources\n                          for Kustomize apps\n                        type: string\n                      nameSuffix:\n                        description: NameSuffix is a suffix appended to resources\n                          for Kustomize apps\n                        type: string\n                      namespace:\n                        description: Namespace sets the namespace that Kustomize adds\n                          to all resources\n                        type: string\n                      replicas:\n                        description: Replicas is a list of Kustomize Replicas override\n                          specifications\n                        items:\n                          properties:\n                            count:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number of replicas\n                              x-kubernetes-int-or-string: true\n                            name:\n                              description: Name of Deployment or StatefulSet\n                              type: string\n                          required:\n                          - count\n                          - name\n                          type: object\n                        type: array\n                      version:\n                        description: Version controls which version of Kustomize to\n                          use for rendering manifests\n                        type: string\n                    type: object\n                  path:\n                    description: Path is a directory path within the Git repository,\n                      and is only valid for applications sourced from Git.\n                    type: string\n                  plugin:\n                    description: Plugin holds config management plugin specific options\n                    properties:\n                      env:\n                        description: Env is a list of environment variable entries\n                        items:\n                          description: EnvEntry represents an entry in the application's\n                            environment\n                          properties:\n                            name:\n                              description: Name is the name of the variable, usually\n                                expressed in uppercase\n                              type: string\n                            value:\n                              description: Value is the value of the variable\n                              type: string\n                          required:\n                          - name\n                          - value\n                          type: object\n                        type: array\n                      name:\n                        type: string\n                      parameters:\n                        items:\n                          properties:\n                            array:\n                              description: Array is the value of an array type parameter.\n                              items:\n                                type: string\n                              type: array\n                            map:\n                              additionalProperties:\n                                type: string\n                              description: Map is the value of a map type parameter.\n                              type: object\n                            name:\n                              description: Name is the name identifying a parameter.\n                              type: string\n                            string:\n                              description: String_ is the value of a string type parameter.\n                              type: string\n                          type: object\n                        type: array\n                    type: object\n                  ref:\n                    description: Ref is reference to another source within sources\n                      field. This field will not be used if used with a `source` tag.\n                    type: string\n                  repoURL:\n                    description: RepoURL is the URL to the repository (Git or Helm)\n                      that contains the application manifests\n                    type: string\n                  targetRevision:\n                    description: TargetRevision defines the revision of the source\n                      to sync the application to. In case of Git, this can be commit,\n                      tag, or branch. If omitted, will equal to HEAD. In case of Helm,\n                      this is a semver tag for the Chart's version.\n                    type: string\n                required:\n                - repoURL\n                type: object\n              sources:\n                description: Sources is a reference to the location of the application's\n                  manifests or chart\n                items:\n                  description: ApplicationSource contains all required information\n                    about the source of an application\n                  properties:\n                    chart:\n                      description: Chart is a Helm chart name, and must be specified\n                        for applications sourced from a Helm repo.\n                      type: string\n                    directory:\n                      description: Directory holds path/directory specific options\n                      properties:\n                        exclude:\n                          description: Exclude contains a glob pattern to match paths\n                            against that should be explicitly excluded from being\n                            used during manifest generation\n                          type: string\n                        include:\n                          description: Include contains a glob pattern to match paths\n                            against that should be explicitly included during manifest\n                            generation\n                          type: string\n                        jsonnet:\n                          description: Jsonnet holds options specific to Jsonnet\n                          properties:\n                            extVars:\n                              description: ExtVars is a list of Jsonnet External Variables\n                              items:\n                                description: JsonnetVar represents a variable to be\n                                  passed to jsonnet during manifest generation\n                                properties:\n                                  code:\n                                    type: boolean\n                                  name:\n                                    type: string\n                                  value:\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            libs:\n                              description: Additional library search dirs\n                              items:\n                                type: string\n                              type: array\n                            tlas:\n                              description: TLAS is a list of Jsonnet Top-level Arguments\n                              items:\n                                description: JsonnetVar represents a variable to be\n                                  passed to jsonnet during manifest generation\n                                properties:\n                                  code:\n                                    type: boolean\n                                  name:\n                                    type: string\n                                  value:\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                          type: object\n                        recurse:\n                          description: Recurse specifies whether to scan a directory\n                            recursively for manifests\n                          type: boolean\n                      type: object\n                    helm:\n                      description: Helm holds helm specific options\n                      properties:\n                        fileParameters:\n                          description: FileParameters are file parameters to the helm\n                            template\n                          items:\n                            description: HelmFileParameter is a file parameter that's\n                              passed to helm template during manifest generation\n                            properties:\n                              name:\n                                description: Name is the name of the Helm parameter\n                                type: string\n                              path:\n                                description: Path is the path to the file containing\n                                  the values for the Helm parameter\n                                type: string\n                            type: object\n                          type: array\n                        ignoreMissingValueFiles:\n                          description: IgnoreMissingValueFiles prevents helm template\n                            from failing when valueFiles do not exist locally by not\n                            appending them to helm template --values\n                          type: boolean\n                        parameters:\n                          description: Parameters is a list of Helm parameters which\n                            are passed to the helm template command upon manifest\n                            generation\n                          items:\n                            description: HelmParameter is a parameter that's passed\n                              to helm template during manifest generation\n                            properties:\n                              forceString:\n                                description: ForceString determines whether to tell\n                                  Helm to interpret booleans and numbers as strings\n                                type: boolean\n                              name:\n                                description: Name is the name of the Helm parameter\n                                type: string\n                              value:\n                                description: Value is the value for the Helm parameter\n                                type: string\n                            type: object\n                          type: array\n                        passCredentials:\n                          description: PassCredentials pass credentials to all domains\n                            (Helm's --pass-credentials)\n                          type: boolean\n                        releaseName:\n                          description: ReleaseName is the Helm release name to use.\n                            If omitted it will use the application name\n                          type: string\n                        skipCrds:\n                          description: SkipCrds skips custom resource definition installation\n                            step (Helm's --skip-crds)\n                          type: boolean\n                        valueFiles:\n                          description: ValuesFiles is a list of Helm value files to\n                            use when generating a template\n                          items:\n                            type: string\n                          type: array\n                        values:\n                          description: Values specifies Helm values to be passed to\n                            helm template, typically defined as a block. ValuesObject\n                            takes precedence over Values, so use one or the other.\n                          type: string\n                        valuesObject:\n                          description: ValuesObject specifies Helm values to be passed\n                            to helm template, defined as a map. This takes precedence\n                            over Values.\n                          type: object\n                          x-kubernetes-preserve-unknown-fields: true\n                        version:\n                          description: Version is the Helm version to use for templating\n                            (\"3\")\n                          type: string\n                      type: object\n                    kustomize:\n                      description: Kustomize holds kustomize specific options\n                      properties:\n                        commonAnnotations:\n                          additionalProperties:\n                            type: string\n                          description: CommonAnnotations is a list of additional annotations\n                            to add to rendered manifests\n                          type: object\n                        commonAnnotationsEnvsubst:\n                          description: CommonAnnotationsEnvsubst specifies whether\n                            to apply env variables substitution for annotation values\n                          type: boolean\n                        commonLabels:\n                          additionalProperties:\n                            type: string\n                          description: CommonLabels is a list of additional labels\n                            to add to rendered manifests\n                          type: object\n                        forceCommonAnnotations:\n                          description: ForceCommonAnnotations specifies whether to\n                            force applying common annotations to resources for Kustomize\n                            apps\n                          type: boolean\n                        forceCommonLabels:\n                          description: ForceCommonLabels specifies whether to force\n                            applying common labels to resources for Kustomize apps\n                          type: boolean\n                        images:\n                          description: Images is a list of Kustomize image override\n                            specifications\n                          items:\n                            description: KustomizeImage represents a Kustomize image\n                              definition in the format [old_image_name=]<image_name>:<image_tag>\n                            type: string\n                          type: array\n                        namePrefix:\n                          description: NamePrefix is a prefix appended to resources\n                            for Kustomize apps\n                          type: string\n                        nameSuffix:\n                          description: NameSuffix is a suffix appended to resources\n                            for Kustomize apps\n                          type: string\n                        namespace:\n                          description: Namespace sets the namespace that Kustomize\n                            adds to all resources\n                          type: string\n                        replicas:\n                          description: Replicas is a list of Kustomize Replicas override\n                            specifications\n                          items:\n                            properties:\n                              count:\n                                anyOf:\n                                - type: integer\n                                - type: string\n                                description: Number of replicas\n                                x-kubernetes-int-or-string: true\n                              name:\n                                description: Name of Deployment or StatefulSet\n                                type: string\n                            required:\n                            - count\n                            - name\n                            type: object\n                          type: array\n                        version:\n                          description: Version controls which version of Kustomize\n                            to use for rendering manifests\n                          type: string\n                      type: object\n                    path:\n                      description: Path is a directory path within the Git repository,\n                        and is only valid for applications sourced from Git.\n                      type: string\n                    plugin:\n                      description: Plugin holds config management plugin specific\n                        options\n                      properties:\n                        env:\n                          description: Env is a list of environment variable entries\n                          items:\n                            description: EnvEntry represents an entry in the application's\n                              environment\n                            properties:\n                              name:\n                                description: Name is the name of the variable, usually\n                                  expressed in uppercase\n                                type: string\n                              value:\n                                description: Value is the value of the variable\n                                type: string\n                            required:\n                            - name\n                            - value\n                            type: object\n                          type: array\n                        name:\n                          type: string\n                        parameters:\n                          items:\n                            properties:\n                              array:\n                                description: Array is the value of an array type parameter.\n                                items:\n                                  type: string\n                                type: array\n                              map:\n                                additionalProperties:\n                                  type: string\n                                description: Map is the value of a map type parameter.\n                                type: object\n                              name:\n                                description: Name is the name identifying a parameter.\n                                type: string\n                              string:\n                                description: String_ is the value of a string type\n                                  parameter.\n                                type: string\n                            type: object\n                          type: array\n                      type: object\n                    ref:\n                      description: Ref is reference to another source within sources\n                        field. This field will not be used if used with a `source`\n                        tag.\n                      type: string\n                    repoURL:\n                      description: RepoURL is the URL to the repository (Git or Helm)\n                        that contains the application manifests\n                      type: string\n                    targetRevision:\n                      description: TargetRevision defines the revision of the source\n                        to sync the application to. In case of Git, this can be commit,\n                        tag, or branch. If omitted, will equal to HEAD. In case of\n                        Helm, this is a semver tag for the Chart's version.\n                      type: string\n                  required:\n                  - repoURL\n                  type: object\n                type: array\n              syncPolicy:\n                description: SyncPolicy controls when and how a sync will be performed\n                properties:\n                  automated:\n                    description: Automated will keep an application synced to the\n                      target revision\n                    properties:\n                      allowEmpty:\n                        description: 'AllowEmpty allows apps have zero live resources\n                          (default: false)'\n                        type: boolean\n                      prune:\n                        description: 'Prune specifies whether to delete resources\n                          from the cluster that are not found in the sources anymore\n                          as part of automated sync (default: false)'\n                        type: boolean\n                      selfHeal:\n                        description: 'SelfHeal specifies whether to revert resources\n                          back to their desired state upon modification in the cluster\n                          (default: false)'\n                        type: boolean\n                    type: object\n                  managedNamespaceMetadata:\n                    description: ManagedNamespaceMetadata controls metadata in the\n                      given namespace (if CreateNamespace=true)\n                    properties:\n                      annotations:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      labels:\n                        additionalProperties:\n                          type: string\n                        type: object\n                    type: object\n                  retry:\n                    description: Retry controls failed sync retry behavior\n                    properties:\n                      backoff:\n                        description: Backoff controls how to backoff on subsequent\n                          retries of failed syncs\n                        properties:\n                          duration:\n                            description: Duration is the amount to back off. Default\n                              unit is seconds, but could also be a duration (e.g.\n                              \"2m\", \"1h\")\n                            type: string\n                          factor:\n                            description: Factor is a factor to multiply the base duration\n                              after each failed retry\n                            format: int64\n                            type: integer\n                          maxDuration:\n                            description: MaxDuration is the maximum amount of time\n                              allowed for the backoff strategy\n                            type: string\n                        type: object\n                      limit:\n                        description: Limit is the maximum number of attempts for retrying\n                          a failed sync. If set to 0, no retries will be performed.\n                        format: int64\n                        type: integer\n                    type: object\n                  syncOptions:\n                    description: Options allow you to specify whole app sync-options\n                    items:\n                      type: string\n                    type: array\n                type: object\n            required:\n            - destination\n            - project\n            type: object\n          status:\n            description: ApplicationStatus contains status information for the application\n            properties:\n              conditions:\n                description: Conditions is a list of currently observed application\n                  conditions\n                items:\n                  description: ApplicationCondition contains details about an application\n                    condition, which is usually an error or warning\n                  properties:\n                    lastTransitionTime:\n                      description: LastTransitionTime is the time the condition was\n                        last observed\n                      format: date-time\n                      type: string\n                    message:\n                      description: Message contains human-readable message indicating\n                        details about condition\n                      type: string\n                    type:\n                      description: Type is an application condition type\n                      type: string\n                  required:\n                  - message\n                  - type\n                  type: object\n                type: array\n              controllerNamespace:\n                description: ControllerNamespace indicates the namespace in which\n                  the application controller is located\n                type: string\n              health:\n                description: Health contains information about the application's current\n                  health status\n                properties:\n                  message:\n                    description: Message is a human-readable informational message\n                      describing the health status\n                    type: string\n                  status:\n                    description: Status holds the status code of the application or\n                      resource\n                    type: string\n                type: object\n              history:\n                description: History contains information about the application's\n                  sync history\n                items:\n                  description: RevisionHistory contains history information about\n                    a previous sync\n                  properties:\n                    deployStartedAt:\n                      description: DeployStartedAt holds the time the sync operation\n                        started\n                      format: date-time\n                      type: string\n                    deployedAt:\n                      description: DeployedAt holds the time the sync operation completed\n                      format: date-time\n                      type: string\n                    id:\n                      description: ID is an auto incrementing identifier of the RevisionHistory\n                      format: int64\n                      type: integer\n                    revision:\n                      description: Revision holds the revision the sync was performed\n                        against\n                      type: string\n                    revisions:\n                      description: Revisions holds the revision of each source in\n                        sources field the sync was performed against\n                      items:\n                        type: string\n                      type: array\n                    source:\n                      description: Source is a reference to the application source\n                        used for the sync operation\n                      properties:\n                        chart:\n                          description: Chart is a Helm chart name, and must be specified\n                            for applications sourced from a Helm repo.\n                          type: string\n                        directory:\n                          description: Directory holds path/directory specific options\n                          properties:\n                            exclude:\n                              description: Exclude contains a glob pattern to match\n                                paths against that should be explicitly excluded from\n                                being used during manifest generation\n                              type: string\n                            include:\n                              description: Include contains a glob pattern to match\n                                paths against that should be explicitly included during\n                                manifest generation\n                              type: string\n                            jsonnet:\n                              description: Jsonnet holds options specific to Jsonnet\n                              properties:\n                                extVars:\n                                  description: ExtVars is a list of Jsonnet External\n                                    Variables\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                libs:\n                                  description: Additional library search dirs\n                                  items:\n                                    type: string\n                                  type: array\n                                tlas:\n                                  description: TLAS is a list of Jsonnet Top-level\n                                    Arguments\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                              type: object\n                            recurse:\n                              description: Recurse specifies whether to scan a directory\n                                recursively for manifests\n                              type: boolean\n                          type: object\n                        helm:\n                          description: Helm holds helm specific options\n                          properties:\n                            fileParameters:\n                              description: FileParameters are file parameters to the\n                                helm template\n                              items:\n                                description: HelmFileParameter is a file parameter\n                                  that's passed to helm template during manifest generation\n                                properties:\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  path:\n                                    description: Path is the path to the file containing\n                                      the values for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            ignoreMissingValueFiles:\n                              description: IgnoreMissingValueFiles prevents helm template\n                                from failing when valueFiles do not exist locally\n                                by not appending them to helm template --values\n                              type: boolean\n                            parameters:\n                              description: Parameters is a list of Helm parameters\n                                which are passed to the helm template command upon\n                                manifest generation\n                              items:\n                                description: HelmParameter is a parameter that's passed\n                                  to helm template during manifest generation\n                                properties:\n                                  forceString:\n                                    description: ForceString determines whether to\n                                      tell Helm to interpret booleans and numbers\n                                      as strings\n                                    type: boolean\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  value:\n                                    description: Value is the value for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            passCredentials:\n                              description: PassCredentials pass credentials to all\n                                domains (Helm's --pass-credentials)\n                              type: boolean\n                            releaseName:\n                              description: ReleaseName is the Helm release name to\n                                use. If omitted it will use the application name\n                              type: string\n                            skipCrds:\n                              description: SkipCrds skips custom resource definition\n                                installation step (Helm's --skip-crds)\n                              type: boolean\n                            valueFiles:\n                              description: ValuesFiles is a list of Helm value files\n                                to use when generating a template\n                              items:\n                                type: string\n                              type: array\n                            values:\n                              description: Values specifies Helm values to be passed\n                                to helm template, typically defined as a block. ValuesObject\n                                takes precedence over Values, so use one or the other.\n                              type: string\n                            valuesObject:\n                              description: ValuesObject specifies Helm values to be\n                                passed to helm template, defined as a map. This takes\n                                precedence over Values.\n                              type: object\n                              x-kubernetes-preserve-unknown-fields: true\n                            version:\n                              description: Version is the Helm version to use for\n                                templating (\"3\")\n                              type: string\n                          type: object\n                        kustomize:\n                          description: Kustomize holds kustomize specific options\n                          properties:\n                            commonAnnotations:\n                              additionalProperties:\n                                type: string\n                              description: CommonAnnotations is a list of additional\n                                annotations to add to rendered manifests\n                              type: object\n                            commonAnnotationsEnvsubst:\n                              description: CommonAnnotationsEnvsubst specifies whether\n                                to apply env variables substitution for annotation\n                                values\n                              type: boolean\n                            commonLabels:\n                              additionalProperties:\n                                type: string\n                              description: CommonLabels is a list of additional labels\n                                to add to rendered manifests\n                              type: object\n                            forceCommonAnnotations:\n                              description: ForceCommonAnnotations specifies whether\n                                to force applying common annotations to resources\n                                for Kustomize apps\n                              type: boolean\n                            forceCommonLabels:\n                              description: ForceCommonLabels specifies whether to\n                                force applying common labels to resources for Kustomize\n                                apps\n                              type: boolean\n                            images:\n                              description: Images is a list of Kustomize image override\n                                specifications\n                              items:\n                                description: KustomizeImage represents a Kustomize\n                                  image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                type: string\n                              type: array\n                            namePrefix:\n                              description: NamePrefix is a prefix appended to resources\n                                for Kustomize apps\n                              type: string\n                            nameSuffix:\n                              description: NameSuffix is a suffix appended to resources\n                                for Kustomize apps\n                              type: string\n                            namespace:\n                              description: Namespace sets the namespace that Kustomize\n                                adds to all resources\n                              type: string\n                            replicas:\n                              description: Replicas is a list of Kustomize Replicas\n                                override specifications\n                              items:\n                                properties:\n                                  count:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Number of replicas\n                                    x-kubernetes-int-or-string: true\n                                  name:\n                                    description: Name of Deployment or StatefulSet\n                                    type: string\n                                required:\n                                - count\n                                - name\n                                type: object\n                              type: array\n                            version:\n                              description: Version controls which version of Kustomize\n                                to use for rendering manifests\n                              type: string\n                          type: object\n                        path:\n                          description: Path is a directory path within the Git repository,\n                            and is only valid for applications sourced from Git.\n                          type: string\n                        plugin:\n                          description: Plugin holds config management plugin specific\n                            options\n                          properties:\n                            env:\n                              description: Env is a list of environment variable entries\n                              items:\n                                description: EnvEntry represents an entry in the application's\n                                  environment\n                                properties:\n                                  name:\n                                    description: Name is the name of the variable,\n                                      usually expressed in uppercase\n                                    type: string\n                                  value:\n                                    description: Value is the value of the variable\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            name:\n                              type: string\n                            parameters:\n                              items:\n                                properties:\n                                  array:\n                                    description: Array is the value of an array type\n                                      parameter.\n                                    items:\n                                      type: string\n                                    type: array\n                                  map:\n                                    additionalProperties:\n                                      type: string\n                                    description: Map is the value of a map type parameter.\n                                    type: object\n                                  name:\n                                    description: Name is the name identifying a parameter.\n                                    type: string\n                                  string:\n                                    description: String_ is the value of a string\n                                      type parameter.\n                                    type: string\n                                type: object\n                              type: array\n                          type: object\n                        ref:\n                          description: Ref is reference to another source within sources\n                            field. This field will not be used if used with a `source`\n                            tag.\n                          type: string\n                        repoURL:\n                          description: RepoURL is the URL to the repository (Git or\n                            Helm) that contains the application manifests\n                          type: string\n                        targetRevision:\n                          description: TargetRevision defines the revision of the\n                            source to sync the application to. In case of Git, this\n                            can be commit, tag, or branch. If omitted, will equal\n                            to HEAD. In case of Helm, this is a semver tag for the\n                            Chart's version.\n                          type: string\n                      required:\n                      - repoURL\n                      type: object\n                    sources:\n                      description: Sources is a reference to the application sources\n                        used for the sync operation\n                      items:\n                        description: ApplicationSource contains all required information\n                          about the source of an application\n                        properties:\n                          chart:\n                            description: Chart is a Helm chart name, and must be specified\n                              for applications sourced from a Helm repo.\n                            type: string\n                          directory:\n                            description: Directory holds path/directory specific options\n                            properties:\n                              exclude:\n                                description: Exclude contains a glob pattern to match\n                                  paths against that should be explicitly excluded\n                                  from being used during manifest generation\n                                type: string\n                              include:\n                                description: Include contains a glob pattern to match\n                                  paths against that should be explicitly included\n                                  during manifest generation\n                                type: string\n                              jsonnet:\n                                description: Jsonnet holds options specific to Jsonnet\n                                properties:\n                                  extVars:\n                                    description: ExtVars is a list of Jsonnet External\n                                      Variables\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    description: Additional library search dirs\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    description: TLAS is a list of Jsonnet Top-level\n                                      Arguments\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                description: Recurse specifies whether to scan a directory\n                                  recursively for manifests\n                                type: boolean\n                            type: object\n                          helm:\n                            description: Helm holds helm specific options\n                            properties:\n                              fileParameters:\n                                description: FileParameters are file parameters to\n                                  the helm template\n                                items:\n                                  description: HelmFileParameter is a file parameter\n                                    that's passed to helm template during manifest\n                                    generation\n                                  properties:\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    path:\n                                      description: Path is the path to the file containing\n                                        the values for the Helm parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                description: IgnoreMissingValueFiles prevents helm\n                                  template from failing when valueFiles do not exist\n                                  locally by not appending them to helm template --values\n                                type: boolean\n                              parameters:\n                                description: Parameters is a list of Helm parameters\n                                  which are passed to the helm template command upon\n                                  manifest generation\n                                items:\n                                  description: HelmParameter is a parameter that's\n                                    passed to helm template during manifest generation\n                                  properties:\n                                    forceString:\n                                      description: ForceString determines whether\n                                        to tell Helm to interpret booleans and numbers\n                                        as strings\n                                      type: boolean\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    value:\n                                      description: Value is the value for the Helm\n                                        parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                description: PassCredentials pass credentials to all\n                                  domains (Helm's --pass-credentials)\n                                type: boolean\n                              releaseName:\n                                description: ReleaseName is the Helm release name\n                                  to use. If omitted it will use the application name\n                                type: string\n                              skipCrds:\n                                description: SkipCrds skips custom resource definition\n                                  installation step (Helm's --skip-crds)\n                                type: boolean\n                              valueFiles:\n                                description: ValuesFiles is a list of Helm value files\n                                  to use when generating a template\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                description: Values specifies Helm values to be passed\n                                  to helm template, typically defined as a block.\n                                  ValuesObject takes precedence over Values, so use\n                                  one or the other.\n                                type: string\n                              valuesObject:\n                                description: ValuesObject specifies Helm values to\n                                  be passed to helm template, defined as a map. This\n                                  takes precedence over Values.\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                description: Version is the Helm version to use for\n                                  templating (\"3\")\n                                type: string\n                            type: object\n                          kustomize:\n                            description: Kustomize holds kustomize specific options\n                            properties:\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                description: CommonAnnotations is a list of additional\n                                  annotations to add to rendered manifests\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                description: CommonAnnotationsEnvsubst specifies whether\n                                  to apply env variables substitution for annotation\n                                  values\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                description: CommonLabels is a list of additional\n                                  labels to add to rendered manifests\n                                type: object\n                              forceCommonAnnotations:\n                                description: ForceCommonAnnotations specifies whether\n                                  to force applying common annotations to resources\n                                  for Kustomize apps\n                                type: boolean\n                              forceCommonLabels:\n                                description: ForceCommonLabels specifies whether to\n                                  force applying common labels to resources for Kustomize\n                                  apps\n                                type: boolean\n                              images:\n                                description: Images is a list of Kustomize image override\n                                  specifications\n                                items:\n                                  description: KustomizeImage represents a Kustomize\n                                    image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                  type: string\n                                type: array\n                              namePrefix:\n                                description: NamePrefix is a prefix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              nameSuffix:\n                                description: NameSuffix is a suffix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              namespace:\n                                description: Namespace sets the namespace that Kustomize\n                                  adds to all resources\n                                type: string\n                              replicas:\n                                description: Replicas is a list of Kustomize Replicas\n                                  override specifications\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      description: Number of replicas\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      description: Name of Deployment or StatefulSet\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                description: Version controls which version of Kustomize\n                                  to use for rendering manifests\n                                type: string\n                            type: object\n                          path:\n                            description: Path is a directory path within the Git repository,\n                              and is only valid for applications sourced from Git.\n                            type: string\n                          plugin:\n                            description: Plugin holds config management plugin specific\n                              options\n                            properties:\n                              env:\n                                description: Env is a list of environment variable\n                                  entries\n                                items:\n                                  description: EnvEntry represents an entry in the\n                                    application's environment\n                                  properties:\n                                    name:\n                                      description: Name is the name of the variable,\n                                        usually expressed in uppercase\n                                      type: string\n                                    value:\n                                      description: Value is the value of the variable\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      description: Array is the value of an array\n                                        type parameter.\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      description: Map is the value of a map type\n                                        parameter.\n                                      type: object\n                                    name:\n                                      description: Name is the name identifying a\n                                        parameter.\n                                      type: string\n                                    string:\n                                      description: String_ is the value of a string\n                                        type parameter.\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            description: Ref is reference to another source within\n                              sources field. This field will not be used if used with\n                              a `source` tag.\n                            type: string\n                          repoURL:\n                            description: RepoURL is the URL to the repository (Git\n                              or Helm) that contains the application manifests\n                            type: string\n                          targetRevision:\n                            description: TargetRevision defines the revision of the\n                              source to sync the application to. In case of Git, this\n                              can be commit, tag, or branch. If omitted, will equal\n                              to HEAD. In case of Helm, this is a semver tag for the\n                              Chart's version.\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      type: array\n                  required:\n                  - deployedAt\n                  - id\n                  type: object\n                type: array\n              observedAt:\n                description: 'ObservedAt indicates when the application state was\n                  updated without querying latest git state Deprecated: controller\n                  no longer updates ObservedAt field'\n                format: date-time\n                type: string\n              operationState:\n                description: OperationState contains information about any ongoing\n                  operations, such as a sync\n                properties:\n                  finishedAt:\n                    description: FinishedAt contains time of operation completion\n                    format: date-time\n                    type: string\n                  message:\n                    description: Message holds any pertinent messages when attempting\n                      to perform operation (typically errors).\n                    type: string\n                  operation:\n                    description: Operation is the original requested operation\n                    properties:\n                      info:\n                        description: Info is a list of informational items for this\n                          operation\n                        items:\n                          properties:\n                            name:\n                              type: string\n                            value:\n                              type: string\n                          required:\n                          - name\n                          - value\n                          type: object\n                        type: array\n                      initiatedBy:\n                        description: InitiatedBy contains information about who initiated\n                          the operations\n                        properties:\n                          automated:\n                            description: Automated is set to true if operation was\n                              initiated automatically by the application controller.\n                            type: boolean\n                          username:\n                            description: Username contains the name of a user who\n                              started operation\n                            type: string\n                        type: object\n                      retry:\n                        description: Retry controls the strategy to apply if a sync\n                          fails\n                        properties:\n                          backoff:\n                            description: Backoff controls how to backoff on subsequent\n                              retries of failed syncs\n                            properties:\n                              duration:\n                                description: Duration is the amount to back off. Default\n                                  unit is seconds, but could also be a duration (e.g.\n                                  \"2m\", \"1h\")\n                                type: string\n                              factor:\n                                description: Factor is a factor to multiply the base\n                                  duration after each failed retry\n                                format: int64\n                                type: integer\n                              maxDuration:\n                                description: MaxDuration is the maximum amount of\n                                  time allowed for the backoff strategy\n                                type: string\n                            type: object\n                          limit:\n                            description: Limit is the maximum number of attempts for\n                              retrying a failed sync. If set to 0, no retries will\n                              be performed.\n                            format: int64\n                            type: integer\n                        type: object\n                      sync:\n                        description: Sync contains parameters for the operation\n                        properties:\n                          dryRun:\n                            description: DryRun specifies to perform a `kubectl apply\n                              --dry-run` without actually performing the sync\n                            type: boolean\n                          manifests:\n                            description: Manifests is an optional field that overrides\n                              sync source with a local directory for development\n                            items:\n                              type: string\n                            type: array\n                          prune:\n                            description: Prune specifies to delete resources from\n                              the cluster that are no longer tracked in git\n                            type: boolean\n                          resources:\n                            description: Resources describes which resources shall\n                              be part of the sync\n                            items:\n                              description: SyncOperationResource contains resources\n                                to sync.\n                              properties:\n                                group:\n                                  type: string\n                                kind:\n                                  type: string\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              required:\n                              - kind\n                              - name\n                              type: object\n                            type: array\n                          revision:\n                            description: Revision is the revision (Git) or chart version\n                              (Helm) which to sync the application to If omitted,\n                              will use the revision specified in app spec.\n                            type: string\n                          revisions:\n                            description: Revisions is the list of revision (Git) or\n                              chart version (Helm) which to sync each source in sources\n                              field for the application to If omitted, will use the\n                              revision specified in app spec.\n                            items:\n                              type: string\n                            type: array\n                          source:\n                            description: Source overrides the source definition set\n                              in the application. This is typically set in a Rollback\n                              operation and is nil during a Sync operation\n                            properties:\n                              chart:\n                                description: Chart is a Helm chart name, and must\n                                  be specified for applications sourced from a Helm\n                                  repo.\n                                type: string\n                              directory:\n                                description: Directory holds path/directory specific\n                                  options\n                                properties:\n                                  exclude:\n                                    description: Exclude contains a glob pattern to\n                                      match paths against that should be explicitly\n                                      excluded from being used during manifest generation\n                                    type: string\n                                  include:\n                                    description: Include contains a glob pattern to\n                                      match paths against that should be explicitly\n                                      included during manifest generation\n                                    type: string\n                                  jsonnet:\n                                    description: Jsonnet holds options specific to\n                                      Jsonnet\n                                    properties:\n                                      extVars:\n                                        description: ExtVars is a list of Jsonnet\n                                          External Variables\n                                        items:\n                                          description: JsonnetVar represents a variable\n                                            to be passed to jsonnet during manifest\n                                            generation\n                                          properties:\n                                            code:\n                                              type: boolean\n                                            name:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - name\n                                          - value\n                                          type: object\n                                        type: array\n                                      libs:\n                                        description: Additional library search dirs\n                                        items:\n                                          type: string\n                                        type: array\n                                      tlas:\n                                        description: TLAS is a list of Jsonnet Top-level\n                                          Arguments\n                                        items:\n                                          description: JsonnetVar represents a variable\n                                            to be passed to jsonnet during manifest\n                                            generation\n                                          properties:\n                                            code:\n                                              type: boolean\n                                            name:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - name\n                                          - value\n                                          type: object\n                                        type: array\n                                    type: object\n                                  recurse:\n                                    description: Recurse specifies whether to scan\n                                      a directory recursively for manifests\n                                    type: boolean\n                                type: object\n                              helm:\n                                description: Helm holds helm specific options\n                                properties:\n                                  fileParameters:\n                                    description: FileParameters are file parameters\n                                      to the helm template\n                                    items:\n                                      description: HelmFileParameter is a file parameter\n                                        that's passed to helm template during manifest\n                                        generation\n                                      properties:\n                                        name:\n                                          description: Name is the name of the Helm\n                                            parameter\n                                          type: string\n                                        path:\n                                          description: Path is the path to the file\n                                            containing the values for the Helm parameter\n                                          type: string\n                                      type: object\n                                    type: array\n                                  ignoreMissingValueFiles:\n                                    description: IgnoreMissingValueFiles prevents\n                                      helm template from failing when valueFiles do\n                                      not exist locally by not appending them to helm\n                                      template --values\n                                    type: boolean\n                                  parameters:\n                                    description: Parameters is a list of Helm parameters\n                                      which are passed to the helm template command\n                                      upon manifest generation\n                                    items:\n                                      description: HelmParameter is a parameter that's\n                                        passed to helm template during manifest generation\n                                      properties:\n                                        forceString:\n                                          description: ForceString determines whether\n                                            to tell Helm to interpret booleans and\n                                            numbers as strings\n                                          type: boolean\n                                        name:\n                                          description: Name is the name of the Helm\n                                            parameter\n                                          type: string\n                                        value:\n                                          description: Value is the value for the\n                                            Helm parameter\n                                          type: string\n                                      type: object\n                                    type: array\n                                  passCredentials:\n                                    description: PassCredentials pass credentials\n                                      to all domains (Helm's --pass-credentials)\n                                    type: boolean\n                                  releaseName:\n                                    description: ReleaseName is the Helm release name\n                                      to use. If omitted it will use the application\n                                      name\n                                    type: string\n                                  skipCrds:\n                                    description: SkipCrds skips custom resource definition\n                                      installation step (Helm's --skip-crds)\n                                    type: boolean\n                                  valueFiles:\n                                    description: ValuesFiles is a list of Helm value\n                                      files to use when generating a template\n                                    items:\n                                      type: string\n                                    type: array\n                                  values:\n                                    description: Values specifies Helm values to be\n                                      passed to helm template, typically defined as\n                                      a block. ValuesObject takes precedence over\n                                      Values, so use one or the other.\n                                    type: string\n                                  valuesObject:\n                                    description: ValuesObject specifies Helm values\n                                      to be passed to helm template, defined as a\n                                      map. This takes precedence over Values.\n                                    type: object\n                                    x-kubernetes-preserve-unknown-fields: true\n                                  version:\n                                    description: Version is the Helm version to use\n                                      for templating (\"3\")\n                                    type: string\n                                type: object\n                              kustomize:\n                                description: Kustomize holds kustomize specific options\n                                properties:\n                                  commonAnnotations:\n                                    additionalProperties:\n                                      type: string\n                                    description: CommonAnnotations is a list of additional\n                                      annotations to add to rendered manifests\n                                    type: object\n                                  commonAnnotationsEnvsubst:\n                                    description: CommonAnnotationsEnvsubst specifies\n                                      whether to apply env variables substitution\n                                      for annotation values\n                                    type: boolean\n                                  commonLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: CommonLabels is a list of additional\n                                      labels to add to rendered manifests\n                                    type: object\n                                  forceCommonAnnotations:\n                                    description: ForceCommonAnnotations specifies\n                                      whether to force applying common annotations\n                                      to resources for Kustomize apps\n                                    type: boolean\n                                  forceCommonLabels:\n                                    description: ForceCommonLabels specifies whether\n                                      to force applying common labels to resources\n                                      for Kustomize apps\n                                    type: boolean\n                                  images:\n                                    description: Images is a list of Kustomize image\n                                      override specifications\n                                    items:\n                                      description: KustomizeImage represents a Kustomize\n                                        image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                      type: string\n                                    type: array\n                                  namePrefix:\n                                    description: NamePrefix is a prefix appended to\n                                      resources for Kustomize apps\n                                    type: string\n                                  nameSuffix:\n                                    description: NameSuffix is a suffix appended to\n                                      resources for Kustomize apps\n                                    type: string\n                                  namespace:\n                                    description: Namespace sets the namespace that\n                                      Kustomize adds to all resources\n                                    type: string\n                                  replicas:\n                                    description: Replicas is a list of Kustomize Replicas\n                                      override specifications\n                                    items:\n                                      properties:\n                                        count:\n                                          anyOf:\n                                          - type: integer\n                                          - type: string\n                                          description: Number of replicas\n                                          x-kubernetes-int-or-string: true\n                                        name:\n                                          description: Name of Deployment or StatefulSet\n                                          type: string\n                                      required:\n                                      - count\n                                      - name\n                                      type: object\n                                    type: array\n                                  version:\n                                    description: Version controls which version of\n                                      Kustomize to use for rendering manifests\n                                    type: string\n                                type: object\n                              path:\n                                description: Path is a directory path within the Git\n                                  repository, and is only valid for applications sourced\n                                  from Git.\n                                type: string\n                              plugin:\n                                description: Plugin holds config management plugin\n                                  specific options\n                                properties:\n                                  env:\n                                    description: Env is a list of environment variable\n                                      entries\n                                    items:\n                                      description: EnvEntry represents an entry in\n                                        the application's environment\n                                      properties:\n                                        name:\n                                          description: Name is the name of the variable,\n                                            usually expressed in uppercase\n                                          type: string\n                                        value:\n                                          description: Value is the value of the variable\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  name:\n                                    type: string\n                                  parameters:\n                                    items:\n                                      properties:\n                                        array:\n                                          description: Array is the value of an array\n                                            type parameter.\n                                          items:\n                                            type: string\n                                          type: array\n                                        map:\n                                          additionalProperties:\n                                            type: string\n                                          description: Map is the value of a map type\n                                            parameter.\n                                          type: object\n                                        name:\n                                          description: Name is the name identifying\n                                            a parameter.\n                                          type: string\n                                        string:\n                                          description: String_ is the value of a string\n                                            type parameter.\n                                          type: string\n                                      type: object\n                                    type: array\n                                type: object\n                              ref:\n                                description: Ref is reference to another source within\n                                  sources field. This field will not be used if used\n                                  with a `source` tag.\n                                type: string\n                              repoURL:\n                                description: RepoURL is the URL to the repository\n                                  (Git or Helm) that contains the application manifests\n                                type: string\n                              targetRevision:\n                                description: TargetRevision defines the revision of\n                                  the source to sync the application to. In case of\n                                  Git, this can be commit, tag, or branch. If omitted,\n                                  will equal to HEAD. In case of Helm, this is a semver\n                                  tag for the Chart's version.\n                                type: string\n                            required:\n                            - repoURL\n                            type: object\n                          sources:\n                            description: Sources overrides the source definition set\n                              in the application. This is typically set in a Rollback\n                              operation and is nil during a Sync operation\n                            items:\n                              description: ApplicationSource contains all required\n                                information about the source of an application\n                              properties:\n                                chart:\n                                  description: Chart is a Helm chart name, and must\n                                    be specified for applications sourced from a Helm\n                                    repo.\n                                  type: string\n                                directory:\n                                  description: Directory holds path/directory specific\n                                    options\n                                  properties:\n                                    exclude:\n                                      description: Exclude contains a glob pattern\n                                        to match paths against that should be explicitly\n                                        excluded from being used during manifest generation\n                                      type: string\n                                    include:\n                                      description: Include contains a glob pattern\n                                        to match paths against that should be explicitly\n                                        included during manifest generation\n                                      type: string\n                                    jsonnet:\n                                      description: Jsonnet holds options specific\n                                        to Jsonnet\n                                      properties:\n                                        extVars:\n                                          description: ExtVars is a list of Jsonnet\n                                            External Variables\n                                          items:\n                                            description: JsonnetVar represents a variable\n                                              to be passed to jsonnet during manifest\n                                              generation\n                                            properties:\n                                              code:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        libs:\n                                          description: Additional library search dirs\n                                          items:\n                                            type: string\n                                          type: array\n                                        tlas:\n                                          description: TLAS is a list of Jsonnet Top-level\n                                            Arguments\n                                          items:\n                                            description: JsonnetVar represents a variable\n                                              to be passed to jsonnet during manifest\n                                              generation\n                                            properties:\n                                              code:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                      type: object\n                                    recurse:\n                                      description: Recurse specifies whether to scan\n                                        a directory recursively for manifests\n                                      type: boolean\n                                  type: object\n                                helm:\n                                  description: Helm holds helm specific options\n                                  properties:\n                                    fileParameters:\n                                      description: FileParameters are file parameters\n                                        to the helm template\n                                      items:\n                                        description: HelmFileParameter is a file parameter\n                                          that's passed to helm template during manifest\n                                          generation\n                                        properties:\n                                          name:\n                                            description: Name is the name of the Helm\n                                              parameter\n                                            type: string\n                                          path:\n                                            description: Path is the path to the file\n                                              containing the values for the Helm parameter\n                                            type: string\n                                        type: object\n                                      type: array\n                                    ignoreMissingValueFiles:\n                                      description: IgnoreMissingValueFiles prevents\n                                        helm template from failing when valueFiles\n                                        do not exist locally by not appending them\n                                        to helm template --values\n                                      type: boolean\n                                    parameters:\n                                      description: Parameters is a list of Helm parameters\n                                        which are passed to the helm template command\n                                        upon manifest generation\n                                      items:\n                                        description: HelmParameter is a parameter\n                                          that's passed to helm template during manifest\n                                          generation\n                                        properties:\n                                          forceString:\n                                            description: ForceString determines whether\n                                              to tell Helm to interpret booleans and\n                                              numbers as strings\n                                            type: boolean\n                                          name:\n                                            description: Name is the name of the Helm\n                                              parameter\n                                            type: string\n                                          value:\n                                            description: Value is the value for the\n                                              Helm parameter\n                                            type: string\n                                        type: object\n                                      type: array\n                                    passCredentials:\n                                      description: PassCredentials pass credentials\n                                        to all domains (Helm's --pass-credentials)\n                                      type: boolean\n                                    releaseName:\n                                      description: ReleaseName is the Helm release\n                                        name to use. If omitted it will use the application\n                                        name\n                                      type: string\n                                    skipCrds:\n                                      description: SkipCrds skips custom resource\n                                        definition installation step (Helm's --skip-crds)\n                                      type: boolean\n                                    valueFiles:\n                                      description: ValuesFiles is a list of Helm value\n                                        files to use when generating a template\n                                      items:\n                                        type: string\n                                      type: array\n                                    values:\n                                      description: Values specifies Helm values to\n                                        be passed to helm template, typically defined\n                                        as a block. ValuesObject takes precedence\n                                        over Values, so use one or the other.\n                                      type: string\n                                    valuesObject:\n                                      description: ValuesObject specifies Helm values\n                                        to be passed to helm template, defined as\n                                        a map. This takes precedence over Values.\n                                      type: object\n                                      x-kubernetes-preserve-unknown-fields: true\n                                    version:\n                                      description: Version is the Helm version to\n                                        use for templating (\"3\")\n                                      type: string\n                                  type: object\n                                kustomize:\n                                  description: Kustomize holds kustomize specific\n                                    options\n                                  properties:\n                                    commonAnnotations:\n                                      additionalProperties:\n                                        type: string\n                                      description: CommonAnnotations is a list of\n                                        additional annotations to add to rendered\n                                        manifests\n                                      type: object\n                                    commonAnnotationsEnvsubst:\n                                      description: CommonAnnotationsEnvsubst specifies\n                                        whether to apply env variables substitution\n                                        for annotation values\n                                      type: boolean\n                                    commonLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: CommonLabels is a list of additional\n                                        labels to add to rendered manifests\n                                      type: object\n                                    forceCommonAnnotations:\n                                      description: ForceCommonAnnotations specifies\n                                        whether to force applying common annotations\n                                        to resources for Kustomize apps\n                                      type: boolean\n                                    forceCommonLabels:\n                                      description: ForceCommonLabels specifies whether\n                                        to force applying common labels to resources\n                                        for Kustomize apps\n                                      type: boolean\n                                    images:\n                                      description: Images is a list of Kustomize image\n                                        override specifications\n                                      items:\n                                        description: KustomizeImage represents a Kustomize\n                                          image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                        type: string\n                                      type: array\n                                    namePrefix:\n                                      description: NamePrefix is a prefix appended\n                                        to resources for Kustomize apps\n                                      type: string\n                                    nameSuffix:\n                                      description: NameSuffix is a suffix appended\n                                        to resources for Kustomize apps\n                                      type: string\n                                    namespace:\n                                      description: Namespace sets the namespace that\n                                        Kustomize adds to all resources\n                                      type: string\n                                    replicas:\n                                      description: Replicas is a list of Kustomize\n                                        Replicas override specifications\n                                      items:\n                                        properties:\n                                          count:\n                                            anyOf:\n                                            - type: integer\n                                            - type: string\n                                            description: Number of replicas\n                                            x-kubernetes-int-or-string: true\n                                          name:\n                                            description: Name of Deployment or StatefulSet\n                                            type: string\n                                        required:\n                                        - count\n                                        - name\n                                        type: object\n                                      type: array\n                                    version:\n                                      description: Version controls which version\n                                        of Kustomize to use for rendering manifests\n                                      type: string\n                                  type: object\n                                path:\n                                  description: Path is a directory path within the\n                                    Git repository, and is only valid for applications\n                                    sourced from Git.\n                                  type: string\n                                plugin:\n                                  description: Plugin holds config management plugin\n                                    specific options\n                                  properties:\n                                    env:\n                                      description: Env is a list of environment variable\n                                        entries\n                                      items:\n                                        description: EnvEntry represents an entry\n                                          in the application's environment\n                                        properties:\n                                          name:\n                                            description: Name is the name of the variable,\n                                              usually expressed in uppercase\n                                            type: string\n                                          value:\n                                            description: Value is the value of the\n                                              variable\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    name:\n                                      type: string\n                                    parameters:\n                                      items:\n                                        properties:\n                                          array:\n                                            description: Array is the value of an\n                                              array type parameter.\n                                            items:\n                                              type: string\n                                            type: array\n                                          map:\n                                            additionalProperties:\n                                              type: string\n                                            description: Map is the value of a map\n                                              type parameter.\n                                            type: object\n                                          name:\n                                            description: Name is the name identifying\n                                              a parameter.\n                                            type: string\n                                          string:\n                                            description: String_ is the value of a\n                                              string type parameter.\n                                            type: string\n                                        type: object\n                                      type: array\n                                  type: object\n                                ref:\n                                  description: Ref is reference to another source\n                                    within sources field. This field will not be used\n                                    if used with a `source` tag.\n                                  type: string\n                                repoURL:\n                                  description: RepoURL is the URL to the repository\n                                    (Git or Helm) that contains the application manifests\n                                  type: string\n                                targetRevision:\n                                  description: TargetRevision defines the revision\n                                    of the source to sync the application to. In case\n                                    of Git, this can be commit, tag, or branch. If\n                                    omitted, will equal to HEAD. In case of Helm,\n                                    this is a semver tag for the Chart's version.\n                                  type: string\n                              required:\n                              - repoURL\n                              type: object\n                            type: array\n                          syncOptions:\n                            description: SyncOptions provide per-sync sync-options,\n                              e.g. Validate=false\n                            items:\n                              type: string\n                            type: array\n                          syncStrategy:\n                            description: SyncStrategy describes how to perform the\n                              sync\n                            properties:\n                              apply:\n                                description: Apply will perform a `kubectl apply`\n                                  to perform the sync.\n                                properties:\n                                  force:\n                                    description: Force indicates whether or not to\n                                      supply the --force flag to `kubectl apply`.\n                                      The --force flag deletes and re-create the resource,\n                                      when PATCH encounters conflict and has retried\n                                      for 5 times.\n                                    type: boolean\n                                type: object\n                              hook:\n                                description: Hook will submit any referenced resources\n                                  to perform the sync. This is the default strategy\n                                properties:\n                                  force:\n                                    description: Force indicates whether or not to\n                                      supply the --force flag to `kubectl apply`.\n                                      The --force flag deletes and re-create the resource,\n                                      when PATCH encounters conflict and has retried\n                                      for 5 times.\n                                    type: boolean\n                                type: object\n                            type: object\n                        type: object\n                    type: object\n                  phase:\n                    description: Phase is the current phase of the operation\n                    type: string\n                  retryCount:\n                    description: RetryCount contains time of operation retries\n                    format: int64\n                    type: integer\n                  startedAt:\n                    description: StartedAt contains time of operation start\n                    format: date-time\n                    type: string\n                  syncResult:\n                    description: SyncResult is the result of a Sync operation\n                    properties:\n                      managedNamespaceMetadata:\n                        description: ManagedNamespaceMetadata contains the current\n                          sync state of managed namespace metadata\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            type: object\n                        type: object\n                      resources:\n                        description: Resources contains a list of sync result items\n                          for each individual resource in a sync operation\n                        items:\n                          description: ResourceResult holds the operation result details\n                            of a specific resource\n                          properties:\n                            group:\n                              description: Group specifies the API group of the resource\n                              type: string\n                            hookPhase:\n                              description: HookPhase contains the state of any operation\n                                associated with this resource OR hook This can also\n                                contain values for non-hook resources.\n                              type: string\n                            hookType:\n                              description: HookType specifies the type of the hook.\n                                Empty for non-hook resources\n                              type: string\n                            kind:\n                              description: Kind specifies the API kind of the resource\n                              type: string\n                            message:\n                              description: Message contains an informational or error\n                                message for the last sync OR operation\n                              type: string\n                            name:\n                              description: Name specifies the name of the resource\n                              type: string\n                            namespace:\n                              description: Namespace specifies the target namespace\n                                of the resource\n                              type: string\n                            status:\n                              description: Status holds the final result of the sync.\n                                Will be empty if the resources is yet to be applied/pruned\n                                and is always zero-value for hooks\n                              type: string\n                            syncPhase:\n                              description: SyncPhase indicates the particular phase\n                                of the sync that this result was acquired in\n                              type: string\n                            version:\n                              description: Version specifies the API version of the\n                                resource\n                              type: string\n                          required:\n                          - group\n                          - kind\n                          - name\n                          - namespace\n                          - version\n                          type: object\n                        type: array\n                      revision:\n                        description: Revision holds the revision this sync operation\n                          was performed to\n                        type: string\n                      revisions:\n                        description: Revisions holds the revision this sync operation\n                          was performed for respective indexed source in sources field\n                        items:\n                          type: string\n                        type: array\n                      source:\n                        description: Source records the application source information\n                          of the sync, used for comparing auto-sync\n                        properties:\n                          chart:\n                            description: Chart is a Helm chart name, and must be specified\n                              for applications sourced from a Helm repo.\n                            type: string\n                          directory:\n                            description: Directory holds path/directory specific options\n                            properties:\n                              exclude:\n                                description: Exclude contains a glob pattern to match\n                                  paths against that should be explicitly excluded\n                                  from being used during manifest generation\n                                type: string\n                              include:\n                                description: Include contains a glob pattern to match\n                                  paths against that should be explicitly included\n                                  during manifest generation\n                                type: string\n                              jsonnet:\n                                description: Jsonnet holds options specific to Jsonnet\n                                properties:\n                                  extVars:\n                                    description: ExtVars is a list of Jsonnet External\n                                      Variables\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    description: Additional library search dirs\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    description: TLAS is a list of Jsonnet Top-level\n                                      Arguments\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                description: Recurse specifies whether to scan a directory\n                                  recursively for manifests\n                                type: boolean\n                            type: object\n                          helm:\n                            description: Helm holds helm specific options\n                            properties:\n                              fileParameters:\n                                description: FileParameters are file parameters to\n                                  the helm template\n                                items:\n                                  description: HelmFileParameter is a file parameter\n                                    that's passed to helm template during manifest\n                                    generation\n                                  properties:\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    path:\n                                      description: Path is the path to the file containing\n                                        the values for the Helm parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                description: IgnoreMissingValueFiles prevents helm\n                                  template from failing when valueFiles do not exist\n                                  locally by not appending them to helm template --values\n                                type: boolean\n                              parameters:\n                                description: Parameters is a list of Helm parameters\n                                  which are passed to the helm template command upon\n                                  manifest generation\n                                items:\n                                  description: HelmParameter is a parameter that's\n                                    passed to helm template during manifest generation\n                                  properties:\n                                    forceString:\n                                      description: ForceString determines whether\n                                        to tell Helm to interpret booleans and numbers\n                                        as strings\n                                      type: boolean\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    value:\n                                      description: Value is the value for the Helm\n                                        parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                description: PassCredentials pass credentials to all\n                                  domains (Helm's --pass-credentials)\n                                type: boolean\n                              releaseName:\n                                description: ReleaseName is the Helm release name\n                                  to use. If omitted it will use the application name\n                                type: string\n                              skipCrds:\n                                description: SkipCrds skips custom resource definition\n                                  installation step (Helm's --skip-crds)\n                                type: boolean\n                              valueFiles:\n                                description: ValuesFiles is a list of Helm value files\n                                  to use when generating a template\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                description: Values specifies Helm values to be passed\n                                  to helm template, typically defined as a block.\n                                  ValuesObject takes precedence over Values, so use\n                                  one or the other.\n                                type: string\n                              valuesObject:\n                                description: ValuesObject specifies Helm values to\n                                  be passed to helm template, defined as a map. This\n                                  takes precedence over Values.\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                description: Version is the Helm version to use for\n                                  templating (\"3\")\n                                type: string\n                            type: object\n                          kustomize:\n                            description: Kustomize holds kustomize specific options\n                            properties:\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                description: CommonAnnotations is a list of additional\n                                  annotations to add to rendered manifests\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                description: CommonAnnotationsEnvsubst specifies whether\n                                  to apply env variables substitution for annotation\n                                  values\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                description: CommonLabels is a list of additional\n                                  labels to add to rendered manifests\n                                type: object\n                              forceCommonAnnotations:\n                                description: ForceCommonAnnotations specifies whether\n                                  to force applying common annotations to resources\n                                  for Kustomize apps\n                                type: boolean\n                              forceCommonLabels:\n                                description: ForceCommonLabels specifies whether to\n                                  force applying common labels to resources for Kustomize\n                                  apps\n                                type: boolean\n                              images:\n                                description: Images is a list of Kustomize image override\n                                  specifications\n                                items:\n                                  description: KustomizeImage represents a Kustomize\n                                    image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                  type: string\n                                type: array\n                              namePrefix:\n                                description: NamePrefix is a prefix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              nameSuffix:\n                                description: NameSuffix is a suffix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              namespace:\n                                description: Namespace sets the namespace that Kustomize\n                                  adds to all resources\n                                type: string\n                              replicas:\n                                description: Replicas is a list of Kustomize Replicas\n                                  override specifications\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      description: Number of replicas\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      description: Name of Deployment or StatefulSet\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                description: Version controls which version of Kustomize\n                                  to use for rendering manifests\n                                type: string\n                            type: object\n                          path:\n                            description: Path is a directory path within the Git repository,\n                              and is only valid for applications sourced from Git.\n                            type: string\n                          plugin:\n                            description: Plugin holds config management plugin specific\n                              options\n                            properties:\n                              env:\n                                description: Env is a list of environment variable\n                                  entries\n                                items:\n                                  description: EnvEntry represents an entry in the\n                                    application's environment\n                                  properties:\n                                    name:\n                                      description: Name is the name of the variable,\n                                        usually expressed in uppercase\n                                      type: string\n                                    value:\n                                      description: Value is the value of the variable\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      description: Array is the value of an array\n                                        type parameter.\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      description: Map is the value of a map type\n                                        parameter.\n                                      type: object\n                                    name:\n                                      description: Name is the name identifying a\n                                        parameter.\n                                      type: string\n                                    string:\n                                      description: String_ is the value of a string\n                                        type parameter.\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            description: Ref is reference to another source within\n                              sources field. This field will not be used if used with\n                              a `source` tag.\n                            type: string\n                          repoURL:\n                            description: RepoURL is the URL to the repository (Git\n                              or Helm) that contains the application manifests\n                            type: string\n                          targetRevision:\n                            description: TargetRevision defines the revision of the\n                              source to sync the application to. In case of Git, this\n                              can be commit, tag, or branch. If omitted, will equal\n                              to HEAD. In case of Helm, this is a semver tag for the\n                              Chart's version.\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      sources:\n                        description: Source records the application source information\n                          of the sync, used for comparing auto-sync\n                        items:\n                          description: ApplicationSource contains all required information\n                            about the source of an application\n                          properties:\n                            chart:\n                              description: Chart is a Helm chart name, and must be\n                                specified for applications sourced from a Helm repo.\n                              type: string\n                            directory:\n                              description: Directory holds path/directory specific\n                                options\n                              properties:\n                                exclude:\n                                  description: Exclude contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    excluded from being used during manifest generation\n                                  type: string\n                                include:\n                                  description: Include contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    included during manifest generation\n                                  type: string\n                                jsonnet:\n                                  description: Jsonnet holds options specific to Jsonnet\n                                  properties:\n                                    extVars:\n                                      description: ExtVars is a list of Jsonnet External\n                                        Variables\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    libs:\n                                      description: Additional library search dirs\n                                      items:\n                                        type: string\n                                      type: array\n                                    tlas:\n                                      description: TLAS is a list of Jsonnet Top-level\n                                        Arguments\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                  type: object\n                                recurse:\n                                  description: Recurse specifies whether to scan a\n                                    directory recursively for manifests\n                                  type: boolean\n                              type: object\n                            helm:\n                              description: Helm holds helm specific options\n                              properties:\n                                fileParameters:\n                                  description: FileParameters are file parameters\n                                    to the helm template\n                                  items:\n                                    description: HelmFileParameter is a file parameter\n                                      that's passed to helm template during manifest\n                                      generation\n                                    properties:\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      path:\n                                        description: Path is the path to the file\n                                          containing the values for the Helm parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                ignoreMissingValueFiles:\n                                  description: IgnoreMissingValueFiles prevents helm\n                                    template from failing when valueFiles do not exist\n                                    locally by not appending them to helm template\n                                    --values\n                                  type: boolean\n                                parameters:\n                                  description: Parameters is a list of Helm parameters\n                                    which are passed to the helm template command\n                                    upon manifest generation\n                                  items:\n                                    description: HelmParameter is a parameter that's\n                                      passed to helm template during manifest generation\n                                    properties:\n                                      forceString:\n                                        description: ForceString determines whether\n                                          to tell Helm to interpret booleans and numbers\n                                          as strings\n                                        type: boolean\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      value:\n                                        description: Value is the value for the Helm\n                                          parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                passCredentials:\n                                  description: PassCredentials pass credentials to\n                                    all domains (Helm's --pass-credentials)\n                                  type: boolean\n                                releaseName:\n                                  description: ReleaseName is the Helm release name\n                                    to use. If omitted it will use the application\n                                    name\n                                  type: string\n                                skipCrds:\n                                  description: SkipCrds skips custom resource definition\n                                    installation step (Helm's --skip-crds)\n                                  type: boolean\n                                valueFiles:\n                                  description: ValuesFiles is a list of Helm value\n                                    files to use when generating a template\n                                  items:\n                                    type: string\n                                  type: array\n                                values:\n                                  description: Values specifies Helm values to be\n                                    passed to helm template, typically defined as\n                                    a block. ValuesObject takes precedence over Values,\n                                    so use one or the other.\n                                  type: string\n                                valuesObject:\n                                  description: ValuesObject specifies Helm values\n                                    to be passed to helm template, defined as a map.\n                                    This takes precedence over Values.\n                                  type: object\n                                  x-kubernetes-preserve-unknown-fields: true\n                                version:\n                                  description: Version is the Helm version to use\n                                    for templating (\"3\")\n                                  type: string\n                              type: object\n                            kustomize:\n                              description: Kustomize holds kustomize specific options\n                              properties:\n                                commonAnnotations:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonAnnotations is a list of additional\n                                    annotations to add to rendered manifests\n                                  type: object\n                                commonAnnotationsEnvsubst:\n                                  description: CommonAnnotationsEnvsubst specifies\n                                    whether to apply env variables substitution for\n                                    annotation values\n                                  type: boolean\n                                commonLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonLabels is a list of additional\n                                    labels to add to rendered manifests\n                                  type: object\n                                forceCommonAnnotations:\n                                  description: ForceCommonAnnotations specifies whether\n                                    to force applying common annotations to resources\n                                    for Kustomize apps\n                                  type: boolean\n                                forceCommonLabels:\n                                  description: ForceCommonLabels specifies whether\n                                    to force applying common labels to resources for\n                                    Kustomize apps\n                                  type: boolean\n                                images:\n                                  description: Images is a list of Kustomize image\n                                    override specifications\n                                  items:\n                                    description: KustomizeImage represents a Kustomize\n                                      image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                    type: string\n                                  type: array\n                                namePrefix:\n                                  description: NamePrefix is a prefix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                nameSuffix:\n                                  description: NameSuffix is a suffix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                namespace:\n                                  description: Namespace sets the namespace that Kustomize\n                                    adds to all resources\n                                  type: string\n                                replicas:\n                                  description: Replicas is a list of Kustomize Replicas\n                                    override specifications\n                                  items:\n                                    properties:\n                                      count:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        description: Number of replicas\n                                        x-kubernetes-int-or-string: true\n                                      name:\n                                        description: Name of Deployment or StatefulSet\n                                        type: string\n                                    required:\n                                    - count\n                                    - name\n                                    type: object\n                                  type: array\n                                version:\n                                  description: Version controls which version of Kustomize\n                                    to use for rendering manifests\n                                  type: string\n                              type: object\n                            path:\n                              description: Path is a directory path within the Git\n                                repository, and is only valid for applications sourced\n                                from Git.\n                              type: string\n                            plugin:\n                              description: Plugin holds config management plugin specific\n                                options\n                              properties:\n                                env:\n                                  description: Env is a list of environment variable\n                                    entries\n                                  items:\n                                    description: EnvEntry represents an entry in the\n                                      application's environment\n                                    properties:\n                                      name:\n                                        description: Name is the name of the variable,\n                                          usually expressed in uppercase\n                                        type: string\n                                      value:\n                                        description: Value is the value of the variable\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                name:\n                                  type: string\n                                parameters:\n                                  items:\n                                    properties:\n                                      array:\n                                        description: Array is the value of an array\n                                          type parameter.\n                                        items:\n                                          type: string\n                                        type: array\n                                      map:\n                                        additionalProperties:\n                                          type: string\n                                        description: Map is the value of a map type\n                                          parameter.\n                                        type: object\n                                      name:\n                                        description: Name is the name identifying\n                                          a parameter.\n                                        type: string\n                                      string:\n                                        description: String_ is the value of a string\n                                          type parameter.\n                                        type: string\n                                    type: object\n                                  type: array\n                              type: object\n                            ref:\n                              description: Ref is reference to another source within\n                                sources field. This field will not be used if used\n                                with a `source` tag.\n                              type: string\n                            repoURL:\n                              description: RepoURL is the URL to the repository (Git\n                                or Helm) that contains the application manifests\n                              type: string\n                            targetRevision:\n                              description: TargetRevision defines the revision of\n                                the source to sync the application to. In case of\n                                Git, this can be commit, tag, or branch. If omitted,\n                                will equal to HEAD. In case of Helm, this is a semver\n                                tag for the Chart's version.\n                              type: string\n                          required:\n                          - repoURL\n                          type: object\n                        type: array\n                    required:\n                    - revision\n                    type: object\n                required:\n                - operation\n                - phase\n                - startedAt\n                type: object\n              reconciledAt:\n                description: ReconciledAt indicates when the application state was\n                  reconciled using the latest git version\n                format: date-time\n                type: string\n              resourceHealthSource:\n                description: 'ResourceHealthSource indicates where the resource health\n                  status is stored: inline if not set or appTree'\n                type: string\n              resources:\n                description: Resources is a list of Kubernetes resources managed by\n                  this application\n                items:\n                  description: 'ResourceStatus holds the current sync and health status\n                    of a resource TODO: describe members of this type'\n                  properties:\n                    group:\n                      type: string\n                    health:\n                      description: HealthStatus contains information about the currently\n                        observed health state of an application or resource\n                      properties:\n                        message:\n                          description: Message is a human-readable informational message\n                            describing the health status\n                          type: string\n                        status:\n                          description: Status holds the status code of the application\n                            or resource\n                          type: string\n                      type: object\n                    hook:\n                      type: boolean\n                    kind:\n                      type: string\n                    name:\n                      type: string\n                    namespace:\n                      type: string\n                    requiresPruning:\n                      type: boolean\n                    status:\n                      description: SyncStatusCode is a type which represents possible\n                        comparison results\n                      type: string\n                    syncWave:\n                      format: int64\n                      type: integer\n                    version:\n                      type: string\n                  type: object\n                type: array\n              sourceType:\n                description: SourceType specifies the type of this application\n                type: string\n              sourceTypes:\n                description: SourceTypes specifies the type of the sources included\n                  in the application\n                items:\n                  description: ApplicationSourceType specifies the type of the application's\n                    source\n                  type: string\n                type: array\n              summary:\n                description: Summary contains a list of URLs and container images\n                  used by this application\n                properties:\n                  externalURLs:\n                    description: ExternalURLs holds all external URLs of application\n                      child resources.\n                    items:\n                      type: string\n                    type: array\n                  images:\n                    description: Images holds all images of application child resources.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              sync:\n                description: Sync contains information about the application's current\n                  sync status\n                properties:\n                  comparedTo:\n                    description: ComparedTo contains information about what has been\n                      compared\n                    properties:\n                      destination:\n                        description: Destination is a reference to the application's\n                          destination used for comparison\n                        properties:\n                          name:\n                            description: Name is an alternate way of specifying the\n                              target cluster by its symbolic name\n                            type: string\n                          namespace:\n                            description: Namespace specifies the target namespace\n                              for the application's resources. The namespace will\n                              only be set for namespace-scoped resources that have\n                              not set a value for .metadata.namespace\n                            type: string\n                          server:\n                            description: Server specifies the URL of the target cluster\n                              and must be set to the Kubernetes control plane API\n                            type: string\n                        type: object\n                      ignoreDifferences:\n                        description: IgnoreDifferences is a reference to the application's\n                          ignored differences used for comparison\n                        items:\n                          description: ResourceIgnoreDifferences contains resource\n                            filter and list of json paths which should be ignored\n                            during comparison with live state.\n                          properties:\n                            group:\n                              type: string\n                            jqPathExpressions:\n                              items:\n                                type: string\n                              type: array\n                            jsonPointers:\n                              items:\n                                type: string\n                              type: array\n                            kind:\n                              type: string\n                            managedFieldsManagers:\n                              description: ManagedFieldsManagers is a list of trusted\n                                managers. Fields mutated by those managers will take\n                                precedence over the desired state defined in the SCM\n                                and won't be displayed in diffs\n                              items:\n                                type: string\n                              type: array\n                            name:\n                              type: string\n                            namespace:\n                              type: string\n                          required:\n                          - kind\n                          type: object\n                        type: array\n                      source:\n                        description: Source is a reference to the application's source\n                          used for comparison\n                        properties:\n                          chart:\n                            description: Chart is a Helm chart name, and must be specified\n                              for applications sourced from a Helm repo.\n                            type: string\n                          directory:\n                            description: Directory holds path/directory specific options\n                            properties:\n                              exclude:\n                                description: Exclude contains a glob pattern to match\n                                  paths against that should be explicitly excluded\n                                  from being used during manifest generation\n                                type: string\n                              include:\n                                description: Include contains a glob pattern to match\n                                  paths against that should be explicitly included\n                                  during manifest generation\n                                type: string\n                              jsonnet:\n                                description: Jsonnet holds options specific to Jsonnet\n                                properties:\n                                  extVars:\n                                    description: ExtVars is a list of Jsonnet External\n                                      Variables\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    description: Additional library search dirs\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    description: TLAS is a list of Jsonnet Top-level\n                                      Arguments\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                description: Recurse specifies whether to scan a directory\n                                  recursively for manifests\n                                type: boolean\n                            type: object\n                          helm:\n                            description: Helm holds helm specific options\n                            properties:\n                              fileParameters:\n                                description: FileParameters are file parameters to\n                                  the helm template\n                                items:\n                                  description: HelmFileParameter is a file parameter\n                                    that's passed to helm template during manifest\n                                    generation\n                                  properties:\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    path:\n                                      description: Path is the path to the file containing\n                                        the values for the Helm parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                description: IgnoreMissingValueFiles prevents helm\n                                  template from failing when valueFiles do not exist\n                                  locally by not appending them to helm template --values\n                                type: boolean\n                              parameters:\n                                description: Parameters is a list of Helm parameters\n                                  which are passed to the helm template command upon\n                                  manifest generation\n                                items:\n                                  description: HelmParameter is a parameter that's\n                                    passed to helm template during manifest generation\n                                  properties:\n                                    forceString:\n                                      description: ForceString determines whether\n                                        to tell Helm to interpret booleans and numbers\n                                        as strings\n                                      type: boolean\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    value:\n                                      description: Value is the value for the Helm\n                                        parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                description: PassCredentials pass credentials to all\n                                  domains (Helm's --pass-credentials)\n                                type: boolean\n                              releaseName:\n                                description: ReleaseName is the Helm release name\n                                  to use. If omitted it will use the application name\n                                type: string\n                              skipCrds:\n                                description: SkipCrds skips custom resource definition\n                                  installation step (Helm's --skip-crds)\n                                type: boolean\n                              valueFiles:\n                                description: ValuesFiles is a list of Helm value files\n                                  to use when generating a template\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                description: Values specifies Helm values to be passed\n                                  to helm template, typically defined as a block.\n                                  ValuesObject takes precedence over Values, so use\n                                  one or the other.\n                                type: string\n                              valuesObject:\n                                description: ValuesObject specifies Helm values to\n                                  be passed to helm template, defined as a map. This\n                                  takes precedence over Values.\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                description: Version is the Helm version to use for\n                                  templating (\"3\")\n                                type: string\n                            type: object\n                          kustomize:\n                            description: Kustomize holds kustomize specific options\n                            properties:\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                description: CommonAnnotations is a list of additional\n                                  annotations to add to rendered manifests\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                description: CommonAnnotationsEnvsubst specifies whether\n                                  to apply env variables substitution for annotation\n                                  values\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                description: CommonLabels is a list of additional\n                                  labels to add to rendered manifests\n                                type: object\n                              forceCommonAnnotations:\n                                description: ForceCommonAnnotations specifies whether\n                                  to force applying common annotations to resources\n                                  for Kustomize apps\n                                type: boolean\n                              forceCommonLabels:\n                                description: ForceCommonLabels specifies whether to\n                                  force applying common labels to resources for Kustomize\n                                  apps\n                                type: boolean\n                              images:\n                                description: Images is a list of Kustomize image override\n                                  specifications\n                                items:\n                                  description: KustomizeImage represents a Kustomize\n                                    image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                  type: string\n                                type: array\n                              namePrefix:\n                                description: NamePrefix is a prefix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              nameSuffix:\n                                description: NameSuffix is a suffix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              namespace:\n                                description: Namespace sets the namespace that Kustomize\n                                  adds to all resources\n                                type: string\n                              replicas:\n                                description: Replicas is a list of Kustomize Replicas\n                                  override specifications\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      description: Number of replicas\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      description: Name of Deployment or StatefulSet\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                description: Version controls which version of Kustomize\n                                  to use for rendering manifests\n                                type: string\n                            type: object\n                          path:\n                            description: Path is a directory path within the Git repository,\n                              and is only valid for applications sourced from Git.\n                            type: string\n                          plugin:\n                            description: Plugin holds config management plugin specific\n                              options\n                            properties:\n                              env:\n                                description: Env is a list of environment variable\n                                  entries\n                                items:\n                                  description: EnvEntry represents an entry in the\n                                    application's environment\n                                  properties:\n                                    name:\n                                      description: Name is the name of the variable,\n                                        usually expressed in uppercase\n                                      type: string\n                                    value:\n                                      description: Value is the value of the variable\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      description: Array is the value of an array\n                                        type parameter.\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      description: Map is the value of a map type\n                                        parameter.\n                                      type: object\n                                    name:\n                                      description: Name is the name identifying a\n                                        parameter.\n                                      type: string\n                                    string:\n                                      description: String_ is the value of a string\n                                        type parameter.\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            description: Ref is reference to another source within\n                              sources field. This field will not be used if used with\n                              a `source` tag.\n                            type: string\n                          repoURL:\n                            description: RepoURL is the URL to the repository (Git\n                              or Helm) that contains the application manifests\n                            type: string\n                          targetRevision:\n                            description: TargetRevision defines the revision of the\n                              source to sync the application to. In case of Git, this\n                              can be commit, tag, or branch. If omitted, will equal\n                              to HEAD. In case of Helm, this is a semver tag for the\n                              Chart's version.\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      sources:\n                        description: Sources is a reference to the application's multiple\n                          sources used for comparison\n                        items:\n                          description: ApplicationSource contains all required information\n                            about the source of an application\n                          properties:\n                            chart:\n                              description: Chart is a Helm chart name, and must be\n                                specified for applications sourced from a Helm repo.\n                              type: string\n                            directory:\n                              description: Directory holds path/directory specific\n                                options\n                              properties:\n                                exclude:\n                                  description: Exclude contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    excluded from being used during manifest generation\n                                  type: string\n                                include:\n                                  description: Include contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    included during manifest generation\n                                  type: string\n                                jsonnet:\n                                  description: Jsonnet holds options specific to Jsonnet\n                                  properties:\n                                    extVars:\n                                      description: ExtVars is a list of Jsonnet External\n                                        Variables\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    libs:\n                                      description: Additional library search dirs\n                                      items:\n                                        type: string\n                                      type: array\n                                    tlas:\n                                      description: TLAS is a list of Jsonnet Top-level\n                                        Arguments\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                  type: object\n                                recurse:\n                                  description: Recurse specifies whether to scan a\n                                    directory recursively for manifests\n                                  type: boolean\n                              type: object\n                            helm:\n                              description: Helm holds helm specific options\n                              properties:\n                                fileParameters:\n                                  description: FileParameters are file parameters\n                                    to the helm template\n                                  items:\n                                    description: HelmFileParameter is a file parameter\n                                      that's passed to helm template during manifest\n                                      generation\n                                    properties:\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      path:\n                                        description: Path is the path to the file\n                                          containing the values for the Helm parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                ignoreMissingValueFiles:\n                                  description: IgnoreMissingValueFiles prevents helm\n                                    template from failing when valueFiles do not exist\n                                    locally by not appending them to helm template\n                                    --values\n                                  type: boolean\n                                parameters:\n                                  description: Parameters is a list of Helm parameters\n                                    which are passed to the helm template command\n                                    upon manifest generation\n                                  items:\n                                    description: HelmParameter is a parameter that's\n                                      passed to helm template during manifest generation\n                                    properties:\n                                      forceString:\n                                        description: ForceString determines whether\n                                          to tell Helm to interpret booleans and numbers\n                                          as strings\n                                        type: boolean\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      value:\n                                        description: Value is the value for the Helm\n                                          parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                passCredentials:\n                                  description: PassCredentials pass credentials to\n                                    all domains (Helm's --pass-credentials)\n                                  type: boolean\n                                releaseName:\n                                  description: ReleaseName is the Helm release name\n                                    to use. If omitted it will use the application\n                                    name\n                                  type: string\n                                skipCrds:\n                                  description: SkipCrds skips custom resource definition\n                                    installation step (Helm's --skip-crds)\n                                  type: boolean\n                                valueFiles:\n                                  description: ValuesFiles is a list of Helm value\n                                    files to use when generating a template\n                                  items:\n                                    type: string\n                                  type: array\n                                values:\n                                  description: Values specifies Helm values to be\n                                    passed to helm template, typically defined as\n                                    a block. ValuesObject takes precedence over Values,\n                                    so use one or the other.\n                                  type: string\n                                valuesObject:\n                                  description: ValuesObject specifies Helm values\n                                    to be passed to helm template, defined as a map.\n                                    This takes precedence over Values.\n                                  type: object\n                                  x-kubernetes-preserve-unknown-fields: true\n                                version:\n                                  description: Version is the Helm version to use\n                                    for templating (\"3\")\n                                  type: string\n                              type: object\n                            kustomize:\n                              description: Kustomize holds kustomize specific options\n                              properties:\n                                commonAnnotations:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonAnnotations is a list of additional\n                                    annotations to add to rendered manifests\n                                  type: object\n                                commonAnnotationsEnvsubst:\n                                  description: CommonAnnotationsEnvsubst specifies\n                                    whether to apply env variables substitution for\n                                    annotation values\n                                  type: boolean\n                                commonLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonLabels is a list of additional\n                                    labels to add to rendered manifests\n                                  type: object\n                                forceCommonAnnotations:\n                                  description: ForceCommonAnnotations specifies whether\n                                    to force applying common annotations to resources\n                                    for Kustomize apps\n                                  type: boolean\n                                forceCommonLabels:\n                                  description: ForceCommonLabels specifies whether\n                                    to force applying common labels to resources for\n                                    Kustomize apps\n                                  type: boolean\n                                images:\n                                  description: Images is a list of Kustomize image\n                                    override specifications\n                                  items:\n                                    description: KustomizeImage represents a Kustomize\n                                      image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                    type: string\n                                  type: array\n                                namePrefix:\n                                  description: NamePrefix is a prefix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                nameSuffix:\n                                  description: NameSuffix is a suffix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                namespace:\n                                  description: Namespace sets the namespace that Kustomize\n                                    adds to all resources\n                                  type: string\n                                replicas:\n                                  description: Replicas is a list of Kustomize Replicas\n                                    override specifications\n                                  items:\n                                    properties:\n                                      count:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        description: Number of replicas\n                                        x-kubernetes-int-or-string: true\n                                      name:\n                                        description: Name of Deployment or StatefulSet\n                                        type: string\n                                    required:\n                                    - count\n                                    - name\n                                    type: object\n                                  type: array\n                                version:\n                                  description: Version controls which version of Kustomize\n                                    to use for rendering manifests\n                                  type: string\n                              type: object\n                            path:\n                              description: Path is a directory path within the Git\n                                repository, and is only valid for applications sourced\n                                from Git.\n                              type: string\n                            plugin:\n                              description: Plugin holds config management plugin specific\n                                options\n                              properties:\n                                env:\n                                  description: Env is a list of environment variable\n                                    entries\n                                  items:\n                                    description: EnvEntry represents an entry in the\n                                      application's environment\n                                    properties:\n                                      name:\n                                        description: Name is the name of the variable,\n                                          usually expressed in uppercase\n                                        type: string\n                                      value:\n                                        description: Value is the value of the variable\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                name:\n                                  type: string\n                                parameters:\n                                  items:\n                                    properties:\n                                      array:\n                                        description: Array is the value of an array\n                                          type parameter.\n                                        items:\n                                          type: string\n                                        type: array\n                                      map:\n                                        additionalProperties:\n                                          type: string\n                                        description: Map is the value of a map type\n                                          parameter.\n                                        type: object\n                                      name:\n                                        description: Name is the name identifying\n                                          a parameter.\n                                        type: string\n                                      string:\n                                        description: String_ is the value of a string\n                                          type parameter.\n                                        type: string\n                                    type: object\n                                  type: array\n                              type: object\n                            ref:\n                              description: Ref is reference to another source within\n                                sources field. This field will not be used if used\n                                with a `source` tag.\n                              type: string\n                            repoURL:\n                              description: RepoURL is the URL to the repository (Git\n                                or Helm) that contains the application manifests\n                              type: string\n                            targetRevision:\n                              description: TargetRevision defines the revision of\n                                the source to sync the application to. In case of\n                                Git, this can be commit, tag, or branch. If omitted,\n                                will equal to HEAD. In case of Helm, this is a semver\n                                tag for the Chart's version.\n                              type: string\n                          required:\n                          - repoURL\n                          type: object\n                        type: array\n                    required:\n                    - destination\n                    type: object\n                  revision:\n                    description: Revision contains information about the revision\n                      the comparison has been performed to\n                    type: string\n                  revisions:\n                    description: Revisions contains information about the revisions\n                      of multiple sources the comparison has been performed to\n                    items:\n                      type: string\n                    type: array\n                  status:\n                    description: Status is the sync state of the comparison\n                    type: string\n                required:\n                - status\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app.kubernetes.io/name: applicationsets.argoproj.io\n    app.kubernetes.io/part-of: argocd\n  name: applicationsets.argoproj.io\nspec:\n  group: argoproj.io\n  names:\n    kind: ApplicationSet\n    listKind: ApplicationSetList\n    plural: applicationsets\n    shortNames:\n    - appset\n    - appsets\n    singular: applicationset\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        properties:\n          apiVersion:\n            type: string\n          kind:\n            type: string\n          metadata:\n            type: object\n          spec:\n            properties:\n              applyNestedSelectors:\n                type: boolean\n              generators:\n                items:\n                  properties:\n                    clusterDecisionResource:\n                      properties:\n                        configMapRef:\n                          type: string\n                        labelSelector:\n                          properties:\n                            matchExpressions:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  operator:\n                                    type: string\n                                  values:\n                                    items:\n                                      type: string\n                                    type: array\n                                required:\n                                - key\n                                - operator\n                                type: object\n                              type: array\n                            matchLabels:\n                              additionalProperties:\n                                type: string\n                              type: object\n                          type: object\n                        name:\n                          type: string\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      required:\n                      - configMapRef\n                      type: object\n                    clusters:\n                      properties:\n                        selector:\n                          properties:\n                            matchExpressions:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  operator:\n                                    type: string\n                                  values:\n                                    items:\n                                      type: string\n                                    type: array\n                                required:\n                                - key\n                                - operator\n                                type: object\n                              type: array\n                            matchLabels:\n                              additionalProperties:\n                                type: string\n                              type: object\n                          type: object\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      type: object\n                    git:\n                      properties:\n                        directories:\n                          items:\n                            properties:\n                              exclude:\n                                type: boolean\n                              path:\n                                type: string\n                            required:\n                            - path\n                            type: object\n                          type: array\n                        files:\n                          items:\n                            properties:\n                              path:\n                                type: string\n                            required:\n                            - path\n                            type: object\n                          type: array\n                        pathParamPrefix:\n                          type: string\n                        repoURL:\n                          type: string\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        revision:\n                          type: string\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      required:\n                      - repoURL\n                      - revision\n                      type: object\n                    list:\n                      properties:\n                        elements:\n                          items:\n                            x-kubernetes-preserve-unknown-fields: true\n                          type: array\n                        elementsYaml:\n                          type: string\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                      required:\n                      - elements\n                      type: object\n                    matrix:\n                      properties:\n                        generators:\n                          items:\n                            properties:\n                              clusterDecisionResource:\n                                properties:\n                                  configMapRef:\n                                    type: string\n                                  labelSelector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                  name:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              clusters:\n                                properties:\n                                  selector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              git:\n                                properties:\n                                  directories:\n                                    items:\n                                      properties:\n                                        exclude:\n                                          type: boolean\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  files:\n                                    items:\n                                      properties:\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  pathParamPrefix:\n                                    type: string\n                                  repoURL:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  revision:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - repoURL\n                                - revision\n                                type: object\n                              list:\n                                properties:\n                                  elements:\n                                    items:\n                                      x-kubernetes-preserve-unknown-fields: true\n                                    type: array\n                                  elementsYaml:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                required:\n                                - elements\n                                type: object\n                              matrix:\n                                x-kubernetes-preserve-unknown-fields: true\n                              merge:\n                                x-kubernetes-preserve-unknown-fields: true\n                              plugin:\n                                properties:\n                                  configMapRef:\n                                    properties:\n                                      name:\n                                        type: string\n                                    required:\n                                    - name\n                                    type: object\n                                  input:\n                                    properties:\n                                      parameters:\n                                        additionalProperties:\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        type: object\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              pullRequest:\n                                properties:\n                                  azuredevops:\n                                    properties:\n                                      api:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      organization:\n                                        type: string\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    - project\n                                    - repo\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      bearerToken:\n                                        properties:\n                                          tokenRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                        required:\n                                        - tokenRef\n                                        type: object\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    - repo\n                                    type: object\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        targetBranchMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    - repo\n                                    type: object\n                                  github:\n                                    properties:\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      project:\n                                        type: string\n                                      pullRequestState:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - project\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                type: object\n                              scmProvider:\n                                properties:\n                                  awsCodeCommit:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      region:\n                                        type: string\n                                      role:\n                                        type: string\n                                      tagFilters:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - key\n                                          type: object\n                                        type: array\n                                    type: object\n                                  azureDevOps:\n                                    properties:\n                                      accessTokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      teamProject:\n                                        type: string\n                                    required:\n                                    - accessTokenRef\n                                    - organization\n                                    - teamProject\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      appPasswordRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      owner:\n                                        type: string\n                                      user:\n                                        type: string\n                                    required:\n                                    - appPasswordRef\n                                    - owner\n                                    - user\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      project:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    type: object\n                                  cloneProtocol:\n                                    type: string\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        labelMatch:\n                                          type: string\n                                        pathsDoNotExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        pathsExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        repositoryMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      owner:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    type: object\n                                  github:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      group:\n                                        type: string\n                                      includeSubgroups:\n                                        type: boolean\n                                      insecure:\n                                        type: boolean\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - group\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              selector:\n                                properties:\n                                  matchExpressions:\n                                    items:\n                                      properties:\n                                        key:\n                                          type: string\n                                        operator:\n                                          type: string\n                                        values:\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                            type: object\n                          type: array\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                      required:\n                      - generators\n                      type: object\n                    merge:\n                      properties:\n                        generators:\n                          items:\n                            properties:\n                              clusterDecisionResource:\n                                properties:\n                                  configMapRef:\n                                    type: string\n                                  labelSelector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                  name:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              clusters:\n                                properties:\n                                  selector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              git:\n                                properties:\n                                  directories:\n                                    items:\n                                      properties:\n                                        exclude:\n                                          type: boolean\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  files:\n                                    items:\n                                      properties:\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  pathParamPrefix:\n                                    type: string\n                                  repoURL:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  revision:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - repoURL\n                                - revision\n                                type: object\n                              list:\n                                properties:\n                                  elements:\n                                    items:\n                                      x-kubernetes-preserve-unknown-fields: true\n                                    type: array\n                                  elementsYaml:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                required:\n                                - elements\n                                type: object\n                              matrix:\n                                x-kubernetes-preserve-unknown-fields: true\n                              merge:\n                                x-kubernetes-preserve-unknown-fields: true\n                              plugin:\n                                properties:\n                                  configMapRef:\n                                    properties:\n                                      name:\n                                        type: string\n                                    required:\n                                    - name\n                                    type: object\n                                  input:\n                                    properties:\n                                      parameters:\n                                        additionalProperties:\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        type: object\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              pullRequest:\n                                properties:\n                                  azuredevops:\n                                    properties:\n                                      api:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      organization:\n                                        type: string\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    - project\n                                    - repo\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      bearerToken:\n                                        properties:\n                                          tokenRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                        required:\n                                        - tokenRef\n                                        type: object\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    - repo\n                                    type: object\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        targetBranchMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    - repo\n                                    type: object\n                                  github:\n                                    properties:\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      project:\n                                        type: string\n                                      pullRequestState:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - project\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                type: object\n                              scmProvider:\n                                properties:\n                                  awsCodeCommit:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      region:\n                                        type: string\n                                      role:\n                                        type: string\n                                      tagFilters:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - key\n                                          type: object\n                                        type: array\n                                    type: object\n                                  azureDevOps:\n                                    properties:\n                                      accessTokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      teamProject:\n                                        type: string\n                                    required:\n                                    - accessTokenRef\n                                    - organization\n                                    - teamProject\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      appPasswordRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      owner:\n                                        type: string\n                                      user:\n                                        type: string\n                                    required:\n                                    - appPasswordRef\n                                    - owner\n                                    - user\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      project:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    type: object\n                                  cloneProtocol:\n                                    type: string\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        labelMatch:\n                                          type: string\n                                        pathsDoNotExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        pathsExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        repositoryMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      owner:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    type: object\n                                  github:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      group:\n                                        type: string\n                                      includeSubgroups:\n                                        type: boolean\n                                      insecure:\n                                        type: boolean\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - group\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              selector:\n                                properties:\n                                  matchExpressions:\n                                    items:\n                                      properties:\n                                        key:\n                                          type: string\n                                        operator:\n                                          type: string\n                                        values:\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                            type: object\n                          type: array\n                        mergeKeys:\n                          items:\n                            type: string\n                          type: array\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                      required:\n                      - generators\n                      - mergeKeys\n                      type: object\n                    plugin:\n                      properties:\n                        configMapRef:\n                          properties:\n                            name:\n                              type: string\n                          required:\n                          - name\n                          type: object\n                        input:\n                          properties:\n                            parameters:\n                              additionalProperties:\n                                x-kubernetes-preserve-unknown-fields: true\n                              type: object\n                          type: object\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      required:\n                      - configMapRef\n                      type: object\n                    pullRequest:\n                      properties:\n                        azuredevops:\n                          properties:\n                            api:\n                              type: string\n                            labels:\n                              items:\n                                type: string\n                              type: array\n                            organization:\n                              type: string\n                            project:\n                              type: string\n                            repo:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - organization\n                          - project\n                          - repo\n                          type: object\n                        bitbucket:\n                          properties:\n                            api:\n                              type: string\n                            basicAuth:\n                              properties:\n                                passwordRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                                username:\n                                  type: string\n                              required:\n                              - passwordRef\n                              - username\n                              type: object\n                            bearerToken:\n                              properties:\n                                tokenRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                              required:\n                              - tokenRef\n                              type: object\n                            owner:\n                              type: string\n                            repo:\n                              type: string\n                          required:\n                          - owner\n                          - repo\n                          type: object\n                        bitbucketServer:\n                          properties:\n                            api:\n                              type: string\n                            basicAuth:\n                              properties:\n                                passwordRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                                username:\n                                  type: string\n                              required:\n                              - passwordRef\n                              - username\n                              type: object\n                            project:\n                              type: string\n                            repo:\n                              type: string\n                          required:\n                          - api\n                          - project\n                          - repo\n                          type: object\n                        filters:\n                          items:\n                            properties:\n                              branchMatch:\n                                type: string\n                              targetBranchMatch:\n                                type: string\n                            type: object\n                          type: array\n                        gitea:\n                          properties:\n                            api:\n                              type: string\n                            insecure:\n                              type: boolean\n                            owner:\n                              type: string\n                            repo:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - api\n                          - owner\n                          - repo\n                          type: object\n                        github:\n                          properties:\n                            api:\n                              type: string\n                            appSecretName:\n                              type: string\n                            labels:\n                              items:\n                                type: string\n                              type: array\n                            owner:\n                              type: string\n                            repo:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - owner\n                          - repo\n                          type: object\n                        gitlab:\n                          properties:\n                            api:\n                              type: string\n                            insecure:\n                              type: boolean\n                            labels:\n                              items:\n                                type: string\n                              type: array\n                            project:\n                              type: string\n                            pullRequestState:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - project\n                          type: object\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                      type: object\n                    scmProvider:\n                      properties:\n                        awsCodeCommit:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            region:\n                              type: string\n                            role:\n                              type: string\n                            tagFilters:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  value:\n                                    type: string\n                                required:\n                                - key\n                                type: object\n                              type: array\n                          type: object\n                        azureDevOps:\n                          properties:\n                            accessTokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            organization:\n                              type: string\n                            teamProject:\n                              type: string\n                          required:\n                          - accessTokenRef\n                          - organization\n                          - teamProject\n                          type: object\n                        bitbucket:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            appPasswordRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                            owner:\n                              type: string\n                            user:\n                              type: string\n                          required:\n                          - appPasswordRef\n                          - owner\n                          - user\n                          type: object\n                        bitbucketServer:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            basicAuth:\n                              properties:\n                                passwordRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                                username:\n                                  type: string\n                              required:\n                              - passwordRef\n                              - username\n                              type: object\n                            project:\n                              type: string\n                          required:\n                          - api\n                          - project\n                          type: object\n                        cloneProtocol:\n                          type: string\n                        filters:\n                          items:\n                            properties:\n                              branchMatch:\n                                type: string\n                              labelMatch:\n                                type: string\n                              pathsDoNotExist:\n                                items:\n                                  type: string\n                                type: array\n                              pathsExist:\n                                items:\n                                  type: string\n                                type: array\n                              repositoryMatch:\n                                type: string\n                            type: object\n                          type: array\n                        gitea:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            insecure:\n                              type: boolean\n                            owner:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - api\n                          - owner\n                          type: object\n                        github:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            appSecretName:\n                              type: string\n                            organization:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - organization\n                          type: object\n                        gitlab:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            group:\n                              type: string\n                            includeSubgroups:\n                              type: boolean\n                            insecure:\n                              type: boolean\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - group\n                          type: object\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      type: object\n                    selector:\n                      properties:\n                        matchExpressions:\n                          items:\n                            properties:\n                              key:\n                                type: string\n                              operator:\n                                type: string\n                              values:\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      type: object\n                  type: object\n                type: array\n              goTemplate:\n                type: boolean\n              goTemplateOptions:\n                items:\n                  type: string\n                type: array\n              preservedFields:\n                properties:\n                  annotations:\n                    items:\n                      type: string\n                    type: array\n                type: object\n              strategy:\n                properties:\n                  rollingSync:\n                    properties:\n                      steps:\n                        items:\n                          properties:\n                            matchExpressions:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  operator:\n                                    type: string\n                                  values:\n                                    items:\n                                      type: string\n                                    type: array\n                                type: object\n                              type: array\n                            maxUpdate:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              x-kubernetes-int-or-string: true\n                          type: object\n                        type: array\n                    type: object\n                  type:\n                    type: string\n                type: object\n              syncPolicy:\n                properties:\n                  applicationsSync:\n                    enum:\n                    - create-only\n                    - create-update\n                    - create-delete\n                    - sync\n                    type: string\n                  preserveResourcesOnDeletion:\n                    type: boolean\n                type: object\n              template:\n                properties:\n                  metadata:\n                    properties:\n                      annotations:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      finalizers:\n                        items:\n                          type: string\n                        type: array\n                      labels:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      name:\n                        type: string\n                      namespace:\n                        type: string\n                    type: object\n                  spec:\n                    properties:\n                      destination:\n                        properties:\n                          name:\n                            type: string\n                          namespace:\n                            type: string\n                          server:\n                            type: string\n                        type: object\n                      ignoreDifferences:\n                        items:\n                          properties:\n                            group:\n                              type: string\n                            jqPathExpressions:\n                              items:\n                                type: string\n                              type: array\n                            jsonPointers:\n                              items:\n                                type: string\n                              type: array\n                            kind:\n                              type: string\n                            managedFieldsManagers:\n                              items:\n                                type: string\n                              type: array\n                            name:\n                              type: string\n                            namespace:\n                              type: string\n                          required:\n                          - kind\n                          type: object\n                        type: array\n                      info:\n                        items:\n                          properties:\n                            name:\n                              type: string\n                            value:\n                              type: string\n                          required:\n                          - name\n                          - value\n                          type: object\n                        type: array\n                      project:\n                        type: string\n                      revisionHistoryLimit:\n                        format: int64\n                        type: integer\n                      source:\n                        properties:\n                          chart:\n                            type: string\n                          directory:\n                            properties:\n                              exclude:\n                                type: string\n                              include:\n                                type: string\n                              jsonnet:\n                                properties:\n                                  extVars:\n                                    items:\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    items:\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                type: boolean\n                            type: object\n                          helm:\n                            properties:\n                              fileParameters:\n                                items:\n                                  properties:\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                type: boolean\n                              parameters:\n                                items:\n                                  properties:\n                                    forceString:\n                                      type: boolean\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                type: boolean\n                              releaseName:\n                                type: string\n                              skipCrds:\n                                type: boolean\n                              valueFiles:\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                type: string\n                              valuesObject:\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                type: string\n                            type: object\n                          kustomize:\n                            properties:\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                              forceCommonAnnotations:\n                                type: boolean\n                              forceCommonLabels:\n                                type: boolean\n                              images:\n                                items:\n                                  type: string\n                                type: array\n                              namePrefix:\n                                type: string\n                              nameSuffix:\n                                type: string\n                              namespace:\n                                type: string\n                              replicas:\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                type: string\n                            type: object\n                          path:\n                            type: string\n                          plugin:\n                            properties:\n                              env:\n                                items:\n                                  properties:\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    string:\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            type: string\n                          repoURL:\n                            type: string\n                          targetRevision:\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      sources:\n                        items:\n                          properties:\n                            chart:\n                              type: string\n                            directory:\n                              properties:\n                                exclude:\n                                  type: string\n                                include:\n                                  type: string\n                                jsonnet:\n                                  properties:\n                                    extVars:\n                                      items:\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    libs:\n                                      items:\n                                        type: string\n                                      type: array\n                                    tlas:\n                                      items:\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                  type: object\n                                recurse:\n                                  type: boolean\n                              type: object\n                            helm:\n                              properties:\n                                fileParameters:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                    type: object\n                                  type: array\n                                ignoreMissingValueFiles:\n                                  type: boolean\n                                parameters:\n                                  items:\n                                    properties:\n                                      forceString:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    type: object\n                                  type: array\n                                passCredentials:\n                                  type: boolean\n                                releaseName:\n                                  type: string\n                                skipCrds:\n                                  type: boolean\n                                valueFiles:\n                                  items:\n                                    type: string\n                                  type: array\n                                values:\n                                  type: string\n                                valuesObject:\n                                  type: object\n                                  x-kubernetes-preserve-unknown-fields: true\n                                version:\n                                  type: string\n                              type: object\n                            kustomize:\n                              properties:\n                                commonAnnotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                commonAnnotationsEnvsubst:\n                                  type: boolean\n                                commonLabels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                forceCommonAnnotations:\n                                  type: boolean\n                                forceCommonLabels:\n                                  type: boolean\n                                images:\n                                  items:\n                                    type: string\n                                  type: array\n                                namePrefix:\n                                  type: string\n                                nameSuffix:\n                                  type: string\n                                namespace:\n                                  type: string\n                                replicas:\n                                  items:\n                                    properties:\n                                      count:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        x-kubernetes-int-or-string: true\n                                      name:\n                                        type: string\n                                    required:\n                                    - count\n                                    - name\n                                    type: object\n                                  type: array\n                                version:\n                                  type: string\n                              type: object\n                            path:\n                              type: string\n                            plugin:\n                              properties:\n                                env:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                name:\n                                  type: string\n                                parameters:\n                                  items:\n                                    properties:\n                                      array:\n                                        items:\n                                          type: string\n                                        type: array\n                                      map:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      string:\n                                        type: string\n                                    type: object\n                                  type: array\n                              type: object\n                            ref:\n                              type: string\n                            repoURL:\n                              type: string\n                            targetRevision:\n                              type: string\n                          required:\n                          - repoURL\n                          type: object\n                        type: array\n                      syncPolicy:\n                        properties:\n                          automated:\n                            properties:\n                              allowEmpty:\n                                type: boolean\n                              prune:\n                                type: boolean\n                              selfHeal:\n                                type: boolean\n                            type: object\n                          managedNamespaceMetadata:\n                            properties:\n                              annotations:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                              labels:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                            type: object\n                          retry:\n                            properties:\n                              backoff:\n                                properties:\n                                  duration:\n                                    type: string\n                                  factor:\n                                    format: int64\n                                    type: integer\n                                  maxDuration:\n                                    type: string\n                                type: object\n                              limit:\n                                format: int64\n                                type: integer\n                            type: object\n                          syncOptions:\n                            items:\n                              type: string\n                            type: array\n                        type: object\n                    required:\n                    - destination\n                    - project\n                    type: object\n                required:\n                - metadata\n                - spec\n                type: object\n            required:\n            - generators\n            - template\n            type: object\n          status:\n            properties:\n              applicationStatus:\n                items:\n                  properties:\n                    application:\n                      type: string\n                    lastTransitionTime:\n                      format: date-time\n                      type: string\n                    message:\n                      type: string\n                    status:\n                      type: string\n                    step:\n                      type: string\n                  required:\n                  - application\n                  - message\n                  - status\n                  - step\n                  type: object\n                type: array\n              conditions:\n                items:\n                  properties:\n                    lastTransitionTime:\n                      format: date-time\n                      type: string\n                    message:\n                      type: string\n                    reason:\n                      type: string\n                    status:\n                      type: string\n                    type:\n                      type: string\n                  required:\n                  - message\n                  - reason\n                  - status\n                  - type\n                  type: object\n                type: array\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app.kubernetes.io/name: appprojects.argoproj.io\n    app.kubernetes.io/part-of: argocd\n  name: appprojects.argoproj.io\nspec:\n  group: argoproj.io\n  names:\n    kind: AppProject\n    listKind: AppProjectList\n    plural: appprojects\n    shortNames:\n    - appproj\n    - appprojs\n    singular: appproject\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: 'AppProject provides a logical grouping of applications, providing\n          controls for: * where the apps may deploy to (cluster whitelist) * what\n          may be deployed (repository whitelist, resource whitelist/blacklist) * who\n          can access these applications (roles, OIDC group claims bindings) * and\n          what they can do (RBAC policies) * automation access to these roles (JWT\n          tokens)'\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: AppProjectSpec is the specification of an AppProject\n            properties:\n              clusterResourceBlacklist:\n                description: ClusterResourceBlacklist contains list of blacklisted\n                  cluster level resources\n                items:\n                  description: GroupKind specifies a Group and a Kind, but does not\n                    force a version.  This is useful for identifying concepts during\n                    lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              clusterResourceWhitelist:\n                description: ClusterResourceWhitelist contains list of whitelisted\n                  cluster level resources\n                items:\n                  description: GroupKind specifies a Group and a Kind, but does not\n                    force a version.  This is useful for identifying concepts during\n                    lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              description:\n                description: Description contains optional project description\n                type: string\n              destinations:\n                description: Destinations contains list of destinations available\n                  for deployment\n                items:\n                  description: ApplicationDestination holds information about the\n                    application's destination\n                  properties:\n                    name:\n                      description: Name is an alternate way of specifying the target\n                        cluster by its symbolic name\n                      type: string\n                    namespace:\n                      description: Namespace specifies the target namespace for the\n                        application's resources. The namespace will only be set for\n                        namespace-scoped resources that have not set a value for .metadata.namespace\n                      type: string\n                    server:\n                      description: Server specifies the URL of the target cluster\n                        and must be set to the Kubernetes control plane API\n                      type: string\n                  type: object\n                type: array\n              namespaceResourceBlacklist:\n                description: NamespaceResourceBlacklist contains list of blacklisted\n                  namespace level resources\n                items:\n                  description: GroupKind specifies a Group and a Kind, but does not\n                    force a version.  This is useful for identifying concepts during\n                    lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              namespaceResourceWhitelist:\n                description: NamespaceResourceWhitelist contains list of whitelisted\n                  namespace level resources\n                items:\n                  description: GroupKind specifies a Group and a Kind, but does not\n                    force a version.  This is useful for identifying concepts during\n                    lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              orphanedResources:\n                description: OrphanedResources specifies if controller should monitor\n                  orphaned resources of apps in this project\n                properties:\n                  ignore:\n                    description: Ignore contains a list of resources that are to be\n                      excluded from orphaned resources monitoring\n                    items:\n                      description: OrphanedResourceKey is a reference to a resource\n                        to be ignored from\n                      properties:\n                        group:\n                          type: string\n                        kind:\n                          type: string\n                        name:\n                          type: string\n                      type: object\n                    type: array\n                  warn:\n                    description: Warn indicates if warning condition should be created\n                      for apps which have orphaned resources\n                    type: boolean\n                type: object\n              permitOnlyProjectScopedClusters:\n                description: PermitOnlyProjectScopedClusters determines whether destinations\n                  can only reference clusters which are project-scoped\n                type: boolean\n              roles:\n                description: Roles are user defined RBAC roles associated with this\n                  project\n                items:\n                  description: ProjectRole represents a role that has access to a\n                    project\n                  properties:\n                    description:\n                      description: Description is a description of the role\n                      type: string\n                    groups:\n                      description: Groups are a list of OIDC group claims bound to\n                        this role\n                      items:\n                        type: string\n                      type: array\n                    jwtTokens:\n                      description: JWTTokens are a list of generated JWT tokens bound\n                        to this role\n                      items:\n                        description: JWTToken holds the issuedAt and expiresAt values\n                          of a token\n                        properties:\n                          exp:\n                            format: int64\n                            type: integer\n                          iat:\n                            format: int64\n                            type: integer\n                          id:\n                            type: string\n                        required:\n                        - iat\n                        type: object\n                      type: array\n                    name:\n                      description: Name is a name for this role\n                      type: string\n                    policies:\n                      description: Policies Stores a list of casbin formatted strings\n                        that define access policies for the role in the project\n                      items:\n                        type: string\n                      type: array\n                  required:\n                  - name\n                  type: object\n                type: array\n              signatureKeys:\n                description: SignatureKeys contains a list of PGP key IDs that commits\n                  in Git must be signed with in order to be allowed for sync\n                items:\n                  description: SignatureKey is the specification of a key required\n                    to verify commit signatures with\n                  properties:\n                    keyID:\n                      description: The ID of the key in hexadecimal notation\n                      type: string\n                  required:\n                  - keyID\n                  type: object\n                type: array\n              sourceNamespaces:\n                description: SourceNamespaces defines the namespaces application resources\n                  are allowed to be created in\n                items:\n                  type: string\n                type: array\n              sourceRepos:\n                description: SourceRepos contains list of repository URLs which can\n                  be used for deployment\n                items:\n                  type: string\n                type: array\n              syncWindows:\n                description: SyncWindows controls when syncs can be run for apps in\n                  this project\n                items:\n                  description: SyncWindow contains the kind, time, duration and attributes\n                    that are used to assign the syncWindows to apps\n                  properties:\n                    applications:\n                      description: Applications contains a list of applications that\n                        the window will apply to\n                      items:\n                        type: string\n                      type: array\n                    clusters:\n                      description: Clusters contains a list of clusters that the window\n                        will apply to\n                      items:\n                        type: string\n                      type: array\n                    duration:\n                      description: Duration is the amount of time the sync window\n                        will be open\n                      type: string\n                    kind:\n                      description: Kind defines if the window allows or blocks syncs\n                      type: string\n                    manualSync:\n                      description: ManualSync enables manual syncs when they would\n                        otherwise be blocked\n                      type: boolean\n                    namespaces:\n                      description: Namespaces contains a list of namespaces that the\n                        window will apply to\n                      items:\n                        type: string\n                      type: array\n                    schedule:\n                      description: Schedule is the time the window will begin, specified\n                        in cron format\n                      type: string\n                    timeZone:\n                      description: TimeZone of the sync that will be applied to the\n                        schedule\n                      type: string\n                  type: object\n                type: array\n            type: object\n          status:\n            description: AppProjectStatus contains status information for AppProject\n              CRs\n            properties:\n              jwtTokensByRole:\n                additionalProperties:\n                  description: JWTTokens represents a list of JWT tokens\n                  properties:\n                    items:\n                      items:\n                        description: JWTToken holds the issuedAt and expiresAt values\n                          of a token\n                        properties:\n                          exp:\n                            format: int64\n                            type: integer\n                          iat:\n                            format: int64\n                            type: integer\n                          id:\n                            type: string\n                        required:\n                        - iat\n                        type: object\n                      type: array\n                  type: object\n                description: JWTTokensByRole contains a list of JWT tokens issued\n                  for a given role\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: repo-server\n    app.kubernetes.io/name: argocd-repo-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-repo-server\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - appprojects\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - update\n  - patch\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - list\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nrules:\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - applicationsets\n  - applicationsets/finalizers\n  verbs:\n  - create\n  - delete\n  - get\n  - list\n  - patch\n  - update\n  - watch\n- apiGroups:\n  - argoproj.io\n  resources:\n  - appprojects\n  verbs:\n  - get\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applicationsets/status\n  verbs:\n  - get\n  - patch\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - get\n  - list\n  - patch\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - apps\n  - extensions\n  resources:\n  - deployments\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\nrules:\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - appprojects\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - secrets\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - argocd-notifications-cm\n  resources:\n  - configmaps\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - argocd-notifications-secret\n  resources:\n  - secrets\n  verbs:\n  - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - update\n  - patch\n  - delete\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - appprojects\n  - applicationsets\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - update\n  - delete\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - list\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nrules:\n- apiGroups:\n  - '*'\n  resources:\n  - '*'\n  verbs:\n  - '*'\n- nonResourceURLs:\n  - '*'\n  verbs:\n  - '*'\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nrules:\n- apiGroups:\n  - '*'\n  resources:\n  - '*'\n  verbs:\n  - delete\n  - get\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - list\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  - pods/log\n  verbs:\n  - get\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - batch\n  resources:\n  - jobs\n  verbs:\n  - create\n- apiGroups:\n  - argoproj.io\n  resources:\n  - workflows\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-application-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-application-controller\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-applicationset-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-applicationset-controller\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-dex-server\nsubjects:\n- kind: ServiceAccount\n  name: argocd-dex-server\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-notifications-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-notifications-controller\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-server\nsubjects:\n- kind: ServiceAccount\n  name: argocd-server\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: argocd-application-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-application-controller\n  namespace: argocd\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: argocd-server\nsubjects:\n- kind: ServiceAccount\n  name: argocd-server\n  namespace: argocd\n---\napiVersion: v1\ndata:\n  application.resourceTrackingMethod: annotation\n  resource.exclusions: |\n    - kinds:\n        - ProviderConfigUsage\n      apiGroups:\n        - \"*\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-cmd-params-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-cmd-params-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-gpg-keys-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-gpg-keys-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-rbac-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-rbac-cm\n---\napiVersion: v1\ndata:\n  ssh_known_hosts: |\n    # This file was automatically generated by hack/update-ssh-known-hosts.sh. DO NOT EDIT\n    [ssh.github.com]:443 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=\n    [ssh.github.com]:443 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl\n    [ssh.github.com]:443 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=\n    bitbucket.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPIQmuzMBuKdWeF4+a2sjSSpBK0iqitSQ+5BM9KhpexuGt20JpTVM7u5BDZngncgrqDMbWdxMWWOGtZ9UgbqgZE=\n    bitbucket.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIazEu89wgQZ4bqs3d63QSMzYVa0MuJ2e2gKTKqu+UUO\n    bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQeJzhupRu0u0cdegZIa8e86EG2qOCsIsD1Xw0xSeiPDlCr7kq97NLmMbpKTX6Esc30NuoqEEHCuc7yWtwp8dI76EEEB1VqY9QJq6vk+aySyboD5QF61I/1WeTwu+deCbgKMGbUijeXhtfbxSxm6JwGrXrhBdofTsbKRUsrN1WoNgUa8uqN1Vx6WAJw1JHPhglEGGHea6QICwJOAr/6mrui/oB7pkaWKHj3z7d1IC4KWLtY47elvjbaTlkN04Kc/5LFEirorGYVbt15kAUlqGM65pk6ZBxtaO3+30LVlORZkxOh+LKL/BvbZ/iRNhItLqNyieoQj/uh/7Iv4uyH/cV/0b4WDSd3DptigWq84lJubb9t/DnZlrJazxyDCulTmKdOR7vs9gMTo+uoIrPSb8ScTtvw65+odKAlBj59dhnVp9zd7QUojOpXlL62Aw56U4oO+FALuevvMjiWeavKhJqlR7i5n9srYcrNV7ttmDw7kf/97P5zauIhxcjX+xHv4M=\n    github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=\n    github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl\n    github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=\n    gitlab.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=\n    gitlab.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAfuCHKVTjquxvt6CM6tdG4SLp1Btn/nOeHHE5UOzRdf\n    gitlab.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsj2bNKTBSpIYDEGk9KxsGh3mySTRgMtXL583qmBpzeQ+jqCMRgBqB98u3z++J1sKlXHWfM9dyhSevkMwSbhoR8XIq/U0tCNyokEi/ueaBMCvbcTHhO7FcwzY92WK4Yt0aGROY5qX2UKSeOvuP4D6TPqKF1onrSzH9bx9XUf2lEdWT/ia1NEKjunUqu1xOB/StKDHMoX4/OKyIzuS0q/T1zOATthvasJFoPrAjkohTyaDUz2LN5JoH839hViyEG82yB+MjcFV5MU3N1l1QL3cVUCh93xSaua1N85qivl+siMkPGbO5xR/En4iEY6K2XPASUEMaieWVNTRCtJ4S8H+9\n    ssh.dev.azure.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm57XQPVU3/QpyNLHbWDdzwtrlS+ez30S3AdYhLKEOxAG8weOnyrtLJAUen9mTkol8oII1edf7mWWbWVf0nBmly21+nZcmCTISQBtdcyPaEno7fFQMDD26/s0lfKob4Kw8H\n    vs-ssh.visualstudio.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm57XQPVU3/QpyNLHbWDdzwtrlS+ez30S3AdYhLKEOxAG8weOnyrtLJAUen9mTkol8oII1edf7mWWbWVf0nBmly21+nZcmCTISQBtdcyPaEno7fFQMDD26/s0lfKob4Kw8H\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-ssh-known-hosts-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-ssh-known-hosts-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-tls-certs-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-tls-certs-cm\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-secret\ntype: Opaque\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-secret\n    app.kubernetes.io/part-of: argocd\n  name: argocd-secret\ntype: Opaque\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nspec:\n  ports:\n  - name: webhook\n    port: 7000\n    protocol: TCP\n    targetPort: webhook\n  - name: metrics\n    port: 8080\n    protocol: TCP\n    targetPort: metrics\n  selector:\n    app.kubernetes.io/name: argocd-applicationset-controller\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nspec:\n  ports:\n  - name: http\n    port: 5556\n    protocol: TCP\n    targetPort: 5556\n  - name: grpc\n    port: 5557\n    protocol: TCP\n    targetPort: 5557\n  - name: metrics\n    port: 5558\n    protocol: TCP\n    targetPort: 5558\n  selector:\n    app.kubernetes.io/name: argocd-dex-server\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics\n    app.kubernetes.io/name: argocd-metrics\n    app.kubernetes.io/part-of: argocd\n  name: argocd-metrics\nspec:\n  ports:\n  - name: metrics\n    port: 8082\n    protocol: TCP\n    targetPort: 8082\n  selector:\n    app.kubernetes.io/name: argocd-application-controller\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller-metrics\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller-metrics\nspec:\n  ports:\n  - name: metrics\n    port: 9001\n    protocol: TCP\n    targetPort: 9001\n  selector:\n    app.kubernetes.io/name: argocd-notifications-controller\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\nspec:\n  ports:\n  - name: tcp-redis\n    port: 6379\n    targetPort: 6379\n  selector:\n    app.kubernetes.io/name: argocd-redis\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: repo-server\n    app.kubernetes.io/name: argocd-repo-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-repo-server\nspec:\n  ports:\n  - name: server\n    port: 8081\n    protocol: TCP\n    targetPort: 8081\n  - name: metrics\n    port: 8084\n    protocol: TCP\n    targetPort: 8084\n  selector:\n    app.kubernetes.io/name: argocd-repo-server\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nspec:\n  ports:\n  - name: http\n    port: 80\n    protocol: TCP\n    targetPort: 8080\n  - name: https\n    port: 443\n    protocol: TCP\n    targetPort: 8080\n  selector:\n    app.kubernetes.io/name: argocd-server\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server-metrics\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server-metrics\nspec:\n  ports:\n  - name: metrics\n    port: 8083\n    protocol: TCP\n    targetPort: 8083\n  selector:\n    app.kubernetes.io/name: argocd-server\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-applicationset-controller\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-applicationset-controller\n    spec:\n      containers:\n      - args:\n        - /usr/local/bin/argocd-applicationset-controller\n        env:\n        - name: NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_LEADER_ELECTION\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.leader.election\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: repo.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_POLICY\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.policy\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_POLICY_OVERRIDE\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.policy.override\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_DEBUG\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.debug\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_DRY_RUN\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.dryrun\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_GIT_MODULES_ENABLED\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.git.submodule\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_PROGRESSIVE_SYNCS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.progressive.syncs\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_NEW_GIT_FILE_GLOBBING\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.new.git.file.globbing\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.repo.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.repo.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.repo.server.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_CONCURRENT_RECONCILIATIONS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.concurrent.reconciliations.max\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_SCM_ROOT_CA_PATH\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.scm.root.ca.path\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ALLOWED_SCM_PROVIDERS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.allowed.scm.providers\n              name: argocd-cmd-params-cm\n              optional: true\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        name: argocd-applicationset-controller\n        ports:\n        - containerPort: 7000\n          name: webhook\n        - containerPort: 8080\n          name: metrics\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/ssh\n          name: ssh-known-hosts\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/gpg/source\n          name: gpg-keys\n        - mountPath: /app/config/gpg/keys\n          name: gpg-keyring\n        - mountPath: /tmp\n          name: tmp\n        - mountPath: /app/config/reposerver/tls\n          name: argocd-repo-server-tls\n      serviceAccountName: argocd-applicationset-controller\n      volumes:\n      - configMap:\n          name: argocd-ssh-known-hosts-cm\n        name: ssh-known-hosts\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - configMap:\n          name: argocd-gpg-keys-cm\n        name: gpg-keys\n      - emptyDir: {}\n        name: gpg-keyring\n      - emptyDir: {}\n        name: tmp\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nspec:\n  replicas: 0\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-dex-server\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-dex-server\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - command:\n        - /shared/argocd-dex\n        - rundex\n        env:\n        - name: ARGOCD_DEX_SERVER_DISABLE_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: dexserver.disable.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        image: ghcr.io/dexidp/dex:v2.37.0\n        imagePullPolicy: Always\n        name: dex\n        ports:\n        - containerPort: 5556\n        - containerPort: 5557\n        - containerPort: 5558\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /shared\n          name: static-files\n        - mountPath: /tmp\n          name: dexconfig\n        - mountPath: /tls\n          name: argocd-dex-server-tls\n      initContainers:\n      - command:\n        - /bin/cp\n        - -n\n        - /usr/local/bin/argocd\n        - /shared/argocd-dex\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        name: copyutil\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /shared\n          name: static-files\n        - mountPath: /tmp\n          name: dexconfig\n      serviceAccountName: argocd-dex-server\n      volumes:\n      - emptyDir: {}\n        name: static-files\n      - emptyDir: {}\n        name: dexconfig\n      - name: argocd-dex-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-dex-server-tls\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\nspec:\n  replicas: 0\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-notifications-controller\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-notifications-controller\n    spec:\n      containers:\n      - args:\n        - /usr/local/bin/argocd-notifications\n        env:\n        - name: ARGOCD_NOTIFICATIONS_CONTROLLER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: notificationscontroller.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_NOTIFICATIONS_CONTROLLER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: notificationscontroller.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: application.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        livenessProbe:\n          tcpSocket:\n            port: 9001\n        name: argocd-notifications-controller\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n        volumeMounts:\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/reposerver/tls\n          name: argocd-repo-server-tls\n        workingDir: /app\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: argocd-notifications-controller\n      volumes:\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-redis\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-redis\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-redis\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - args:\n        - --save\n        - \"\"\n        - --appendonly\n        - \"no\"\n        image: redis:7.0.11-alpine\n        imagePullPolicy: Always\n        name: redis\n        ports:\n        - containerPort: 6379\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 999\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: argocd-redis\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: repo-server\n    app.kubernetes.io/name: argocd-repo-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-repo-server\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-repo-server\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-repo-server\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-repo-server\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      automountServiceAccountToken: false\n      containers:\n      - args:\n        - /usr/local/bin/argocd-repo-server\n        env:\n        - name: ARGOCD_RECONCILIATION_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: timeout.reconciliation\n              name: argocd-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_PARALLELISM_LIMIT\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.parallelism.limit\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LISTEN_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LISTEN_METRICS_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.metrics.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_DISABLE_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.disable.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MIN_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.tls.minversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MAX_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.tls.maxversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_CIPHERS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.tls.ciphers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.repo.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: redis.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_COMPRESSION\n          valueFrom:\n            configMapKeyRef:\n              key: redis.compression\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDISDB\n          valueFrom:\n            configMapKeyRef:\n              key: redis.db\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_DEFAULT_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.default.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_OTLP_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_MAX_COMBINED_DIRECTORY_MANIFESTS_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.max.combined.directory.manifests.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_PLUGIN_TAR_EXCLUSIONS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.plugin.tar.exclusions\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_ALLOW_OUT_OF_BOUNDS_SYMLINKS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.allow.oob.symlinks\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_STREAMED_MANIFEST_MAX_TAR_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.streamed.manifest.max.tar.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_STREAMED_MANIFEST_MAX_EXTRACTED_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.streamed.manifest.max.extracted.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_HELM_MANIFEST_MAX_EXTRACTED_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.helm.manifest.max.extracted.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_DISABLE_HELM_MANIFEST_MAX_EXTRACTED_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.disable.helm.manifest.max.extracted.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_GIT_MODULES_ENABLED\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.enable.git.submodule\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: HELM_CACHE_HOME\n          value: /helm-working-dir\n        - name: HELM_CONFIG_HOME\n          value: /helm-working-dir\n        - name: HELM_DATA_HOME\n          value: /helm-working-dir\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        livenessProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /healthz?full=true\n            port: 8084\n          initialDelaySeconds: 30\n          periodSeconds: 30\n          timeoutSeconds: 5\n        name: argocd-repo-server\n        ports:\n        - containerPort: 8081\n        - containerPort: 8084\n        readinessProbe:\n          httpGet:\n            path: /healthz\n            port: 8084\n          initialDelaySeconds: 5\n          periodSeconds: 10\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/ssh\n          name: ssh-known-hosts\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/gpg/source\n          name: gpg-keys\n        - mountPath: /app/config/gpg/keys\n          name: gpg-keyring\n        - mountPath: /app/config/reposerver/tls\n          name: argocd-repo-server-tls\n        - mountPath: /tmp\n          name: tmp\n        - mountPath: /helm-working-dir\n          name: helm-working-dir\n        - mountPath: /home/argocd/cmp-server/plugins\n          name: plugins\n      initContainers:\n      - command:\n        - /bin/cp\n        - -n\n        - /usr/local/bin/argocd\n        - /var/run/argocd/argocd-cmp-server\n        image: quay.io/argoproj/argocd:v2.8.7\n        name: copyutil\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /var/run/argocd\n          name: var-files\n      serviceAccountName: argocd-repo-server\n      volumes:\n      - configMap:\n          name: argocd-ssh-known-hosts-cm\n        name: ssh-known-hosts\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - configMap:\n          name: argocd-gpg-keys-cm\n        name: gpg-keys\n      - emptyDir: {}\n        name: gpg-keyring\n      - emptyDir: {}\n        name: tmp\n      - emptyDir: {}\n        name: helm-working-dir\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n      - emptyDir: {}\n        name: var-files\n      - emptyDir: {}\n        name: plugins\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-server\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-server\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-server\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - args:\n        - /usr/local/bin/argocd-server\n        - '{{if .UsePathRouting}}'\n        - --insecure\n        - --basehref\n        - /argocd\n        - '{{end}}'\n        env:\n        - name: ARGOCD_SERVER_INSECURE\n          valueFrom:\n            configMapKeyRef:\n              key: server.insecure\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_BASEHREF\n          valueFrom:\n            configMapKeyRef:\n              key: server.basehref\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_ROOTPATH\n          valueFrom:\n            configMapKeyRef:\n              key: server.rootpath\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: server.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_LOG_LEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: server.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: repo.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DEX_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: server.dex.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DISABLE_AUTH\n          valueFrom:\n            configMapKeyRef:\n              key: server.disable.auth\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_ENABLE_GZIP\n          valueFrom:\n            configMapKeyRef:\n              key: server.enable.gzip\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: server.repo.server.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_X_FRAME_OPTIONS\n          valueFrom:\n            configMapKeyRef:\n              key: server.x.frame.options\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_CONTENT_SECURITY_POLICY\n          valueFrom:\n            configMapKeyRef:\n              key: server.content.security.policy\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: server.repo.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: server.repo.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DEX_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: server.dex.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DEX_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: server.dex.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MIN_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: server.tls.minversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MAX_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: server.tls.maxversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_CIPHERS\n          valueFrom:\n            configMapKeyRef:\n              key: server.tls.ciphers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_CONNECTION_STATUS_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.connection.status.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_OIDC_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.oidc.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_LOGIN_ATTEMPTS_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.login.attempts.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_STATIC_ASSETS\n          valueFrom:\n            configMapKeyRef:\n              key: server.staticassets\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APP_STATE_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.app.state.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: redis.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_COMPRESSION\n          valueFrom:\n            configMapKeyRef:\n              key: redis.compression\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDISDB\n          valueFrom:\n            configMapKeyRef:\n              key: redis.db\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_DEFAULT_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.default.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_MAX_COOKIE_NUMBER\n          valueFrom:\n            configMapKeyRef:\n              key: server.http.cookie.maxnumber\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_LISTEN_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: server.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_METRICS_LISTEN_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: server.metrics.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_OTLP_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: application.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_ENABLE_PROXY_EXTENSION\n          valueFrom:\n            configMapKeyRef:\n              key: server.enable.proxy.extension\n              name: argocd-cmd-params-cm\n              optional: true\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        livenessProbe:\n          httpGet:\n            path: /healthz?full=true\n            port: 8080\n          initialDelaySeconds: 3\n          periodSeconds: 30\n          timeoutSeconds: 5\n        name: argocd-server\n        ports:\n        - containerPort: 8080\n        - containerPort: 8083\n        readinessProbe:\n          httpGet:\n            path: /healthz\n            port: 8080\n          initialDelaySeconds: 3\n          periodSeconds: 30\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/ssh\n          name: ssh-known-hosts\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/server/tls\n          name: argocd-repo-server-tls\n        - mountPath: /app/config/dex/tls\n          name: argocd-dex-server-tls\n        - mountPath: /home/argocd\n          name: plugins-home\n        - mountPath: /tmp\n          name: tmp\n      serviceAccountName: argocd-server\n      volumes:\n      - emptyDir: {}\n        name: plugins-home\n      - emptyDir: {}\n        name: tmp\n      - configMap:\n          name: argocd-ssh-known-hosts-cm\n        name: ssh-known-hosts\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n      - name: argocd-dex-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-dex-server-tls\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-application-controller\n  serviceName: argocd-application-controller\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-application-controller\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-application-controller\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - args:\n        - /usr/local/bin/argocd-application-controller\n        env:\n        - name: ARGOCD_CONTROLLER_REPLICAS\n          value: \"1\"\n        - name: ARGOCD_RECONCILIATION_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: timeout.reconciliation\n              name: argocd-cm\n              optional: true\n        - name: ARGOCD_HARD_RECONCILIATION_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: timeout.hard.reconciliation\n              name: argocd-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: repo.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.repo.server.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_STATUS_PROCESSORS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.status.processors\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_OPERATION_PROCESSORS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.operation.processors\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: controller.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: controller.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_METRICS_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: controller.metrics.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.self.heal.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: controller.repo.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.repo.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_PERSIST_RESOURCE_HEALTH\n          valueFrom:\n            configMapKeyRef:\n              key: controller.resource.health.persist\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APP_STATE_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: controller.app.state.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: redis.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_COMPRESSION\n          valueFrom:\n            configMapKeyRef:\n              key: redis.compression\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDISDB\n          valueFrom:\n            configMapKeyRef:\n              key: redis.db\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_DEFAULT_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: controller.default.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_OTLP_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: application.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_CONTROLLER_SHARDING_ALGORITHM\n          valueFrom:\n            configMapKeyRef:\n              key: controller.sharding.algorithm\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_KUBECTL_PARALLELISM_LIMIT\n          valueFrom:\n            configMapKeyRef:\n              key: controller.kubectl.parallelism.limit\n              name: argocd-cmd-params-cm\n              optional: true\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        name: argocd-application-controller\n        ports:\n        - containerPort: 8082\n        readinessProbe:\n          httpGet:\n            path: /healthz\n            port: 8082\n          initialDelaySeconds: 5\n          periodSeconds: 10\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/controller/tls\n          name: argocd-repo-server-tls\n        - mountPath: /home/argocd\n          name: argocd-home\n        workingDir: /home/argocd\n      serviceAccountName: argocd-application-controller\n      volumes:\n      - emptyDir: {}\n        name: argocd-home\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-application-controller-network-policy\nspec:\n  ingress:\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 8082\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-application-controller\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-applicationset-controller-network-policy\nspec:\n  ingress:\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 7000\n      protocol: TCP\n    - port: 8080\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-applicationset-controller\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-dex-server-network-policy\nspec:\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-server\n    ports:\n    - port: 5556\n      protocol: TCP\n    - port: 5557\n      protocol: TCP\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 5558\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-dex-server\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller-network-policy\nspec:\n  ingress:\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 9001\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-notifications-controller\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-redis-network-policy\nspec:\n  egress:\n  - ports:\n    - port: 53\n      protocol: UDP\n    - port: 53\n      protocol: TCP\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-server\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-repo-server\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-application-controller\n    ports:\n    - port: 6379\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-redis\n  policyTypes:\n  - Ingress\n  - Egress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-repo-server-network-policy\nspec:\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-server\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-application-controller\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-notifications-controller\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-applicationset-controller\n    ports:\n    - port: 8081\n      protocol: TCP\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 8084\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-repo-server\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-server-network-policy\nspec:\n  ingress:\n  - {}\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-server\n  policyTypes:\n  - Ingress\n"
  },
  {
    "path": "pkg/k8s/test-resources/input/argocd-cm.yaml",
    "content": "apiVersion: v1\ndata:\n  application.resourceTrackingMethod: annotation\n  resource.exclusions: |\n    - kinds:\n        - ProviderConfigUsage\n      apiGroups:\n        - \"*\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-cm\n    app.kubernetes.io/part-of: argocd\n    Test: Data\n  name: argocd-cm\n"
  },
  {
    "path": "pkg/k8s/test-resources/input/extra.yaml",
    "content": "apiVersion: v1\nstringData:\n  test: data\nkind: Secret\nmetadata:\n  labels:\n    Test: Data\n  name: secret-one\n---\napiVersion: v1\nstringData:\n  test: data\nkind: Secret\nmetadata:\n  labels:\n    Test: Data\n  name: secret-two\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    test: test\n  name: ingress-nginx-controller-admission\n  namespace: ingress-nginx\nspec:\n  ports:\n    - appProtocol: https\n      name: https-webhook\n      port: 443\n      targetPort: webhook\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: ClusterIP\n"
  },
  {
    "path": "pkg/k8s/test-resources/input/extra.yaml.tmpl",
    "content": "apiVersion: v1\nstringData:\n  test: data\nkind: Secret\nmetadata:\n  labels:\n    Test: Data\n  name: secret-one\n---\napiVersion: v1\nstringData:\n  test: data\nkind: Secret\nmetadata:\n  labels:\n    Test: Data\n  name: secret-two\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    test: data\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  ipFamilies:\n    - IPv4\n  ipFamilyPolicy: SingleStack\n  ports:\n    - appProtocol: {{ .Protocol }}\n      name: {{ .Protocol }}-{{ .Port }}\n      port: {{ .Port }}\n      protocol: TCP\n      targetPort: {{ .Protocol }}\n    - appProtocol: http\n      name: http\n      port: 80\n      protocol: TCP\n      targetPort: http\n    - appProtocol: https\n      name: https\n      port: 443\n      protocol: TCP\n      targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: NodePort\n"
  },
  {
    "path": "pkg/k8s/test-resources/input/nginx/install.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  name: ingress-nginx\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\n  namespace: ingress-nginx\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - namespaces\n    verbs:\n      - get\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n      - pods\n      - secrets\n      - endpoints\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - coordination.k8s.io\n    resourceNames:\n      - ingress-nginx-leader\n    resources:\n      - leases\n    verbs:\n      - get\n      - update\n  - apiGroups:\n      - coordination.k8s.io\n    resources:\n      - leases\n    verbs:\n      - create\n  - apiGroups:\n      - \"\"\n    resources:\n      - events\n    verbs:\n      - create\n      - patch\n  - apiGroups:\n      - discovery.k8s.io\n    resources:\n      - endpointslices\n    verbs:\n      - list\n      - watch\n      - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - secrets\n    verbs:\n      - get\n      - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n      - endpoints\n      - nodes\n      - pods\n      - secrets\n      - namespaces\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - coordination.k8s.io\n    resources:\n      - leases\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - nodes\n    verbs:\n      - get\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - events\n    verbs:\n      - create\n      - patch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - discovery.k8s.io\n    resources:\n      - endpointslices\n    verbs:\n      - list\n      - watch\n      - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\nrules:\n  - apiGroups:\n      - admissionregistration.k8s.io\n    resources:\n      - validatingwebhookconfigurations\n    verbs:\n      - get\n      - update\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx\n    namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx-admission\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-admission\n    namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx\n    namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx-admission\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-admission\n    namespace: ingress-nginx\n---\napiVersion: v1\ndata:\n  allow-snippet-annotations: \"true\"\n  proxy-buffer-size: 32k\n  use-forwarded-headers: \"true\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller-admission\n  namespace: ingress-nginx\nspec:\n  ports:\n    - appProtocol: https\n      name: https-webhook\n      port: 443\n      targetPort: webhook\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: ClusterIP\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  minReadySeconds: 0\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/instance: ingress-nginx\n      app.kubernetes.io/name: ingress-nginx\n  strategy:\n    rollingUpdate:\n      maxUnavailable: 1\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.1\n    spec:\n      containers:\n        - args:\n            - /nginx-ingress-controller\n            - --election-id=ingress-nginx-leader\n            - --controller-class=k8s.io/ingress-nginx\n            - --ingress-class=nginx\n            - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller\n            - --validating-webhook=:8443\n            - --validating-webhook-certificate=/usr/local/certificates/cert\n            - --validating-webhook-key=/usr/local/certificates/key\n            - --watch-ingress-without-class=true\n            - --publish-status-address=localhost\n            - --enable-ssl-passthrough\n          env:\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: LD_PRELOAD\n              value: /usr/local/lib/libmimalloc.so\n          image: registry.k8s.io/ingress-nginx/controller:v1.8.1@sha256:e5c4824e7375fcf2a393e1c03c293b69759af37a9ca6abdb91b13d78a93da8bd\n          imagePullPolicy: IfNotPresent\n          lifecycle:\n            preStop:\n              exec:\n                command:\n                  - /wait-shutdown\n          livenessProbe:\n            failureThreshold: 5\n            httpGet:\n              path: /healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          name: controller\n          ports:\n            - containerPort: 80\n              hostPort: 80\n              name: http\n              protocol: TCP\n            - containerPort: 443\n              hostPort: 443\n              name: https\n              protocol: TCP\n            - containerPort: 8443\n              name: webhook\n              protocol: TCP\n          readinessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: /healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          resources:\n            requests:\n              cpu: 100m\n              memory: 90Mi\n          securityContext:\n            allowPrivilegeEscalation: true\n            capabilities:\n              add:\n                - NET_BIND_SERVICE\n              drop:\n                - ALL\n            runAsUser: 101\n          volumeMounts:\n            - mountPath: /usr/local/certificates/\n              name: webhook-cert\n              readOnly: true\n      dnsPolicy: ClusterFirst\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: ingress-nginx\n      terminationGracePeriodSeconds: 0\n      volumes:\n        - name: webhook-cert\n          secret:\n            secretName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission-create\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.1\n      name: ingress-nginx-admission-create\n    spec:\n      containers:\n        - args:\n            - create\n            - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc\n            - --namespace=$(POD_NAMESPACE)\n            - --secret-name=ingress-nginx-admission\n          env:\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b\n          imagePullPolicy: IfNotPresent\n          name: create\n          securityContext:\n            allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission-patch\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.1\n      name: ingress-nginx-admission-patch\n    spec:\n      containers:\n        - args:\n            - patch\n            - --webhook-name=ingress-nginx-admission\n            - --namespace=$(POD_NAMESPACE)\n            - --patch-mutating=false\n            - --secret-name=ingress-nginx-admission\n            - --patch-failure-policy=Fail\n          env:\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b\n          imagePullPolicy: IfNotPresent\n          name: patch\n          securityContext:\n            allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: networking.k8s.io/v1\nkind: IngressClass\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: nginx\nspec:\n  controller: k8s.io/ingress-nginx\n---\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\nwebhooks:\n  - admissionReviewVersions:\n      - v1\n    clientConfig:\n      service:\n        name: ingress-nginx-controller-admission\n        namespace: ingress-nginx\n        path: /networking/v1/ingresses\n    failurePolicy: Fail\n    matchPolicy: Equivalent\n    name: validate.nginx.ingress.kubernetes.io\n    rules:\n      - apiGroups:\n          - networking.k8s.io\n        apiVersions:\n          - v1\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - ingresses\n    sideEffects: None\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  ipFamilies:\n    - IPv4\n  ipFamilyPolicy: SingleStack\n  ports:\n    - appProtocol: {{ .Protocol }}\n      name: {{ .Protocol }}-{{ .Port }}\n      port: {{ .Port }}\n      protocol: TCP\n      targetPort: {{ .Protocol }}\n    - appProtocol: http\n      name: http\n      port: 80\n      protocol: TCP\n      targetPort: http\n    - appProtocol: https\n      name: https\n      port: 443\n      protocol: TCP\n      targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: NodePort\n"
  },
  {
    "path": "pkg/k8s/test-resources/output/argocd/install.yaml",
    "content": "# UCP ARGO INSTALL RESOURCES\n# This file is auto-generated with 'hack/argo-cd/generate-manifests.sh'\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app.kubernetes.io/name: applications.argoproj.io\n    app.kubernetes.io/part-of: argocd\n  name: applications.argoproj.io\nspec:\n  group: argoproj.io\n  names:\n    kind: Application\n    listKind: ApplicationList\n    plural: applications\n    shortNames:\n    - app\n    - apps\n    singular: application\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - jsonPath: .status.sync.status\n      name: Sync Status\n      type: string\n    - jsonPath: .status.health.status\n      name: Health Status\n      type: string\n    - jsonPath: .status.sync.revision\n      name: Revision\n      priority: 10\n      type: string\n    name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: Application is a definition of Application resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          operation:\n            description: Operation contains information about a requested or running\n              operation\n            properties:\n              info:\n                description: Info is a list of informational items for this operation\n                items:\n                  properties:\n                    name:\n                      type: string\n                    value:\n                      type: string\n                  required:\n                  - name\n                  - value\n                  type: object\n                type: array\n              initiatedBy:\n                description: InitiatedBy contains information about who initiated\n                  the operations\n                properties:\n                  automated:\n                    description: Automated is set to true if operation was initiated\n                      automatically by the application controller.\n                    type: boolean\n                  username:\n                    description: Username contains the name of a user who started\n                      operation\n                    type: string\n                type: object\n              retry:\n                description: Retry controls the strategy to apply if a sync fails\n                properties:\n                  backoff:\n                    description: Backoff controls how to backoff on subsequent retries\n                      of failed syncs\n                    properties:\n                      duration:\n                        description: Duration is the amount to back off. Default unit\n                          is seconds, but could also be a duration (e.g. \"2m\", \"1h\")\n                        type: string\n                      factor:\n                        description: Factor is a factor to multiply the base duration\n                          after each failed retry\n                        format: int64\n                        type: integer\n                      maxDuration:\n                        description: MaxDuration is the maximum amount of time allowed\n                          for the backoff strategy\n                        type: string\n                    type: object\n                  limit:\n                    description: Limit is the maximum number of attempts for retrying\n                      a failed sync. If set to 0, no retries will be performed.\n                    format: int64\n                    type: integer\n                type: object\n              sync:\n                description: Sync contains parameters for the operation\n                properties:\n                  dryRun:\n                    description: DryRun specifies to perform a `kubectl apply --dry-run`\n                      without actually performing the sync\n                    type: boolean\n                  manifests:\n                    description: Manifests is an optional field that overrides sync\n                      source with a local directory for development\n                    items:\n                      type: string\n                    type: array\n                  prune:\n                    description: Prune specifies to delete resources from the cluster\n                      that are no longer tracked in git\n                    type: boolean\n                  resources:\n                    description: Resources describes which resources shall be part\n                      of the sync\n                    items:\n                      description: SyncOperationResource contains resources to sync.\n                      properties:\n                        group:\n                          type: string\n                        kind:\n                          type: string\n                        name:\n                          type: string\n                        namespace:\n                          type: string\n                      required:\n                      - kind\n                      - name\n                      type: object\n                    type: array\n                  revision:\n                    description: Revision is the revision (Git) or chart version (Helm)\n                      which to sync the application to If omitted, will use the revision\n                      specified in app spec.\n                    type: string\n                  revisions:\n                    description: Revisions is the list of revision (Git) or chart\n                      version (Helm) which to sync each source in sources field for\n                      the application to If omitted, will use the revision specified\n                      in app spec.\n                    items:\n                      type: string\n                    type: array\n                  source:\n                    description: Source overrides the source definition set in the\n                      application. This is typically set in a Rollback operation and\n                      is nil during a Sync operation\n                    properties:\n                      chart:\n                        description: Chart is a Helm chart name, and must be specified\n                          for applications sourced from a Helm repo.\n                        type: string\n                      directory:\n                        description: Directory holds path/directory specific options\n                        properties:\n                          exclude:\n                            description: Exclude contains a glob pattern to match\n                              paths against that should be explicitly excluded from\n                              being used during manifest generation\n                            type: string\n                          include:\n                            description: Include contains a glob pattern to match\n                              paths against that should be explicitly included during\n                              manifest generation\n                            type: string\n                          jsonnet:\n                            description: Jsonnet holds options specific to Jsonnet\n                            properties:\n                              extVars:\n                                description: ExtVars is a list of Jsonnet External\n                                  Variables\n                                items:\n                                  description: JsonnetVar represents a variable to\n                                    be passed to jsonnet during manifest generation\n                                  properties:\n                                    code:\n                                      type: boolean\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              libs:\n                                description: Additional library search dirs\n                                items:\n                                  type: string\n                                type: array\n                              tlas:\n                                description: TLAS is a list of Jsonnet Top-level Arguments\n                                items:\n                                  description: JsonnetVar represents a variable to\n                                    be passed to jsonnet during manifest generation\n                                  properties:\n                                    code:\n                                      type: boolean\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                            type: object\n                          recurse:\n                            description: Recurse specifies whether to scan a directory\n                              recursively for manifests\n                            type: boolean\n                        type: object\n                      helm:\n                        description: Helm holds helm specific options\n                        properties:\n                          fileParameters:\n                            description: FileParameters are file parameters to the\n                              helm template\n                            items:\n                              description: HelmFileParameter is a file parameter that's\n                                passed to helm template during manifest generation\n                              properties:\n                                name:\n                                  description: Name is the name of the Helm parameter\n                                  type: string\n                                path:\n                                  description: Path is the path to the file containing\n                                    the values for the Helm parameter\n                                  type: string\n                              type: object\n                            type: array\n                          ignoreMissingValueFiles:\n                            description: IgnoreMissingValueFiles prevents helm template\n                              from failing when valueFiles do not exist locally by\n                              not appending them to helm template --values\n                            type: boolean\n                          parameters:\n                            description: Parameters is a list of Helm parameters which\n                              are passed to the helm template command upon manifest\n                              generation\n                            items:\n                              description: HelmParameter is a parameter that's passed\n                                to helm template during manifest generation\n                              properties:\n                                forceString:\n                                  description: ForceString determines whether to tell\n                                    Helm to interpret booleans and numbers as strings\n                                  type: boolean\n                                name:\n                                  description: Name is the name of the Helm parameter\n                                  type: string\n                                value:\n                                  description: Value is the value for the Helm parameter\n                                  type: string\n                              type: object\n                            type: array\n                          passCredentials:\n                            description: PassCredentials pass credentials to all domains\n                              (Helm's --pass-credentials)\n                            type: boolean\n                          releaseName:\n                            description: ReleaseName is the Helm release name to use.\n                              If omitted it will use the application name\n                            type: string\n                          skipCrds:\n                            description: SkipCrds skips custom resource definition\n                              installation step (Helm's --skip-crds)\n                            type: boolean\n                          valueFiles:\n                            description: ValuesFiles is a list of Helm value files\n                              to use when generating a template\n                            items:\n                              type: string\n                            type: array\n                          values:\n                            description: Values specifies Helm values to be passed\n                              to helm template, typically defined as a block. ValuesObject\n                              takes precedence over Values, so use one or the other.\n                            type: string\n                          valuesObject:\n                            description: ValuesObject specifies Helm values to be\n                              passed to helm template, defined as a map. This takes\n                              precedence over Values.\n                            type: object\n                            x-kubernetes-preserve-unknown-fields: true\n                          version:\n                            description: Version is the Helm version to use for templating\n                              (\"3\")\n                            type: string\n                        type: object\n                      kustomize:\n                        description: Kustomize holds kustomize specific options\n                        properties:\n                          commonAnnotations:\n                            additionalProperties:\n                              type: string\n                            description: CommonAnnotations is a list of additional\n                              annotations to add to rendered manifests\n                            type: object\n                          commonAnnotationsEnvsubst:\n                            description: CommonAnnotationsEnvsubst specifies whether\n                              to apply env variables substitution for annotation values\n                            type: boolean\n                          commonLabels:\n                            additionalProperties:\n                              type: string\n                            description: CommonLabels is a list of additional labels\n                              to add to rendered manifests\n                            type: object\n                          forceCommonAnnotations:\n                            description: ForceCommonAnnotations specifies whether\n                              to force applying common annotations to resources for\n                              Kustomize apps\n                            type: boolean\n                          forceCommonLabels:\n                            description: ForceCommonLabels specifies whether to force\n                              applying common labels to resources for Kustomize apps\n                            type: boolean\n                          images:\n                            description: Images is a list of Kustomize image override\n                              specifications\n                            items:\n                              description: KustomizeImage represents a Kustomize image\n                                definition in the format [old_image_name=]<image_name>:<image_tag>\n                              type: string\n                            type: array\n                          namePrefix:\n                            description: NamePrefix is a prefix appended to resources\n                              for Kustomize apps\n                            type: string\n                          nameSuffix:\n                            description: NameSuffix is a suffix appended to resources\n                              for Kustomize apps\n                            type: string\n                          namespace:\n                            description: Namespace sets the namespace that Kustomize\n                              adds to all resources\n                            type: string\n                          replicas:\n                            description: Replicas is a list of Kustomize Replicas\n                              override specifications\n                            items:\n                              properties:\n                                count:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number of replicas\n                                  x-kubernetes-int-or-string: true\n                                name:\n                                  description: Name of Deployment or StatefulSet\n                                  type: string\n                              required:\n                              - count\n                              - name\n                              type: object\n                            type: array\n                          version:\n                            description: Version controls which version of Kustomize\n                              to use for rendering manifests\n                            type: string\n                        type: object\n                      path:\n                        description: Path is a directory path within the Git repository,\n                          and is only valid for applications sourced from Git.\n                        type: string\n                      plugin:\n                        description: Plugin holds config management plugin specific\n                          options\n                        properties:\n                          env:\n                            description: Env is a list of environment variable entries\n                            items:\n                              description: EnvEntry represents an entry in the application's\n                                environment\n                              properties:\n                                name:\n                                  description: Name is the name of the variable, usually\n                                    expressed in uppercase\n                                  type: string\n                                value:\n                                  description: Value is the value of the variable\n                                  type: string\n                              required:\n                              - name\n                              - value\n                              type: object\n                            type: array\n                          name:\n                            type: string\n                          parameters:\n                            items:\n                              properties:\n                                array:\n                                  description: Array is the value of an array type\n                                    parameter.\n                                  items:\n                                    type: string\n                                  type: array\n                                map:\n                                  additionalProperties:\n                                    type: string\n                                  description: Map is the value of a map type parameter.\n                                  type: object\n                                name:\n                                  description: Name is the name identifying a parameter.\n                                  type: string\n                                string:\n                                  description: String_ is the value of a string type\n                                    parameter.\n                                  type: string\n                              type: object\n                            type: array\n                        type: object\n                      ref:\n                        description: Ref is reference to another source within sources\n                          field. This field will not be used if used with a `source`\n                          tag.\n                        type: string\n                      repoURL:\n                        description: RepoURL is the URL to the repository (Git or\n                          Helm) that contains the application manifests\n                        type: string\n                      targetRevision:\n                        description: TargetRevision defines the revision of the source\n                          to sync the application to. In case of Git, this can be\n                          commit, tag, or branch. If omitted, will equal to HEAD.\n                          In case of Helm, this is a semver tag for the Chart's version.\n                        type: string\n                    required:\n                    - repoURL\n                    type: object\n                  sources:\n                    description: Sources overrides the source definition set in the\n                      application. This is typically set in a Rollback operation and\n                      is nil during a Sync operation\n                    items:\n                      description: ApplicationSource contains all required information\n                        about the source of an application\n                      properties:\n                        chart:\n                          description: Chart is a Helm chart name, and must be specified\n                            for applications sourced from a Helm repo.\n                          type: string\n                        directory:\n                          description: Directory holds path/directory specific options\n                          properties:\n                            exclude:\n                              description: Exclude contains a glob pattern to match\n                                paths against that should be explicitly excluded from\n                                being used during manifest generation\n                              type: string\n                            include:\n                              description: Include contains a glob pattern to match\n                                paths against that should be explicitly included during\n                                manifest generation\n                              type: string\n                            jsonnet:\n                              description: Jsonnet holds options specific to Jsonnet\n                              properties:\n                                extVars:\n                                  description: ExtVars is a list of Jsonnet External\n                                    Variables\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                libs:\n                                  description: Additional library search dirs\n                                  items:\n                                    type: string\n                                  type: array\n                                tlas:\n                                  description: TLAS is a list of Jsonnet Top-level\n                                    Arguments\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                              type: object\n                            recurse:\n                              description: Recurse specifies whether to scan a directory\n                                recursively for manifests\n                              type: boolean\n                          type: object\n                        helm:\n                          description: Helm holds helm specific options\n                          properties:\n                            fileParameters:\n                              description: FileParameters are file parameters to the\n                                helm template\n                              items:\n                                description: HelmFileParameter is a file parameter\n                                  that's passed to helm template during manifest generation\n                                properties:\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  path:\n                                    description: Path is the path to the file containing\n                                      the values for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            ignoreMissingValueFiles:\n                              description: IgnoreMissingValueFiles prevents helm template\n                                from failing when valueFiles do not exist locally\n                                by not appending them to helm template --values\n                              type: boolean\n                            parameters:\n                              description: Parameters is a list of Helm parameters\n                                which are passed to the helm template command upon\n                                manifest generation\n                              items:\n                                description: HelmParameter is a parameter that's passed\n                                  to helm template during manifest generation\n                                properties:\n                                  forceString:\n                                    description: ForceString determines whether to\n                                      tell Helm to interpret booleans and numbers\n                                      as strings\n                                    type: boolean\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  value:\n                                    description: Value is the value for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            passCredentials:\n                              description: PassCredentials pass credentials to all\n                                domains (Helm's --pass-credentials)\n                              type: boolean\n                            releaseName:\n                              description: ReleaseName is the Helm release name to\n                                use. If omitted it will use the application name\n                              type: string\n                            skipCrds:\n                              description: SkipCrds skips custom resource definition\n                                installation step (Helm's --skip-crds)\n                              type: boolean\n                            valueFiles:\n                              description: ValuesFiles is a list of Helm value files\n                                to use when generating a template\n                              items:\n                                type: string\n                              type: array\n                            values:\n                              description: Values specifies Helm values to be passed\n                                to helm template, typically defined as a block. ValuesObject\n                                takes precedence over Values, so use one or the other.\n                              type: string\n                            valuesObject:\n                              description: ValuesObject specifies Helm values to be\n                                passed to helm template, defined as a map. This takes\n                                precedence over Values.\n                              type: object\n                              x-kubernetes-preserve-unknown-fields: true\n                            version:\n                              description: Version is the Helm version to use for\n                                templating (\"3\")\n                              type: string\n                          type: object\n                        kustomize:\n                          description: Kustomize holds kustomize specific options\n                          properties:\n                            commonAnnotations:\n                              additionalProperties:\n                                type: string\n                              description: CommonAnnotations is a list of additional\n                                annotations to add to rendered manifests\n                              type: object\n                            commonAnnotationsEnvsubst:\n                              description: CommonAnnotationsEnvsubst specifies whether\n                                to apply env variables substitution for annotation\n                                values\n                              type: boolean\n                            commonLabels:\n                              additionalProperties:\n                                type: string\n                              description: CommonLabels is a list of additional labels\n                                to add to rendered manifests\n                              type: object\n                            forceCommonAnnotations:\n                              description: ForceCommonAnnotations specifies whether\n                                to force applying common annotations to resources\n                                for Kustomize apps\n                              type: boolean\n                            forceCommonLabels:\n                              description: ForceCommonLabels specifies whether to\n                                force applying common labels to resources for Kustomize\n                                apps\n                              type: boolean\n                            images:\n                              description: Images is a list of Kustomize image override\n                                specifications\n                              items:\n                                description: KustomizeImage represents a Kustomize\n                                  image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                type: string\n                              type: array\n                            namePrefix:\n                              description: NamePrefix is a prefix appended to resources\n                                for Kustomize apps\n                              type: string\n                            nameSuffix:\n                              description: NameSuffix is a suffix appended to resources\n                                for Kustomize apps\n                              type: string\n                            namespace:\n                              description: Namespace sets the namespace that Kustomize\n                                adds to all resources\n                              type: string\n                            replicas:\n                              description: Replicas is a list of Kustomize Replicas\n                                override specifications\n                              items:\n                                properties:\n                                  count:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Number of replicas\n                                    x-kubernetes-int-or-string: true\n                                  name:\n                                    description: Name of Deployment or StatefulSet\n                                    type: string\n                                required:\n                                - count\n                                - name\n                                type: object\n                              type: array\n                            version:\n                              description: Version controls which version of Kustomize\n                                to use for rendering manifests\n                              type: string\n                          type: object\n                        path:\n                          description: Path is a directory path within the Git repository,\n                            and is only valid for applications sourced from Git.\n                          type: string\n                        plugin:\n                          description: Plugin holds config management plugin specific\n                            options\n                          properties:\n                            env:\n                              description: Env is a list of environment variable entries\n                              items:\n                                description: EnvEntry represents an entry in the application's\n                                  environment\n                                properties:\n                                  name:\n                                    description: Name is the name of the variable,\n                                      usually expressed in uppercase\n                                    type: string\n                                  value:\n                                    description: Value is the value of the variable\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            name:\n                              type: string\n                            parameters:\n                              items:\n                                properties:\n                                  array:\n                                    description: Array is the value of an array type\n                                      parameter.\n                                    items:\n                                      type: string\n                                    type: array\n                                  map:\n                                    additionalProperties:\n                                      type: string\n                                    description: Map is the value of a map type parameter.\n                                    type: object\n                                  name:\n                                    description: Name is the name identifying a parameter.\n                                    type: string\n                                  string:\n                                    description: String_ is the value of a string\n                                      type parameter.\n                                    type: string\n                                type: object\n                              type: array\n                          type: object\n                        ref:\n                          description: Ref is reference to another source within sources\n                            field. This field will not be used if used with a `source`\n                            tag.\n                          type: string\n                        repoURL:\n                          description: RepoURL is the URL to the repository (Git or\n                            Helm) that contains the application manifests\n                          type: string\n                        targetRevision:\n                          description: TargetRevision defines the revision of the\n                            source to sync the application to. In case of Git, this\n                            can be commit, tag, or branch. If omitted, will equal\n                            to HEAD. In case of Helm, this is a semver tag for the\n                            Chart's version.\n                          type: string\n                      required:\n                      - repoURL\n                      type: object\n                    type: array\n                  syncOptions:\n                    description: SyncOptions provide per-sync sync-options, e.g. Validate=false\n                    items:\n                      type: string\n                    type: array\n                  syncStrategy:\n                    description: SyncStrategy describes how to perform the sync\n                    properties:\n                      apply:\n                        description: Apply will perform a `kubectl apply` to perform\n                          the sync.\n                        properties:\n                          force:\n                            description: Force indicates whether or not to supply\n                              the --force flag to `kubectl apply`. The --force flag\n                              deletes and re-create the resource, when PATCH encounters\n                              conflict and has retried for 5 times.\n                            type: boolean\n                        type: object\n                      hook:\n                        description: Hook will submit any referenced resources to\n                          perform the sync. This is the default strategy\n                        properties:\n                          force:\n                            description: Force indicates whether or not to supply\n                              the --force flag to `kubectl apply`. The --force flag\n                              deletes and re-create the resource, when PATCH encounters\n                              conflict and has retried for 5 times.\n                            type: boolean\n                        type: object\n                    type: object\n                type: object\n            type: object\n          spec:\n            description: ApplicationSpec represents desired application state. Contains\n              link to repository with application definition and additional parameters\n              link definition revision.\n            properties:\n              destination:\n                description: Destination is a reference to the target Kubernetes server\n                  and namespace\n                properties:\n                  name:\n                    description: Name is an alternate way of specifying the target\n                      cluster by its symbolic name\n                    type: string\n                  namespace:\n                    description: Namespace specifies the target namespace for the\n                      application's resources. The namespace will only be set for\n                      namespace-scoped resources that have not set a value for .metadata.namespace\n                    type: string\n                  server:\n                    description: Server specifies the URL of the target cluster and\n                      must be set to the Kubernetes control plane API\n                    type: string\n                type: object\n              ignoreDifferences:\n                description: IgnoreDifferences is a list of resources and their fields\n                  which should be ignored during comparison\n                items:\n                  description: ResourceIgnoreDifferences contains resource filter\n                    and list of json paths which should be ignored during comparison\n                    with live state.\n                  properties:\n                    group:\n                      type: string\n                    jqPathExpressions:\n                      items:\n                        type: string\n                      type: array\n                    jsonPointers:\n                      items:\n                        type: string\n                      type: array\n                    kind:\n                      type: string\n                    managedFieldsManagers:\n                      description: ManagedFieldsManagers is a list of trusted managers.\n                        Fields mutated by those managers will take precedence over\n                        the desired state defined in the SCM and won't be displayed\n                        in diffs\n                      items:\n                        type: string\n                      type: array\n                    name:\n                      type: string\n                    namespace:\n                      type: string\n                  required:\n                  - kind\n                  type: object\n                type: array\n              info:\n                description: Info contains a list of information (URLs, email addresses,\n                  and plain text) that relates to the application\n                items:\n                  properties:\n                    name:\n                      type: string\n                    value:\n                      type: string\n                  required:\n                  - name\n                  - value\n                  type: object\n                type: array\n              project:\n                description: Project is a reference to the project this application\n                  belongs to. The empty string means that application belongs to the\n                  'default' project.\n                type: string\n              revisionHistoryLimit:\n                description: RevisionHistoryLimit limits the number of items kept\n                  in the application's revision history, which is used for informational\n                  purposes as well as for rollbacks to previous versions. This should\n                  only be changed in exceptional circumstances. Setting to zero will\n                  store no history. This will reduce storage used. Increasing will\n                  increase the space used to store the history, so we do not recommend\n                  increasing it. Default is 10.\n                format: int64\n                type: integer\n              source:\n                description: Source is a reference to the location of the application's\n                  manifests or chart\n                properties:\n                  chart:\n                    description: Chart is a Helm chart name, and must be specified\n                      for applications sourced from a Helm repo.\n                    type: string\n                  directory:\n                    description: Directory holds path/directory specific options\n                    properties:\n                      exclude:\n                        description: Exclude contains a glob pattern to match paths\n                          against that should be explicitly excluded from being used\n                          during manifest generation\n                        type: string\n                      include:\n                        description: Include contains a glob pattern to match paths\n                          against that should be explicitly included during manifest\n                          generation\n                        type: string\n                      jsonnet:\n                        description: Jsonnet holds options specific to Jsonnet\n                        properties:\n                          extVars:\n                            description: ExtVars is a list of Jsonnet External Variables\n                            items:\n                              description: JsonnetVar represents a variable to be\n                                passed to jsonnet during manifest generation\n                              properties:\n                                code:\n                                  type: boolean\n                                name:\n                                  type: string\n                                value:\n                                  type: string\n                              required:\n                              - name\n                              - value\n                              type: object\n                            type: array\n                          libs:\n                            description: Additional library search dirs\n                            items:\n                              type: string\n                            type: array\n                          tlas:\n                            description: TLAS is a list of Jsonnet Top-level Arguments\n                            items:\n                              description: JsonnetVar represents a variable to be\n                                passed to jsonnet during manifest generation\n                              properties:\n                                code:\n                                  type: boolean\n                                name:\n                                  type: string\n                                value:\n                                  type: string\n                              required:\n                              - name\n                              - value\n                              type: object\n                            type: array\n                        type: object\n                      recurse:\n                        description: Recurse specifies whether to scan a directory\n                          recursively for manifests\n                        type: boolean\n                    type: object\n                  helm:\n                    description: Helm holds helm specific options\n                    properties:\n                      fileParameters:\n                        description: FileParameters are file parameters to the helm\n                          template\n                        items:\n                          description: HelmFileParameter is a file parameter that's\n                            passed to helm template during manifest generation\n                          properties:\n                            name:\n                              description: Name is the name of the Helm parameter\n                              type: string\n                            path:\n                              description: Path is the path to the file containing\n                                the values for the Helm parameter\n                              type: string\n                          type: object\n                        type: array\n                      ignoreMissingValueFiles:\n                        description: IgnoreMissingValueFiles prevents helm template\n                          from failing when valueFiles do not exist locally by not\n                          appending them to helm template --values\n                        type: boolean\n                      parameters:\n                        description: Parameters is a list of Helm parameters which\n                          are passed to the helm template command upon manifest generation\n                        items:\n                          description: HelmParameter is a parameter that's passed\n                            to helm template during manifest generation\n                          properties:\n                            forceString:\n                              description: ForceString determines whether to tell\n                                Helm to interpret booleans and numbers as strings\n                              type: boolean\n                            name:\n                              description: Name is the name of the Helm parameter\n                              type: string\n                            value:\n                              description: Value is the value for the Helm parameter\n                              type: string\n                          type: object\n                        type: array\n                      passCredentials:\n                        description: PassCredentials pass credentials to all domains\n                          (Helm's --pass-credentials)\n                        type: boolean\n                      releaseName:\n                        description: ReleaseName is the Helm release name to use.\n                          If omitted it will use the application name\n                        type: string\n                      skipCrds:\n                        description: SkipCrds skips custom resource definition installation\n                          step (Helm's --skip-crds)\n                        type: boolean\n                      valueFiles:\n                        description: ValuesFiles is a list of Helm value files to\n                          use when generating a template\n                        items:\n                          type: string\n                        type: array\n                      values:\n                        description: Values specifies Helm values to be passed to\n                          helm template, typically defined as a block. ValuesObject\n                          takes precedence over Values, so use one or the other.\n                        type: string\n                      valuesObject:\n                        description: ValuesObject specifies Helm values to be passed\n                          to helm template, defined as a map. This takes precedence\n                          over Values.\n                        type: object\n                        x-kubernetes-preserve-unknown-fields: true\n                      version:\n                        description: Version is the Helm version to use for templating\n                          (\"3\")\n                        type: string\n                    type: object\n                  kustomize:\n                    description: Kustomize holds kustomize specific options\n                    properties:\n                      commonAnnotations:\n                        additionalProperties:\n                          type: string\n                        description: CommonAnnotations is a list of additional annotations\n                          to add to rendered manifests\n                        type: object\n                      commonAnnotationsEnvsubst:\n                        description: CommonAnnotationsEnvsubst specifies whether to\n                          apply env variables substitution for annotation values\n                        type: boolean\n                      commonLabels:\n                        additionalProperties:\n                          type: string\n                        description: CommonLabels is a list of additional labels to\n                          add to rendered manifests\n                        type: object\n                      forceCommonAnnotations:\n                        description: ForceCommonAnnotations specifies whether to force\n                          applying common annotations to resources for Kustomize apps\n                        type: boolean\n                      forceCommonLabels:\n                        description: ForceCommonLabels specifies whether to force\n                          applying common labels to resources for Kustomize apps\n                        type: boolean\n                      images:\n                        description: Images is a list of Kustomize image override\n                          specifications\n                        items:\n                          description: KustomizeImage represents a Kustomize image\n                            definition in the format [old_image_name=]<image_name>:<image_tag>\n                          type: string\n                        type: array\n                      namePrefix:\n                        description: NamePrefix is a prefix appended to resources\n                          for Kustomize apps\n                        type: string\n                      nameSuffix:\n                        description: NameSuffix is a suffix appended to resources\n                          for Kustomize apps\n                        type: string\n                      namespace:\n                        description: Namespace sets the namespace that Kustomize adds\n                          to all resources\n                        type: string\n                      replicas:\n                        description: Replicas is a list of Kustomize Replicas override\n                          specifications\n                        items:\n                          properties:\n                            count:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number of replicas\n                              x-kubernetes-int-or-string: true\n                            name:\n                              description: Name of Deployment or StatefulSet\n                              type: string\n                          required:\n                          - count\n                          - name\n                          type: object\n                        type: array\n                      version:\n                        description: Version controls which version of Kustomize to\n                          use for rendering manifests\n                        type: string\n                    type: object\n                  path:\n                    description: Path is a directory path within the Git repository,\n                      and is only valid for applications sourced from Git.\n                    type: string\n                  plugin:\n                    description: Plugin holds config management plugin specific options\n                    properties:\n                      env:\n                        description: Env is a list of environment variable entries\n                        items:\n                          description: EnvEntry represents an entry in the application's\n                            environment\n                          properties:\n                            name:\n                              description: Name is the name of the variable, usually\n                                expressed in uppercase\n                              type: string\n                            value:\n                              description: Value is the value of the variable\n                              type: string\n                          required:\n                          - name\n                          - value\n                          type: object\n                        type: array\n                      name:\n                        type: string\n                      parameters:\n                        items:\n                          properties:\n                            array:\n                              description: Array is the value of an array type parameter.\n                              items:\n                                type: string\n                              type: array\n                            map:\n                              additionalProperties:\n                                type: string\n                              description: Map is the value of a map type parameter.\n                              type: object\n                            name:\n                              description: Name is the name identifying a parameter.\n                              type: string\n                            string:\n                              description: String_ is the value of a string type parameter.\n                              type: string\n                          type: object\n                        type: array\n                    type: object\n                  ref:\n                    description: Ref is reference to another source within sources\n                      field. This field will not be used if used with a `source` tag.\n                    type: string\n                  repoURL:\n                    description: RepoURL is the URL to the repository (Git or Helm)\n                      that contains the application manifests\n                    type: string\n                  targetRevision:\n                    description: TargetRevision defines the revision of the source\n                      to sync the application to. In case of Git, this can be commit,\n                      tag, or branch. If omitted, will equal to HEAD. In case of Helm,\n                      this is a semver tag for the Chart's version.\n                    type: string\n                required:\n                - repoURL\n                type: object\n              sources:\n                description: Sources is a reference to the location of the application's\n                  manifests or chart\n                items:\n                  description: ApplicationSource contains all required information\n                    about the source of an application\n                  properties:\n                    chart:\n                      description: Chart is a Helm chart name, and must be specified\n                        for applications sourced from a Helm repo.\n                      type: string\n                    directory:\n                      description: Directory holds path/directory specific options\n                      properties:\n                        exclude:\n                          description: Exclude contains a glob pattern to match paths\n                            against that should be explicitly excluded from being\n                            used during manifest generation\n                          type: string\n                        include:\n                          description: Include contains a glob pattern to match paths\n                            against that should be explicitly included during manifest\n                            generation\n                          type: string\n                        jsonnet:\n                          description: Jsonnet holds options specific to Jsonnet\n                          properties:\n                            extVars:\n                              description: ExtVars is a list of Jsonnet External Variables\n                              items:\n                                description: JsonnetVar represents a variable to be\n                                  passed to jsonnet during manifest generation\n                                properties:\n                                  code:\n                                    type: boolean\n                                  name:\n                                    type: string\n                                  value:\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            libs:\n                              description: Additional library search dirs\n                              items:\n                                type: string\n                              type: array\n                            tlas:\n                              description: TLAS is a list of Jsonnet Top-level Arguments\n                              items:\n                                description: JsonnetVar represents a variable to be\n                                  passed to jsonnet during manifest generation\n                                properties:\n                                  code:\n                                    type: boolean\n                                  name:\n                                    type: string\n                                  value:\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                          type: object\n                        recurse:\n                          description: Recurse specifies whether to scan a directory\n                            recursively for manifests\n                          type: boolean\n                      type: object\n                    helm:\n                      description: Helm holds helm specific options\n                      properties:\n                        fileParameters:\n                          description: FileParameters are file parameters to the helm\n                            template\n                          items:\n                            description: HelmFileParameter is a file parameter that's\n                              passed to helm template during manifest generation\n                            properties:\n                              name:\n                                description: Name is the name of the Helm parameter\n                                type: string\n                              path:\n                                description: Path is the path to the file containing\n                                  the values for the Helm parameter\n                                type: string\n                            type: object\n                          type: array\n                        ignoreMissingValueFiles:\n                          description: IgnoreMissingValueFiles prevents helm template\n                            from failing when valueFiles do not exist locally by not\n                            appending them to helm template --values\n                          type: boolean\n                        parameters:\n                          description: Parameters is a list of Helm parameters which\n                            are passed to the helm template command upon manifest\n                            generation\n                          items:\n                            description: HelmParameter is a parameter that's passed\n                              to helm template during manifest generation\n                            properties:\n                              forceString:\n                                description: ForceString determines whether to tell\n                                  Helm to interpret booleans and numbers as strings\n                                type: boolean\n                              name:\n                                description: Name is the name of the Helm parameter\n                                type: string\n                              value:\n                                description: Value is the value for the Helm parameter\n                                type: string\n                            type: object\n                          type: array\n                        passCredentials:\n                          description: PassCredentials pass credentials to all domains\n                            (Helm's --pass-credentials)\n                          type: boolean\n                        releaseName:\n                          description: ReleaseName is the Helm release name to use.\n                            If omitted it will use the application name\n                          type: string\n                        skipCrds:\n                          description: SkipCrds skips custom resource definition installation\n                            step (Helm's --skip-crds)\n                          type: boolean\n                        valueFiles:\n                          description: ValuesFiles is a list of Helm value files to\n                            use when generating a template\n                          items:\n                            type: string\n                          type: array\n                        values:\n                          description: Values specifies Helm values to be passed to\n                            helm template, typically defined as a block. ValuesObject\n                            takes precedence over Values, so use one or the other.\n                          type: string\n                        valuesObject:\n                          description: ValuesObject specifies Helm values to be passed\n                            to helm template, defined as a map. This takes precedence\n                            over Values.\n                          type: object\n                          x-kubernetes-preserve-unknown-fields: true\n                        version:\n                          description: Version is the Helm version to use for templating\n                            (\"3\")\n                          type: string\n                      type: object\n                    kustomize:\n                      description: Kustomize holds kustomize specific options\n                      properties:\n                        commonAnnotations:\n                          additionalProperties:\n                            type: string\n                          description: CommonAnnotations is a list of additional annotations\n                            to add to rendered manifests\n                          type: object\n                        commonAnnotationsEnvsubst:\n                          description: CommonAnnotationsEnvsubst specifies whether\n                            to apply env variables substitution for annotation values\n                          type: boolean\n                        commonLabels:\n                          additionalProperties:\n                            type: string\n                          description: CommonLabels is a list of additional labels\n                            to add to rendered manifests\n                          type: object\n                        forceCommonAnnotations:\n                          description: ForceCommonAnnotations specifies whether to\n                            force applying common annotations to resources for Kustomize\n                            apps\n                          type: boolean\n                        forceCommonLabels:\n                          description: ForceCommonLabels specifies whether to force\n                            applying common labels to resources for Kustomize apps\n                          type: boolean\n                        images:\n                          description: Images is a list of Kustomize image override\n                            specifications\n                          items:\n                            description: KustomizeImage represents a Kustomize image\n                              definition in the format [old_image_name=]<image_name>:<image_tag>\n                            type: string\n                          type: array\n                        namePrefix:\n                          description: NamePrefix is a prefix appended to resources\n                            for Kustomize apps\n                          type: string\n                        nameSuffix:\n                          description: NameSuffix is a suffix appended to resources\n                            for Kustomize apps\n                          type: string\n                        namespace:\n                          description: Namespace sets the namespace that Kustomize\n                            adds to all resources\n                          type: string\n                        replicas:\n                          description: Replicas is a list of Kustomize Replicas override\n                            specifications\n                          items:\n                            properties:\n                              count:\n                                anyOf:\n                                - type: integer\n                                - type: string\n                                description: Number of replicas\n                                x-kubernetes-int-or-string: true\n                              name:\n                                description: Name of Deployment or StatefulSet\n                                type: string\n                            required:\n                            - count\n                            - name\n                            type: object\n                          type: array\n                        version:\n                          description: Version controls which version of Kustomize\n                            to use for rendering manifests\n                          type: string\n                      type: object\n                    path:\n                      description: Path is a directory path within the Git repository,\n                        and is only valid for applications sourced from Git.\n                      type: string\n                    plugin:\n                      description: Plugin holds config management plugin specific\n                        options\n                      properties:\n                        env:\n                          description: Env is a list of environment variable entries\n                          items:\n                            description: EnvEntry represents an entry in the application's\n                              environment\n                            properties:\n                              name:\n                                description: Name is the name of the variable, usually\n                                  expressed in uppercase\n                                type: string\n                              value:\n                                description: Value is the value of the variable\n                                type: string\n                            required:\n                            - name\n                            - value\n                            type: object\n                          type: array\n                        name:\n                          type: string\n                        parameters:\n                          items:\n                            properties:\n                              array:\n                                description: Array is the value of an array type parameter.\n                                items:\n                                  type: string\n                                type: array\n                              map:\n                                additionalProperties:\n                                  type: string\n                                description: Map is the value of a map type parameter.\n                                type: object\n                              name:\n                                description: Name is the name identifying a parameter.\n                                type: string\n                              string:\n                                description: String_ is the value of a string type\n                                  parameter.\n                                type: string\n                            type: object\n                          type: array\n                      type: object\n                    ref:\n                      description: Ref is reference to another source within sources\n                        field. This field will not be used if used with a `source`\n                        tag.\n                      type: string\n                    repoURL:\n                      description: RepoURL is the URL to the repository (Git or Helm)\n                        that contains the application manifests\n                      type: string\n                    targetRevision:\n                      description: TargetRevision defines the revision of the source\n                        to sync the application to. In case of Git, this can be commit,\n                        tag, or branch. If omitted, will equal to HEAD. In case of\n                        Helm, this is a semver tag for the Chart's version.\n                      type: string\n                  required:\n                  - repoURL\n                  type: object\n                type: array\n              syncPolicy:\n                description: SyncPolicy controls when and how a sync will be performed\n                properties:\n                  automated:\n                    description: Automated will keep an application synced to the\n                      target revision\n                    properties:\n                      allowEmpty:\n                        description: 'AllowEmpty allows apps have zero live resources\n                          (default: false)'\n                        type: boolean\n                      prune:\n                        description: 'Prune specifies whether to delete resources\n                          from the cluster that are not found in the sources anymore\n                          as part of automated sync (default: false)'\n                        type: boolean\n                      selfHeal:\n                        description: 'SelfHeal specifies whether to revert resources\n                          back to their desired state upon modification in the cluster\n                          (default: false)'\n                        type: boolean\n                    type: object\n                  managedNamespaceMetadata:\n                    description: ManagedNamespaceMetadata controls metadata in the\n                      given namespace (if CreateNamespace=true)\n                    properties:\n                      annotations:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      labels:\n                        additionalProperties:\n                          type: string\n                        type: object\n                    type: object\n                  retry:\n                    description: Retry controls failed sync retry behavior\n                    properties:\n                      backoff:\n                        description: Backoff controls how to backoff on subsequent\n                          retries of failed syncs\n                        properties:\n                          duration:\n                            description: Duration is the amount to back off. Default\n                              unit is seconds, but could also be a duration (e.g.\n                              \"2m\", \"1h\")\n                            type: string\n                          factor:\n                            description: Factor is a factor to multiply the base duration\n                              after each failed retry\n                            format: int64\n                            type: integer\n                          maxDuration:\n                            description: MaxDuration is the maximum amount of time\n                              allowed for the backoff strategy\n                            type: string\n                        type: object\n                      limit:\n                        description: Limit is the maximum number of attempts for retrying\n                          a failed sync. If set to 0, no retries will be performed.\n                        format: int64\n                        type: integer\n                    type: object\n                  syncOptions:\n                    description: Options allow you to specify whole app sync-options\n                    items:\n                      type: string\n                    type: array\n                type: object\n            required:\n            - destination\n            - project\n            type: object\n          status:\n            description: ApplicationStatus contains status information for the application\n            properties:\n              conditions:\n                description: Conditions is a list of currently observed application\n                  conditions\n                items:\n                  description: ApplicationCondition contains details about an application\n                    condition, which is usually an error or warning\n                  properties:\n                    lastTransitionTime:\n                      description: LastTransitionTime is the time the condition was\n                        last observed\n                      format: date-time\n                      type: string\n                    message:\n                      description: Message contains human-readable message indicating\n                        details about condition\n                      type: string\n                    type:\n                      description: Type is an application condition type\n                      type: string\n                  required:\n                  - message\n                  - type\n                  type: object\n                type: array\n              controllerNamespace:\n                description: ControllerNamespace indicates the namespace in which\n                  the application controller is located\n                type: string\n              health:\n                description: Health contains information about the application's current\n                  health status\n                properties:\n                  message:\n                    description: Message is a human-readable informational message\n                      describing the health status\n                    type: string\n                  status:\n                    description: Status holds the status code of the application or\n                      resource\n                    type: string\n                type: object\n              history:\n                description: History contains information about the application's\n                  sync history\n                items:\n                  description: RevisionHistory contains history information about\n                    a previous sync\n                  properties:\n                    deployStartedAt:\n                      description: DeployStartedAt holds the time the sync operation\n                        started\n                      format: date-time\n                      type: string\n                    deployedAt:\n                      description: DeployedAt holds the time the sync operation completed\n                      format: date-time\n                      type: string\n                    id:\n                      description: ID is an auto incrementing identifier of the RevisionHistory\n                      format: int64\n                      type: integer\n                    revision:\n                      description: Revision holds the revision the sync was performed\n                        against\n                      type: string\n                    revisions:\n                      description: Revisions holds the revision of each source in\n                        sources field the sync was performed against\n                      items:\n                        type: string\n                      type: array\n                    source:\n                      description: Source is a reference to the application source\n                        used for the sync operation\n                      properties:\n                        chart:\n                          description: Chart is a Helm chart name, and must be specified\n                            for applications sourced from a Helm repo.\n                          type: string\n                        directory:\n                          description: Directory holds path/directory specific options\n                          properties:\n                            exclude:\n                              description: Exclude contains a glob pattern to match\n                                paths against that should be explicitly excluded from\n                                being used during manifest generation\n                              type: string\n                            include:\n                              description: Include contains a glob pattern to match\n                                paths against that should be explicitly included during\n                                manifest generation\n                              type: string\n                            jsonnet:\n                              description: Jsonnet holds options specific to Jsonnet\n                              properties:\n                                extVars:\n                                  description: ExtVars is a list of Jsonnet External\n                                    Variables\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                libs:\n                                  description: Additional library search dirs\n                                  items:\n                                    type: string\n                                  type: array\n                                tlas:\n                                  description: TLAS is a list of Jsonnet Top-level\n                                    Arguments\n                                  items:\n                                    description: JsonnetVar represents a variable\n                                      to be passed to jsonnet during manifest generation\n                                    properties:\n                                      code:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                              type: object\n                            recurse:\n                              description: Recurse specifies whether to scan a directory\n                                recursively for manifests\n                              type: boolean\n                          type: object\n                        helm:\n                          description: Helm holds helm specific options\n                          properties:\n                            fileParameters:\n                              description: FileParameters are file parameters to the\n                                helm template\n                              items:\n                                description: HelmFileParameter is a file parameter\n                                  that's passed to helm template during manifest generation\n                                properties:\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  path:\n                                    description: Path is the path to the file containing\n                                      the values for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            ignoreMissingValueFiles:\n                              description: IgnoreMissingValueFiles prevents helm template\n                                from failing when valueFiles do not exist locally\n                                by not appending them to helm template --values\n                              type: boolean\n                            parameters:\n                              description: Parameters is a list of Helm parameters\n                                which are passed to the helm template command upon\n                                manifest generation\n                              items:\n                                description: HelmParameter is a parameter that's passed\n                                  to helm template during manifest generation\n                                properties:\n                                  forceString:\n                                    description: ForceString determines whether to\n                                      tell Helm to interpret booleans and numbers\n                                      as strings\n                                    type: boolean\n                                  name:\n                                    description: Name is the name of the Helm parameter\n                                    type: string\n                                  value:\n                                    description: Value is the value for the Helm parameter\n                                    type: string\n                                type: object\n                              type: array\n                            passCredentials:\n                              description: PassCredentials pass credentials to all\n                                domains (Helm's --pass-credentials)\n                              type: boolean\n                            releaseName:\n                              description: ReleaseName is the Helm release name to\n                                use. If omitted it will use the application name\n                              type: string\n                            skipCrds:\n                              description: SkipCrds skips custom resource definition\n                                installation step (Helm's --skip-crds)\n                              type: boolean\n                            valueFiles:\n                              description: ValuesFiles is a list of Helm value files\n                                to use when generating a template\n                              items:\n                                type: string\n                              type: array\n                            values:\n                              description: Values specifies Helm values to be passed\n                                to helm template, typically defined as a block. ValuesObject\n                                takes precedence over Values, so use one or the other.\n                              type: string\n                            valuesObject:\n                              description: ValuesObject specifies Helm values to be\n                                passed to helm template, defined as a map. This takes\n                                precedence over Values.\n                              type: object\n                              x-kubernetes-preserve-unknown-fields: true\n                            version:\n                              description: Version is the Helm version to use for\n                                templating (\"3\")\n                              type: string\n                          type: object\n                        kustomize:\n                          description: Kustomize holds kustomize specific options\n                          properties:\n                            commonAnnotations:\n                              additionalProperties:\n                                type: string\n                              description: CommonAnnotations is a list of additional\n                                annotations to add to rendered manifests\n                              type: object\n                            commonAnnotationsEnvsubst:\n                              description: CommonAnnotationsEnvsubst specifies whether\n                                to apply env variables substitution for annotation\n                                values\n                              type: boolean\n                            commonLabels:\n                              additionalProperties:\n                                type: string\n                              description: CommonLabels is a list of additional labels\n                                to add to rendered manifests\n                              type: object\n                            forceCommonAnnotations:\n                              description: ForceCommonAnnotations specifies whether\n                                to force applying common annotations to resources\n                                for Kustomize apps\n                              type: boolean\n                            forceCommonLabels:\n                              description: ForceCommonLabels specifies whether to\n                                force applying common labels to resources for Kustomize\n                                apps\n                              type: boolean\n                            images:\n                              description: Images is a list of Kustomize image override\n                                specifications\n                              items:\n                                description: KustomizeImage represents a Kustomize\n                                  image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                type: string\n                              type: array\n                            namePrefix:\n                              description: NamePrefix is a prefix appended to resources\n                                for Kustomize apps\n                              type: string\n                            nameSuffix:\n                              description: NameSuffix is a suffix appended to resources\n                                for Kustomize apps\n                              type: string\n                            namespace:\n                              description: Namespace sets the namespace that Kustomize\n                                adds to all resources\n                              type: string\n                            replicas:\n                              description: Replicas is a list of Kustomize Replicas\n                                override specifications\n                              items:\n                                properties:\n                                  count:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Number of replicas\n                                    x-kubernetes-int-or-string: true\n                                  name:\n                                    description: Name of Deployment or StatefulSet\n                                    type: string\n                                required:\n                                - count\n                                - name\n                                type: object\n                              type: array\n                            version:\n                              description: Version controls which version of Kustomize\n                                to use for rendering manifests\n                              type: string\n                          type: object\n                        path:\n                          description: Path is a directory path within the Git repository,\n                            and is only valid for applications sourced from Git.\n                          type: string\n                        plugin:\n                          description: Plugin holds config management plugin specific\n                            options\n                          properties:\n                            env:\n                              description: Env is a list of environment variable entries\n                              items:\n                                description: EnvEntry represents an entry in the application's\n                                  environment\n                                properties:\n                                  name:\n                                    description: Name is the name of the variable,\n                                      usually expressed in uppercase\n                                    type: string\n                                  value:\n                                    description: Value is the value of the variable\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            name:\n                              type: string\n                            parameters:\n                              items:\n                                properties:\n                                  array:\n                                    description: Array is the value of an array type\n                                      parameter.\n                                    items:\n                                      type: string\n                                    type: array\n                                  map:\n                                    additionalProperties:\n                                      type: string\n                                    description: Map is the value of a map type parameter.\n                                    type: object\n                                  name:\n                                    description: Name is the name identifying a parameter.\n                                    type: string\n                                  string:\n                                    description: String_ is the value of a string\n                                      type parameter.\n                                    type: string\n                                type: object\n                              type: array\n                          type: object\n                        ref:\n                          description: Ref is reference to another source within sources\n                            field. This field will not be used if used with a `source`\n                            tag.\n                          type: string\n                        repoURL:\n                          description: RepoURL is the URL to the repository (Git or\n                            Helm) that contains the application manifests\n                          type: string\n                        targetRevision:\n                          description: TargetRevision defines the revision of the\n                            source to sync the application to. In case of Git, this\n                            can be commit, tag, or branch. If omitted, will equal\n                            to HEAD. In case of Helm, this is a semver tag for the\n                            Chart's version.\n                          type: string\n                      required:\n                      - repoURL\n                      type: object\n                    sources:\n                      description: Sources is a reference to the application sources\n                        used for the sync operation\n                      items:\n                        description: ApplicationSource contains all required information\n                          about the source of an application\n                        properties:\n                          chart:\n                            description: Chart is a Helm chart name, and must be specified\n                              for applications sourced from a Helm repo.\n                            type: string\n                          directory:\n                            description: Directory holds path/directory specific options\n                            properties:\n                              exclude:\n                                description: Exclude contains a glob pattern to match\n                                  paths against that should be explicitly excluded\n                                  from being used during manifest generation\n                                type: string\n                              include:\n                                description: Include contains a glob pattern to match\n                                  paths against that should be explicitly included\n                                  during manifest generation\n                                type: string\n                              jsonnet:\n                                description: Jsonnet holds options specific to Jsonnet\n                                properties:\n                                  extVars:\n                                    description: ExtVars is a list of Jsonnet External\n                                      Variables\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    description: Additional library search dirs\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    description: TLAS is a list of Jsonnet Top-level\n                                      Arguments\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                description: Recurse specifies whether to scan a directory\n                                  recursively for manifests\n                                type: boolean\n                            type: object\n                          helm:\n                            description: Helm holds helm specific options\n                            properties:\n                              fileParameters:\n                                description: FileParameters are file parameters to\n                                  the helm template\n                                items:\n                                  description: HelmFileParameter is a file parameter\n                                    that's passed to helm template during manifest\n                                    generation\n                                  properties:\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    path:\n                                      description: Path is the path to the file containing\n                                        the values for the Helm parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                description: IgnoreMissingValueFiles prevents helm\n                                  template from failing when valueFiles do not exist\n                                  locally by not appending them to helm template --values\n                                type: boolean\n                              parameters:\n                                description: Parameters is a list of Helm parameters\n                                  which are passed to the helm template command upon\n                                  manifest generation\n                                items:\n                                  description: HelmParameter is a parameter that's\n                                    passed to helm template during manifest generation\n                                  properties:\n                                    forceString:\n                                      description: ForceString determines whether\n                                        to tell Helm to interpret booleans and numbers\n                                        as strings\n                                      type: boolean\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    value:\n                                      description: Value is the value for the Helm\n                                        parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                description: PassCredentials pass credentials to all\n                                  domains (Helm's --pass-credentials)\n                                type: boolean\n                              releaseName:\n                                description: ReleaseName is the Helm release name\n                                  to use. If omitted it will use the application name\n                                type: string\n                              skipCrds:\n                                description: SkipCrds skips custom resource definition\n                                  installation step (Helm's --skip-crds)\n                                type: boolean\n                              valueFiles:\n                                description: ValuesFiles is a list of Helm value files\n                                  to use when generating a template\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                description: Values specifies Helm values to be passed\n                                  to helm template, typically defined as a block.\n                                  ValuesObject takes precedence over Values, so use\n                                  one or the other.\n                                type: string\n                              valuesObject:\n                                description: ValuesObject specifies Helm values to\n                                  be passed to helm template, defined as a map. This\n                                  takes precedence over Values.\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                description: Version is the Helm version to use for\n                                  templating (\"3\")\n                                type: string\n                            type: object\n                          kustomize:\n                            description: Kustomize holds kustomize specific options\n                            properties:\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                description: CommonAnnotations is a list of additional\n                                  annotations to add to rendered manifests\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                description: CommonAnnotationsEnvsubst specifies whether\n                                  to apply env variables substitution for annotation\n                                  values\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                description: CommonLabels is a list of additional\n                                  labels to add to rendered manifests\n                                type: object\n                              forceCommonAnnotations:\n                                description: ForceCommonAnnotations specifies whether\n                                  to force applying common annotations to resources\n                                  for Kustomize apps\n                                type: boolean\n                              forceCommonLabels:\n                                description: ForceCommonLabels specifies whether to\n                                  force applying common labels to resources for Kustomize\n                                  apps\n                                type: boolean\n                              images:\n                                description: Images is a list of Kustomize image override\n                                  specifications\n                                items:\n                                  description: KustomizeImage represents a Kustomize\n                                    image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                  type: string\n                                type: array\n                              namePrefix:\n                                description: NamePrefix is a prefix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              nameSuffix:\n                                description: NameSuffix is a suffix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              namespace:\n                                description: Namespace sets the namespace that Kustomize\n                                  adds to all resources\n                                type: string\n                              replicas:\n                                description: Replicas is a list of Kustomize Replicas\n                                  override specifications\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      description: Number of replicas\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      description: Name of Deployment or StatefulSet\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                description: Version controls which version of Kustomize\n                                  to use for rendering manifests\n                                type: string\n                            type: object\n                          path:\n                            description: Path is a directory path within the Git repository,\n                              and is only valid for applications sourced from Git.\n                            type: string\n                          plugin:\n                            description: Plugin holds config management plugin specific\n                              options\n                            properties:\n                              env:\n                                description: Env is a list of environment variable\n                                  entries\n                                items:\n                                  description: EnvEntry represents an entry in the\n                                    application's environment\n                                  properties:\n                                    name:\n                                      description: Name is the name of the variable,\n                                        usually expressed in uppercase\n                                      type: string\n                                    value:\n                                      description: Value is the value of the variable\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      description: Array is the value of an array\n                                        type parameter.\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      description: Map is the value of a map type\n                                        parameter.\n                                      type: object\n                                    name:\n                                      description: Name is the name identifying a\n                                        parameter.\n                                      type: string\n                                    string:\n                                      description: String_ is the value of a string\n                                        type parameter.\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            description: Ref is reference to another source within\n                              sources field. This field will not be used if used with\n                              a `source` tag.\n                            type: string\n                          repoURL:\n                            description: RepoURL is the URL to the repository (Git\n                              or Helm) that contains the application manifests\n                            type: string\n                          targetRevision:\n                            description: TargetRevision defines the revision of the\n                              source to sync the application to. In case of Git, this\n                              can be commit, tag, or branch. If omitted, will equal\n                              to HEAD. In case of Helm, this is a semver tag for the\n                              Chart's version.\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      type: array\n                  required:\n                  - deployedAt\n                  - id\n                  type: object\n                type: array\n              observedAt:\n                description: 'ObservedAt indicates when the application state was\n                  updated without querying latest git state Deprecated: controller\n                  no longer updates ObservedAt field'\n                format: date-time\n                type: string\n              operationState:\n                description: OperationState contains information about any ongoing\n                  operations, such as a sync\n                properties:\n                  finishedAt:\n                    description: FinishedAt contains time of operation completion\n                    format: date-time\n                    type: string\n                  message:\n                    description: Message holds any pertinent messages when attempting\n                      to perform operation (typically errors).\n                    type: string\n                  operation:\n                    description: Operation is the original requested operation\n                    properties:\n                      info:\n                        description: Info is a list of informational items for this\n                          operation\n                        items:\n                          properties:\n                            name:\n                              type: string\n                            value:\n                              type: string\n                          required:\n                          - name\n                          - value\n                          type: object\n                        type: array\n                      initiatedBy:\n                        description: InitiatedBy contains information about who initiated\n                          the operations\n                        properties:\n                          automated:\n                            description: Automated is set to true if operation was\n                              initiated automatically by the application controller.\n                            type: boolean\n                          username:\n                            description: Username contains the name of a user who\n                              started operation\n                            type: string\n                        type: object\n                      retry:\n                        description: Retry controls the strategy to apply if a sync\n                          fails\n                        properties:\n                          backoff:\n                            description: Backoff controls how to backoff on subsequent\n                              retries of failed syncs\n                            properties:\n                              duration:\n                                description: Duration is the amount to back off. Default\n                                  unit is seconds, but could also be a duration (e.g.\n                                  \"2m\", \"1h\")\n                                type: string\n                              factor:\n                                description: Factor is a factor to multiply the base\n                                  duration after each failed retry\n                                format: int64\n                                type: integer\n                              maxDuration:\n                                description: MaxDuration is the maximum amount of\n                                  time allowed for the backoff strategy\n                                type: string\n                            type: object\n                          limit:\n                            description: Limit is the maximum number of attempts for\n                              retrying a failed sync. If set to 0, no retries will\n                              be performed.\n                            format: int64\n                            type: integer\n                        type: object\n                      sync:\n                        description: Sync contains parameters for the operation\n                        properties:\n                          dryRun:\n                            description: DryRun specifies to perform a `kubectl apply\n                              --dry-run` without actually performing the sync\n                            type: boolean\n                          manifests:\n                            description: Manifests is an optional field that overrides\n                              sync source with a local directory for development\n                            items:\n                              type: string\n                            type: array\n                          prune:\n                            description: Prune specifies to delete resources from\n                              the cluster that are no longer tracked in git\n                            type: boolean\n                          resources:\n                            description: Resources describes which resources shall\n                              be part of the sync\n                            items:\n                              description: SyncOperationResource contains resources\n                                to sync.\n                              properties:\n                                group:\n                                  type: string\n                                kind:\n                                  type: string\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              required:\n                              - kind\n                              - name\n                              type: object\n                            type: array\n                          revision:\n                            description: Revision is the revision (Git) or chart version\n                              (Helm) which to sync the application to If omitted,\n                              will use the revision specified in app spec.\n                            type: string\n                          revisions:\n                            description: Revisions is the list of revision (Git) or\n                              chart version (Helm) which to sync each source in sources\n                              field for the application to If omitted, will use the\n                              revision specified in app spec.\n                            items:\n                              type: string\n                            type: array\n                          source:\n                            description: Source overrides the source definition set\n                              in the application. This is typically set in a Rollback\n                              operation and is nil during a Sync operation\n                            properties:\n                              chart:\n                                description: Chart is a Helm chart name, and must\n                                  be specified for applications sourced from a Helm\n                                  repo.\n                                type: string\n                              directory:\n                                description: Directory holds path/directory specific\n                                  options\n                                properties:\n                                  exclude:\n                                    description: Exclude contains a glob pattern to\n                                      match paths against that should be explicitly\n                                      excluded from being used during manifest generation\n                                    type: string\n                                  include:\n                                    description: Include contains a glob pattern to\n                                      match paths against that should be explicitly\n                                      included during manifest generation\n                                    type: string\n                                  jsonnet:\n                                    description: Jsonnet holds options specific to\n                                      Jsonnet\n                                    properties:\n                                      extVars:\n                                        description: ExtVars is a list of Jsonnet\n                                          External Variables\n                                        items:\n                                          description: JsonnetVar represents a variable\n                                            to be passed to jsonnet during manifest\n                                            generation\n                                          properties:\n                                            code:\n                                              type: boolean\n                                            name:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - name\n                                          - value\n                                          type: object\n                                        type: array\n                                      libs:\n                                        description: Additional library search dirs\n                                        items:\n                                          type: string\n                                        type: array\n                                      tlas:\n                                        description: TLAS is a list of Jsonnet Top-level\n                                          Arguments\n                                        items:\n                                          description: JsonnetVar represents a variable\n                                            to be passed to jsonnet during manifest\n                                            generation\n                                          properties:\n                                            code:\n                                              type: boolean\n                                            name:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - name\n                                          - value\n                                          type: object\n                                        type: array\n                                    type: object\n                                  recurse:\n                                    description: Recurse specifies whether to scan\n                                      a directory recursively for manifests\n                                    type: boolean\n                                type: object\n                              helm:\n                                description: Helm holds helm specific options\n                                properties:\n                                  fileParameters:\n                                    description: FileParameters are file parameters\n                                      to the helm template\n                                    items:\n                                      description: HelmFileParameter is a file parameter\n                                        that's passed to helm template during manifest\n                                        generation\n                                      properties:\n                                        name:\n                                          description: Name is the name of the Helm\n                                            parameter\n                                          type: string\n                                        path:\n                                          description: Path is the path to the file\n                                            containing the values for the Helm parameter\n                                          type: string\n                                      type: object\n                                    type: array\n                                  ignoreMissingValueFiles:\n                                    description: IgnoreMissingValueFiles prevents\n                                      helm template from failing when valueFiles do\n                                      not exist locally by not appending them to helm\n                                      template --values\n                                    type: boolean\n                                  parameters:\n                                    description: Parameters is a list of Helm parameters\n                                      which are passed to the helm template command\n                                      upon manifest generation\n                                    items:\n                                      description: HelmParameter is a parameter that's\n                                        passed to helm template during manifest generation\n                                      properties:\n                                        forceString:\n                                          description: ForceString determines whether\n                                            to tell Helm to interpret booleans and\n                                            numbers as strings\n                                          type: boolean\n                                        name:\n                                          description: Name is the name of the Helm\n                                            parameter\n                                          type: string\n                                        value:\n                                          description: Value is the value for the\n                                            Helm parameter\n                                          type: string\n                                      type: object\n                                    type: array\n                                  passCredentials:\n                                    description: PassCredentials pass credentials\n                                      to all domains (Helm's --pass-credentials)\n                                    type: boolean\n                                  releaseName:\n                                    description: ReleaseName is the Helm release name\n                                      to use. If omitted it will use the application\n                                      name\n                                    type: string\n                                  skipCrds:\n                                    description: SkipCrds skips custom resource definition\n                                      installation step (Helm's --skip-crds)\n                                    type: boolean\n                                  valueFiles:\n                                    description: ValuesFiles is a list of Helm value\n                                      files to use when generating a template\n                                    items:\n                                      type: string\n                                    type: array\n                                  values:\n                                    description: Values specifies Helm values to be\n                                      passed to helm template, typically defined as\n                                      a block. ValuesObject takes precedence over\n                                      Values, so use one or the other.\n                                    type: string\n                                  valuesObject:\n                                    description: ValuesObject specifies Helm values\n                                      to be passed to helm template, defined as a\n                                      map. This takes precedence over Values.\n                                    type: object\n                                    x-kubernetes-preserve-unknown-fields: true\n                                  version:\n                                    description: Version is the Helm version to use\n                                      for templating (\"3\")\n                                    type: string\n                                type: object\n                              kustomize:\n                                description: Kustomize holds kustomize specific options\n                                properties:\n                                  commonAnnotations:\n                                    additionalProperties:\n                                      type: string\n                                    description: CommonAnnotations is a list of additional\n                                      annotations to add to rendered manifests\n                                    type: object\n                                  commonAnnotationsEnvsubst:\n                                    description: CommonAnnotationsEnvsubst specifies\n                                      whether to apply env variables substitution\n                                      for annotation values\n                                    type: boolean\n                                  commonLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: CommonLabels is a list of additional\n                                      labels to add to rendered manifests\n                                    type: object\n                                  forceCommonAnnotations:\n                                    description: ForceCommonAnnotations specifies\n                                      whether to force applying common annotations\n                                      to resources for Kustomize apps\n                                    type: boolean\n                                  forceCommonLabels:\n                                    description: ForceCommonLabels specifies whether\n                                      to force applying common labels to resources\n                                      for Kustomize apps\n                                    type: boolean\n                                  images:\n                                    description: Images is a list of Kustomize image\n                                      override specifications\n                                    items:\n                                      description: KustomizeImage represents a Kustomize\n                                        image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                      type: string\n                                    type: array\n                                  namePrefix:\n                                    description: NamePrefix is a prefix appended to\n                                      resources for Kustomize apps\n                                    type: string\n                                  nameSuffix:\n                                    description: NameSuffix is a suffix appended to\n                                      resources for Kustomize apps\n                                    type: string\n                                  namespace:\n                                    description: Namespace sets the namespace that\n                                      Kustomize adds to all resources\n                                    type: string\n                                  replicas:\n                                    description: Replicas is a list of Kustomize Replicas\n                                      override specifications\n                                    items:\n                                      properties:\n                                        count:\n                                          anyOf:\n                                          - type: integer\n                                          - type: string\n                                          description: Number of replicas\n                                          x-kubernetes-int-or-string: true\n                                        name:\n                                          description: Name of Deployment or StatefulSet\n                                          type: string\n                                      required:\n                                      - count\n                                      - name\n                                      type: object\n                                    type: array\n                                  version:\n                                    description: Version controls which version of\n                                      Kustomize to use for rendering manifests\n                                    type: string\n                                type: object\n                              path:\n                                description: Path is a directory path within the Git\n                                  repository, and is only valid for applications sourced\n                                  from Git.\n                                type: string\n                              plugin:\n                                description: Plugin holds config management plugin\n                                  specific options\n                                properties:\n                                  env:\n                                    description: Env is a list of environment variable\n                                      entries\n                                    items:\n                                      description: EnvEntry represents an entry in\n                                        the application's environment\n                                      properties:\n                                        name:\n                                          description: Name is the name of the variable,\n                                            usually expressed in uppercase\n                                          type: string\n                                        value:\n                                          description: Value is the value of the variable\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  name:\n                                    type: string\n                                  parameters:\n                                    items:\n                                      properties:\n                                        array:\n                                          description: Array is the value of an array\n                                            type parameter.\n                                          items:\n                                            type: string\n                                          type: array\n                                        map:\n                                          additionalProperties:\n                                            type: string\n                                          description: Map is the value of a map type\n                                            parameter.\n                                          type: object\n                                        name:\n                                          description: Name is the name identifying\n                                            a parameter.\n                                          type: string\n                                        string:\n                                          description: String_ is the value of a string\n                                            type parameter.\n                                          type: string\n                                      type: object\n                                    type: array\n                                type: object\n                              ref:\n                                description: Ref is reference to another source within\n                                  sources field. This field will not be used if used\n                                  with a `source` tag.\n                                type: string\n                              repoURL:\n                                description: RepoURL is the URL to the repository\n                                  (Git or Helm) that contains the application manifests\n                                type: string\n                              targetRevision:\n                                description: TargetRevision defines the revision of\n                                  the source to sync the application to. In case of\n                                  Git, this can be commit, tag, or branch. If omitted,\n                                  will equal to HEAD. In case of Helm, this is a semver\n                                  tag for the Chart's version.\n                                type: string\n                            required:\n                            - repoURL\n                            type: object\n                          sources:\n                            description: Sources overrides the source definition set\n                              in the application. This is typically set in a Rollback\n                              operation and is nil during a Sync operation\n                            items:\n                              description: ApplicationSource contains all required\n                                information about the source of an application\n                              properties:\n                                chart:\n                                  description: Chart is a Helm chart name, and must\n                                    be specified for applications sourced from a Helm\n                                    repo.\n                                  type: string\n                                directory:\n                                  description: Directory holds path/directory specific\n                                    options\n                                  properties:\n                                    exclude:\n                                      description: Exclude contains a glob pattern\n                                        to match paths against that should be explicitly\n                                        excluded from being used during manifest generation\n                                      type: string\n                                    include:\n                                      description: Include contains a glob pattern\n                                        to match paths against that should be explicitly\n                                        included during manifest generation\n                                      type: string\n                                    jsonnet:\n                                      description: Jsonnet holds options specific\n                                        to Jsonnet\n                                      properties:\n                                        extVars:\n                                          description: ExtVars is a list of Jsonnet\n                                            External Variables\n                                          items:\n                                            description: JsonnetVar represents a variable\n                                              to be passed to jsonnet during manifest\n                                              generation\n                                            properties:\n                                              code:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        libs:\n                                          description: Additional library search dirs\n                                          items:\n                                            type: string\n                                          type: array\n                                        tlas:\n                                          description: TLAS is a list of Jsonnet Top-level\n                                            Arguments\n                                          items:\n                                            description: JsonnetVar represents a variable\n                                              to be passed to jsonnet during manifest\n                                              generation\n                                            properties:\n                                              code:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                      type: object\n                                    recurse:\n                                      description: Recurse specifies whether to scan\n                                        a directory recursively for manifests\n                                      type: boolean\n                                  type: object\n                                helm:\n                                  description: Helm holds helm specific options\n                                  properties:\n                                    fileParameters:\n                                      description: FileParameters are file parameters\n                                        to the helm template\n                                      items:\n                                        description: HelmFileParameter is a file parameter\n                                          that's passed to helm template during manifest\n                                          generation\n                                        properties:\n                                          name:\n                                            description: Name is the name of the Helm\n                                              parameter\n                                            type: string\n                                          path:\n                                            description: Path is the path to the file\n                                              containing the values for the Helm parameter\n                                            type: string\n                                        type: object\n                                      type: array\n                                    ignoreMissingValueFiles:\n                                      description: IgnoreMissingValueFiles prevents\n                                        helm template from failing when valueFiles\n                                        do not exist locally by not appending them\n                                        to helm template --values\n                                      type: boolean\n                                    parameters:\n                                      description: Parameters is a list of Helm parameters\n                                        which are passed to the helm template command\n                                        upon manifest generation\n                                      items:\n                                        description: HelmParameter is a parameter\n                                          that's passed to helm template during manifest\n                                          generation\n                                        properties:\n                                          forceString:\n                                            description: ForceString determines whether\n                                              to tell Helm to interpret booleans and\n                                              numbers as strings\n                                            type: boolean\n                                          name:\n                                            description: Name is the name of the Helm\n                                              parameter\n                                            type: string\n                                          value:\n                                            description: Value is the value for the\n                                              Helm parameter\n                                            type: string\n                                        type: object\n                                      type: array\n                                    passCredentials:\n                                      description: PassCredentials pass credentials\n                                        to all domains (Helm's --pass-credentials)\n                                      type: boolean\n                                    releaseName:\n                                      description: ReleaseName is the Helm release\n                                        name to use. If omitted it will use the application\n                                        name\n                                      type: string\n                                    skipCrds:\n                                      description: SkipCrds skips custom resource\n                                        definition installation step (Helm's --skip-crds)\n                                      type: boolean\n                                    valueFiles:\n                                      description: ValuesFiles is a list of Helm value\n                                        files to use when generating a template\n                                      items:\n                                        type: string\n                                      type: array\n                                    values:\n                                      description: Values specifies Helm values to\n                                        be passed to helm template, typically defined\n                                        as a block. ValuesObject takes precedence\n                                        over Values, so use one or the other.\n                                      type: string\n                                    valuesObject:\n                                      description: ValuesObject specifies Helm values\n                                        to be passed to helm template, defined as\n                                        a map. This takes precedence over Values.\n                                      type: object\n                                      x-kubernetes-preserve-unknown-fields: true\n                                    version:\n                                      description: Version is the Helm version to\n                                        use for templating (\"3\")\n                                      type: string\n                                  type: object\n                                kustomize:\n                                  description: Kustomize holds kustomize specific\n                                    options\n                                  properties:\n                                    commonAnnotations:\n                                      additionalProperties:\n                                        type: string\n                                      description: CommonAnnotations is a list of\n                                        additional annotations to add to rendered\n                                        manifests\n                                      type: object\n                                    commonAnnotationsEnvsubst:\n                                      description: CommonAnnotationsEnvsubst specifies\n                                        whether to apply env variables substitution\n                                        for annotation values\n                                      type: boolean\n                                    commonLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: CommonLabels is a list of additional\n                                        labels to add to rendered manifests\n                                      type: object\n                                    forceCommonAnnotations:\n                                      description: ForceCommonAnnotations specifies\n                                        whether to force applying common annotations\n                                        to resources for Kustomize apps\n                                      type: boolean\n                                    forceCommonLabels:\n                                      description: ForceCommonLabels specifies whether\n                                        to force applying common labels to resources\n                                        for Kustomize apps\n                                      type: boolean\n                                    images:\n                                      description: Images is a list of Kustomize image\n                                        override specifications\n                                      items:\n                                        description: KustomizeImage represents a Kustomize\n                                          image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                        type: string\n                                      type: array\n                                    namePrefix:\n                                      description: NamePrefix is a prefix appended\n                                        to resources for Kustomize apps\n                                      type: string\n                                    nameSuffix:\n                                      description: NameSuffix is a suffix appended\n                                        to resources for Kustomize apps\n                                      type: string\n                                    namespace:\n                                      description: Namespace sets the namespace that\n                                        Kustomize adds to all resources\n                                      type: string\n                                    replicas:\n                                      description: Replicas is a list of Kustomize\n                                        Replicas override specifications\n                                      items:\n                                        properties:\n                                          count:\n                                            anyOf:\n                                            - type: integer\n                                            - type: string\n                                            description: Number of replicas\n                                            x-kubernetes-int-or-string: true\n                                          name:\n                                            description: Name of Deployment or StatefulSet\n                                            type: string\n                                        required:\n                                        - count\n                                        - name\n                                        type: object\n                                      type: array\n                                    version:\n                                      description: Version controls which version\n                                        of Kustomize to use for rendering manifests\n                                      type: string\n                                  type: object\n                                path:\n                                  description: Path is a directory path within the\n                                    Git repository, and is only valid for applications\n                                    sourced from Git.\n                                  type: string\n                                plugin:\n                                  description: Plugin holds config management plugin\n                                    specific options\n                                  properties:\n                                    env:\n                                      description: Env is a list of environment variable\n                                        entries\n                                      items:\n                                        description: EnvEntry represents an entry\n                                          in the application's environment\n                                        properties:\n                                          name:\n                                            description: Name is the name of the variable,\n                                              usually expressed in uppercase\n                                            type: string\n                                          value:\n                                            description: Value is the value of the\n                                              variable\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    name:\n                                      type: string\n                                    parameters:\n                                      items:\n                                        properties:\n                                          array:\n                                            description: Array is the value of an\n                                              array type parameter.\n                                            items:\n                                              type: string\n                                            type: array\n                                          map:\n                                            additionalProperties:\n                                              type: string\n                                            description: Map is the value of a map\n                                              type parameter.\n                                            type: object\n                                          name:\n                                            description: Name is the name identifying\n                                              a parameter.\n                                            type: string\n                                          string:\n                                            description: String_ is the value of a\n                                              string type parameter.\n                                            type: string\n                                        type: object\n                                      type: array\n                                  type: object\n                                ref:\n                                  description: Ref is reference to another source\n                                    within sources field. This field will not be used\n                                    if used with a `source` tag.\n                                  type: string\n                                repoURL:\n                                  description: RepoURL is the URL to the repository\n                                    (Git or Helm) that contains the application manifests\n                                  type: string\n                                targetRevision:\n                                  description: TargetRevision defines the revision\n                                    of the source to sync the application to. In case\n                                    of Git, this can be commit, tag, or branch. If\n                                    omitted, will equal to HEAD. In case of Helm,\n                                    this is a semver tag for the Chart's version.\n                                  type: string\n                              required:\n                              - repoURL\n                              type: object\n                            type: array\n                          syncOptions:\n                            description: SyncOptions provide per-sync sync-options,\n                              e.g. Validate=false\n                            items:\n                              type: string\n                            type: array\n                          syncStrategy:\n                            description: SyncStrategy describes how to perform the\n                              sync\n                            properties:\n                              apply:\n                                description: Apply will perform a `kubectl apply`\n                                  to perform the sync.\n                                properties:\n                                  force:\n                                    description: Force indicates whether or not to\n                                      supply the --force flag to `kubectl apply`.\n                                      The --force flag deletes and re-create the resource,\n                                      when PATCH encounters conflict and has retried\n                                      for 5 times.\n                                    type: boolean\n                                type: object\n                              hook:\n                                description: Hook will submit any referenced resources\n                                  to perform the sync. This is the default strategy\n                                properties:\n                                  force:\n                                    description: Force indicates whether or not to\n                                      supply the --force flag to `kubectl apply`.\n                                      The --force flag deletes and re-create the resource,\n                                      when PATCH encounters conflict and has retried\n                                      for 5 times.\n                                    type: boolean\n                                type: object\n                            type: object\n                        type: object\n                    type: object\n                  phase:\n                    description: Phase is the current phase of the operation\n                    type: string\n                  retryCount:\n                    description: RetryCount contains time of operation retries\n                    format: int64\n                    type: integer\n                  startedAt:\n                    description: StartedAt contains time of operation start\n                    format: date-time\n                    type: string\n                  syncResult:\n                    description: SyncResult is the result of a Sync operation\n                    properties:\n                      managedNamespaceMetadata:\n                        description: ManagedNamespaceMetadata contains the current\n                          sync state of managed namespace metadata\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            type: object\n                        type: object\n                      resources:\n                        description: Resources contains a list of sync result items\n                          for each individual resource in a sync operation\n                        items:\n                          description: ResourceResult holds the operation result details\n                            of a specific resource\n                          properties:\n                            group:\n                              description: Group specifies the API group of the resource\n                              type: string\n                            hookPhase:\n                              description: HookPhase contains the state of any operation\n                                associated with this resource OR hook This can also\n                                contain values for non-hook resources.\n                              type: string\n                            hookType:\n                              description: HookType specifies the type of the hook.\n                                Empty for non-hook resources\n                              type: string\n                            kind:\n                              description: Kind specifies the API kind of the resource\n                              type: string\n                            message:\n                              description: Message contains an informational or error\n                                message for the last sync OR operation\n                              type: string\n                            name:\n                              description: Name specifies the name of the resource\n                              type: string\n                            namespace:\n                              description: Namespace specifies the target namespace\n                                of the resource\n                              type: string\n                            status:\n                              description: Status holds the final result of the sync.\n                                Will be empty if the resources is yet to be applied/pruned\n                                and is always zero-value for hooks\n                              type: string\n                            syncPhase:\n                              description: SyncPhase indicates the particular phase\n                                of the sync that this result was acquired in\n                              type: string\n                            version:\n                              description: Version specifies the API version of the\n                                resource\n                              type: string\n                          required:\n                          - group\n                          - kind\n                          - name\n                          - namespace\n                          - version\n                          type: object\n                        type: array\n                      revision:\n                        description: Revision holds the revision this sync operation\n                          was performed to\n                        type: string\n                      revisions:\n                        description: Revisions holds the revision this sync operation\n                          was performed for respective indexed source in sources field\n                        items:\n                          type: string\n                        type: array\n                      source:\n                        description: Source records the application source information\n                          of the sync, used for comparing auto-sync\n                        properties:\n                          chart:\n                            description: Chart is a Helm chart name, and must be specified\n                              for applications sourced from a Helm repo.\n                            type: string\n                          directory:\n                            description: Directory holds path/directory specific options\n                            properties:\n                              exclude:\n                                description: Exclude contains a glob pattern to match\n                                  paths against that should be explicitly excluded\n                                  from being used during manifest generation\n                                type: string\n                              include:\n                                description: Include contains a glob pattern to match\n                                  paths against that should be explicitly included\n                                  during manifest generation\n                                type: string\n                              jsonnet:\n                                description: Jsonnet holds options specific to Jsonnet\n                                properties:\n                                  extVars:\n                                    description: ExtVars is a list of Jsonnet External\n                                      Variables\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    description: Additional library search dirs\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    description: TLAS is a list of Jsonnet Top-level\n                                      Arguments\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                description: Recurse specifies whether to scan a directory\n                                  recursively for manifests\n                                type: boolean\n                            type: object\n                          helm:\n                            description: Helm holds helm specific options\n                            properties:\n                              fileParameters:\n                                description: FileParameters are file parameters to\n                                  the helm template\n                                items:\n                                  description: HelmFileParameter is a file parameter\n                                    that's passed to helm template during manifest\n                                    generation\n                                  properties:\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    path:\n                                      description: Path is the path to the file containing\n                                        the values for the Helm parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                description: IgnoreMissingValueFiles prevents helm\n                                  template from failing when valueFiles do not exist\n                                  locally by not appending them to helm template --values\n                                type: boolean\n                              parameters:\n                                description: Parameters is a list of Helm parameters\n                                  which are passed to the helm template command upon\n                                  manifest generation\n                                items:\n                                  description: HelmParameter is a parameter that's\n                                    passed to helm template during manifest generation\n                                  properties:\n                                    forceString:\n                                      description: ForceString determines whether\n                                        to tell Helm to interpret booleans and numbers\n                                        as strings\n                                      type: boolean\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    value:\n                                      description: Value is the value for the Helm\n                                        parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                description: PassCredentials pass credentials to all\n                                  domains (Helm's --pass-credentials)\n                                type: boolean\n                              releaseName:\n                                description: ReleaseName is the Helm release name\n                                  to use. If omitted it will use the application name\n                                type: string\n                              skipCrds:\n                                description: SkipCrds skips custom resource definition\n                                  installation step (Helm's --skip-crds)\n                                type: boolean\n                              valueFiles:\n                                description: ValuesFiles is a list of Helm value files\n                                  to use when generating a template\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                description: Values specifies Helm values to be passed\n                                  to helm template, typically defined as a block.\n                                  ValuesObject takes precedence over Values, so use\n                                  one or the other.\n                                type: string\n                              valuesObject:\n                                description: ValuesObject specifies Helm values to\n                                  be passed to helm template, defined as a map. This\n                                  takes precedence over Values.\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                description: Version is the Helm version to use for\n                                  templating (\"3\")\n                                type: string\n                            type: object\n                          kustomize:\n                            description: Kustomize holds kustomize specific options\n                            properties:\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                description: CommonAnnotations is a list of additional\n                                  annotations to add to rendered manifests\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                description: CommonAnnotationsEnvsubst specifies whether\n                                  to apply env variables substitution for annotation\n                                  values\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                description: CommonLabels is a list of additional\n                                  labels to add to rendered manifests\n                                type: object\n                              forceCommonAnnotations:\n                                description: ForceCommonAnnotations specifies whether\n                                  to force applying common annotations to resources\n                                  for Kustomize apps\n                                type: boolean\n                              forceCommonLabels:\n                                description: ForceCommonLabels specifies whether to\n                                  force applying common labels to resources for Kustomize\n                                  apps\n                                type: boolean\n                              images:\n                                description: Images is a list of Kustomize image override\n                                  specifications\n                                items:\n                                  description: KustomizeImage represents a Kustomize\n                                    image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                  type: string\n                                type: array\n                              namePrefix:\n                                description: NamePrefix is a prefix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              nameSuffix:\n                                description: NameSuffix is a suffix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              namespace:\n                                description: Namespace sets the namespace that Kustomize\n                                  adds to all resources\n                                type: string\n                              replicas:\n                                description: Replicas is a list of Kustomize Replicas\n                                  override specifications\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      description: Number of replicas\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      description: Name of Deployment or StatefulSet\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                description: Version controls which version of Kustomize\n                                  to use for rendering manifests\n                                type: string\n                            type: object\n                          path:\n                            description: Path is a directory path within the Git repository,\n                              and is only valid for applications sourced from Git.\n                            type: string\n                          plugin:\n                            description: Plugin holds config management plugin specific\n                              options\n                            properties:\n                              env:\n                                description: Env is a list of environment variable\n                                  entries\n                                items:\n                                  description: EnvEntry represents an entry in the\n                                    application's environment\n                                  properties:\n                                    name:\n                                      description: Name is the name of the variable,\n                                        usually expressed in uppercase\n                                      type: string\n                                    value:\n                                      description: Value is the value of the variable\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      description: Array is the value of an array\n                                        type parameter.\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      description: Map is the value of a map type\n                                        parameter.\n                                      type: object\n                                    name:\n                                      description: Name is the name identifying a\n                                        parameter.\n                                      type: string\n                                    string:\n                                      description: String_ is the value of a string\n                                        type parameter.\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            description: Ref is reference to another source within\n                              sources field. This field will not be used if used with\n                              a `source` tag.\n                            type: string\n                          repoURL:\n                            description: RepoURL is the URL to the repository (Git\n                              or Helm) that contains the application manifests\n                            type: string\n                          targetRevision:\n                            description: TargetRevision defines the revision of the\n                              source to sync the application to. In case of Git, this\n                              can be commit, tag, or branch. If omitted, will equal\n                              to HEAD. In case of Helm, this is a semver tag for the\n                              Chart's version.\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      sources:\n                        description: Source records the application source information\n                          of the sync, used for comparing auto-sync\n                        items:\n                          description: ApplicationSource contains all required information\n                            about the source of an application\n                          properties:\n                            chart:\n                              description: Chart is a Helm chart name, and must be\n                                specified for applications sourced from a Helm repo.\n                              type: string\n                            directory:\n                              description: Directory holds path/directory specific\n                                options\n                              properties:\n                                exclude:\n                                  description: Exclude contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    excluded from being used during manifest generation\n                                  type: string\n                                include:\n                                  description: Include contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    included during manifest generation\n                                  type: string\n                                jsonnet:\n                                  description: Jsonnet holds options specific to Jsonnet\n                                  properties:\n                                    extVars:\n                                      description: ExtVars is a list of Jsonnet External\n                                        Variables\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    libs:\n                                      description: Additional library search dirs\n                                      items:\n                                        type: string\n                                      type: array\n                                    tlas:\n                                      description: TLAS is a list of Jsonnet Top-level\n                                        Arguments\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                  type: object\n                                recurse:\n                                  description: Recurse specifies whether to scan a\n                                    directory recursively for manifests\n                                  type: boolean\n                              type: object\n                            helm:\n                              description: Helm holds helm specific options\n                              properties:\n                                fileParameters:\n                                  description: FileParameters are file parameters\n                                    to the helm template\n                                  items:\n                                    description: HelmFileParameter is a file parameter\n                                      that's passed to helm template during manifest\n                                      generation\n                                    properties:\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      path:\n                                        description: Path is the path to the file\n                                          containing the values for the Helm parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                ignoreMissingValueFiles:\n                                  description: IgnoreMissingValueFiles prevents helm\n                                    template from failing when valueFiles do not exist\n                                    locally by not appending them to helm template\n                                    --values\n                                  type: boolean\n                                parameters:\n                                  description: Parameters is a list of Helm parameters\n                                    which are passed to the helm template command\n                                    upon manifest generation\n                                  items:\n                                    description: HelmParameter is a parameter that's\n                                      passed to helm template during manifest generation\n                                    properties:\n                                      forceString:\n                                        description: ForceString determines whether\n                                          to tell Helm to interpret booleans and numbers\n                                          as strings\n                                        type: boolean\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      value:\n                                        description: Value is the value for the Helm\n                                          parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                passCredentials:\n                                  description: PassCredentials pass credentials to\n                                    all domains (Helm's --pass-credentials)\n                                  type: boolean\n                                releaseName:\n                                  description: ReleaseName is the Helm release name\n                                    to use. If omitted it will use the application\n                                    name\n                                  type: string\n                                skipCrds:\n                                  description: SkipCrds skips custom resource definition\n                                    installation step (Helm's --skip-crds)\n                                  type: boolean\n                                valueFiles:\n                                  description: ValuesFiles is a list of Helm value\n                                    files to use when generating a template\n                                  items:\n                                    type: string\n                                  type: array\n                                values:\n                                  description: Values specifies Helm values to be\n                                    passed to helm template, typically defined as\n                                    a block. ValuesObject takes precedence over Values,\n                                    so use one or the other.\n                                  type: string\n                                valuesObject:\n                                  description: ValuesObject specifies Helm values\n                                    to be passed to helm template, defined as a map.\n                                    This takes precedence over Values.\n                                  type: object\n                                  x-kubernetes-preserve-unknown-fields: true\n                                version:\n                                  description: Version is the Helm version to use\n                                    for templating (\"3\")\n                                  type: string\n                              type: object\n                            kustomize:\n                              description: Kustomize holds kustomize specific options\n                              properties:\n                                commonAnnotations:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonAnnotations is a list of additional\n                                    annotations to add to rendered manifests\n                                  type: object\n                                commonAnnotationsEnvsubst:\n                                  description: CommonAnnotationsEnvsubst specifies\n                                    whether to apply env variables substitution for\n                                    annotation values\n                                  type: boolean\n                                commonLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonLabels is a list of additional\n                                    labels to add to rendered manifests\n                                  type: object\n                                forceCommonAnnotations:\n                                  description: ForceCommonAnnotations specifies whether\n                                    to force applying common annotations to resources\n                                    for Kustomize apps\n                                  type: boolean\n                                forceCommonLabels:\n                                  description: ForceCommonLabels specifies whether\n                                    to force applying common labels to resources for\n                                    Kustomize apps\n                                  type: boolean\n                                images:\n                                  description: Images is a list of Kustomize image\n                                    override specifications\n                                  items:\n                                    description: KustomizeImage represents a Kustomize\n                                      image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                    type: string\n                                  type: array\n                                namePrefix:\n                                  description: NamePrefix is a prefix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                nameSuffix:\n                                  description: NameSuffix is a suffix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                namespace:\n                                  description: Namespace sets the namespace that Kustomize\n                                    adds to all resources\n                                  type: string\n                                replicas:\n                                  description: Replicas is a list of Kustomize Replicas\n                                    override specifications\n                                  items:\n                                    properties:\n                                      count:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        description: Number of replicas\n                                        x-kubernetes-int-or-string: true\n                                      name:\n                                        description: Name of Deployment or StatefulSet\n                                        type: string\n                                    required:\n                                    - count\n                                    - name\n                                    type: object\n                                  type: array\n                                version:\n                                  description: Version controls which version of Kustomize\n                                    to use for rendering manifests\n                                  type: string\n                              type: object\n                            path:\n                              description: Path is a directory path within the Git\n                                repository, and is only valid for applications sourced\n                                from Git.\n                              type: string\n                            plugin:\n                              description: Plugin holds config management plugin specific\n                                options\n                              properties:\n                                env:\n                                  description: Env is a list of environment variable\n                                    entries\n                                  items:\n                                    description: EnvEntry represents an entry in the\n                                      application's environment\n                                    properties:\n                                      name:\n                                        description: Name is the name of the variable,\n                                          usually expressed in uppercase\n                                        type: string\n                                      value:\n                                        description: Value is the value of the variable\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                name:\n                                  type: string\n                                parameters:\n                                  items:\n                                    properties:\n                                      array:\n                                        description: Array is the value of an array\n                                          type parameter.\n                                        items:\n                                          type: string\n                                        type: array\n                                      map:\n                                        additionalProperties:\n                                          type: string\n                                        description: Map is the value of a map type\n                                          parameter.\n                                        type: object\n                                      name:\n                                        description: Name is the name identifying\n                                          a parameter.\n                                        type: string\n                                      string:\n                                        description: String_ is the value of a string\n                                          type parameter.\n                                        type: string\n                                    type: object\n                                  type: array\n                              type: object\n                            ref:\n                              description: Ref is reference to another source within\n                                sources field. This field will not be used if used\n                                with a `source` tag.\n                              type: string\n                            repoURL:\n                              description: RepoURL is the URL to the repository (Git\n                                or Helm) that contains the application manifests\n                              type: string\n                            targetRevision:\n                              description: TargetRevision defines the revision of\n                                the source to sync the application to. In case of\n                                Git, this can be commit, tag, or branch. If omitted,\n                                will equal to HEAD. In case of Helm, this is a semver\n                                tag for the Chart's version.\n                              type: string\n                          required:\n                          - repoURL\n                          type: object\n                        type: array\n                    required:\n                    - revision\n                    type: object\n                required:\n                - operation\n                - phase\n                - startedAt\n                type: object\n              reconciledAt:\n                description: ReconciledAt indicates when the application state was\n                  reconciled using the latest git version\n                format: date-time\n                type: string\n              resourceHealthSource:\n                description: 'ResourceHealthSource indicates where the resource health\n                  status is stored: inline if not set or appTree'\n                type: string\n              resources:\n                description: Resources is a list of Kubernetes resources managed by\n                  this application\n                items:\n                  description: 'ResourceStatus holds the current sync and health status\n                    of a resource TODO: describe members of this type'\n                  properties:\n                    group:\n                      type: string\n                    health:\n                      description: HealthStatus contains information about the currently\n                        observed health state of an application or resource\n                      properties:\n                        message:\n                          description: Message is a human-readable informational message\n                            describing the health status\n                          type: string\n                        status:\n                          description: Status holds the status code of the application\n                            or resource\n                          type: string\n                      type: object\n                    hook:\n                      type: boolean\n                    kind:\n                      type: string\n                    name:\n                      type: string\n                    namespace:\n                      type: string\n                    requiresPruning:\n                      type: boolean\n                    status:\n                      description: SyncStatusCode is a type which represents possible\n                        comparison results\n                      type: string\n                    syncWave:\n                      format: int64\n                      type: integer\n                    version:\n                      type: string\n                  type: object\n                type: array\n              sourceType:\n                description: SourceType specifies the type of this application\n                type: string\n              sourceTypes:\n                description: SourceTypes specifies the type of the sources included\n                  in the application\n                items:\n                  description: ApplicationSourceType specifies the type of the application's\n                    source\n                  type: string\n                type: array\n              summary:\n                description: Summary contains a list of URLs and container images\n                  used by this application\n                properties:\n                  externalURLs:\n                    description: ExternalURLs holds all external URLs of application\n                      child resources.\n                    items:\n                      type: string\n                    type: array\n                  images:\n                    description: Images holds all images of application child resources.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              sync:\n                description: Sync contains information about the application's current\n                  sync status\n                properties:\n                  comparedTo:\n                    description: ComparedTo contains information about what has been\n                      compared\n                    properties:\n                      destination:\n                        description: Destination is a reference to the application's\n                          destination used for comparison\n                        properties:\n                          name:\n                            description: Name is an alternate way of specifying the\n                              target cluster by its symbolic name\n                            type: string\n                          namespace:\n                            description: Namespace specifies the target namespace\n                              for the application's resources. The namespace will\n                              only be set for namespace-scoped resources that have\n                              not set a value for .metadata.namespace\n                            type: string\n                          server:\n                            description: Server specifies the URL of the target cluster\n                              and must be set to the Kubernetes control plane API\n                            type: string\n                        type: object\n                      ignoreDifferences:\n                        description: IgnoreDifferences is a reference to the application's\n                          ignored differences used for comparison\n                        items:\n                          description: ResourceIgnoreDifferences contains resource\n                            filter and list of json paths which should be ignored\n                            during comparison with live state.\n                          properties:\n                            group:\n                              type: string\n                            jqPathExpressions:\n                              items:\n                                type: string\n                              type: array\n                            jsonPointers:\n                              items:\n                                type: string\n                              type: array\n                            kind:\n                              type: string\n                            managedFieldsManagers:\n                              description: ManagedFieldsManagers is a list of trusted\n                                managers. Fields mutated by those managers will take\n                                precedence over the desired state defined in the SCM\n                                and won't be displayed in diffs\n                              items:\n                                type: string\n                              type: array\n                            name:\n                              type: string\n                            namespace:\n                              type: string\n                          required:\n                          - kind\n                          type: object\n                        type: array\n                      source:\n                        description: Source is a reference to the application's source\n                          used for comparison\n                        properties:\n                          chart:\n                            description: Chart is a Helm chart name, and must be specified\n                              for applications sourced from a Helm repo.\n                            type: string\n                          directory:\n                            description: Directory holds path/directory specific options\n                            properties:\n                              exclude:\n                                description: Exclude contains a glob pattern to match\n                                  paths against that should be explicitly excluded\n                                  from being used during manifest generation\n                                type: string\n                              include:\n                                description: Include contains a glob pattern to match\n                                  paths against that should be explicitly included\n                                  during manifest generation\n                                type: string\n                              jsonnet:\n                                description: Jsonnet holds options specific to Jsonnet\n                                properties:\n                                  extVars:\n                                    description: ExtVars is a list of Jsonnet External\n                                      Variables\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    description: Additional library search dirs\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    description: TLAS is a list of Jsonnet Top-level\n                                      Arguments\n                                    items:\n                                      description: JsonnetVar represents a variable\n                                        to be passed to jsonnet during manifest generation\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                description: Recurse specifies whether to scan a directory\n                                  recursively for manifests\n                                type: boolean\n                            type: object\n                          helm:\n                            description: Helm holds helm specific options\n                            properties:\n                              fileParameters:\n                                description: FileParameters are file parameters to\n                                  the helm template\n                                items:\n                                  description: HelmFileParameter is a file parameter\n                                    that's passed to helm template during manifest\n                                    generation\n                                  properties:\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    path:\n                                      description: Path is the path to the file containing\n                                        the values for the Helm parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                description: IgnoreMissingValueFiles prevents helm\n                                  template from failing when valueFiles do not exist\n                                  locally by not appending them to helm template --values\n                                type: boolean\n                              parameters:\n                                description: Parameters is a list of Helm parameters\n                                  which are passed to the helm template command upon\n                                  manifest generation\n                                items:\n                                  description: HelmParameter is a parameter that's\n                                    passed to helm template during manifest generation\n                                  properties:\n                                    forceString:\n                                      description: ForceString determines whether\n                                        to tell Helm to interpret booleans and numbers\n                                        as strings\n                                      type: boolean\n                                    name:\n                                      description: Name is the name of the Helm parameter\n                                      type: string\n                                    value:\n                                      description: Value is the value for the Helm\n                                        parameter\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                description: PassCredentials pass credentials to all\n                                  domains (Helm's --pass-credentials)\n                                type: boolean\n                              releaseName:\n                                description: ReleaseName is the Helm release name\n                                  to use. If omitted it will use the application name\n                                type: string\n                              skipCrds:\n                                description: SkipCrds skips custom resource definition\n                                  installation step (Helm's --skip-crds)\n                                type: boolean\n                              valueFiles:\n                                description: ValuesFiles is a list of Helm value files\n                                  to use when generating a template\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                description: Values specifies Helm values to be passed\n                                  to helm template, typically defined as a block.\n                                  ValuesObject takes precedence over Values, so use\n                                  one or the other.\n                                type: string\n                              valuesObject:\n                                description: ValuesObject specifies Helm values to\n                                  be passed to helm template, defined as a map. This\n                                  takes precedence over Values.\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                description: Version is the Helm version to use for\n                                  templating (\"3\")\n                                type: string\n                            type: object\n                          kustomize:\n                            description: Kustomize holds kustomize specific options\n                            properties:\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                description: CommonAnnotations is a list of additional\n                                  annotations to add to rendered manifests\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                description: CommonAnnotationsEnvsubst specifies whether\n                                  to apply env variables substitution for annotation\n                                  values\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                description: CommonLabels is a list of additional\n                                  labels to add to rendered manifests\n                                type: object\n                              forceCommonAnnotations:\n                                description: ForceCommonAnnotations specifies whether\n                                  to force applying common annotations to resources\n                                  for Kustomize apps\n                                type: boolean\n                              forceCommonLabels:\n                                description: ForceCommonLabels specifies whether to\n                                  force applying common labels to resources for Kustomize\n                                  apps\n                                type: boolean\n                              images:\n                                description: Images is a list of Kustomize image override\n                                  specifications\n                                items:\n                                  description: KustomizeImage represents a Kustomize\n                                    image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                  type: string\n                                type: array\n                              namePrefix:\n                                description: NamePrefix is a prefix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              nameSuffix:\n                                description: NameSuffix is a suffix appended to resources\n                                  for Kustomize apps\n                                type: string\n                              namespace:\n                                description: Namespace sets the namespace that Kustomize\n                                  adds to all resources\n                                type: string\n                              replicas:\n                                description: Replicas is a list of Kustomize Replicas\n                                  override specifications\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      description: Number of replicas\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      description: Name of Deployment or StatefulSet\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                description: Version controls which version of Kustomize\n                                  to use for rendering manifests\n                                type: string\n                            type: object\n                          path:\n                            description: Path is a directory path within the Git repository,\n                              and is only valid for applications sourced from Git.\n                            type: string\n                          plugin:\n                            description: Plugin holds config management plugin specific\n                              options\n                            properties:\n                              env:\n                                description: Env is a list of environment variable\n                                  entries\n                                items:\n                                  description: EnvEntry represents an entry in the\n                                    application's environment\n                                  properties:\n                                    name:\n                                      description: Name is the name of the variable,\n                                        usually expressed in uppercase\n                                      type: string\n                                    value:\n                                      description: Value is the value of the variable\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      description: Array is the value of an array\n                                        type parameter.\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      description: Map is the value of a map type\n                                        parameter.\n                                      type: object\n                                    name:\n                                      description: Name is the name identifying a\n                                        parameter.\n                                      type: string\n                                    string:\n                                      description: String_ is the value of a string\n                                        type parameter.\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            description: Ref is reference to another source within\n                              sources field. This field will not be used if used with\n                              a `source` tag.\n                            type: string\n                          repoURL:\n                            description: RepoURL is the URL to the repository (Git\n                              or Helm) that contains the application manifests\n                            type: string\n                          targetRevision:\n                            description: TargetRevision defines the revision of the\n                              source to sync the application to. In case of Git, this\n                              can be commit, tag, or branch. If omitted, will equal\n                              to HEAD. In case of Helm, this is a semver tag for the\n                              Chart's version.\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      sources:\n                        description: Sources is a reference to the application's multiple\n                          sources used for comparison\n                        items:\n                          description: ApplicationSource contains all required information\n                            about the source of an application\n                          properties:\n                            chart:\n                              description: Chart is a Helm chart name, and must be\n                                specified for applications sourced from a Helm repo.\n                              type: string\n                            directory:\n                              description: Directory holds path/directory specific\n                                options\n                              properties:\n                                exclude:\n                                  description: Exclude contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    excluded from being used during manifest generation\n                                  type: string\n                                include:\n                                  description: Include contains a glob pattern to\n                                    match paths against that should be explicitly\n                                    included during manifest generation\n                                  type: string\n                                jsonnet:\n                                  description: Jsonnet holds options specific to Jsonnet\n                                  properties:\n                                    extVars:\n                                      description: ExtVars is a list of Jsonnet External\n                                        Variables\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    libs:\n                                      description: Additional library search dirs\n                                      items:\n                                        type: string\n                                      type: array\n                                    tlas:\n                                      description: TLAS is a list of Jsonnet Top-level\n                                        Arguments\n                                      items:\n                                        description: JsonnetVar represents a variable\n                                          to be passed to jsonnet during manifest\n                                          generation\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                  type: object\n                                recurse:\n                                  description: Recurse specifies whether to scan a\n                                    directory recursively for manifests\n                                  type: boolean\n                              type: object\n                            helm:\n                              description: Helm holds helm specific options\n                              properties:\n                                fileParameters:\n                                  description: FileParameters are file parameters\n                                    to the helm template\n                                  items:\n                                    description: HelmFileParameter is a file parameter\n                                      that's passed to helm template during manifest\n                                      generation\n                                    properties:\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      path:\n                                        description: Path is the path to the file\n                                          containing the values for the Helm parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                ignoreMissingValueFiles:\n                                  description: IgnoreMissingValueFiles prevents helm\n                                    template from failing when valueFiles do not exist\n                                    locally by not appending them to helm template\n                                    --values\n                                  type: boolean\n                                parameters:\n                                  description: Parameters is a list of Helm parameters\n                                    which are passed to the helm template command\n                                    upon manifest generation\n                                  items:\n                                    description: HelmParameter is a parameter that's\n                                      passed to helm template during manifest generation\n                                    properties:\n                                      forceString:\n                                        description: ForceString determines whether\n                                          to tell Helm to interpret booleans and numbers\n                                          as strings\n                                        type: boolean\n                                      name:\n                                        description: Name is the name of the Helm\n                                          parameter\n                                        type: string\n                                      value:\n                                        description: Value is the value for the Helm\n                                          parameter\n                                        type: string\n                                    type: object\n                                  type: array\n                                passCredentials:\n                                  description: PassCredentials pass credentials to\n                                    all domains (Helm's --pass-credentials)\n                                  type: boolean\n                                releaseName:\n                                  description: ReleaseName is the Helm release name\n                                    to use. If omitted it will use the application\n                                    name\n                                  type: string\n                                skipCrds:\n                                  description: SkipCrds skips custom resource definition\n                                    installation step (Helm's --skip-crds)\n                                  type: boolean\n                                valueFiles:\n                                  description: ValuesFiles is a list of Helm value\n                                    files to use when generating a template\n                                  items:\n                                    type: string\n                                  type: array\n                                values:\n                                  description: Values specifies Helm values to be\n                                    passed to helm template, typically defined as\n                                    a block. ValuesObject takes precedence over Values,\n                                    so use one or the other.\n                                  type: string\n                                valuesObject:\n                                  description: ValuesObject specifies Helm values\n                                    to be passed to helm template, defined as a map.\n                                    This takes precedence over Values.\n                                  type: object\n                                  x-kubernetes-preserve-unknown-fields: true\n                                version:\n                                  description: Version is the Helm version to use\n                                    for templating (\"3\")\n                                  type: string\n                              type: object\n                            kustomize:\n                              description: Kustomize holds kustomize specific options\n                              properties:\n                                commonAnnotations:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonAnnotations is a list of additional\n                                    annotations to add to rendered manifests\n                                  type: object\n                                commonAnnotationsEnvsubst:\n                                  description: CommonAnnotationsEnvsubst specifies\n                                    whether to apply env variables substitution for\n                                    annotation values\n                                  type: boolean\n                                commonLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: CommonLabels is a list of additional\n                                    labels to add to rendered manifests\n                                  type: object\n                                forceCommonAnnotations:\n                                  description: ForceCommonAnnotations specifies whether\n                                    to force applying common annotations to resources\n                                    for Kustomize apps\n                                  type: boolean\n                                forceCommonLabels:\n                                  description: ForceCommonLabels specifies whether\n                                    to force applying common labels to resources for\n                                    Kustomize apps\n                                  type: boolean\n                                images:\n                                  description: Images is a list of Kustomize image\n                                    override specifications\n                                  items:\n                                    description: KustomizeImage represents a Kustomize\n                                      image definition in the format [old_image_name=]<image_name>:<image_tag>\n                                    type: string\n                                  type: array\n                                namePrefix:\n                                  description: NamePrefix is a prefix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                nameSuffix:\n                                  description: NameSuffix is a suffix appended to\n                                    resources for Kustomize apps\n                                  type: string\n                                namespace:\n                                  description: Namespace sets the namespace that Kustomize\n                                    adds to all resources\n                                  type: string\n                                replicas:\n                                  description: Replicas is a list of Kustomize Replicas\n                                    override specifications\n                                  items:\n                                    properties:\n                                      count:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        description: Number of replicas\n                                        x-kubernetes-int-or-string: true\n                                      name:\n                                        description: Name of Deployment or StatefulSet\n                                        type: string\n                                    required:\n                                    - count\n                                    - name\n                                    type: object\n                                  type: array\n                                version:\n                                  description: Version controls which version of Kustomize\n                                    to use for rendering manifests\n                                  type: string\n                              type: object\n                            path:\n                              description: Path is a directory path within the Git\n                                repository, and is only valid for applications sourced\n                                from Git.\n                              type: string\n                            plugin:\n                              description: Plugin holds config management plugin specific\n                                options\n                              properties:\n                                env:\n                                  description: Env is a list of environment variable\n                                    entries\n                                  items:\n                                    description: EnvEntry represents an entry in the\n                                      application's environment\n                                    properties:\n                                      name:\n                                        description: Name is the name of the variable,\n                                          usually expressed in uppercase\n                                        type: string\n                                      value:\n                                        description: Value is the value of the variable\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                name:\n                                  type: string\n                                parameters:\n                                  items:\n                                    properties:\n                                      array:\n                                        description: Array is the value of an array\n                                          type parameter.\n                                        items:\n                                          type: string\n                                        type: array\n                                      map:\n                                        additionalProperties:\n                                          type: string\n                                        description: Map is the value of a map type\n                                          parameter.\n                                        type: object\n                                      name:\n                                        description: Name is the name identifying\n                                          a parameter.\n                                        type: string\n                                      string:\n                                        description: String_ is the value of a string\n                                          type parameter.\n                                        type: string\n                                    type: object\n                                  type: array\n                              type: object\n                            ref:\n                              description: Ref is reference to another source within\n                                sources field. This field will not be used if used\n                                with a `source` tag.\n                              type: string\n                            repoURL:\n                              description: RepoURL is the URL to the repository (Git\n                                or Helm) that contains the application manifests\n                              type: string\n                            targetRevision:\n                              description: TargetRevision defines the revision of\n                                the source to sync the application to. In case of\n                                Git, this can be commit, tag, or branch. If omitted,\n                                will equal to HEAD. In case of Helm, this is a semver\n                                tag for the Chart's version.\n                              type: string\n                          required:\n                          - repoURL\n                          type: object\n                        type: array\n                    required:\n                    - destination\n                    type: object\n                  revision:\n                    description: Revision contains information about the revision\n                      the comparison has been performed to\n                    type: string\n                  revisions:\n                    description: Revisions contains information about the revisions\n                      of multiple sources the comparison has been performed to\n                    items:\n                      type: string\n                    type: array\n                  status:\n                    description: Status is the sync state of the comparison\n                    type: string\n                required:\n                - status\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app.kubernetes.io/name: applicationsets.argoproj.io\n    app.kubernetes.io/part-of: argocd\n  name: applicationsets.argoproj.io\nspec:\n  group: argoproj.io\n  names:\n    kind: ApplicationSet\n    listKind: ApplicationSetList\n    plural: applicationsets\n    shortNames:\n    - appset\n    - appsets\n    singular: applicationset\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        properties:\n          apiVersion:\n            type: string\n          kind:\n            type: string\n          metadata:\n            type: object\n          spec:\n            properties:\n              applyNestedSelectors:\n                type: boolean\n              generators:\n                items:\n                  properties:\n                    clusterDecisionResource:\n                      properties:\n                        configMapRef:\n                          type: string\n                        labelSelector:\n                          properties:\n                            matchExpressions:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  operator:\n                                    type: string\n                                  values:\n                                    items:\n                                      type: string\n                                    type: array\n                                required:\n                                - key\n                                - operator\n                                type: object\n                              type: array\n                            matchLabels:\n                              additionalProperties:\n                                type: string\n                              type: object\n                          type: object\n                        name:\n                          type: string\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      required:\n                      - configMapRef\n                      type: object\n                    clusters:\n                      properties:\n                        selector:\n                          properties:\n                            matchExpressions:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  operator:\n                                    type: string\n                                  values:\n                                    items:\n                                      type: string\n                                    type: array\n                                required:\n                                - key\n                                - operator\n                                type: object\n                              type: array\n                            matchLabels:\n                              additionalProperties:\n                                type: string\n                              type: object\n                          type: object\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      type: object\n                    git:\n                      properties:\n                        directories:\n                          items:\n                            properties:\n                              exclude:\n                                type: boolean\n                              path:\n                                type: string\n                            required:\n                            - path\n                            type: object\n                          type: array\n                        files:\n                          items:\n                            properties:\n                              path:\n                                type: string\n                            required:\n                            - path\n                            type: object\n                          type: array\n                        pathParamPrefix:\n                          type: string\n                        repoURL:\n                          type: string\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        revision:\n                          type: string\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      required:\n                      - repoURL\n                      - revision\n                      type: object\n                    list:\n                      properties:\n                        elements:\n                          items:\n                            x-kubernetes-preserve-unknown-fields: true\n                          type: array\n                        elementsYaml:\n                          type: string\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                      required:\n                      - elements\n                      type: object\n                    matrix:\n                      properties:\n                        generators:\n                          items:\n                            properties:\n                              clusterDecisionResource:\n                                properties:\n                                  configMapRef:\n                                    type: string\n                                  labelSelector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                  name:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              clusters:\n                                properties:\n                                  selector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              git:\n                                properties:\n                                  directories:\n                                    items:\n                                      properties:\n                                        exclude:\n                                          type: boolean\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  files:\n                                    items:\n                                      properties:\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  pathParamPrefix:\n                                    type: string\n                                  repoURL:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  revision:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - repoURL\n                                - revision\n                                type: object\n                              list:\n                                properties:\n                                  elements:\n                                    items:\n                                      x-kubernetes-preserve-unknown-fields: true\n                                    type: array\n                                  elementsYaml:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                required:\n                                - elements\n                                type: object\n                              matrix:\n                                x-kubernetes-preserve-unknown-fields: true\n                              merge:\n                                x-kubernetes-preserve-unknown-fields: true\n                              plugin:\n                                properties:\n                                  configMapRef:\n                                    properties:\n                                      name:\n                                        type: string\n                                    required:\n                                    - name\n                                    type: object\n                                  input:\n                                    properties:\n                                      parameters:\n                                        additionalProperties:\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        type: object\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              pullRequest:\n                                properties:\n                                  azuredevops:\n                                    properties:\n                                      api:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      organization:\n                                        type: string\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    - project\n                                    - repo\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      bearerToken:\n                                        properties:\n                                          tokenRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                        required:\n                                        - tokenRef\n                                        type: object\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    - repo\n                                    type: object\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        targetBranchMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    - repo\n                                    type: object\n                                  github:\n                                    properties:\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      project:\n                                        type: string\n                                      pullRequestState:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - project\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                type: object\n                              scmProvider:\n                                properties:\n                                  awsCodeCommit:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      region:\n                                        type: string\n                                      role:\n                                        type: string\n                                      tagFilters:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - key\n                                          type: object\n                                        type: array\n                                    type: object\n                                  azureDevOps:\n                                    properties:\n                                      accessTokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      teamProject:\n                                        type: string\n                                    required:\n                                    - accessTokenRef\n                                    - organization\n                                    - teamProject\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      appPasswordRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      owner:\n                                        type: string\n                                      user:\n                                        type: string\n                                    required:\n                                    - appPasswordRef\n                                    - owner\n                                    - user\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      project:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    type: object\n                                  cloneProtocol:\n                                    type: string\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        labelMatch:\n                                          type: string\n                                        pathsDoNotExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        pathsExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        repositoryMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      owner:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    type: object\n                                  github:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      group:\n                                        type: string\n                                      includeSubgroups:\n                                        type: boolean\n                                      insecure:\n                                        type: boolean\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - group\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              selector:\n                                properties:\n                                  matchExpressions:\n                                    items:\n                                      properties:\n                                        key:\n                                          type: string\n                                        operator:\n                                          type: string\n                                        values:\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                            type: object\n                          type: array\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                      required:\n                      - generators\n                      type: object\n                    merge:\n                      properties:\n                        generators:\n                          items:\n                            properties:\n                              clusterDecisionResource:\n                                properties:\n                                  configMapRef:\n                                    type: string\n                                  labelSelector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                  name:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              clusters:\n                                properties:\n                                  selector:\n                                    properties:\n                                      matchExpressions:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            operator:\n                                              type: string\n                                            values:\n                                              items:\n                                                type: string\n                                              type: array\n                                          required:\n                                          - key\n                                          - operator\n                                          type: object\n                                        type: array\n                                      matchLabels:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                    type: object\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              git:\n                                properties:\n                                  directories:\n                                    items:\n                                      properties:\n                                        exclude:\n                                          type: boolean\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  files:\n                                    items:\n                                      properties:\n                                        path:\n                                          type: string\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                  pathParamPrefix:\n                                    type: string\n                                  repoURL:\n                                    type: string\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  revision:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - repoURL\n                                - revision\n                                type: object\n                              list:\n                                properties:\n                                  elements:\n                                    items:\n                                      x-kubernetes-preserve-unknown-fields: true\n                                    type: array\n                                  elementsYaml:\n                                    type: string\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                required:\n                                - elements\n                                type: object\n                              matrix:\n                                x-kubernetes-preserve-unknown-fields: true\n                              merge:\n                                x-kubernetes-preserve-unknown-fields: true\n                              plugin:\n                                properties:\n                                  configMapRef:\n                                    properties:\n                                      name:\n                                        type: string\n                                    required:\n                                    - name\n                                    type: object\n                                  input:\n                                    properties:\n                                      parameters:\n                                        additionalProperties:\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        type: object\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                required:\n                                - configMapRef\n                                type: object\n                              pullRequest:\n                                properties:\n                                  azuredevops:\n                                    properties:\n                                      api:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      organization:\n                                        type: string\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    - project\n                                    - repo\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      bearerToken:\n                                        properties:\n                                          tokenRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                        required:\n                                        - tokenRef\n                                        type: object\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      project:\n                                        type: string\n                                      repo:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    - repo\n                                    type: object\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        targetBranchMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    - repo\n                                    type: object\n                                  github:\n                                    properties:\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      owner:\n                                        type: string\n                                      repo:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - owner\n                                    - repo\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      labels:\n                                        items:\n                                          type: string\n                                        type: array\n                                      project:\n                                        type: string\n                                      pullRequestState:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - project\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                type: object\n                              scmProvider:\n                                properties:\n                                  awsCodeCommit:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      region:\n                                        type: string\n                                      role:\n                                        type: string\n                                      tagFilters:\n                                        items:\n                                          properties:\n                                            key:\n                                              type: string\n                                            value:\n                                              type: string\n                                          required:\n                                          - key\n                                          type: object\n                                        type: array\n                                    type: object\n                                  azureDevOps:\n                                    properties:\n                                      accessTokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      teamProject:\n                                        type: string\n                                    required:\n                                    - accessTokenRef\n                                    - organization\n                                    - teamProject\n                                    type: object\n                                  bitbucket:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      appPasswordRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                      owner:\n                                        type: string\n                                      user:\n                                        type: string\n                                    required:\n                                    - appPasswordRef\n                                    - owner\n                                    - user\n                                    type: object\n                                  bitbucketServer:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      basicAuth:\n                                        properties:\n                                          passwordRef:\n                                            properties:\n                                              key:\n                                                type: string\n                                              secretName:\n                                                type: string\n                                            required:\n                                            - key\n                                            - secretName\n                                            type: object\n                                          username:\n                                            type: string\n                                        required:\n                                        - passwordRef\n                                        - username\n                                        type: object\n                                      project:\n                                        type: string\n                                    required:\n                                    - api\n                                    - project\n                                    type: object\n                                  cloneProtocol:\n                                    type: string\n                                  filters:\n                                    items:\n                                      properties:\n                                        branchMatch:\n                                          type: string\n                                        labelMatch:\n                                          type: string\n                                        pathsDoNotExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        pathsExist:\n                                          items:\n                                            type: string\n                                          type: array\n                                        repositoryMatch:\n                                          type: string\n                                      type: object\n                                    type: array\n                                  gitea:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      insecure:\n                                        type: boolean\n                                      owner:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - api\n                                    - owner\n                                    type: object\n                                  github:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      appSecretName:\n                                        type: string\n                                      organization:\n                                        type: string\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - organization\n                                    type: object\n                                  gitlab:\n                                    properties:\n                                      allBranches:\n                                        type: boolean\n                                      api:\n                                        type: string\n                                      group:\n                                        type: string\n                                      includeSubgroups:\n                                        type: boolean\n                                      insecure:\n                                        type: boolean\n                                      tokenRef:\n                                        properties:\n                                          key:\n                                            type: string\n                                          secretName:\n                                            type: string\n                                        required:\n                                        - key\n                                        - secretName\n                                        type: object\n                                    required:\n                                    - group\n                                    type: object\n                                  requeueAfterSeconds:\n                                    format: int64\n                                    type: integer\n                                  template:\n                                    properties:\n                                      metadata:\n                                        properties:\n                                          annotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          finalizers:\n                                            items:\n                                              type: string\n                                            type: array\n                                          labels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          name:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                        type: object\n                                      spec:\n                                        properties:\n                                          destination:\n                                            properties:\n                                              name:\n                                                type: string\n                                              namespace:\n                                                type: string\n                                              server:\n                                                type: string\n                                            type: object\n                                          ignoreDifferences:\n                                            items:\n                                              properties:\n                                                group:\n                                                  type: string\n                                                jqPathExpressions:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                jsonPointers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                kind:\n                                                  type: string\n                                                managedFieldsManagers:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                name:\n                                                  type: string\n                                                namespace:\n                                                  type: string\n                                              required:\n                                              - kind\n                                              type: object\n                                            type: array\n                                          info:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          project:\n                                            type: string\n                                          revisionHistoryLimit:\n                                            format: int64\n                                            type: integer\n                                          source:\n                                            properties:\n                                              chart:\n                                                type: string\n                                              directory:\n                                                properties:\n                                                  exclude:\n                                                    type: string\n                                                  include:\n                                                    type: string\n                                                  jsonnet:\n                                                    properties:\n                                                      extVars:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                      libs:\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      tlas:\n                                                        items:\n                                                          properties:\n                                                            code:\n                                                              type: boolean\n                                                            name:\n                                                              type: string\n                                                            value:\n                                                              type: string\n                                                          required:\n                                                          - name\n                                                          - value\n                                                          type: object\n                                                        type: array\n                                                    type: object\n                                                  recurse:\n                                                    type: boolean\n                                                type: object\n                                              helm:\n                                                properties:\n                                                  fileParameters:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        path:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  ignoreMissingValueFiles:\n                                                    type: boolean\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        forceString:\n                                                          type: boolean\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                  passCredentials:\n                                                    type: boolean\n                                                  releaseName:\n                                                    type: string\n                                                  skipCrds:\n                                                    type: boolean\n                                                  valueFiles:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  values:\n                                                    type: string\n                                                  valuesObject:\n                                                    type: object\n                                                    x-kubernetes-preserve-unknown-fields: true\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              kustomize:\n                                                properties:\n                                                  commonAnnotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  commonAnnotationsEnvsubst:\n                                                    type: boolean\n                                                  commonLabels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  forceCommonAnnotations:\n                                                    type: boolean\n                                                  forceCommonLabels:\n                                                    type: boolean\n                                                  images:\n                                                    items:\n                                                      type: string\n                                                    type: array\n                                                  namePrefix:\n                                                    type: string\n                                                  nameSuffix:\n                                                    type: string\n                                                  namespace:\n                                                    type: string\n                                                  replicas:\n                                                    items:\n                                                      properties:\n                                                        count:\n                                                          anyOf:\n                                                          - type: integer\n                                                          - type: string\n                                                          x-kubernetes-int-or-string: true\n                                                        name:\n                                                          type: string\n                                                      required:\n                                                      - count\n                                                      - name\n                                                      type: object\n                                                    type: array\n                                                  version:\n                                                    type: string\n                                                type: object\n                                              path:\n                                                type: string\n                                              plugin:\n                                                properties:\n                                                  env:\n                                                    items:\n                                                      properties:\n                                                        name:\n                                                          type: string\n                                                        value:\n                                                          type: string\n                                                      required:\n                                                      - name\n                                                      - value\n                                                      type: object\n                                                    type: array\n                                                  name:\n                                                    type: string\n                                                  parameters:\n                                                    items:\n                                                      properties:\n                                                        array:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        map:\n                                                          additionalProperties:\n                                                            type: string\n                                                          type: object\n                                                        name:\n                                                          type: string\n                                                        string:\n                                                          type: string\n                                                      type: object\n                                                    type: array\n                                                type: object\n                                              ref:\n                                                type: string\n                                              repoURL:\n                                                type: string\n                                              targetRevision:\n                                                type: string\n                                            required:\n                                            - repoURL\n                                            type: object\n                                          sources:\n                                            items:\n                                              properties:\n                                                chart:\n                                                  type: string\n                                                directory:\n                                                  properties:\n                                                    exclude:\n                                                      type: string\n                                                    include:\n                                                      type: string\n                                                    jsonnet:\n                                                      properties:\n                                                        extVars:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                        libs:\n                                                          items:\n                                                            type: string\n                                                          type: array\n                                                        tlas:\n                                                          items:\n                                                            properties:\n                                                              code:\n                                                                type: boolean\n                                                              name:\n                                                                type: string\n                                                              value:\n                                                                type: string\n                                                            required:\n                                                            - name\n                                                            - value\n                                                            type: object\n                                                          type: array\n                                                      type: object\n                                                    recurse:\n                                                      type: boolean\n                                                  type: object\n                                                helm:\n                                                  properties:\n                                                    fileParameters:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          path:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    ignoreMissingValueFiles:\n                                                      type: boolean\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          forceString:\n                                                            type: boolean\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                    passCredentials:\n                                                      type: boolean\n                                                    releaseName:\n                                                      type: string\n                                                    skipCrds:\n                                                      type: boolean\n                                                    valueFiles:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    values:\n                                                      type: string\n                                                    valuesObject:\n                                                      type: object\n                                                      x-kubernetes-preserve-unknown-fields: true\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                kustomize:\n                                                  properties:\n                                                    commonAnnotations:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    commonAnnotationsEnvsubst:\n                                                      type: boolean\n                                                    commonLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      type: object\n                                                    forceCommonAnnotations:\n                                                      type: boolean\n                                                    forceCommonLabels:\n                                                      type: boolean\n                                                    images:\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    namePrefix:\n                                                      type: string\n                                                    nameSuffix:\n                                                      type: string\n                                                    namespace:\n                                                      type: string\n                                                    replicas:\n                                                      items:\n                                                        properties:\n                                                          count:\n                                                            anyOf:\n                                                            - type: integer\n                                                            - type: string\n                                                            x-kubernetes-int-or-string: true\n                                                          name:\n                                                            type: string\n                                                        required:\n                                                        - count\n                                                        - name\n                                                        type: object\n                                                      type: array\n                                                    version:\n                                                      type: string\n                                                  type: object\n                                                path:\n                                                  type: string\n                                                plugin:\n                                                  properties:\n                                                    env:\n                                                      items:\n                                                        properties:\n                                                          name:\n                                                            type: string\n                                                          value:\n                                                            type: string\n                                                        required:\n                                                        - name\n                                                        - value\n                                                        type: object\n                                                      type: array\n                                                    name:\n                                                      type: string\n                                                    parameters:\n                                                      items:\n                                                        properties:\n                                                          array:\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          map:\n                                                            additionalProperties:\n                                                              type: string\n                                                            type: object\n                                                          name:\n                                                            type: string\n                                                          string:\n                                                            type: string\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                ref:\n                                                  type: string\n                                                repoURL:\n                                                  type: string\n                                                targetRevision:\n                                                  type: string\n                                              required:\n                                              - repoURL\n                                              type: object\n                                            type: array\n                                          syncPolicy:\n                                            properties:\n                                              automated:\n                                                properties:\n                                                  allowEmpty:\n                                                    type: boolean\n                                                  prune:\n                                                    type: boolean\n                                                  selfHeal:\n                                                    type: boolean\n                                                type: object\n                                              managedNamespaceMetadata:\n                                                properties:\n                                                  annotations:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                  labels:\n                                                    additionalProperties:\n                                                      type: string\n                                                    type: object\n                                                type: object\n                                              retry:\n                                                properties:\n                                                  backoff:\n                                                    properties:\n                                                      duration:\n                                                        type: string\n                                                      factor:\n                                                        format: int64\n                                                        type: integer\n                                                      maxDuration:\n                                                        type: string\n                                                    type: object\n                                                  limit:\n                                                    format: int64\n                                                    type: integer\n                                                type: object\n                                              syncOptions:\n                                                items:\n                                                  type: string\n                                                type: array\n                                            type: object\n                                        required:\n                                        - destination\n                                        - project\n                                        type: object\n                                    required:\n                                    - metadata\n                                    - spec\n                                    type: object\n                                  values:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                              selector:\n                                properties:\n                                  matchExpressions:\n                                    items:\n                                      properties:\n                                        key:\n                                          type: string\n                                        operator:\n                                          type: string\n                                        values:\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    type: object\n                                type: object\n                            type: object\n                          type: array\n                        mergeKeys:\n                          items:\n                            type: string\n                          type: array\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                      required:\n                      - generators\n                      - mergeKeys\n                      type: object\n                    plugin:\n                      properties:\n                        configMapRef:\n                          properties:\n                            name:\n                              type: string\n                          required:\n                          - name\n                          type: object\n                        input:\n                          properties:\n                            parameters:\n                              additionalProperties:\n                                x-kubernetes-preserve-unknown-fields: true\n                              type: object\n                          type: object\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      required:\n                      - configMapRef\n                      type: object\n                    pullRequest:\n                      properties:\n                        azuredevops:\n                          properties:\n                            api:\n                              type: string\n                            labels:\n                              items:\n                                type: string\n                              type: array\n                            organization:\n                              type: string\n                            project:\n                              type: string\n                            repo:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - organization\n                          - project\n                          - repo\n                          type: object\n                        bitbucket:\n                          properties:\n                            api:\n                              type: string\n                            basicAuth:\n                              properties:\n                                passwordRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                                username:\n                                  type: string\n                              required:\n                              - passwordRef\n                              - username\n                              type: object\n                            bearerToken:\n                              properties:\n                                tokenRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                              required:\n                              - tokenRef\n                              type: object\n                            owner:\n                              type: string\n                            repo:\n                              type: string\n                          required:\n                          - owner\n                          - repo\n                          type: object\n                        bitbucketServer:\n                          properties:\n                            api:\n                              type: string\n                            basicAuth:\n                              properties:\n                                passwordRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                                username:\n                                  type: string\n                              required:\n                              - passwordRef\n                              - username\n                              type: object\n                            project:\n                              type: string\n                            repo:\n                              type: string\n                          required:\n                          - api\n                          - project\n                          - repo\n                          type: object\n                        filters:\n                          items:\n                            properties:\n                              branchMatch:\n                                type: string\n                              targetBranchMatch:\n                                type: string\n                            type: object\n                          type: array\n                        gitea:\n                          properties:\n                            api:\n                              type: string\n                            insecure:\n                              type: boolean\n                            owner:\n                              type: string\n                            repo:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - api\n                          - owner\n                          - repo\n                          type: object\n                        github:\n                          properties:\n                            api:\n                              type: string\n                            appSecretName:\n                              type: string\n                            labels:\n                              items:\n                                type: string\n                              type: array\n                            owner:\n                              type: string\n                            repo:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - owner\n                          - repo\n                          type: object\n                        gitlab:\n                          properties:\n                            api:\n                              type: string\n                            insecure:\n                              type: boolean\n                            labels:\n                              items:\n                                type: string\n                              type: array\n                            project:\n                              type: string\n                            pullRequestState:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - project\n                          type: object\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                      type: object\n                    scmProvider:\n                      properties:\n                        awsCodeCommit:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            region:\n                              type: string\n                            role:\n                              type: string\n                            tagFilters:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  value:\n                                    type: string\n                                required:\n                                - key\n                                type: object\n                              type: array\n                          type: object\n                        azureDevOps:\n                          properties:\n                            accessTokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            organization:\n                              type: string\n                            teamProject:\n                              type: string\n                          required:\n                          - accessTokenRef\n                          - organization\n                          - teamProject\n                          type: object\n                        bitbucket:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            appPasswordRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                            owner:\n                              type: string\n                            user:\n                              type: string\n                          required:\n                          - appPasswordRef\n                          - owner\n                          - user\n                          type: object\n                        bitbucketServer:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            basicAuth:\n                              properties:\n                                passwordRef:\n                                  properties:\n                                    key:\n                                      type: string\n                                    secretName:\n                                      type: string\n                                  required:\n                                  - key\n                                  - secretName\n                                  type: object\n                                username:\n                                  type: string\n                              required:\n                              - passwordRef\n                              - username\n                              type: object\n                            project:\n                              type: string\n                          required:\n                          - api\n                          - project\n                          type: object\n                        cloneProtocol:\n                          type: string\n                        filters:\n                          items:\n                            properties:\n                              branchMatch:\n                                type: string\n                              labelMatch:\n                                type: string\n                              pathsDoNotExist:\n                                items:\n                                  type: string\n                                type: array\n                              pathsExist:\n                                items:\n                                  type: string\n                                type: array\n                              repositoryMatch:\n                                type: string\n                            type: object\n                          type: array\n                        gitea:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            insecure:\n                              type: boolean\n                            owner:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - api\n                          - owner\n                          type: object\n                        github:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            appSecretName:\n                              type: string\n                            organization:\n                              type: string\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - organization\n                          type: object\n                        gitlab:\n                          properties:\n                            allBranches:\n                              type: boolean\n                            api:\n                              type: string\n                            group:\n                              type: string\n                            includeSubgroups:\n                              type: boolean\n                            insecure:\n                              type: boolean\n                            tokenRef:\n                              properties:\n                                key:\n                                  type: string\n                                secretName:\n                                  type: string\n                              required:\n                              - key\n                              - secretName\n                              type: object\n                          required:\n                          - group\n                          type: object\n                        requeueAfterSeconds:\n                          format: int64\n                          type: integer\n                        template:\n                          properties:\n                            metadata:\n                              properties:\n                                annotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                finalizers:\n                                  items:\n                                    type: string\n                                  type: array\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                name:\n                                  type: string\n                                namespace:\n                                  type: string\n                              type: object\n                            spec:\n                              properties:\n                                destination:\n                                  properties:\n                                    name:\n                                      type: string\n                                    namespace:\n                                      type: string\n                                    server:\n                                      type: string\n                                  type: object\n                                ignoreDifferences:\n                                  items:\n                                    properties:\n                                      group:\n                                        type: string\n                                      jqPathExpressions:\n                                        items:\n                                          type: string\n                                        type: array\n                                      jsonPointers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      kind:\n                                        type: string\n                                      managedFieldsManagers:\n                                        items:\n                                          type: string\n                                        type: array\n                                      name:\n                                        type: string\n                                      namespace:\n                                        type: string\n                                    required:\n                                    - kind\n                                    type: object\n                                  type: array\n                                info:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                project:\n                                  type: string\n                                revisionHistoryLimit:\n                                  format: int64\n                                  type: integer\n                                source:\n                                  properties:\n                                    chart:\n                                      type: string\n                                    directory:\n                                      properties:\n                                        exclude:\n                                          type: string\n                                        include:\n                                          type: string\n                                        jsonnet:\n                                          properties:\n                                            extVars:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                            libs:\n                                              items:\n                                                type: string\n                                              type: array\n                                            tlas:\n                                              items:\n                                                properties:\n                                                  code:\n                                                    type: boolean\n                                                  name:\n                                                    type: string\n                                                  value:\n                                                    type: string\n                                                required:\n                                                - name\n                                                - value\n                                                type: object\n                                              type: array\n                                          type: object\n                                        recurse:\n                                          type: boolean\n                                      type: object\n                                    helm:\n                                      properties:\n                                        fileParameters:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              path:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        ignoreMissingValueFiles:\n                                          type: boolean\n                                        parameters:\n                                          items:\n                                            properties:\n                                              forceString:\n                                                type: boolean\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            type: object\n                                          type: array\n                                        passCredentials:\n                                          type: boolean\n                                        releaseName:\n                                          type: string\n                                        skipCrds:\n                                          type: boolean\n                                        valueFiles:\n                                          items:\n                                            type: string\n                                          type: array\n                                        values:\n                                          type: string\n                                        valuesObject:\n                                          type: object\n                                          x-kubernetes-preserve-unknown-fields: true\n                                        version:\n                                          type: string\n                                      type: object\n                                    kustomize:\n                                      properties:\n                                        commonAnnotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        commonAnnotationsEnvsubst:\n                                          type: boolean\n                                        commonLabels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        forceCommonAnnotations:\n                                          type: boolean\n                                        forceCommonLabels:\n                                          type: boolean\n                                        images:\n                                          items:\n                                            type: string\n                                          type: array\n                                        namePrefix:\n                                          type: string\n                                        nameSuffix:\n                                          type: string\n                                        namespace:\n                                          type: string\n                                        replicas:\n                                          items:\n                                            properties:\n                                              count:\n                                                anyOf:\n                                                - type: integer\n                                                - type: string\n                                                x-kubernetes-int-or-string: true\n                                              name:\n                                                type: string\n                                            required:\n                                            - count\n                                            - name\n                                            type: object\n                                          type: array\n                                        version:\n                                          type: string\n                                      type: object\n                                    path:\n                                      type: string\n                                    plugin:\n                                      properties:\n                                        env:\n                                          items:\n                                            properties:\n                                              name:\n                                                type: string\n                                              value:\n                                                type: string\n                                            required:\n                                            - name\n                                            - value\n                                            type: object\n                                          type: array\n                                        name:\n                                          type: string\n                                        parameters:\n                                          items:\n                                            properties:\n                                              array:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              map:\n                                                additionalProperties:\n                                                  type: string\n                                                type: object\n                                              name:\n                                                type: string\n                                              string:\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                    ref:\n                                      type: string\n                                    repoURL:\n                                      type: string\n                                    targetRevision:\n                                      type: string\n                                  required:\n                                  - repoURL\n                                  type: object\n                                sources:\n                                  items:\n                                    properties:\n                                      chart:\n                                        type: string\n                                      directory:\n                                        properties:\n                                          exclude:\n                                            type: string\n                                          include:\n                                            type: string\n                                          jsonnet:\n                                            properties:\n                                              extVars:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                              libs:\n                                                items:\n                                                  type: string\n                                                type: array\n                                              tlas:\n                                                items:\n                                                  properties:\n                                                    code:\n                                                      type: boolean\n                                                    name:\n                                                      type: string\n                                                    value:\n                                                      type: string\n                                                  required:\n                                                  - name\n                                                  - value\n                                                  type: object\n                                                type: array\n                                            type: object\n                                          recurse:\n                                            type: boolean\n                                        type: object\n                                      helm:\n                                        properties:\n                                          fileParameters:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                path:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          ignoreMissingValueFiles:\n                                            type: boolean\n                                          parameters:\n                                            items:\n                                              properties:\n                                                forceString:\n                                                  type: boolean\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                          passCredentials:\n                                            type: boolean\n                                          releaseName:\n                                            type: string\n                                          skipCrds:\n                                            type: boolean\n                                          valueFiles:\n                                            items:\n                                              type: string\n                                            type: array\n                                          values:\n                                            type: string\n                                          valuesObject:\n                                            type: object\n                                            x-kubernetes-preserve-unknown-fields: true\n                                          version:\n                                            type: string\n                                        type: object\n                                      kustomize:\n                                        properties:\n                                          commonAnnotations:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          commonAnnotationsEnvsubst:\n                                            type: boolean\n                                          commonLabels:\n                                            additionalProperties:\n                                              type: string\n                                            type: object\n                                          forceCommonAnnotations:\n                                            type: boolean\n                                          forceCommonLabels:\n                                            type: boolean\n                                          images:\n                                            items:\n                                              type: string\n                                            type: array\n                                          namePrefix:\n                                            type: string\n                                          nameSuffix:\n                                            type: string\n                                          namespace:\n                                            type: string\n                                          replicas:\n                                            items:\n                                              properties:\n                                                count:\n                                                  anyOf:\n                                                  - type: integer\n                                                  - type: string\n                                                  x-kubernetes-int-or-string: true\n                                                name:\n                                                  type: string\n                                              required:\n                                              - count\n                                              - name\n                                              type: object\n                                            type: array\n                                          version:\n                                            type: string\n                                        type: object\n                                      path:\n                                        type: string\n                                      plugin:\n                                        properties:\n                                          env:\n                                            items:\n                                              properties:\n                                                name:\n                                                  type: string\n                                                value:\n                                                  type: string\n                                              required:\n                                              - name\n                                              - value\n                                              type: object\n                                            type: array\n                                          name:\n                                            type: string\n                                          parameters:\n                                            items:\n                                              properties:\n                                                array:\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                map:\n                                                  additionalProperties:\n                                                    type: string\n                                                  type: object\n                                                name:\n                                                  type: string\n                                                string:\n                                                  type: string\n                                              type: object\n                                            type: array\n                                        type: object\n                                      ref:\n                                        type: string\n                                      repoURL:\n                                        type: string\n                                      targetRevision:\n                                        type: string\n                                    required:\n                                    - repoURL\n                                    type: object\n                                  type: array\n                                syncPolicy:\n                                  properties:\n                                    automated:\n                                      properties:\n                                        allowEmpty:\n                                          type: boolean\n                                        prune:\n                                          type: boolean\n                                        selfHeal:\n                                          type: boolean\n                                      type: object\n                                    managedNamespaceMetadata:\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          type: object\n                                      type: object\n                                    retry:\n                                      properties:\n                                        backoff:\n                                          properties:\n                                            duration:\n                                              type: string\n                                            factor:\n                                              format: int64\n                                              type: integer\n                                            maxDuration:\n                                              type: string\n                                          type: object\n                                        limit:\n                                          format: int64\n                                          type: integer\n                                      type: object\n                                    syncOptions:\n                                      items:\n                                        type: string\n                                      type: array\n                                  type: object\n                              required:\n                              - destination\n                              - project\n                              type: object\n                          required:\n                          - metadata\n                          - spec\n                          type: object\n                        values:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      type: object\n                    selector:\n                      properties:\n                        matchExpressions:\n                          items:\n                            properties:\n                              key:\n                                type: string\n                              operator:\n                                type: string\n                              values:\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          type: object\n                      type: object\n                  type: object\n                type: array\n              goTemplate:\n                type: boolean\n              goTemplateOptions:\n                items:\n                  type: string\n                type: array\n              preservedFields:\n                properties:\n                  annotations:\n                    items:\n                      type: string\n                    type: array\n                type: object\n              strategy:\n                properties:\n                  rollingSync:\n                    properties:\n                      steps:\n                        items:\n                          properties:\n                            matchExpressions:\n                              items:\n                                properties:\n                                  key:\n                                    type: string\n                                  operator:\n                                    type: string\n                                  values:\n                                    items:\n                                      type: string\n                                    type: array\n                                type: object\n                              type: array\n                            maxUpdate:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              x-kubernetes-int-or-string: true\n                          type: object\n                        type: array\n                    type: object\n                  type:\n                    type: string\n                type: object\n              syncPolicy:\n                properties:\n                  applicationsSync:\n                    enum:\n                    - create-only\n                    - create-update\n                    - create-delete\n                    - sync\n                    type: string\n                  preserveResourcesOnDeletion:\n                    type: boolean\n                type: object\n              template:\n                properties:\n                  metadata:\n                    properties:\n                      annotations:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      finalizers:\n                        items:\n                          type: string\n                        type: array\n                      labels:\n                        additionalProperties:\n                          type: string\n                        type: object\n                      name:\n                        type: string\n                      namespace:\n                        type: string\n                    type: object\n                  spec:\n                    properties:\n                      destination:\n                        properties:\n                          name:\n                            type: string\n                          namespace:\n                            type: string\n                          server:\n                            type: string\n                        type: object\n                      ignoreDifferences:\n                        items:\n                          properties:\n                            group:\n                              type: string\n                            jqPathExpressions:\n                              items:\n                                type: string\n                              type: array\n                            jsonPointers:\n                              items:\n                                type: string\n                              type: array\n                            kind:\n                              type: string\n                            managedFieldsManagers:\n                              items:\n                                type: string\n                              type: array\n                            name:\n                              type: string\n                            namespace:\n                              type: string\n                          required:\n                          - kind\n                          type: object\n                        type: array\n                      info:\n                        items:\n                          properties:\n                            name:\n                              type: string\n                            value:\n                              type: string\n                          required:\n                          - name\n                          - value\n                          type: object\n                        type: array\n                      project:\n                        type: string\n                      revisionHistoryLimit:\n                        format: int64\n                        type: integer\n                      source:\n                        properties:\n                          chart:\n                            type: string\n                          directory:\n                            properties:\n                              exclude:\n                                type: string\n                              include:\n                                type: string\n                              jsonnet:\n                                properties:\n                                  extVars:\n                                    items:\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                  libs:\n                                    items:\n                                      type: string\n                                    type: array\n                                  tlas:\n                                    items:\n                                      properties:\n                                        code:\n                                          type: boolean\n                                        name:\n                                          type: string\n                                        value:\n                                          type: string\n                                      required:\n                                      - name\n                                      - value\n                                      type: object\n                                    type: array\n                                type: object\n                              recurse:\n                                type: boolean\n                            type: object\n                          helm:\n                            properties:\n                              fileParameters:\n                                items:\n                                  properties:\n                                    name:\n                                      type: string\n                                    path:\n                                      type: string\n                                  type: object\n                                type: array\n                              ignoreMissingValueFiles:\n                                type: boolean\n                              parameters:\n                                items:\n                                  properties:\n                                    forceString:\n                                      type: boolean\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  type: object\n                                type: array\n                              passCredentials:\n                                type: boolean\n                              releaseName:\n                                type: string\n                              skipCrds:\n                                type: boolean\n                              valueFiles:\n                                items:\n                                  type: string\n                                type: array\n                              values:\n                                type: string\n                              valuesObject:\n                                type: object\n                                x-kubernetes-preserve-unknown-fields: true\n                              version:\n                                type: string\n                            type: object\n                          kustomize:\n                            properties:\n                              commonAnnotations:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                              commonAnnotationsEnvsubst:\n                                type: boolean\n                              commonLabels:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                              forceCommonAnnotations:\n                                type: boolean\n                              forceCommonLabels:\n                                type: boolean\n                              images:\n                                items:\n                                  type: string\n                                type: array\n                              namePrefix:\n                                type: string\n                              nameSuffix:\n                                type: string\n                              namespace:\n                                type: string\n                              replicas:\n                                items:\n                                  properties:\n                                    count:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      x-kubernetes-int-or-string: true\n                                    name:\n                                      type: string\n                                  required:\n                                  - count\n                                  - name\n                                  type: object\n                                type: array\n                              version:\n                                type: string\n                            type: object\n                          path:\n                            type: string\n                          plugin:\n                            properties:\n                              env:\n                                items:\n                                  properties:\n                                    name:\n                                      type: string\n                                    value:\n                                      type: string\n                                  required:\n                                  - name\n                                  - value\n                                  type: object\n                                type: array\n                              name:\n                                type: string\n                              parameters:\n                                items:\n                                  properties:\n                                    array:\n                                      items:\n                                        type: string\n                                      type: array\n                                    map:\n                                      additionalProperties:\n                                        type: string\n                                      type: object\n                                    name:\n                                      type: string\n                                    string:\n                                      type: string\n                                  type: object\n                                type: array\n                            type: object\n                          ref:\n                            type: string\n                          repoURL:\n                            type: string\n                          targetRevision:\n                            type: string\n                        required:\n                        - repoURL\n                        type: object\n                      sources:\n                        items:\n                          properties:\n                            chart:\n                              type: string\n                            directory:\n                              properties:\n                                exclude:\n                                  type: string\n                                include:\n                                  type: string\n                                jsonnet:\n                                  properties:\n                                    extVars:\n                                      items:\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                    libs:\n                                      items:\n                                        type: string\n                                      type: array\n                                    tlas:\n                                      items:\n                                        properties:\n                                          code:\n                                            type: boolean\n                                          name:\n                                            type: string\n                                          value:\n                                            type: string\n                                        required:\n                                        - name\n                                        - value\n                                        type: object\n                                      type: array\n                                  type: object\n                                recurse:\n                                  type: boolean\n                              type: object\n                            helm:\n                              properties:\n                                fileParameters:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      path:\n                                        type: string\n                                    type: object\n                                  type: array\n                                ignoreMissingValueFiles:\n                                  type: boolean\n                                parameters:\n                                  items:\n                                    properties:\n                                      forceString:\n                                        type: boolean\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    type: object\n                                  type: array\n                                passCredentials:\n                                  type: boolean\n                                releaseName:\n                                  type: string\n                                skipCrds:\n                                  type: boolean\n                                valueFiles:\n                                  items:\n                                    type: string\n                                  type: array\n                                values:\n                                  type: string\n                                valuesObject:\n                                  type: object\n                                  x-kubernetes-preserve-unknown-fields: true\n                                version:\n                                  type: string\n                              type: object\n                            kustomize:\n                              properties:\n                                commonAnnotations:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                commonAnnotationsEnvsubst:\n                                  type: boolean\n                                commonLabels:\n                                  additionalProperties:\n                                    type: string\n                                  type: object\n                                forceCommonAnnotations:\n                                  type: boolean\n                                forceCommonLabels:\n                                  type: boolean\n                                images:\n                                  items:\n                                    type: string\n                                  type: array\n                                namePrefix:\n                                  type: string\n                                nameSuffix:\n                                  type: string\n                                namespace:\n                                  type: string\n                                replicas:\n                                  items:\n                                    properties:\n                                      count:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        x-kubernetes-int-or-string: true\n                                      name:\n                                        type: string\n                                    required:\n                                    - count\n                                    - name\n                                    type: object\n                                  type: array\n                                version:\n                                  type: string\n                              type: object\n                            path:\n                              type: string\n                            plugin:\n                              properties:\n                                env:\n                                  items:\n                                    properties:\n                                      name:\n                                        type: string\n                                      value:\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                name:\n                                  type: string\n                                parameters:\n                                  items:\n                                    properties:\n                                      array:\n                                        items:\n                                          type: string\n                                        type: array\n                                      map:\n                                        additionalProperties:\n                                          type: string\n                                        type: object\n                                      name:\n                                        type: string\n                                      string:\n                                        type: string\n                                    type: object\n                                  type: array\n                              type: object\n                            ref:\n                              type: string\n                            repoURL:\n                              type: string\n                            targetRevision:\n                              type: string\n                          required:\n                          - repoURL\n                          type: object\n                        type: array\n                      syncPolicy:\n                        properties:\n                          automated:\n                            properties:\n                              allowEmpty:\n                                type: boolean\n                              prune:\n                                type: boolean\n                              selfHeal:\n                                type: boolean\n                            type: object\n                          managedNamespaceMetadata:\n                            properties:\n                              annotations:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                              labels:\n                                additionalProperties:\n                                  type: string\n                                type: object\n                            type: object\n                          retry:\n                            properties:\n                              backoff:\n                                properties:\n                                  duration:\n                                    type: string\n                                  factor:\n                                    format: int64\n                                    type: integer\n                                  maxDuration:\n                                    type: string\n                                type: object\n                              limit:\n                                format: int64\n                                type: integer\n                            type: object\n                          syncOptions:\n                            items:\n                              type: string\n                            type: array\n                        type: object\n                    required:\n                    - destination\n                    - project\n                    type: object\n                required:\n                - metadata\n                - spec\n                type: object\n            required:\n            - generators\n            - template\n            type: object\n          status:\n            properties:\n              applicationStatus:\n                items:\n                  properties:\n                    application:\n                      type: string\n                    lastTransitionTime:\n                      format: date-time\n                      type: string\n                    message:\n                      type: string\n                    status:\n                      type: string\n                    step:\n                      type: string\n                  required:\n                  - application\n                  - message\n                  - status\n                  - step\n                  type: object\n                type: array\n              conditions:\n                items:\n                  properties:\n                    lastTransitionTime:\n                      format: date-time\n                      type: string\n                    message:\n                      type: string\n                    reason:\n                      type: string\n                    status:\n                      type: string\n                    type:\n                      type: string\n                  required:\n                  - message\n                  - reason\n                  - status\n                  - type\n                  type: object\n                type: array\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app.kubernetes.io/name: appprojects.argoproj.io\n    app.kubernetes.io/part-of: argocd\n  name: appprojects.argoproj.io\nspec:\n  group: argoproj.io\n  names:\n    kind: AppProject\n    listKind: AppProjectList\n    plural: appprojects\n    shortNames:\n    - appproj\n    - appprojs\n    singular: appproject\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: 'AppProject provides a logical grouping of applications, providing\n          controls for: * where the apps may deploy to (cluster whitelist) * what\n          may be deployed (repository whitelist, resource whitelist/blacklist) * who\n          can access these applications (roles, OIDC group claims bindings) * and\n          what they can do (RBAC policies) * automation access to these roles (JWT\n          tokens)'\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: AppProjectSpec is the specification of an AppProject\n            properties:\n              clusterResourceBlacklist:\n                description: ClusterResourceBlacklist contains list of blacklisted\n                  cluster level resources\n                items:\n                  description: GroupKind specifies a Group and a Kind, but does not\n                    force a version.  This is useful for identifying concepts during\n                    lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              clusterResourceWhitelist:\n                description: ClusterResourceWhitelist contains list of whitelisted\n                  cluster level resources\n                items:\n                  description: GroupKind specifies a Group and a Kind, but does not\n                    force a version.  This is useful for identifying concepts during\n                    lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              description:\n                description: Description contains optional project description\n                type: string\n              destinations:\n                description: Destinations contains list of destinations available\n                  for deployment\n                items:\n                  description: ApplicationDestination holds information about the\n                    application's destination\n                  properties:\n                    name:\n                      description: Name is an alternate way of specifying the target\n                        cluster by its symbolic name\n                      type: string\n                    namespace:\n                      description: Namespace specifies the target namespace for the\n                        application's resources. The namespace will only be set for\n                        namespace-scoped resources that have not set a value for .metadata.namespace\n                      type: string\n                    server:\n                      description: Server specifies the URL of the target cluster\n                        and must be set to the Kubernetes control plane API\n                      type: string\n                  type: object\n                type: array\n              namespaceResourceBlacklist:\n                description: NamespaceResourceBlacklist contains list of blacklisted\n                  namespace level resources\n                items:\n                  description: GroupKind specifies a Group and a Kind, but does not\n                    force a version.  This is useful for identifying concepts during\n                    lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              namespaceResourceWhitelist:\n                description: NamespaceResourceWhitelist contains list of whitelisted\n                  namespace level resources\n                items:\n                  description: GroupKind specifies a Group and a Kind, but does not\n                    force a version.  This is useful for identifying concepts during\n                    lookup stages without having partially valid types\n                  properties:\n                    group:\n                      type: string\n                    kind:\n                      type: string\n                  required:\n                  - group\n                  - kind\n                  type: object\n                type: array\n              orphanedResources:\n                description: OrphanedResources specifies if controller should monitor\n                  orphaned resources of apps in this project\n                properties:\n                  ignore:\n                    description: Ignore contains a list of resources that are to be\n                      excluded from orphaned resources monitoring\n                    items:\n                      description: OrphanedResourceKey is a reference to a resource\n                        to be ignored from\n                      properties:\n                        group:\n                          type: string\n                        kind:\n                          type: string\n                        name:\n                          type: string\n                      type: object\n                    type: array\n                  warn:\n                    description: Warn indicates if warning condition should be created\n                      for apps which have orphaned resources\n                    type: boolean\n                type: object\n              permitOnlyProjectScopedClusters:\n                description: PermitOnlyProjectScopedClusters determines whether destinations\n                  can only reference clusters which are project-scoped\n                type: boolean\n              roles:\n                description: Roles are user defined RBAC roles associated with this\n                  project\n                items:\n                  description: ProjectRole represents a role that has access to a\n                    project\n                  properties:\n                    description:\n                      description: Description is a description of the role\n                      type: string\n                    groups:\n                      description: Groups are a list of OIDC group claims bound to\n                        this role\n                      items:\n                        type: string\n                      type: array\n                    jwtTokens:\n                      description: JWTTokens are a list of generated JWT tokens bound\n                        to this role\n                      items:\n                        description: JWTToken holds the issuedAt and expiresAt values\n                          of a token\n                        properties:\n                          exp:\n                            format: int64\n                            type: integer\n                          iat:\n                            format: int64\n                            type: integer\n                          id:\n                            type: string\n                        required:\n                        - iat\n                        type: object\n                      type: array\n                    name:\n                      description: Name is a name for this role\n                      type: string\n                    policies:\n                      description: Policies Stores a list of casbin formatted strings\n                        that define access policies for the role in the project\n                      items:\n                        type: string\n                      type: array\n                  required:\n                  - name\n                  type: object\n                type: array\n              signatureKeys:\n                description: SignatureKeys contains a list of PGP key IDs that commits\n                  in Git must be signed with in order to be allowed for sync\n                items:\n                  description: SignatureKey is the specification of a key required\n                    to verify commit signatures with\n                  properties:\n                    keyID:\n                      description: The ID of the key in hexadecimal notation\n                      type: string\n                  required:\n                  - keyID\n                  type: object\n                type: array\n              sourceNamespaces:\n                description: SourceNamespaces defines the namespaces application resources\n                  are allowed to be created in\n                items:\n                  type: string\n                type: array\n              sourceRepos:\n                description: SourceRepos contains list of repository URLs which can\n                  be used for deployment\n                items:\n                  type: string\n                type: array\n              syncWindows:\n                description: SyncWindows controls when syncs can be run for apps in\n                  this project\n                items:\n                  description: SyncWindow contains the kind, time, duration and attributes\n                    that are used to assign the syncWindows to apps\n                  properties:\n                    applications:\n                      description: Applications contains a list of applications that\n                        the window will apply to\n                      items:\n                        type: string\n                      type: array\n                    clusters:\n                      description: Clusters contains a list of clusters that the window\n                        will apply to\n                      items:\n                        type: string\n                      type: array\n                    duration:\n                      description: Duration is the amount of time the sync window\n                        will be open\n                      type: string\n                    kind:\n                      description: Kind defines if the window allows or blocks syncs\n                      type: string\n                    manualSync:\n                      description: ManualSync enables manual syncs when they would\n                        otherwise be blocked\n                      type: boolean\n                    namespaces:\n                      description: Namespaces contains a list of namespaces that the\n                        window will apply to\n                      items:\n                        type: string\n                      type: array\n                    schedule:\n                      description: Schedule is the time the window will begin, specified\n                        in cron format\n                      type: string\n                    timeZone:\n                      description: TimeZone of the sync that will be applied to the\n                        schedule\n                      type: string\n                  type: object\n                type: array\n            type: object\n          status:\n            description: AppProjectStatus contains status information for AppProject\n              CRs\n            properties:\n              jwtTokensByRole:\n                additionalProperties:\n                  description: JWTTokens represents a list of JWT tokens\n                  properties:\n                    items:\n                      items:\n                        description: JWTToken holds the issuedAt and expiresAt values\n                          of a token\n                        properties:\n                          exp:\n                            format: int64\n                            type: integer\n                          iat:\n                            format: int64\n                            type: integer\n                          id:\n                            type: string\n                        required:\n                        - iat\n                        type: object\n                      type: array\n                  type: object\n                description: JWTTokensByRole contains a list of JWT tokens issued\n                  for a given role\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: repo-server\n    app.kubernetes.io/name: argocd-repo-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-repo-server\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - appprojects\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - update\n  - patch\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - list\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nrules:\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - applicationsets\n  - applicationsets/finalizers\n  verbs:\n  - create\n  - delete\n  - get\n  - list\n  - patch\n  - update\n  - watch\n- apiGroups:\n  - argoproj.io\n  resources:\n  - appprojects\n  verbs:\n  - get\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applicationsets/status\n  verbs:\n  - get\n  - patch\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - get\n  - list\n  - patch\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - apps\n  - extensions\n  resources:\n  - deployments\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\nrules:\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - appprojects\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - secrets\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - argocd-notifications-cm\n  resources:\n  - configmaps\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - argocd-notifications-secret\n  resources:\n  - secrets\n  verbs:\n  - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - update\n  - patch\n  - delete\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  - appprojects\n  - applicationsets\n  verbs:\n  - create\n  - get\n  - list\n  - watch\n  - update\n  - delete\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - list\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nrules:\n- apiGroups:\n  - '*'\n  resources:\n  - '*'\n  verbs:\n  - '*'\n- nonResourceURLs:\n  - '*'\n  verbs:\n  - '*'\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nrules:\n- apiGroups:\n  - '*'\n  resources:\n  - '*'\n  verbs:\n  - delete\n  - get\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - list\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  - pods/log\n  verbs:\n  - get\n- apiGroups:\n  - argoproj.io\n  resources:\n  - applications\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - batch\n  resources:\n  - jobs\n  verbs:\n  - create\n- apiGroups:\n  - argoproj.io\n  resources:\n  - workflows\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-application-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-application-controller\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-applicationset-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-applicationset-controller\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-dex-server\nsubjects:\n- kind: ServiceAccount\n  name: argocd-dex-server\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-notifications-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-notifications-controller\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: argocd-server\nsubjects:\n- kind: ServiceAccount\n  name: argocd-server\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: argocd-application-controller\nsubjects:\n- kind: ServiceAccount\n  name: argocd-application-controller\n  namespace: argocd\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: argocd-server\nsubjects:\n- kind: ServiceAccount\n  name: argocd-server\n  namespace: argocd\n---\napiVersion: v1\ndata:\n  application.resourceTrackingMethod: annotation\n  resource.exclusions: |\n    - kinds:\n        - ProviderConfigUsage\n      apiGroups:\n        - \"*\"\nkind: ConfigMap\nmetadata:\n  labels:\n    Test: Data\n    app.kubernetes.io/name: argocd-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-cmd-params-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-cmd-params-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-gpg-keys-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-gpg-keys-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-rbac-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-rbac-cm\n---\napiVersion: v1\ndata:\n  ssh_known_hosts: |\n    # This file was automatically generated by hack/update-ssh-known-hosts.sh. DO NOT EDIT\n    [ssh.github.com]:443 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=\n    [ssh.github.com]:443 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl\n    [ssh.github.com]:443 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=\n    bitbucket.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPIQmuzMBuKdWeF4+a2sjSSpBK0iqitSQ+5BM9KhpexuGt20JpTVM7u5BDZngncgrqDMbWdxMWWOGtZ9UgbqgZE=\n    bitbucket.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIazEu89wgQZ4bqs3d63QSMzYVa0MuJ2e2gKTKqu+UUO\n    bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQeJzhupRu0u0cdegZIa8e86EG2qOCsIsD1Xw0xSeiPDlCr7kq97NLmMbpKTX6Esc30NuoqEEHCuc7yWtwp8dI76EEEB1VqY9QJq6vk+aySyboD5QF61I/1WeTwu+deCbgKMGbUijeXhtfbxSxm6JwGrXrhBdofTsbKRUsrN1WoNgUa8uqN1Vx6WAJw1JHPhglEGGHea6QICwJOAr/6mrui/oB7pkaWKHj3z7d1IC4KWLtY47elvjbaTlkN04Kc/5LFEirorGYVbt15kAUlqGM65pk6ZBxtaO3+30LVlORZkxOh+LKL/BvbZ/iRNhItLqNyieoQj/uh/7Iv4uyH/cV/0b4WDSd3DptigWq84lJubb9t/DnZlrJazxyDCulTmKdOR7vs9gMTo+uoIrPSb8ScTtvw65+odKAlBj59dhnVp9zd7QUojOpXlL62Aw56U4oO+FALuevvMjiWeavKhJqlR7i5n9srYcrNV7ttmDw7kf/97P5zauIhxcjX+xHv4M=\n    github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=\n    github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl\n    github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=\n    gitlab.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=\n    gitlab.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAfuCHKVTjquxvt6CM6tdG4SLp1Btn/nOeHHE5UOzRdf\n    gitlab.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsj2bNKTBSpIYDEGk9KxsGh3mySTRgMtXL583qmBpzeQ+jqCMRgBqB98u3z++J1sKlXHWfM9dyhSevkMwSbhoR8XIq/U0tCNyokEi/ueaBMCvbcTHhO7FcwzY92WK4Yt0aGROY5qX2UKSeOvuP4D6TPqKF1onrSzH9bx9XUf2lEdWT/ia1NEKjunUqu1xOB/StKDHMoX4/OKyIzuS0q/T1zOATthvasJFoPrAjkohTyaDUz2LN5JoH839hViyEG82yB+MjcFV5MU3N1l1QL3cVUCh93xSaua1N85qivl+siMkPGbO5xR/En4iEY6K2XPASUEMaieWVNTRCtJ4S8H+9\n    ssh.dev.azure.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm57XQPVU3/QpyNLHbWDdzwtrlS+ez30S3AdYhLKEOxAG8weOnyrtLJAUen9mTkol8oII1edf7mWWbWVf0nBmly21+nZcmCTISQBtdcyPaEno7fFQMDD26/s0lfKob4Kw8H\n    vs-ssh.visualstudio.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm57XQPVU3/QpyNLHbWDdzwtrlS+ez30S3AdYhLKEOxAG8weOnyrtLJAUen9mTkol8oII1edf7mWWbWVf0nBmly21+nZcmCTISQBtdcyPaEno7fFQMDD26/s0lfKob4Kw8H\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-ssh-known-hosts-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-ssh-known-hosts-cm\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-tls-certs-cm\n    app.kubernetes.io/part-of: argocd\n  name: argocd-tls-certs-cm\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-secret\ntype: Opaque\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/name: argocd-secret\n    app.kubernetes.io/part-of: argocd\n  name: argocd-secret\ntype: Opaque\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nspec:\n  ports:\n  - name: webhook\n    port: 7000\n    protocol: TCP\n    targetPort: webhook\n  - name: metrics\n    port: 8080\n    protocol: TCP\n    targetPort: metrics\n  selector:\n    app.kubernetes.io/name: argocd-applicationset-controller\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nspec:\n  ports:\n  - name: http\n    port: 5556\n    protocol: TCP\n    targetPort: 5556\n  - name: grpc\n    port: 5557\n    protocol: TCP\n    targetPort: 5557\n  - name: metrics\n    port: 5558\n    protocol: TCP\n    targetPort: 5558\n  selector:\n    app.kubernetes.io/name: argocd-dex-server\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics\n    app.kubernetes.io/name: argocd-metrics\n    app.kubernetes.io/part-of: argocd\n  name: argocd-metrics\nspec:\n  ports:\n  - name: metrics\n    port: 8082\n    protocol: TCP\n    targetPort: 8082\n  selector:\n    app.kubernetes.io/name: argocd-application-controller\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller-metrics\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller-metrics\nspec:\n  ports:\n  - name: metrics\n    port: 9001\n    protocol: TCP\n    targetPort: 9001\n  selector:\n    app.kubernetes.io/name: argocd-notifications-controller\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\nspec:\n  ports:\n  - name: tcp-redis\n    port: 6379\n    targetPort: 6379\n  selector:\n    app.kubernetes.io/name: argocd-redis\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: repo-server\n    app.kubernetes.io/name: argocd-repo-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-repo-server\nspec:\n  ports:\n  - name: server\n    port: 8081\n    protocol: TCP\n    targetPort: 8081\n  - name: metrics\n    port: 8084\n    protocol: TCP\n    targetPort: 8084\n  selector:\n    app.kubernetes.io/name: argocd-repo-server\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nspec:\n  ports:\n  - name: http\n    port: 80\n    protocol: TCP\n    targetPort: 8080\n  - name: https\n    port: 443\n    protocol: TCP\n    targetPort: 8080\n  selector:\n    app.kubernetes.io/name: argocd-server\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server-metrics\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server-metrics\nspec:\n  ports:\n  - name: metrics\n    port: 8083\n    protocol: TCP\n    targetPort: 8083\n  selector:\n    app.kubernetes.io/name: argocd-server\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: applicationset-controller\n    app.kubernetes.io/name: argocd-applicationset-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-applicationset-controller\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-applicationset-controller\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-applicationset-controller\n    spec:\n      containers:\n      - args:\n        - /usr/local/bin/argocd-applicationset-controller\n        env:\n        - name: NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_LEADER_ELECTION\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.leader.election\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: repo.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_POLICY\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.policy\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_POLICY_OVERRIDE\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.policy.override\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_DEBUG\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.debug\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_DRY_RUN\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.dryrun\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_GIT_MODULES_ENABLED\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.git.submodule\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_PROGRESSIVE_SYNCS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.progressive.syncs\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_NEW_GIT_FILE_GLOBBING\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.enable.new.git.file.globbing\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.repo.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.repo.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_REPO_SERVER_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.repo.server.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_CONCURRENT_RECONCILIATIONS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.concurrent.reconciliations.max\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_SCM_ROOT_CA_PATH\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.scm.root.ca.path\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATIONSET_CONTROLLER_ALLOWED_SCM_PROVIDERS\n          valueFrom:\n            configMapKeyRef:\n              key: applicationsetcontroller.allowed.scm.providers\n              name: argocd-cmd-params-cm\n              optional: true\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        name: argocd-applicationset-controller\n        ports:\n        - containerPort: 7000\n          name: webhook\n        - containerPort: 8080\n          name: metrics\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/ssh\n          name: ssh-known-hosts\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/gpg/source\n          name: gpg-keys\n        - mountPath: /app/config/gpg/keys\n          name: gpg-keyring\n        - mountPath: /tmp\n          name: tmp\n        - mountPath: /app/config/reposerver/tls\n          name: argocd-repo-server-tls\n      serviceAccountName: argocd-applicationset-controller\n      volumes:\n      - configMap:\n          name: argocd-ssh-known-hosts-cm\n        name: ssh-known-hosts\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - configMap:\n          name: argocd-gpg-keys-cm\n        name: gpg-keys\n      - emptyDir: {}\n        name: gpg-keyring\n      - emptyDir: {}\n        name: tmp\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: dex-server\n    app.kubernetes.io/name: argocd-dex-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-dex-server\nspec:\n  replicas: 0\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-dex-server\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-dex-server\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - command:\n        - /shared/argocd-dex\n        - rundex\n        env:\n        - name: ARGOCD_DEX_SERVER_DISABLE_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: dexserver.disable.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        image: ghcr.io/dexidp/dex:v2.37.0\n        imagePullPolicy: Always\n        name: dex\n        ports:\n        - containerPort: 5556\n        - containerPort: 5557\n        - containerPort: 5558\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /shared\n          name: static-files\n        - mountPath: /tmp\n          name: dexconfig\n        - mountPath: /tls\n          name: argocd-dex-server-tls\n      initContainers:\n      - command:\n        - /bin/cp\n        - -n\n        - /usr/local/bin/argocd\n        - /shared/argocd-dex\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        name: copyutil\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /shared\n          name: static-files\n        - mountPath: /tmp\n          name: dexconfig\n      serviceAccountName: argocd-dex-server\n      volumes:\n      - emptyDir: {}\n        name: static-files\n      - emptyDir: {}\n        name: dexconfig\n      - name: argocd-dex-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-dex-server-tls\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller\nspec:\n  replicas: 0\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-notifications-controller\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-notifications-controller\n    spec:\n      containers:\n      - args:\n        - /usr/local/bin/argocd-notifications\n        env:\n        - name: ARGOCD_NOTIFICATIONS_CONTROLLER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: notificationscontroller.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_NOTIFICATIONS_CONTROLLER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: notificationscontroller.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: application.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        livenessProbe:\n          tcpSocket:\n            port: 9001\n        name: argocd-notifications-controller\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n        volumeMounts:\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/reposerver/tls\n          name: argocd-repo-server-tls\n        workingDir: /app\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: argocd-notifications-controller\n      volumes:\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: redis\n    app.kubernetes.io/name: argocd-redis\n    app.kubernetes.io/part-of: argocd\n  name: argocd-redis\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-redis\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-redis\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-redis\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - args:\n        - --save\n        - \"\"\n        - --appendonly\n        - \"no\"\n        image: redis:7.0.11-alpine\n        imagePullPolicy: Always\n        name: redis\n        ports:\n        - containerPort: 6379\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 999\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: argocd-redis\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: repo-server\n    app.kubernetes.io/name: argocd-repo-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-repo-server\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-repo-server\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-repo-server\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-repo-server\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      automountServiceAccountToken: false\n      containers:\n      - args:\n        - /usr/local/bin/argocd-repo-server\n        env:\n        - name: ARGOCD_RECONCILIATION_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: timeout.reconciliation\n              name: argocd-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_PARALLELISM_LIMIT\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.parallelism.limit\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LISTEN_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_LISTEN_METRICS_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.metrics.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_DISABLE_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.disable.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MIN_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.tls.minversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MAX_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.tls.maxversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_CIPHERS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.tls.ciphers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.repo.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: redis.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_COMPRESSION\n          valueFrom:\n            configMapKeyRef:\n              key: redis.compression\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDISDB\n          valueFrom:\n            configMapKeyRef:\n              key: redis.db\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_DEFAULT_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.default.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_OTLP_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_MAX_COMBINED_DIRECTORY_MANIFESTS_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.max.combined.directory.manifests.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_PLUGIN_TAR_EXCLUSIONS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.plugin.tar.exclusions\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_ALLOW_OUT_OF_BOUNDS_SYMLINKS\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.allow.oob.symlinks\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_STREAMED_MANIFEST_MAX_TAR_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.streamed.manifest.max.tar.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_STREAMED_MANIFEST_MAX_EXTRACTED_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.streamed.manifest.max.extracted.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_HELM_MANIFEST_MAX_EXTRACTED_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.helm.manifest.max.extracted.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_REPO_SERVER_DISABLE_HELM_MANIFEST_MAX_EXTRACTED_SIZE\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.disable.helm.manifest.max.extracted.size\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_GIT_MODULES_ENABLED\n          valueFrom:\n            configMapKeyRef:\n              key: reposerver.enable.git.submodule\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: HELM_CACHE_HOME\n          value: /helm-working-dir\n        - name: HELM_CONFIG_HOME\n          value: /helm-working-dir\n        - name: HELM_DATA_HOME\n          value: /helm-working-dir\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        livenessProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /healthz?full=true\n            port: 8084\n          initialDelaySeconds: 30\n          periodSeconds: 30\n          timeoutSeconds: 5\n        name: argocd-repo-server\n        ports:\n        - containerPort: 8081\n        - containerPort: 8084\n        readinessProbe:\n          httpGet:\n            path: /healthz\n            port: 8084\n          initialDelaySeconds: 5\n          periodSeconds: 10\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/ssh\n          name: ssh-known-hosts\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/gpg/source\n          name: gpg-keys\n        - mountPath: /app/config/gpg/keys\n          name: gpg-keyring\n        - mountPath: /app/config/reposerver/tls\n          name: argocd-repo-server-tls\n        - mountPath: /tmp\n          name: tmp\n        - mountPath: /helm-working-dir\n          name: helm-working-dir\n        - mountPath: /home/argocd/cmp-server/plugins\n          name: plugins\n      initContainers:\n      - command:\n        - /bin/cp\n        - -n\n        - /usr/local/bin/argocd\n        - /var/run/argocd/argocd-cmp-server\n        image: quay.io/argoproj/argocd:v2.8.7\n        name: copyutil\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /var/run/argocd\n          name: var-files\n      serviceAccountName: argocd-repo-server\n      volumes:\n      - configMap:\n          name: argocd-ssh-known-hosts-cm\n        name: ssh-known-hosts\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - configMap:\n          name: argocd-gpg-keys-cm\n        name: gpg-keys\n      - emptyDir: {}\n        name: gpg-keyring\n      - emptyDir: {}\n        name: tmp\n      - emptyDir: {}\n        name: helm-working-dir\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n      - emptyDir: {}\n        name: var-files\n      - emptyDir: {}\n        name: plugins\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: server\n    app.kubernetes.io/name: argocd-server\n    app.kubernetes.io/part-of: argocd\n  name: argocd-server\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-server\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-server\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-server\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - args:\n        - /usr/local/bin/argocd-server\n        - ''\n        env:\n        - name: ARGOCD_SERVER_INSECURE\n          valueFrom:\n            configMapKeyRef:\n              key: server.insecure\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_BASEHREF\n          valueFrom:\n            configMapKeyRef:\n              key: server.basehref\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_ROOTPATH\n          valueFrom:\n            configMapKeyRef:\n              key: server.rootpath\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: server.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_LOG_LEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: server.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: repo.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DEX_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: server.dex.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DISABLE_AUTH\n          valueFrom:\n            configMapKeyRef:\n              key: server.disable.auth\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_ENABLE_GZIP\n          valueFrom:\n            configMapKeyRef:\n              key: server.enable.gzip\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: server.repo.server.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_X_FRAME_OPTIONS\n          valueFrom:\n            configMapKeyRef:\n              key: server.x.frame.options\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_CONTENT_SECURITY_POLICY\n          valueFrom:\n            configMapKeyRef:\n              key: server.content.security.policy\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: server.repo.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_REPO_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: server.repo.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DEX_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: server.dex.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_DEX_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: server.dex.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MIN_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: server.tls.minversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_MAX_VERSION\n          valueFrom:\n            configMapKeyRef:\n              key: server.tls.maxversion\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_TLS_CIPHERS\n          valueFrom:\n            configMapKeyRef:\n              key: server.tls.ciphers\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_CONNECTION_STATUS_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.connection.status.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_OIDC_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.oidc.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_LOGIN_ATTEMPTS_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.login.attempts.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_STATIC_ASSETS\n          valueFrom:\n            configMapKeyRef:\n              key: server.staticassets\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APP_STATE_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.app.state.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: redis.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_COMPRESSION\n          valueFrom:\n            configMapKeyRef:\n              key: redis.compression\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDISDB\n          valueFrom:\n            configMapKeyRef:\n              key: redis.db\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_DEFAULT_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: server.default.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_MAX_COOKIE_NUMBER\n          valueFrom:\n            configMapKeyRef:\n              key: server.http.cookie.maxnumber\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_LISTEN_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: server.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_METRICS_LISTEN_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: server.metrics.listen.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_OTLP_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: application.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_SERVER_ENABLE_PROXY_EXTENSION\n          valueFrom:\n            configMapKeyRef:\n              key: server.enable.proxy.extension\n              name: argocd-cmd-params-cm\n              optional: true\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        livenessProbe:\n          httpGet:\n            path: /healthz?full=true\n            port: 8080\n          initialDelaySeconds: 3\n          periodSeconds: 30\n          timeoutSeconds: 5\n        name: argocd-server\n        ports:\n        - containerPort: 8080\n        - containerPort: 8083\n        readinessProbe:\n          httpGet:\n            path: /healthz\n            port: 8080\n          initialDelaySeconds: 3\n          periodSeconds: 30\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/ssh\n          name: ssh-known-hosts\n        - mountPath: /app/config/tls\n          name: tls-certs\n        - mountPath: /app/config/server/tls\n          name: argocd-repo-server-tls\n        - mountPath: /app/config/dex/tls\n          name: argocd-dex-server-tls\n        - mountPath: /home/argocd\n          name: plugins-home\n        - mountPath: /tmp\n          name: tmp\n      serviceAccountName: argocd-server\n      volumes:\n      - emptyDir: {}\n        name: plugins-home\n      - emptyDir: {}\n        name: tmp\n      - configMap:\n          name: argocd-ssh-known-hosts-cm\n        name: ssh-known-hosts\n      - configMap:\n          name: argocd-tls-certs-cm\n        name: tls-certs\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n      - name: argocd-dex-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-dex-server-tls\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  labels:\n    app.kubernetes.io/component: application-controller\n    app.kubernetes.io/name: argocd-application-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-application-controller\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-application-controller\n  serviceName: argocd-application-controller\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: argocd-application-controller\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/name: argocd-application-controller\n              topologyKey: kubernetes.io/hostname\n            weight: 100\n          - podAffinityTerm:\n              labelSelector:\n                matchLabels:\n                  app.kubernetes.io/part-of: argocd\n              topologyKey: kubernetes.io/hostname\n            weight: 5\n      containers:\n      - args:\n        - /usr/local/bin/argocd-application-controller\n        env:\n        - name: ARGOCD_CONTROLLER_REPLICAS\n          value: \"1\"\n        - name: ARGOCD_RECONCILIATION_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: timeout.reconciliation\n              name: argocd-cm\n              optional: true\n        - name: ARGOCD_HARD_RECONCILIATION_TIMEOUT\n          valueFrom:\n            configMapKeyRef:\n              key: timeout.hard.reconciliation\n              name: argocd-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: repo.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.repo.server.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_STATUS_PROCESSORS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.status.processors\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_OPERATION_PROCESSORS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.operation.processors\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_LOGFORMAT\n          valueFrom:\n            configMapKeyRef:\n              key: controller.log.format\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_LOGLEVEL\n          valueFrom:\n            configMapKeyRef:\n              key: controller.log.level\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_METRICS_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: controller.metrics.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_TIMEOUT_SECONDS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.self.heal.timeout.seconds\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_PLAINTEXT\n          valueFrom:\n            configMapKeyRef:\n              key: controller.repo.server.plaintext\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_STRICT_TLS\n          valueFrom:\n            configMapKeyRef:\n              key: controller.repo.server.strict.tls\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_PERSIST_RESOURCE_HEALTH\n          valueFrom:\n            configMapKeyRef:\n              key: controller.resource.health.persist\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APP_STATE_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: controller.app.state.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_SERVER\n          valueFrom:\n            configMapKeyRef:\n              key: redis.server\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDIS_COMPRESSION\n          valueFrom:\n            configMapKeyRef:\n              key: redis.compression\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: REDISDB\n          valueFrom:\n            configMapKeyRef:\n              key: redis.db\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_DEFAULT_CACHE_EXPIRATION\n          valueFrom:\n            configMapKeyRef:\n              key: controller.default.cache.expiration\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_OTLP_ADDRESS\n          valueFrom:\n            configMapKeyRef:\n              key: otlp.address\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_NAMESPACES\n          valueFrom:\n            configMapKeyRef:\n              key: application.namespaces\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_CONTROLLER_SHARDING_ALGORITHM\n          valueFrom:\n            configMapKeyRef:\n              key: controller.sharding.algorithm\n              name: argocd-cmd-params-cm\n              optional: true\n        - name: ARGOCD_APPLICATION_CONTROLLER_KUBECTL_PARALLELISM_LIMIT\n          valueFrom:\n            configMapKeyRef:\n              key: controller.kubectl.parallelism.limit\n              name: argocd-cmd-params-cm\n              optional: true\n        image: quay.io/argoproj/argocd:v2.8.7\n        imagePullPolicy: Always\n        name: argocd-application-controller\n        ports:\n        - containerPort: 8082\n        readinessProbe:\n          httpGet:\n            path: /healthz\n            port: 8082\n          initialDelaySeconds: 5\n          periodSeconds: 10\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /app/config/controller/tls\n          name: argocd-repo-server-tls\n        - mountPath: /home/argocd\n          name: argocd-home\n        workingDir: /home/argocd\n      serviceAccountName: argocd-application-controller\n      volumes:\n      - emptyDir: {}\n        name: argocd-home\n      - name: argocd-repo-server-tls\n        secret:\n          items:\n          - key: tls.crt\n            path: tls.crt\n          - key: tls.key\n            path: tls.key\n          - key: ca.crt\n            path: ca.crt\n          optional: true\n          secretName: argocd-repo-server-tls\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-application-controller-network-policy\nspec:\n  ingress:\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 8082\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-application-controller\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-applicationset-controller-network-policy\nspec:\n  ingress:\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 7000\n      protocol: TCP\n    - port: 8080\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-applicationset-controller\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-dex-server-network-policy\nspec:\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-server\n    ports:\n    - port: 5556\n      protocol: TCP\n    - port: 5557\n      protocol: TCP\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 5558\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-dex-server\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: notifications-controller\n    app.kubernetes.io/name: argocd-notifications-controller\n    app.kubernetes.io/part-of: argocd\n  name: argocd-notifications-controller-network-policy\nspec:\n  ingress:\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 9001\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-notifications-controller\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-redis-network-policy\nspec:\n  egress:\n  - ports:\n    - port: 53\n      protocol: UDP\n    - port: 53\n      protocol: TCP\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-server\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-repo-server\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-application-controller\n    ports:\n    - port: 6379\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-redis\n  policyTypes:\n  - Ingress\n  - Egress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-repo-server-network-policy\nspec:\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-server\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-application-controller\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-notifications-controller\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: argocd-applicationset-controller\n    ports:\n    - port: 8081\n      protocol: TCP\n  - from:\n    - namespaceSelector: {}\n    ports:\n    - port: 8084\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-repo-server\n  policyTypes:\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: argocd-server-network-policy\nspec:\n  ingress:\n  - {}\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/name: argocd-server\n  policyTypes:\n  - Ingress\n"
  },
  {
    "path": "pkg/k8s/test-resources/output/nginx/install-tmpl.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  name: ingress-nginx\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\n  namespace: ingress-nginx\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - namespaces\n    verbs:\n      - get\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n      - pods\n      - secrets\n      - endpoints\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - coordination.k8s.io\n    resourceNames:\n      - ingress-nginx-leader\n    resources:\n      - leases\n    verbs:\n      - get\n      - update\n  - apiGroups:\n      - coordination.k8s.io\n    resources:\n      - leases\n    verbs:\n      - create\n  - apiGroups:\n      - \"\"\n    resources:\n      - events\n    verbs:\n      - create\n      - patch\n  - apiGroups:\n      - discovery.k8s.io\n    resources:\n      - endpointslices\n    verbs:\n      - list\n      - watch\n      - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - secrets\n    verbs:\n      - get\n      - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n      - endpoints\n      - nodes\n      - pods\n      - secrets\n      - namespaces\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - coordination.k8s.io\n    resources:\n      - leases\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - nodes\n    verbs:\n      - get\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - events\n    verbs:\n      - create\n      - patch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - discovery.k8s.io\n    resources:\n      - endpointslices\n    verbs:\n      - list\n      - watch\n      - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\nrules:\n  - apiGroups:\n      - admissionregistration.k8s.io\n    resources:\n      - validatingwebhookconfigurations\n    verbs:\n      - get\n      - update\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx\n    namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx-admission\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-admission\n    namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx\n    namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx-admission\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-admission\n    namespace: ingress-nginx\n---\napiVersion: v1\ndata:\n  allow-snippet-annotations: \"true\"\n  proxy-buffer-size: 32k\n  use-forwarded-headers: \"true\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller-admission\n  namespace: ingress-nginx\nspec:\n  ports:\n    - appProtocol: https\n      name: https-webhook\n      port: 443\n      targetPort: webhook\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: ClusterIP\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  minReadySeconds: 0\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/instance: ingress-nginx\n      app.kubernetes.io/name: ingress-nginx\n  strategy:\n    rollingUpdate:\n      maxUnavailable: 1\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.1\n    spec:\n      containers:\n        - args:\n            - /nginx-ingress-controller\n            - --election-id=ingress-nginx-leader\n            - --controller-class=k8s.io/ingress-nginx\n            - --ingress-class=nginx\n            - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller\n            - --validating-webhook=:8443\n            - --validating-webhook-certificate=/usr/local/certificates/cert\n            - --validating-webhook-key=/usr/local/certificates/key\n            - --watch-ingress-without-class=true\n            - --publish-status-address=localhost\n            - --enable-ssl-passthrough\n          env:\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: LD_PRELOAD\n              value: /usr/local/lib/libmimalloc.so\n          image: registry.k8s.io/ingress-nginx/controller:v1.8.1@sha256:e5c4824e7375fcf2a393e1c03c293b69759af37a9ca6abdb91b13d78a93da8bd\n          imagePullPolicy: IfNotPresent\n          lifecycle:\n            preStop:\n              exec:\n                command:\n                  - /wait-shutdown\n          livenessProbe:\n            failureThreshold: 5\n            httpGet:\n              path: /healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          name: controller\n          ports:\n            - containerPort: 80\n              hostPort: 80\n              name: http\n              protocol: TCP\n            - containerPort: 443\n              hostPort: 443\n              name: https\n              protocol: TCP\n            - containerPort: 8443\n              name: webhook\n              protocol: TCP\n          readinessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: /healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          resources:\n            requests:\n              cpu: 100m\n              memory: 90Mi\n          securityContext:\n            allowPrivilegeEscalation: true\n            capabilities:\n              add:\n                - NET_BIND_SERVICE\n              drop:\n                - ALL\n            runAsUser: 101\n          volumeMounts:\n            - mountPath: /usr/local/certificates/\n              name: webhook-cert\n              readOnly: true\n      dnsPolicy: ClusterFirst\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: ingress-nginx\n      terminationGracePeriodSeconds: 0\n      volumes:\n        - name: webhook-cert\n          secret:\n            secretName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission-create\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.1\n      name: ingress-nginx-admission-create\n    spec:\n      containers:\n        - args:\n            - create\n            - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc\n            - --namespace=$(POD_NAMESPACE)\n            - --secret-name=ingress-nginx-admission\n          env:\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b\n          imagePullPolicy: IfNotPresent\n          name: create\n          securityContext:\n            allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission-patch\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.1\n      name: ingress-nginx-admission-patch\n    spec:\n      containers:\n        - args:\n            - patch\n            - --webhook-name=ingress-nginx-admission\n            - --namespace=$(POD_NAMESPACE)\n            - --patch-mutating=false\n            - --secret-name=ingress-nginx-admission\n            - --patch-failure-policy=Fail\n          env:\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b\n          imagePullPolicy: IfNotPresent\n          name: patch\n          securityContext:\n            allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: networking.k8s.io/v1\nkind: IngressClass\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: nginx\nspec:\n  controller: k8s.io/ingress-nginx\n---\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\nwebhooks:\n  - admissionReviewVersions:\n      - v1\n    clientConfig:\n      service:\n        name: ingress-nginx-controller-admission\n        namespace: ingress-nginx\n        path: /networking/v1/ingresses\n    failurePolicy: Fail\n    matchPolicy: Equivalent\n    name: validate.nginx.ingress.kubernetes.io\n    rules:\n      - apiGroups:\n          - networking.k8s.io\n        apiVersions:\n          - v1\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - ingresses\n    sideEffects: None\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    test: data\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  ipFamilies:\n    - IPv4\n  ipFamilyPolicy: SingleStack\n  ports:\n    - appProtocol: http\n      name: http-8443\n      port: 8443\n      protocol: TCP\n      targetPort: http\n    - appProtocol: http\n      name: http\n      port: 80\n      protocol: TCP\n      targetPort: http\n    - appProtocol: https\n      name: https\n      port: 443\n      protocol: TCP\n      targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: NodePort\n---\napiVersion: v1\nstringData:\n  test: data\nkind: Secret\nmetadata:\n  labels:\n    Test: Data\n  name: secret-one\n---\napiVersion: v1\nstringData:\n  test: data\nkind: Secret\nmetadata:\n  labels:\n    Test: Data\n  name: secret-two\n"
  },
  {
    "path": "pkg/k8s/test-resources/output/nginx/install.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  name: ingress-nginx\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\n  namespace: ingress-nginx\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\n  namespace: ingress-nginx\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - namespaces\n    verbs:\n      - get\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n      - pods\n      - secrets\n      - endpoints\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - coordination.k8s.io\n    resourceNames:\n      - ingress-nginx-leader\n    resources:\n      - leases\n    verbs:\n      - get\n      - update\n  - apiGroups:\n      - coordination.k8s.io\n    resources:\n      - leases\n    verbs:\n      - create\n  - apiGroups:\n      - \"\"\n    resources:\n      - events\n    verbs:\n      - create\n      - patch\n  - apiGroups:\n      - discovery.k8s.io\n    resources:\n      - endpointslices\n    verbs:\n      - list\n      - watch\n      - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - secrets\n    verbs:\n      - get\n      - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n      - endpoints\n      - nodes\n      - pods\n      - secrets\n      - namespaces\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - coordination.k8s.io\n    resources:\n      - leases\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - nodes\n    verbs:\n      - get\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - events\n    verbs:\n      - create\n      - patch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - discovery.k8s.io\n    resources:\n      - endpointslices\n    verbs:\n      - list\n      - watch\n      - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\nrules:\n  - apiGroups:\n      - admissionregistration.k8s.io\n    resources:\n      - validatingwebhookconfigurations\n    verbs:\n      - get\n      - update\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx\n    namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx-admission\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-admission\n    namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx\n    namespace: ingress-nginx\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx-admission\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-admission\n    namespace: ingress-nginx\n---\napiVersion: v1\ndata:\n  allow-snippet-annotations: \"true\"\n  proxy-buffer-size: 32k\n  use-forwarded-headers: \"true\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    test: test\n  name: ingress-nginx-controller-admission\n  namespace: ingress-nginx\nspec:\n  ports:\n    - appProtocol: https\n      name: https-webhook\n      port: 443\n      targetPort: webhook\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: ClusterIP\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  minReadySeconds: 0\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/instance: ingress-nginx\n      app.kubernetes.io/name: ingress-nginx\n  strategy:\n    rollingUpdate:\n      maxUnavailable: 1\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.1\n    spec:\n      containers:\n        - args:\n            - /nginx-ingress-controller\n            - --election-id=ingress-nginx-leader\n            - --controller-class=k8s.io/ingress-nginx\n            - --ingress-class=nginx\n            - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller\n            - --validating-webhook=:8443\n            - --validating-webhook-certificate=/usr/local/certificates/cert\n            - --validating-webhook-key=/usr/local/certificates/key\n            - --watch-ingress-without-class=true\n            - --publish-status-address=localhost\n            - --enable-ssl-passthrough\n          env:\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: LD_PRELOAD\n              value: /usr/local/lib/libmimalloc.so\n          image: registry.k8s.io/ingress-nginx/controller:v1.8.1@sha256:e5c4824e7375fcf2a393e1c03c293b69759af37a9ca6abdb91b13d78a93da8bd\n          imagePullPolicy: IfNotPresent\n          lifecycle:\n            preStop:\n              exec:\n                command:\n                  - /wait-shutdown\n          livenessProbe:\n            failureThreshold: 5\n            httpGet:\n              path: /healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          name: controller\n          ports:\n            - containerPort: 80\n              hostPort: 80\n              name: http\n              protocol: TCP\n            - containerPort: 443\n              hostPort: 443\n              name: https\n              protocol: TCP\n            - containerPort: 8443\n              name: webhook\n              protocol: TCP\n          readinessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: /healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          resources:\n            requests:\n              cpu: 100m\n              memory: 90Mi\n          securityContext:\n            allowPrivilegeEscalation: true\n            capabilities:\n              add:\n                - NET_BIND_SERVICE\n              drop:\n                - ALL\n            runAsUser: 101\n          volumeMounts:\n            - mountPath: /usr/local/certificates/\n              name: webhook-cert\n              readOnly: true\n      dnsPolicy: ClusterFirst\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: ingress-nginx\n      terminationGracePeriodSeconds: 0\n      volumes:\n        - name: webhook-cert\n          secret:\n            secretName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission-create\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.1\n      name: ingress-nginx-admission-create\n    spec:\n      containers:\n        - args:\n            - create\n            - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc\n            - --namespace=$(POD_NAMESPACE)\n            - --secret-name=ingress-nginx-admission\n          env:\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b\n          imagePullPolicy: IfNotPresent\n          name: create\n          securityContext:\n            allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission-patch\n  namespace: ingress-nginx\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.1\n      name: ingress-nginx-admission-patch\n    spec:\n      containers:\n        - args:\n            - patch\n            - --webhook-name=ingress-nginx-admission\n            - --namespace=$(POD_NAMESPACE)\n            - --patch-mutating=false\n            - --secret-name=ingress-nginx-admission\n            - --patch-failure-policy=Fail\n          env:\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b\n          imagePullPolicy: IfNotPresent\n          name: patch\n          securityContext:\n            allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-admission\n---\napiVersion: networking.k8s.io/v1\nkind: IngressClass\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: nginx\nspec:\n  controller: k8s.io/ingress-nginx\n---\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-admission\nwebhooks:\n  - admissionReviewVersions:\n      - v1\n    clientConfig:\n      service:\n        name: ingress-nginx-controller-admission\n        namespace: ingress-nginx\n        path: /networking/v1/ingresses\n    failurePolicy: Fail\n    matchPolicy: Equivalent\n    name: validate.nginx.ingress.kubernetes.io\n    rules:\n      - apiGroups:\n          - networking.k8s.io\n        apiVersions:\n          - v1\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - ingresses\n    sideEffects: None\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.1\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  ipFamilies:\n    - IPv4\n  ipFamilyPolicy: SingleStack\n  ports:\n    - appProtocol: http\n      name: http-8443\n      port: 8443\n      protocol: TCP\n      targetPort: http\n    - appProtocol: http\n      name: http\n      port: 80\n      protocol: TCP\n      targetPort: http\n    - appProtocol: https\n      name: https\n      port: 443\n      protocol: TCP\n      targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx\n    app.kubernetes.io/name: ingress-nginx\n  type: NodePort\n---\napiVersion: v1\nstringData:\n  test: data\nkind: Secret\nmetadata:\n  labels:\n    Test: Data\n  name: secret-one\n---\napiVersion: v1\nstringData:\n  test: data\nkind: Secret\nmetadata:\n  labels:\n    Test: Data\n  name: secret-two\n"
  },
  {
    "path": "pkg/k8s/util.go",
    "content": "package k8s\n\nimport (\n\t\"embed\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util/files\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util/fs\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"os\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nfunc BuildCustomizedManifests(filePath, fsPath string, resourceFS embed.FS, scheme *runtime.Scheme, templateData any) ([][]byte, error) {\n\trawResources, err := fs.ConvertFSToBytes(resourceFS, fsPath, templateData)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif filePath == \"\" {\n\t\treturn rawResources, nil\n\t}\n\n\tbs, _, err := applyOverrides(filePath, rawResources, scheme, templateData)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn bs, nil\n}\n\nfunc BuildCustomizedObjects(filePath, fsPath string, resourceFS embed.FS, scheme *runtime.Scheme, templateData any) ([]client.Object, error) {\n\trawResources, err := fs.ConvertFSToBytes(resourceFS, fsPath, templateData)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif filePath == \"\" {\n\t\treturn ConvertRawResourcesToObjects(scheme, rawResources)\n\t}\n\n\t_, objs, err := applyOverrides(filePath, rawResources, scheme, templateData)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn objs, nil\n}\n\nfunc applyOverrides(filePath string, originalFiles [][]byte, scheme *runtime.Scheme, templateData any) ([][]byte, []client.Object, error) {\n\tcustomBS, err := os.ReadFile(filePath)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\trendered, err := files.ApplyTemplate(customBS, templateData)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn ConvertYamlToObjectsWithOverride(scheme, originalFiles, rendered)\n}\n"
  },
  {
    "path": "pkg/k8s/util_test.go",
    "content": "package k8s\n\nimport (\n\t\"bytes\"\n\t\"embed\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\n//go:embed test-resources/*\nvar testDataFS embed.FS\n\nfunc TestBuildCustomizedManifests(t *testing.T) {\n\tcases := map[string]struct {\n\t\tfsPath           string\n\t\tfilePath         string\n\t\texpectedFilepath string\n\t}{\n\t\t\"argocd\": {\n\t\t\tfsPath:           \"test-resources/input/argocd\",\n\t\t\tfilePath:         \"test-resources/input/argocd-cm.yaml\",\n\t\t\texpectedFilepath: \"test-resources/output/argocd/install.yaml\",\n\t\t},\n\t\t\"nginx\": {\n\t\t\tfsPath:           \"test-resources/input/nginx\",\n\t\t\tfilePath:         \"test-resources/input/extra.yaml\",\n\t\t\texpectedFilepath: \"test-resources/output/nginx/install.yaml\",\n\t\t},\n\t\t\"nginx-template\": {\n\t\t\tfsPath:           \"test-resources/input/nginx\",\n\t\t\tfilePath:         \"test-resources/input/extra.yaml.tmpl\",\n\t\t\texpectedFilepath: \"test-resources/output/nginx/install-tmpl.yaml\",\n\t\t},\n\t}\n\n\tfor key := range cases {\n\t\tc := cases[key]\n\t\tb, err := BuildCustomizedManifests(c.filePath, c.fsPath, testDataFS, GetScheme(), v1alpha1.BuildCustomizationSpec{\n\t\t\tProtocol:       \"http\",\n\t\t\tHost:           \"cnoe.localtest.me\",\n\t\t\tIngressHost:    \"localhost\",\n\t\t\tPort:           \"8443\",\n\t\t\tUsePathRouting: false,\n\t\t})\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed %s: %v\", key, err)\n\t\t}\n\n\t\texpected, _ := os.ReadFile(c.expectedFilepath)\n\t\texpectedYamls := bytes.Split(expected, []byte{'-', '-', '-'})\n\t\ttestYamls := make([][]byte, 0, 10)\n\n\t\tfor f := range b {\n\t\t\ty := bytes.Split(b[f], []byte{'-', '-', '-'})\n\t\t\ttestYamls = append(testYamls, y...)\n\t\t}\n\n\t\tif len(expectedYamls) != len(testYamls) {\n\t\t\tt.Fatalf(\"failed %s: number of yaml objects do not match\", key)\n\t\t}\n\n\t\tfor i := 0; i < len(expectedYamls); i++ {\n\t\t\tok := assert.YAMLEq(t, string(expectedYamls[i]), string(testYamls[i]))\n\t\t\tif !ok {\n\t\t\t\tt.Fatalf(\"failed %s\", key)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "pkg/kind/cluster.go",
    "content": "package kind\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util/files\"\n\t\"net/http\"\n\t\"strconv\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/go-logr/logr\"\n\t\"sigs.k8s.io/controller-runtime/pkg/log\"\n\tkindv1alpha4 \"sigs.k8s.io/kind/pkg/apis/config/v1alpha4\"\n\t\"sigs.k8s.io/kind/pkg/cluster\"\n\t\"sigs.k8s.io/kind/pkg/cluster/nodes\"\n\tkindexec \"sigs.k8s.io/kind/pkg/exec\"\n\t\"sigs.k8s.io/yaml\"\n)\n\nconst (\n\tingressNginxNodeLabelKey   = \"ingress-ready\"\n\tingressNginxNodeLabelValue = \"true\"\n)\n\nvar (\n\tsetupLog = log.Log.WithName(\"setup\")\n)\n\ntype HttpClient interface {\n\tGet(url string) (resp *http.Response, err error)\n}\n\ntype Cluster struct {\n\tprovider          IProvider\n\thttpClient        HttpClient\n\tname              string\n\tkubeVersion       string\n\tkubeConfigPath    string\n\tkindConfigPath    string\n\textraPortsMapping string\n\tregistryConfig    []string\n\tcfg               v1alpha1.BuildCustomizationSpec\n}\n\ntype IProvider interface {\n\tList() ([]string, error)\n\tListNodes(string) ([]nodes.Node, error)\n\tCollectLogs(string, string) error\n\tDelete(string, string) error\n\tCreate(string, ...cluster.CreateOption) error\n\tExportKubeConfig(string, string, bool) error\n}\n\nfunc (c *Cluster) getConfig() ([]byte, error) {\n\trawConfigTempl, err := loadConfig(c.kindConfigPath, c.httpClient)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"loading config template: %w\", err)\n\t}\n\n\tportMappingPairs := parsePortMappings(c.extraPortsMapping)\n\n\tregistryConfig := findRegistryConfig(c.registryConfig)\n\n\tregistryCertsDir, err := renderRegistryCertsDir(c.cfg)\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"rendering insecure registry config: %w\", err)\n\t}\n\n\tif len(c.registryConfig) > 0 && registryConfig == \"\" {\n\t\treturn nil, errors.New(\"--registry-config flag used but no registry config was found\")\n\t}\n\n\tvar retBuff []byte\n\tif retBuff, err = files.ApplyTemplate(rawConfigTempl, TemplateConfig{\n\t\tBuildCustomizationSpec: c.cfg,\n\t\tKubernetesVersion:      c.kubeVersion,\n\t\tExtraPortsMapping:      portMappingPairs,\n\t\tRegistryConfig:         registryConfig,\n\t\tRegistryCertsDir:       registryCertsDir,\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif c.kindConfigPath != \"\" {\n\t\tparsedCluster, err := c.ensureCorrectConfig(retBuff)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"ensuring custom kind config is correct: %w\", err)\n\t\t}\n\n\t\tout, err := yaml.Marshal(parsedCluster)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"marshaling custom kind cluster config: %w\", err)\n\t\t}\n\t\treturn out, nil\n\t}\n\n\treturn retBuff, nil\n}\n\nfunc NewCluster(name, kubeVersion, kubeConfigPath, kindConfigPath, extraPortsMapping string, registryConfig []string, cfg v1alpha1.BuildCustomizationSpec, cliLogger logr.Logger) (*Cluster, error) {\n\tdetectOpt, err := util.DetectKindNodeProvider()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tprovider := cluster.NewProvider(cluster.ProviderWithLogger(KindLoggerFromLogr(&cliLogger)), detectOpt)\n\n\treturn &Cluster{\n\t\tprovider:          provider,\n\t\thttpClient:        util.GetHttpClient(),\n\t\tname:              name,\n\t\tkindConfigPath:    kindConfigPath,\n\t\tkubeVersion:       kubeVersion,\n\t\tkubeConfigPath:    kubeConfigPath,\n\t\textraPortsMapping: extraPortsMapping,\n\t\tregistryConfig:    registryConfig,\n\t\tcfg:               cfg,\n\t}, nil\n}\n\nfunc (c *Cluster) Exists() (bool, error) {\n\tproviderClusters, err := c.provider.List()\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tfor _, pc := range providerClusters {\n\t\tif pc == c.name {\n\t\t\treturn true, nil\n\t\t}\n\t}\n\treturn false, nil\n}\n\n// getClusterHealthError returns a user-friendly error message for cluster health issues\nfunc (c *Cluster) getClusterHealthError(context string) error {\n\treturn fmt.Errorf(`%s: cluster %s is not healthy.\n\nTo fix this:\n  1. Delete the existing cluster: kind delete cluster --name %s\n  2. Recreate the cluster: idpbuilder create --name %s\n\nFor more options, run: idpbuilder create --help\n\nIf the problem persists, check the cluster logs with: kind export logs --name %s\n`,\n\t\tcontext, c.name, c.name, c.name, c.name)\n}\n\n// isHealthy checks if the cluster is in a healthy state by attempting to list nodes\nfunc (c *Cluster) isHealthy() bool {\n\tnodes, err := c.provider.ListNodes(c.name)\n\tif err != nil {\n\t\tsetupLog.V(1).Info(\"Failed to list cluster nodes\", \"cluster\", c.name, \"error\", err)\n\t\treturn false\n\t}\n\treturn len(nodes) > 0\n}\n\nfunc (c *Cluster) Reconcile(ctx context.Context, recreate bool) error {\n\tclusterExists, err := c.Exists()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"checking if cluster exists: %w\", err)\n\t}\n\n\tif clusterExists {\n\t\tif recreate {\n\t\t\tsetupLog.Info(\"Existing cluster found. Deleting.\", \"cluster\", c.name)\n\t\t\terr := c.provider.Delete(c.name, \"\")\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"deleting cluster: %w\", err)\n\t\t\t}\n\t\t} else {\n\t\t\tsetupLog.Info(\"Cluster already exists\", \"cluster\", c.name)\n\t\t\tif !c.isHealthy() {\n\t\t\t\treturn c.getClusterHealthError(\"Cluster exists but is not healthy\")\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t}\n\n\trawConfig, err := c.getConfig()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfmt.Print(\"########################### Our kind config ############################\\n\")\n\tfmt.Printf(\"%s\", rawConfig)\n\tfmt.Print(\"\\n#########################   config end    ############################\\n\")\n\n\tsetupLog.Info(\"Creating kind cluster\", \"cluster\", c.name)\n\n\tif err = c.provider.Create(\n\t\tc.name,\n\t\tcluster.CreateWithRawConfig(rawConfig),\n\t); err != nil {\n\t\tt := &kindexec.RunError{}\n\t\tif errors.As(err, &t) {\n\t\t\treturn fmt.Errorf(\"%w: %s\", err, t.Output)\n\t\t}\n\t\treturn err\n\t}\n\tsetupLog.Info(\"Done creating cluster\", \"cluster\", c.name)\n\n\treturn nil\n}\n\nfunc (c *Cluster) ExportKubeConfig(name string, internal bool) error {\n\t// Verify cluster is healthy before exporting kubeconfig\n\tif !c.isHealthy() {\n\t\treturn c.getClusterHealthError(\"Cannot export kubeconfig\")\n\t}\n\n\terr := c.provider.ExportKubeConfig(name, c.kubeConfigPath, internal)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"%w\\n%w\", err, c.getClusterHealthError(\"Failed to export kubeconfig\"))\n\t}\n\treturn nil\n}\n\nfunc (c *Cluster) ensureCorrectConfig(in []byte) (kindv1alpha4.Cluster, error) {\n\t// see pkg/kind/resources/kind.yaml.tmpl and pkg/controllers/localbuild/resources/nginx/k8s/ingress-nginx.yaml\n\t// defines which container port we should be looking for.\n\tcontainerPort := \"443\"\n\tif c.cfg.Protocol == \"http\" {\n\t\tcontainerPort = \"80\"\n\t}\n\tparsedCluster := kindv1alpha4.Cluster{}\n\terr := yaml.Unmarshal(in, &parsedCluster)\n\tif err != nil {\n\t\treturn kindv1alpha4.Cluster{}, fmt.Errorf(\"parsing kind config: %w\", err)\n\t}\n\t// the port and ingress-nginx label must be on the same node to ensure nginx runs on the node with the right port.\n\tappendNecessaryPort := true\n\tappendIngressNodeLabel := true\n\t// pick the first node for the ingress-nginx if we need to configure node port.\n\tnodePosition := 0\n\n\tif parsedCluster.Nodes == nil || len(parsedCluster.Nodes) == 0 {\n\t\treturn kindv1alpha4.Cluster{}, fmt.Errorf(\"provided kind config does not have the node field defined\")\n\t}\n\nnodes:\n\tfor i := range parsedCluster.Nodes {\n\t\tnode := parsedCluster.Nodes[i]\n\t\tfor _, pm := range node.ExtraPortMappings {\n\t\t\tif strconv.Itoa(int(pm.HostPort)) == c.cfg.Port {\n\t\t\t\tappendNecessaryPort = false\n\t\t\t\tnodePosition = i\n\t\t\t\tif node.Labels != nil {\n\t\t\t\t\tv, ok := node.Labels[ingressNginxNodeLabelKey]\n\t\t\t\t\tif ok && v == ingressNginxNodeLabelValue {\n\t\t\t\t\t\tappendIngressNodeLabel = false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak nodes\n\t\t\t}\n\t\t}\n\t\tif node.Labels != nil {\n\t\t\tv, ok := node.Labels[ingressNginxNodeLabelKey]\n\t\t\tif ok && v == ingressNginxNodeLabelValue {\n\t\t\t\tappendIngressNodeLabel = false\n\t\t\t\tnodePosition = i\n\t\t\t\tbreak nodes\n\t\t\t}\n\t\t}\n\t}\n\n\tif appendNecessaryPort {\n\t\thp, err := strconv.Atoi(c.cfg.Port)\n\t\tif err != nil {\n\t\t\treturn kindv1alpha4.Cluster{}, fmt.Errorf(\"converting port, %s, to int: %w\", c.cfg.Port, err)\n\t\t}\n\t\t// either \"80\" or \"443\". No need to check for err\n\t\tcp, _ := strconv.Atoi(containerPort)\n\n\t\tif parsedCluster.Nodes[nodePosition].ExtraPortMappings == nil {\n\t\t\tparsedCluster.Nodes[nodePosition].ExtraPortMappings = make([]kindv1alpha4.PortMapping, 0, 1)\n\t\t}\n\t\tparsedCluster.Nodes[nodePosition].ExtraPortMappings =\n\t\t\tappend(parsedCluster.Nodes[nodePosition].ExtraPortMappings, kindv1alpha4.PortMapping{ContainerPort: int32(cp), HostPort: int32(hp), Protocol: \"TCP\"})\n\t}\n\tif appendIngressNodeLabel {\n\t\tif parsedCluster.Nodes[nodePosition].Labels == nil {\n\t\t\tparsedCluster.Nodes[nodePosition].Labels = make(map[string]string)\n\t\t}\n\t\tparsedCluster.Nodes[nodePosition].Labels[ingressNginxNodeLabelKey] = ingressNginxNodeLabelValue\n\t}\n\n\treturn parsedCluster, nil\n}\n"
  },
  {
    "path": "pkg/kind/cluster_test.go",
    "content": "package kind\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/docker/docker/api/types\"\n\t\"github.com/docker/docker/client\"\n\t\"github.com/go-logr/logr\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/mock\"\n\t\"regexp\"\n\t\"sigs.k8s.io/kind/pkg/cluster/nodes\"\n\t\"sigs.k8s.io/kind/pkg/exec\"\n)\n\nfunc TestGetConfig(t *testing.T) {\n\n\ttype tc struct {\n\t\thost           string\n\t\tport           string\n\t\tregistryConfig []string\n\t\tusePathRouting bool\n\t\texpectConfig   string\n\t}\n\n\ttcs := []tc{\n\t\t{\n\t\t\thost:           \"cnoe.localtest.me\",\n\t\t\tport:           \"8443\",\n\t\t\tregistryConfig: []string{},\n\t\t\tusePathRouting: false,\n\t\t\texpectConfig: `kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  image: \"kindest/node:v1.26.3\"\n  labels:\n    ingress-ready: \"true\"\n  extraPortMappings:\n  - containerPort: 443\n    hostPort: 8443\n    protocol: TCP\n  - containerPort: 32222\n    hostPort: 32222\n    protocol: TCP\n  extraMounts:\n  - containerPath: /etc/containerd/certs.d\n    hostPath: /tmp/idpbuilder-registry-certs.d-\\d+\ncontainerdConfigPatches:\n- |-\n  [plugins.\"io.containerd.grpc.v1.cri\".registry]\n    config_path = \"/etc/containerd/certs.d\"`,\n\t\t},\n\t\t{\n\t\t\thost:           \"cnoe.localtest.me\",\n\t\t\tport:           \"8443\",\n\t\t\tregistryConfig: []string{\"testdata/doesnt-exist.json\", \"testdata/empty.json\"},\n\t\t\tusePathRouting: true,\n\t\t\texpectConfig: `kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  image: \"kindest/node:v1.26.3\"\n  labels:\n    ingress-ready: \"true\"\n  extraPortMappings:\n  - containerPort: 443\n    hostPort: 8443\n    protocol: TCP\n  - containerPort: 32222\n    hostPort: 32222\n    protocol: TCP\n  extraMounts:\n  - containerPath: /etc/containerd/certs.d\n    hostPath: /tmp/idpbuilder-registry-certs.d-\\d+\n  - containerPath: /var/lib/kubelet/config.json\n    hostPath: testdata/empty.json\ncontainerdConfigPatches:\n- |-\n  [plugins.\"io.containerd.grpc.v1.cri\".registry]\n    config_path = \"/etc/containerd/certs.d\"`,\n\t\t},\n\t}\n\n\tfor i := range tcs {\n\t\tc := tcs[i]\n\t\tcluster, err := NewCluster(\"testcase\", \"v1.26.3\", \"\", \"\", \"\", c.registryConfig, v1alpha1.BuildCustomizationSpec{\n\t\t\tHost:           c.host,\n\t\t\tPort:           c.port,\n\t\t\tUsePathRouting: c.usePathRouting,\n\t\t}, logr.Discard())\n\t\tassert.NoError(t, err)\n\n\t\tcfg, err := cluster.getConfig()\n\t\tassert.NoError(t, err)\n\t\tre := regexp.MustCompile(\"(?m)\" + c.expectConfig)\n\t\tassert.Regexp(t, re, string(cfg), \"config did not match expected config regexp\")\n\t}\n}\n\nfunc TestExtraPortMappings(t *testing.T) {\n\n\tcluster, err := NewCluster(\"testcase\", \"v1.26.3\", \"\", \"\", \"22:32222\", nil, v1alpha1.BuildCustomizationSpec{\n\t\tHost: \"cnoe.localtest.me\",\n\t\tPort: \"8443\",\n\t}, logr.Discard())\n\tif err != nil {\n\t\tt.Fatalf(\"Initializing cluster resource: %v\", err)\n\t}\n\n\tcfg, err := cluster.getConfig()\n\tif err != nil {\n\t\tt.Errorf(\"Error getting kind config: %v\", err)\n\t}\n\n\texpectConfig := `kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  image: \"kindest/node:v1.26.3\"\n  labels:\n    ingress-ready: \"true\"\n  extraPortMappings:\n  - containerPort: 443\n    hostPort: 8443\n    protocol: TCP\n  - containerPort: 32222\n    hostPort: 32222\n    protocol: TCP\n  - containerPort: 32222\n    hostPort: 22\n    protocol: TCP\n  extraMounts:\n  - containerPath: /etc/containerd/certs.d\n    hostPath: /tmp/idpbuilder-registry-certs.d-\\d+\ncontainerdConfigPatches:\n- |-\n  [plugins.\"io.containerd.grpc.v1.cri\".registry]\n    config_path = \"/etc/containerd/certs.d\"`\n\n\tre := regexp.MustCompile(\"(?m)\" + expectConfig)\n\tassert.Regexp(t, re, string(cfg), \"config did not match expected config regexp\")\n}\n\nfunc TestGetConfigCustom(t *testing.T) {\n\n\ttype testCase struct {\n\t\tinputPath  string\n\t\toutputPath string\n\t\thostPort   string\n\t\tprotocol   string\n\t\terror      bool\n\t}\n\n\tcases := []testCase{\n\t\t{\n\t\t\tinputPath:  \"testdata/no-port.yaml\",\n\t\t\toutputPath: \"testdata/expected/no-port.yaml\",\n\t\t\thostPort:   \"8443\",\n\t\t\tprotocol:   \"https\",\n\t\t},\n\t\t{\n\t\t\tinputPath:  \"testdata/port-only.yaml\",\n\t\t\toutputPath: \"testdata/expected/port-only.yaml\",\n\t\t\thostPort:   \"80\",\n\t\t\tprotocol:   \"http\",\n\t\t},\n\t\t{\n\t\t\tinputPath:  \"testdata/no-port-multi.yaml\",\n\t\t\toutputPath: \"testdata/expected/no-port-multi.yaml\",\n\t\t\thostPort:   \"8443\",\n\t\t\tprotocol:   \"https\",\n\t\t},\n\t\t{\n\t\t\tinputPath:  \"testdata/label-only.yaml\",\n\t\t\toutputPath: \"testdata/expected/label-only.yaml\",\n\t\t\thostPort:   \"8443\",\n\t\t\tprotocol:   \"https\",\n\t\t},\n\t\t{\n\t\t\tinputPath: \"testdata/no-node\",\n\t\t\terror:     true,\n\t\t},\n\t}\n\n\tfor _, v := range cases {\n\t\tc, _ := NewCluster(\"testcase\", \"v1.26.3\", \"\", v.inputPath, \"\", nil, v1alpha1.BuildCustomizationSpec{\n\t\t\tHost:     \"cnoe.localtest.me\",\n\t\t\tPort:     v.hostPort,\n\t\t\tProtocol: v.protocol,\n\t\t}, logr.Discard())\n\n\t\tb, err := c.getConfig()\n\t\tif v.error {\n\t\t\tassert.Error(t, err)\n\t\t\tcontinue\n\t\t}\n\t\tassert.NoError(t, err)\n\t\texpected, _ := os.ReadFile(v.outputPath)\n\t\tassert.YAMLEq(t, string(expected), string(b))\n\t}\n}\n\n// Mock provider for testing\ntype mockProvider struct {\n\tmock.Mock\n\tIProvider\n}\n\nfunc (m *mockProvider) ListNodes(name string) ([]nodes.Node, error) {\n\targs := m.Called(name)\n\treturn args.Get(0).([]nodes.Node), args.Error(1)\n}\n\ntype mockRuntime struct {\n\tmock.Mock\n}\n\nfunc (m *mockRuntime) ContainerWithPort(ctx context.Context, name string, port string) (bool, error) {\n\targs := m.Called(ctx, name, port)\n\treturn args.Get(0).(bool), args.Error(1)\n}\n\n// Mock Docker client for testing\ntype DockerClientMock struct {\n\tclient.APIClient\n\tmock.Mock\n}\n\nfunc (m *DockerClientMock) ContainerList(ctx context.Context, listOptions types.ContainerListOptions) ([]types.Container, error) {\n\tmockArgs := m.Called(ctx, listOptions)\n\treturn mockArgs.Get(0).([]types.Container), mockArgs.Error(1)\n}\n\ntype NodeMock struct {\n\tmock.Mock\n}\n\nfunc (n *NodeMock) Command(command string, args ...string) exec.Cmd {\n\targsMock := append([]string{command}, args...)\n\tmockArgs := n.Called(argsMock)\n\treturn mockArgs.Get(0).(exec.Cmd)\n}\n\nfunc (n *NodeMock) String() string {\n\targs := n.Called()\n\treturn args.String(0)\n}\n\nfunc (n *NodeMock) Role() (string, error) {\n\targs := n.Called()\n\treturn args.String(0), args.Error(1)\n}\n\nfunc (n *NodeMock) IP() (ipv4 string, ipv6 string, err error) {\n\targs := n.Called()\n\treturn args.String(0), args.String(1), args.Error(2)\n}\n\nfunc (n *NodeMock) SerialLogs(writer io.Writer) error {\n\targs := n.Called(writer)\n\treturn args.Error(0)\n}\n\nfunc (n *NodeMock) CommandContext(ctx context.Context, cmd string, args ...string) exec.Cmd {\n\tmockArgs := n.Called(nil)\n\treturn mockArgs.Get(0).(exec.Cmd)\n}\n"
  },
  {
    "path": "pkg/kind/config.go",
    "content": "package kind\n\nimport (\n\t\"embed\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util/files\"\n)\n\ntype PortMapping struct {\n\tHostPort      string\n\tContainerPort string\n}\n\ntype TemplateConfig struct {\n\tv1alpha1.BuildCustomizationSpec\n\tKubernetesVersion string\n\tExtraPortsMapping []PortMapping\n\tRegistryConfig    string\n\tRegistryCertsDir  string\n}\n\n//go:embed resources/* testdata/custom-kind.yaml.tmpl\nvar configFS embed.FS\n\nfunc loadConfig(path string, httpClient HttpClient) ([]byte, error) {\n\tvar rawConfigTempl []byte\n\tvar err error\n\tif path != \"\" {\n\t\tif strings.HasPrefix(path, \"https://\") || strings.HasPrefix(path, \"http://\") {\n\t\t\tresp, err := httpClient.Get(path)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"fetching remote kind config: %w\", err)\n\t\t\t}\n\t\t\tdefer resp.Body.Close()\n\t\t\tif !(resp.StatusCode < 300 && resp.StatusCode >= 200) {\n\t\t\t\treturn nil, fmt.Errorf(\"got %d status code when fetching kind config\", resp.StatusCode)\n\t\t\t}\n\t\t\trawConfigTempl, err = io.ReadAll(resp.Body)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"reading remote kind config body: %w\", err)\n\t\t\t}\n\t\t} else {\n\t\t\trawConfigTempl, err = os.ReadFile(path)\n\t\t}\n\t} else {\n\t\trawConfigTempl, err = fs.ReadFile(configFS, \"resources/kind.yaml.tmpl\")\n\t}\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"reading kind config: %w\", err)\n\t}\n\treturn rawConfigTempl, nil\n}\n\nfunc parsePortMappings(extraPortsMapping string) []PortMapping {\n\tvar portMappingPairs []PortMapping\n\tif len(extraPortsMapping) > 0 {\n\t\t// Split pairs of ports \"11=1111\",\"22=2222\",etc\n\t\tpairs := strings.Split(extraPortsMapping, \",\")\n\t\t// Create a slice to store PortMapping pairs.\n\t\tportMappingPairs = make([]PortMapping, len(pairs))\n\t\t// Parse each pair into PortPair objects.\n\t\tfor i, pair := range pairs {\n\t\t\tparts := strings.Split(pair, \":\")\n\t\t\tif len(parts) == 2 {\n\t\t\t\tportMappingPairs[i] = PortMapping{parts[0], parts[1]}\n\t\t\t}\n\t\t}\n\t}\n\treturn portMappingPairs\n}\n\nfunc findRegistryConfig(registryConfigPaths []string) string {\n\tfor _, s := range registryConfigPaths {\n\t\tpath := os.ExpandEnv(s)\n\t\tif _, err := os.Stat(path); err == nil {\n\t\t\treturn path\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc renderRegistryCertsDir(cfg v1alpha1.BuildCustomizationSpec) (string, error) {\n\t// Generate the directory structure\n\tdir, err := os.MkdirTemp(\"\", \"idpbuilder-registry-certs.d-*\")\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"creating temp dir %w\", err)\n\t}\n\n\tvar hostAndPort string\n\tif cfg.UsePathRouting {\n\t\thostAndPort = fmt.Sprintf(\"%s:%s\", cfg.Host, cfg.Port)\n\t} else {\n\t\thostAndPort = fmt.Sprintf(\"gitea.%s:%s\", cfg.Host, cfg.Port)\n\t}\n\thostCertsDir := filepath.Join(dir, hostAndPort)\n\terr = os.Mkdir(hostCertsDir, 0700)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"creating temp dir for host %w\", err)\n\t}\n\n\t// Render out the template\n\trawConfigTempl, err := fs.ReadFile(configFS, \"resources/hosts.toml.tmpl\")\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"reading insecure registry config %w\", err)\n\t}\n\n\tvar retBuff []byte\n\tif retBuff, err = files.ApplyTemplate(rawConfigTempl, cfg); err != nil {\n\t\treturn \"\", fmt.Errorf(\"templating insecure registry config %w\", err)\n\t}\n\n\thostsFile := filepath.Join(hostCertsDir, \"hosts.toml\")\n\n\terr = os.WriteFile(hostsFile, retBuff, 0700)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"writing insecure registry config %w\", err)\n\t}\n\n\t// Render and write hosts.toml for each registry mirror\n\tfor _, mirror := range cfg.RegistryMirrors {\n\t\tmirrorCertsDir := filepath.Join(dir, mirror.TargetRegistry)\n\t\terr = os.Mkdir(mirrorCertsDir, 0700)\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"creating temp dir for mirror %w\", err)\n\t\t}\n\n\t\t// Render out the mirror template\n\t\trawMirrorTempl, err := fs.ReadFile(configFS, \"resources/hosts-mirror.toml.tmpl\")\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"reading registry mirror config %w\", err)\n\t\t}\n\n\t\tmirrorData := struct {\n\t\t\tRegistryAddress         string\n\t\t\tInsecureRegistryMirrors bool\n\t\t}{\n\t\t\tRegistryAddress:         mirror.RegistryAddress,\n\t\t\tInsecureRegistryMirrors: cfg.InsecureRegistryMirrors,\n\t\t}\n\n\t\tvar retBuff []byte\n\t\tif retBuff, err = files.ApplyTemplate(rawMirrorTempl, mirrorData); err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"templating registry mirror config %w\", err)\n\t\t}\n\n\t\thostsFile := filepath.Join(mirrorCertsDir, \"hosts.toml\")\n\t\terr = os.WriteFile(hostsFile, retBuff, 0700)\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"writing registry mirror config %w\", err)\n\t\t}\n\t}\n\n\treturn dir, nil\n}\n"
  },
  {
    "path": "pkg/kind/config_integration_test.go",
    "content": "package kind\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n)\n\nfunc TestRegistryMirrorHostsTomlContent(t *testing.T) {\n\t// Test that the generated hosts.toml for mirrors has the correct content\n\tcfg := v1alpha1.BuildCustomizationSpec{\n\t\tHost:                    \"cnoe.localtest.me\",\n\t\tPort:                    \"8443\",\n\t\tInsecureRegistryMirrors: true,\n\t\tRegistryMirrors: []v1alpha1.RegistryMirror{\n\t\t\t{\n\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t},\n\t\t},\n\t}\n\n\tdir, err := renderRegistryCertsDir(cfg)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to render registry certs dir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\t// Check docker.io hosts.toml content\n\tdockerHostsFile := filepath.Join(dir, \"docker.io\", \"hosts.toml\")\n\tcontent, err := os.ReadFile(dockerHostsFile)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to read hosts.toml: %v\", err)\n\t}\n\n\tcontentStr := string(content)\n\n\t// Verify key content exists\n\texpectedContent := []string{\n\t\t`server = \"http://kind-registry:5000\"`,\n\t\t`skip_verify = true`,\n\t\t`[host.\"http://kind-registry:5000\"]`,\n\t\t`capabilities = [\"pull\", \"resolve\"]`,\n\t}\n\n\tfor _, expected := range expectedContent {\n\t\tif !strings.Contains(contentStr, expected) {\n\t\t\tt.Errorf(\"hosts.toml missing expected content: %s\\nActual content:\\n%s\", expected, contentStr)\n\t\t}\n\t}\n\n\t// Verify content that should NOT exist\n\tunexpectedContent := []string{\n\t\t`proxy`,\n\t\t`https://docker.io`, // Should not reference target registry directly\n\t}\n\n\tfor _, unexpected := range unexpectedContent {\n\t\tif strings.Contains(contentStr, unexpected) {\n\t\t\tt.Errorf(\"hosts.toml should not contain: %s\\nActual content:\\n%s\", unexpected, contentStr)\n\t\t}\n\t}\n}\n\nfunc TestMultipleMirrors(t *testing.T) {\n\t// Test with multiple mirrors pointing to different registries\n\tcfg := v1alpha1.BuildCustomizationSpec{\n\t\tHost: \"cnoe.localtest.me\",\n\t\tPort: \"8443\",\n\t\tRegistryMirrors: []v1alpha1.RegistryMirror{\n\t\t\t{\n\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTargetRegistry:  \"ghcr.io\",\n\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTargetRegistry:  \"quay.io\",\n\t\t\t\tRegistryAddress: \"https://my-registry:5000\",\n\t\t\t},\n\t\t},\n\t}\n\n\tdir, err := renderRegistryCertsDir(cfg)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to render registry certs dir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\t// Verify all mirror directories exist\n\tregistries := []string{\"docker.io\", \"ghcr.io\", \"quay.io\"}\n\tfor _, registry := range registries {\n\t\tmirrorDir := filepath.Join(dir, registry)\n\t\tif _, err := os.Stat(mirrorDir); os.IsNotExist(err) {\n\t\t\tt.Errorf(\"expected mirror directory %s does not exist\", mirrorDir)\n\t\t}\n\n\t\thostsFile := filepath.Join(mirrorDir, \"hosts.toml\")\n\t\tif _, err := os.Stat(hostsFile); os.IsNotExist(err) {\n\t\t\tt.Errorf(\"expected hosts.toml file %s does not exist\", hostsFile)\n\t\t}\n\t}\n\n\t// Verify docker.io uses http\n\tdockerFile := filepath.Join(dir, \"docker.io\", \"hosts.toml\")\n\tcontent, _ := os.ReadFile(dockerFile)\n\tif !strings.Contains(string(content), `server = \"http://kind-registry:5000\"`) {\n\t\tt.Errorf(\"docker.io should have http server URL\")\n\t}\n\n\t// Verify quay.io uses https (since RegistryAddress starts with https)\n\tquayFile := filepath.Join(dir, \"quay.io\", \"hosts.toml\")\n\tcontent, _ = os.ReadFile(quayFile)\n\tif !strings.Contains(string(content), `server = \"https://my-registry:5000\"`) {\n\t\tt.Errorf(\"quay.io should have https server URL\")\n\t}\n}\n\nfunc TestMirrorWithExistingGiteaConfig(t *testing.T) {\n\t// Test that mirrors work alongside the existing gitea registry config\n\tcfg := v1alpha1.BuildCustomizationSpec{\n\t\tHost: \"cnoe.localtest.me\",\n\t\tPort: \"8443\",\n\t\tRegistryMirrors: []v1alpha1.RegistryMirror{\n\t\t\t{\n\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t},\n\t\t},\n\t}\n\n\tdir, err := renderRegistryCertsDir(cfg)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to render registry certs dir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\t// Verify gitea config exists\n\tgiteaDir := filepath.Join(dir, \"gitea.cnoe.localtest.me:8443\")\n\tif _, err := os.Stat(giteaDir); os.IsNotExist(err) {\n\t\tt.Errorf(\"expected gitea directory %s does not exist\", giteaDir)\n\t}\n\n\tgiteaHostsFile := filepath.Join(giteaDir, \"hosts.toml\")\n\tif _, err := os.Stat(giteaHostsFile); os.IsNotExist(err) {\n\t\tt.Errorf(\"expected gitea hosts.toml file %s does not exist\", giteaHostsFile)\n\t}\n\n\t// Verify docker.io mirror exists\n\tdockerDir := filepath.Join(dir, \"docker.io\")\n\tif _, err := os.Stat(dockerDir); os.IsNotExist(err) {\n\t\tt.Errorf(\"expected docker.io directory %s does not exist\", dockerDir)\n\t}\n\n\tdockerHostsFile := filepath.Join(dockerDir, \"hosts.toml\")\n\tif _, err := os.Stat(dockerHostsFile); os.IsNotExist(err) {\n\t\tt.Errorf(\"expected docker.io hosts.toml file %s does not exist\", dockerHostsFile)\n\t}\n}\n\nfunc TestMirrorWithHTTPS(t *testing.T) {\n\t// Test that mirrors work with HTTPS addresses\n\tcfg := v1alpha1.BuildCustomizationSpec{\n\t\tHost: \"cnoe.localtest.me\",\n\t\tPort: \"8443\",\n\t\tRegistryMirrors: []v1alpha1.RegistryMirror{\n\t\t\t{\n\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\tRegistryAddress: \"https://secure-registry:5000\",\n\t\t\t},\n\t\t},\n\t}\n\n\tdir, err := renderRegistryCertsDir(cfg)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to render registry certs dir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\t// Check docker.io hosts.toml content\n\tdockerHostsFile := filepath.Join(dir, \"docker.io\", \"hosts.toml\")\n\tcontent, err := os.ReadFile(dockerHostsFile)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to read hosts.toml: %v\", err)\n\t}\n\n\tcontentStr := string(content)\n\n\t// Verify https is used\n\tif !strings.Contains(contentStr, `server = \"https://secure-registry:5000\"`) {\n\t\tt.Errorf(\"hosts.toml should contain https server URL\\nActual content:\\n%s\", contentStr)\n\t}\n\n\tif !strings.Contains(contentStr, `[host.\"https://secure-registry:5000\"]`) {\n\t\tt.Errorf(\"hosts.toml should contain https host configuration\\nActual content:\\n%s\", contentStr)\n\t}\n}\n\nfunc TestMirrorWithHTTP(t *testing.T) {\n\t// Test that mirrors work with HTTP addresses\n\tcfg := v1alpha1.BuildCustomizationSpec{\n\t\tHost: \"cnoe.localtest.me\",\n\t\tPort: \"8443\",\n\t\tRegistryMirrors: []v1alpha1.RegistryMirror{\n\t\t\t{\n\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\tRegistryAddress: \"http://insecure-registry:5000\",\n\t\t\t},\n\t\t},\n\t}\n\n\tdir, err := renderRegistryCertsDir(cfg)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to render registry certs dir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\t// Check docker.io hosts.toml content\n\tdockerHostsFile := filepath.Join(dir, \"docker.io\", \"hosts.toml\")\n\tcontent, err := os.ReadFile(dockerHostsFile)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to read hosts.toml: %v\", err)\n\t}\n\n\tcontentStr := string(content)\n\n\t// Verify http is used\n\tif !strings.Contains(contentStr, `server = \"http://insecure-registry:5000\"`) {\n\t\tt.Errorf(\"hosts.toml should contain http server URL\\nActual content:\\n%s\", contentStr)\n\t}\n\n\tif !strings.Contains(contentStr, `[host.\"http://insecure-registry:5000\"]`) {\n\t\tt.Errorf(\"hosts.toml should contain http host configuration\\nActual content:\\n%s\", contentStr)\n\t}\n\n\tif strings.Contains(contentStr, `skip_verify = true`) {\n\t\tt.Errorf(\"hosts.toml should not contain skip_verify unless insecure-registry-mirrors is set\\nActual content:\\n%s\", contentStr)\n\t}\n}\n\nfunc TestMirrorWithHTTPInsecure(t *testing.T) {\n\tcfg := v1alpha1.BuildCustomizationSpec{\n\t\tHost:                    \"cnoe.localtest.me\",\n\t\tPort:                    \"8443\",\n\t\tInsecureRegistryMirrors: true,\n\t\tRegistryMirrors: []v1alpha1.RegistryMirror{\n\t\t\t{\n\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\tRegistryAddress: \"http://insecure-registry:5000\",\n\t\t\t},\n\t\t},\n\t}\n\n\tdir, err := renderRegistryCertsDir(cfg)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to render registry certs dir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tdockerHostsFile := filepath.Join(dir, \"docker.io\", \"hosts.toml\")\n\tcontent, err := os.ReadFile(dockerHostsFile)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to read hosts.toml: %v\", err)\n\t}\n\n\tcontentStr := string(content)\n\tif !strings.Contains(contentStr, `skip_verify = true`) {\n\t\tt.Errorf(\"hosts.toml should contain skip_verify when insecure-registry-mirrors is set\\nActual content:\\n%s\", contentStr)\n\t}\n}\n"
  },
  {
    "path": "pkg/kind/config_test.go",
    "content": "package kind\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"io/fs\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n)\n\ntype MockHttpClient struct{}\n\nfunc (o *MockHttpClient) Get(url string) (resp *http.Response, err error) {\n\tif url == \"https://doesnotexist\" || url == \"http://doesnotexist\" {\n\t\treturn nil, errors.New(\"connection error\")\n\t} else if url == \"https://404\" {\n\t\tbody := io.NopCloser(strings.NewReader(\"\"))\n\t\tr := http.Response{\n\t\t\tStatus:     \"404 NotFound\",\n\t\t\tStatusCode: 404,\n\t\t\tBody:       body,\n\t\t}\n\t\treturn &r, nil\n\t}\n\n\tbody := io.NopCloser(strings.NewReader(\"foo: bar\"))\n\tr := http.Response{\n\t\tStatus:     \"200 OK\",\n\t\tStatusCode: 200,\n\t\tBody:       body,\n\t}\n\n\treturn &r, nil\n}\n\nfunc TestLoadConfig(t *testing.T) {\n\thttpClient := MockHttpClient{}\n\tdefaultTemplate, err := fs.ReadFile(configFS, \"resources/kind.yaml.tmpl\")\n\tif err != nil {\n\t\tt.Fatalf(\"failed to load default kind template: %v\", err)\n\t}\n\n\tcustomTemplate, err := fs.ReadFile(configFS, \"testdata/custom-kind.yaml.tmpl\")\n\tif err != nil {\n\t\tt.Fatalf(\"failed to load custom kind template: %v\", err)\n\t}\n\n\thttpsTemplate := []byte(\"foo: bar\")\n\n\tconnectionErr := \"fetching remote kind config: connection error\"\n\tnotFoundErr := \"got 404 status code when fetching kind config\"\n\n\ttype test struct {\n\t\tpath     string\n\t\texpected []byte\n\t\terr      *string\n\t}\n\ttests := []test{\n\t\t{\n\t\t\tpath:     \"\",\n\t\t\texpected: defaultTemplate,\n\t\t\terr:      nil,\n\t\t},\n\t\t{\n\t\t\tpath:     \"testdata/custom-kind.yaml.tmpl\",\n\t\t\texpected: customTemplate,\n\t\t\terr:      nil,\n\t\t},\n\t\t{\n\t\t\tpath:     \"https://doesnotexist\",\n\t\t\texpected: defaultTemplate,\n\t\t\terr:      &connectionErr,\n\t\t},\n\t\t{\n\t\t\tpath:     \"http://doesnotexist\",\n\t\t\texpected: customTemplate,\n\t\t\terr:      &connectionErr,\n\t\t},\n\t\t{\n\t\t\tpath:     \"https://404\",\n\t\t\texpected: defaultTemplate,\n\t\t\terr:      &notFoundErr,\n\t\t},\n\t\t{\n\t\t\tpath:     \"https://anyurlworks\",\n\t\t\texpected: httpsTemplate,\n\t\t\terr:      nil,\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tout, err := loadConfig(tc.path, &httpClient)\n\t\tif tc.err != nil {\n\t\t\tif err != nil {\n\t\t\t\tif err.Error() != *tc.err {\n\t\t\t\t\tt.Errorf(\"expected error: %v\\nfound error: %v\", *tc.err, err.Error())\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tt.Errorf(\"expected error: %v\\ndidnt find an error\", *tc.err)\n\t\t\t}\n\t\t} else {\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"failed to load kind config: %v\", err)\n\t\t\t}\n\t\t\tif !reflect.DeepEqual(tc.expected, out) {\n\t\t\t\tt.Errorf(\"expected:\\n%v\\ngot:\\n%v\", string(tc.expected), string(out))\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestExtraPortMappingsUtilFunc(t *testing.T) {\n\ttype test struct {\n\t\textraPortMappings string\n\t\texpected          []PortMapping\n\t}\n\ttests := []test{\n\t\t{\n\t\t\textraPortMappings: \"\",\n\t\t\texpected:          []PortMapping(nil),\n\t\t},\n\t\t{\n\t\t\textraPortMappings: \"22:32222\",\n\t\t\texpected: []PortMapping{\n\t\t\t\t{\n\t\t\t\t\tHostPort:      \"22\",\n\t\t\t\t\tContainerPort: \"32222\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\textraPortMappings: \"11:1111,33:3333,4444:4444\",\n\t\t\texpected: []PortMapping{\n\t\t\t\t{\n\t\t\t\t\tHostPort:      \"11\",\n\t\t\t\t\tContainerPort: \"1111\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tHostPort:      \"33\",\n\t\t\t\t\tContainerPort: \"3333\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tHostPort:      \"4444\",\n\t\t\t\t\tContainerPort: \"4444\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tpmOutput := parsePortMappings(tc.extraPortMappings)\n\t\tif !reflect.DeepEqual(tc.expected, pmOutput) {\n\t\t\tt.Errorf(\"expected: %v, got: %v\", tc.expected, pmOutput)\n\t\t}\n\t}\n}\n\nfunc TestFindRegistryConfig(t *testing.T) {\n\ttype test struct {\n\t\tpaths    []string\n\t\texpected string\n\t}\n\ttests := []test{\n\t\t{\n\t\t\tpaths:    []string{\"testdata/empty.json\"},\n\t\t\texpected: \"testdata/empty.json\",\n\t\t},\n\t\t{\n\t\t\tpaths:    []string{\"doesntexist\"},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tpaths:    []string{\"doesntexist\", \"testdata/empty.json\"},\n\t\t\texpected: \"testdata/empty.json\",\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tout := findRegistryConfig(tc.paths)\n\t\tif !reflect.DeepEqual(tc.expected, out) {\n\t\t\tt.Errorf(\"expected:\\n%v\\ngot:\\n%v\", tc.expected, out)\n\t\t}\n\t}\n}\n\nfunc TestRenderRegistryCertsDirWithMirrors(t *testing.T) {\n\ttype test struct {\n\t\tname              string\n\t\tcfg               v1alpha1.BuildCustomizationSpec\n\t\texpectedDirs      []string\n\t\texpectedFileCount int\n\t\texpectSkipVerify  bool\n\t}\n\n\ttests := []test{\n\t\t{\n\t\t\tname: \"no mirrors\",\n\t\t\tcfg: v1alpha1.BuildCustomizationSpec{\n\t\t\t\tHost: \"cnoe.localtest.me\",\n\t\t\t\tPort: \"8443\",\n\t\t\t},\n\t\t\texpectedDirs:      []string{\"gitea.cnoe.localtest.me:8443\"},\n\t\t\texpectedFileCount: 1,\n\t\t},\n\t\t{\n\t\t\tname: \"with single mirror\",\n\t\t\tcfg: v1alpha1.BuildCustomizationSpec{\n\t\t\t\tHost: \"cnoe.localtest.me\",\n\t\t\t\tPort: \"8443\",\n\t\t\t\tRegistryMirrors: []v1alpha1.RegistryMirror{\n\t\t\t\t\t{\n\t\t\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDirs:      []string{\"gitea.cnoe.localtest.me:8443\", \"docker.io\"},\n\t\t\texpectedFileCount: 2,\n\t\t},\n\t\t{\n\t\t\tname: \"with mirrors and insecure skip verify\",\n\t\t\tcfg: v1alpha1.BuildCustomizationSpec{\n\t\t\t\tHost:                    \"cnoe.localtest.me\",\n\t\t\t\tPort:                    \"8443\",\n\t\t\t\tInsecureRegistryMirrors: true,\n\t\t\t\tRegistryMirrors: []v1alpha1.RegistryMirror{\n\t\t\t\t\t{\n\t\t\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDirs:      []string{\"gitea.cnoe.localtest.me:8443\", \"docker.io\"},\n\t\t\texpectedFileCount: 2,\n\t\t\texpectSkipVerify:  true,\n\t\t},\n\t\t{\n\t\t\tname: \"with multiple mirrors\",\n\t\t\tcfg: v1alpha1.BuildCustomizationSpec{\n\t\t\t\tHost: \"cnoe.localtest.me\",\n\t\t\t\tPort: \"8443\",\n\t\t\t\tRegistryMirrors: []v1alpha1.RegistryMirror{\n\t\t\t\t\t{\n\t\t\t\t\t\tTargetRegistry:  \"docker.io\",\n\t\t\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tTargetRegistry:  \"ghcr.io\",\n\t\t\t\t\t\tRegistryAddress: \"http://kind-registry:5000\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDirs:      []string{\"gitea.cnoe.localtest.me:8443\", \"docker.io\", \"ghcr.io\"},\n\t\t\texpectedFileCount: 3,\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tdir, err := renderRegistryCertsDir(tc.cfg)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to render registry certs dir: %v\", err)\n\t\t\t}\n\t\t\tdefer os.RemoveAll(dir)\n\n\t\t\t// Check all expected directories exist\n\t\t\tfor _, expectedDir := range tc.expectedDirs {\n\t\t\t\tfullPath := filepath.Join(dir, expectedDir)\n\t\t\t\tif _, err := os.Stat(fullPath); os.IsNotExist(err) {\n\t\t\t\t\tt.Errorf(\"expected directory %s does not exist\", fullPath)\n\t\t\t\t}\n\n\t\t\t\t// Check hosts.toml exists in each directory\n\t\t\t\thostsFile := filepath.Join(fullPath, \"hosts.toml\")\n\t\t\t\tif _, err := os.Stat(hostsFile); os.IsNotExist(err) {\n\t\t\t\t\tt.Errorf(\"expected hosts.toml file %s does not exist\", hostsFile)\n\t\t\t\t}\n\n\t\t\t\t// For mirrors, check the content\n\t\t\t\tif expectedDir != \"gitea.cnoe.localtest.me:8443\" {\n\t\t\t\t\tcontent, err := os.ReadFile(hostsFile)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tt.Fatalf(\"failed to read hosts.toml: %v\", err)\n\t\t\t\t\t}\n\t\t\t\t\tcontentStr := string(content)\n\t\t\t\t\tif tc.expectSkipVerify {\n\t\t\t\t\t\tif !strings.Contains(contentStr, \"skip_verify = true\") {\n\t\t\t\t\t\t\tt.Errorf(\"hosts.toml for mirror %s should contain skip_verify = true\", expectedDir)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if strings.Contains(contentStr, \"skip_verify = true\") {\n\t\t\t\t\t\tt.Errorf(\"hosts.toml for mirror %s should not contain skip_verify = true\", expectedDir)\n\t\t\t\t\t}\n\t\t\t\t\tif !strings.Contains(contentStr, \"[host.\") {\n\t\t\t\t\t\tt.Errorf(\"hosts.toml for mirror %s should contain host configuration\", expectedDir)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/kind/kindlogger.go",
    "content": "package kind\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/go-logr/logr\"\n\tkindlog \"sigs.k8s.io/kind/pkg/log\"\n)\n\n// this is a wrapper of logr.Logger made specifically for kind' logger.\n// this is needed because kind's implementation is internal.\n// https://github.com/kubernetes-sigs/kind/blob/1a8f0473a0785e0975e26739524513e8ee696be3/pkg/log/types.go\ntype kindLogger struct {\n\tcliLogger *logr.Logger\n}\n\nfunc (l *kindLogger) Warn(message string) {\n\tl.cliLogger.Info(message)\n}\n\nfunc (l *kindLogger) Warnf(message string, args ...interface{}) {\n\tl.cliLogger.Info(fmt.Sprintf(message, args...))\n}\n\nfunc (l *kindLogger) Error(message string) {\n\tl.cliLogger.Error(fmt.Errorf(message), \"\")\n}\n\nfunc (l *kindLogger) Errorf(message string, args ...interface{}) {\n\tmsg := fmt.Sprintf(message, args...)\n\tl.cliLogger.Error(fmt.Errorf(msg), \"\")\n}\n\nfunc (l *kindLogger) V(level kindlog.Level) kindlog.InfoLogger {\n\treturn newKindInfoLogger(l.cliLogger, int(level))\n}\n\n// KindLoggerFromLogr is a wrapper of logr.Logger made specifically for kind's InfoLogger.\n// https://github.com/kubernetes-sigs/kind/blob/1a8f0473a0785e0975e26739524513e8ee696be3/pkg/log/types.go\nfunc KindLoggerFromLogr(logrLogger *logr.Logger) *kindLogger {\n\treturn &kindLogger{\n\t\tcliLogger: logrLogger,\n\t}\n}\n\nfunc newKindInfoLogger(logrLogger *logr.Logger, level int) *kindInfoLogger {\n\treturn &kindInfoLogger{\n\t\tcliLogger: logrLogger,\n\t\tlevel:     level + 1, // push log level down. e.g. info log becomes debug+1.\n\t}\n}\n\ntype kindInfoLogger struct {\n\tcliLogger *logr.Logger\n\tlevel     int\n}\n\nfunc (k *kindInfoLogger) Info(message string) {\n\tk.cliLogger.V(k.level).Info(message)\n}\n\nfunc (k *kindInfoLogger) Infof(message string, args ...interface{}) {\n\tk.cliLogger.V(k.level).Info(fmt.Sprintf(message, args...))\n}\n\nfunc (k *kindInfoLogger) Enabled() bool {\n\treturn k.cliLogger.Enabled()\n}\n"
  },
  {
    "path": "pkg/kind/resources/hosts-mirror.toml.tmpl",
    "content": "server = \"{{ .RegistryAddress }}\"\n\n[host.\"{{ .RegistryAddress }}\"]\n  capabilities = [\"pull\", \"resolve\"]\n{{- if .InsecureRegistryMirrors }}\n  skip_verify = true\n{{- end }}"
  },
  {
    "path": "pkg/kind/resources/hosts.toml.tmpl",
    "content": "{{ if .UsePathRouting -}}\nserver = \"https://{{ .Host }}:{{ .Port }}\"\n\n[host.\"https://{{ .Host }}\"]\n  capabilities = [\"pull\", \"resolve\"]\n  skip_verify = true\n{{ else -}}\nserver = \"https://gitea.{{ .Host }}:{{ .Port }}\"\n\n[host.\"https://gitea.{{ .Host }}\"]\n  capabilities = [\"pull\", \"resolve\"]\n  skip_verify = true\n{{ end -}}\n"
  },
  {
    "path": "pkg/kind/resources/kind.yaml.tmpl",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  image: \"kindest/node:{{ .KubernetesVersion }}\"\n  labels:\n    ingress-ready: \"true\"\n  extraPortMappings:\n  - containerPort: {{ if (eq .Protocol \"http\")  -}} 80 {{- else -}} 443 {{- end }}\n    hostPort: {{ .Port }}\n    {{- if .StaticPassword }}\n    listenAddress: \"127.0.0.1\"\n    {{- end }}\n    protocol: TCP\n  - containerPort: 32222\n    hostPort: 32222\n    protocol: TCP\n  {{- range .ExtraPortsMapping }}\n  - containerPort: {{ .ContainerPort }}\n    hostPort: {{ .HostPort }}\n    protocol: TCP\n  {{- end }}\n  extraMounts:\n  - containerPath: /etc/containerd/certs.d\n    hostPath: {{ .RegistryCertsDir }}\n{{- if .RegistryConfig }}\n  - containerPath: /var/lib/kubelet/config.json\n    hostPath: {{ .RegistryConfig }}\n{{- end }}\ncontainerdConfigPatches:\n- |-\n  [plugins.\"io.containerd.grpc.v1.cri\".registry]\n    config_path = \"/etc/containerd/certs.d\"\n"
  },
  {
    "path": "pkg/kind/testdata/custom-kind.yaml.tmpl",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  image: \"kindest/node:{{ .KubernetesVersion }}\"\n  labels:\n    ingress-ready: \"true\"\n  extraPortMappings:\n  - containerPort: {{ if (eq .Protocol \"http\")  -}} 80 {{- else -}} 443 {{- end }}\n    hostPort: {{ .Port }}\n    protocol: TCP\n  - containerPort: 10\n    hostPort: 1000\n    protocol: TCP\n  {{ range .ExtraPortsMapping -}}\n  - containerPort: {{ .ContainerPort }}\n    hostPort: {{ .HostPort }}\n    protocol: TCP\n  {{ end }}\ncontainerdConfigPatches:\n- |-\n  {{ if .UsePathRouting -}}\n  [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors.\"{{ .Host }}:{{ .Port }}\"]\n    endpoint = [\"https://{{ .Host }}\"]\n  [plugins.\"io.containerd.grpc.v1.cri\".registry.configs.\"{{ .Host }}\".tls]\n    insecure_skip_verify = true\n  {{- else -}}\n  [plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors.\"gitea.{{ .Host }}:{{ .Port }}\"]\n    endpoint = [\"https://gitea.{{ .Host }}\"]\n  [plugins.\"io.containerd.grpc.v1.cri\".registry.configs.\"gitea.{{ .Host }}\".tls]\n    insecure_skip_verify = true\n  {{- end -}}\n"
  },
  {
    "path": "pkg/kind/testdata/empty.json",
    "content": ""
  },
  {
    "path": "pkg/kind/testdata/expected/label-only.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnetworking: {}\nnodes:\n  - role: control-plane\n    extraPortMappings:\n      - containerPort: 31337\n        hostPort: 31337\n      - containerPort: 31340\n        hostPort: 31340\n      - containerPort: 31333\n        hostPort: 31333\n  - role: worker\n    image: \"abc\"\n    labels:\n      ingress-ready: \"true\"\n    extraPortMappings:\n      - containerPort: 443\n        hostPort: 8443\n        protocol: TCP\n\n"
  },
  {
    "path": "pkg/kind/testdata/expected/no-port-multi.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnetworking: {}\nnodes:\n  - role: control-plane\n    labels:\n      ingress-ready: \"true\"\n    extraPortMappings:\n      - containerPort: 31337\n        hostPort: 31337\n      - containerPort: 31340\n        hostPort: 31340\n      - containerPort: 31333\n        hostPort: 31333\n      - containerPort: 443\n        hostPort: 8443\n        protocol: TCP\n  - role: worker\n    image: \"abc\"\n"
  },
  {
    "path": "pkg/kind/testdata/expected/no-port.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnetworking: {}\nnodes:\n  - role: control-plane\n    labels:\n      ingress-ready: \"true\"\n    extraMounts:\n      - containerPath: /var/lib/kubelet/config.json\n        hostPath: ~/.docker/config.json\n    extraPortMappings:\n      - containerPort: 31337\n        hostPort: 31337\n      - containerPort: 31340\n        hostPort: 31340\n      - containerPort: 31333\n        hostPort: 31333\n      - containerPort: 443\n        hostPort: 8443\n        protocol: TCP\n"
  },
  {
    "path": "pkg/kind/testdata/expected/port-only.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnetworking: {}\nnodes:\n  - role: control-plane\n    extraPortMappings:\n      - containerPort: 31337\n        hostPort: 31337\n      - containerPort: 31340\n        hostPort: 31340\n      - containerPort: 31333\n        hostPort: 31333\n  - role: worker\n    labels:\n      ingress-ready: \"true\"\n    extraPortMappings:\n      - containerPort: 80\n        hostPort: 80\n        protocol: TCP\n"
  },
  {
    "path": "pkg/kind/testdata/label-only.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n  - role: control-plane\n    extraPortMappings:\n      - containerPort: 31337\n        hostPort: 31337\n      - containerPort: 31340\n        hostPort: 31340\n      - containerPort: 31333\n        hostPort: 31333\n  - role: worker\n    image: \"abc\"\n    labels:\n      ingress-ready: \"true\"\n"
  },
  {
    "path": "pkg/kind/testdata/no-node.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\n"
  },
  {
    "path": "pkg/kind/testdata/no-port-multi.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n  - role: control-plane\n    extraPortMappings:\n      - containerPort: 31337\n        hostPort: 31337\n      - containerPort: 31340\n        hostPort: 31340\n      - containerPort: 31333\n        hostPort: 31333\n  - role: worker\n    image: \"abc\"\n"
  },
  {
    "path": "pkg/kind/testdata/no-port.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n  - role: control-plane\n    extraMounts:\n      - containerPath: /var/lib/kubelet/config.json\n        hostPath: ~/.docker/config.json\n    extraPortMappings:\n      - containerPort: 31337\n        hostPort: 31337\n      - containerPort: 31340\n        hostPort: 31340\n      - containerPort: 31333\n        hostPort: 31333\n"
  },
  {
    "path": "pkg/kind/testdata/port-only.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n  - role: control-plane\n    extraPortMappings:\n      - containerPort: 31337\n        hostPort: 31337\n      - containerPort: 31340\n        hostPort: 31340\n      - containerPort: 31333\n        hostPort: 31333\n  - role: worker\n    extraPortMappings:\n      - containerPort: 80\n        hostPort: 80\n        protocol: TCP\n"
  },
  {
    "path": "pkg/logger/handler.go",
    "content": "package logger\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"log/slog\"\n\t\"runtime\"\n\t\"slices\"\n\t\"sync\"\n\t\"time\"\n)\n\n// https://en.wikipedia.org/wiki/ANSI_escape_code\nconst (\n\tReset              = \"\\033[0m\"\n\tWhite              = \"\\033[37m\"\n\tWhiteDim           = \"\\033[37;2m\"\n\tGreen              = \"\\033[32m\"\n\tGreenDimUnderlined = \"\\033[32;2;4m\"\n\tMagenta            = \"\\033[35m\"\n\tBrightRed          = \"\\033[91m\"\n\tBrightYellow       = \"\\033[93m\"\n\tCyan               = \"\\033[36m\"\n\tCyanDim            = \"\\033[36;2m\"\n\t// this mirrors the limit value from the internal slog package\n\tmaxBufferSize = 16384\n\tdateFormat    = time.Stamp\n)\n\nvar bufPool = sync.Pool{\n\tNew: func() any {\n\t\tb := make([]byte, 0, 2048)\n\t\treturn &b\n\t},\n}\n\ntype Options struct {\n\tAddSource  bool\n\tColored    bool\n\tLevel      slog.Leveler\n\tTimeFormat string\n}\n\n// Handler is very similar to slog's commonHandler\ntype Handler struct {\n\topts              Options\n\tjson              bool\n\tpreformattedAttrs []byte\n\tgroupPrefix       string\n\tgroups            []string\n\tunopenedGroups    []string\n\tnOpenGroups       int\n\tmu                *sync.Mutex\n\tw                 io.Writer\n}\n\nfunc NewHandler(out io.Writer, opts Options) *Handler {\n\treturn &Handler{\n\t\topts:              opts,\n\t\tpreformattedAttrs: make([]byte, 0),\n\t\tunopenedGroups:    make([]string, 0),\n\t\tnOpenGroups:       0,\n\t\tmu:                &sync.Mutex{},\n\t\tw:                 out,\n\t}\n}\n\nfunc (h *Handler) clone() *Handler {\n\treturn &Handler{\n\t\topts:              h.opts,\n\t\tjson:              h.json,\n\t\tpreformattedAttrs: slices.Clip(h.preformattedAttrs),\n\t\tgroupPrefix:       h.groupPrefix,\n\t\tgroups:            slices.Clip(h.groups),\n\t\tnOpenGroups:       h.nOpenGroups,\n\t\tw:                 h.w,\n\t\tmu:                h.mu,\n\t}\n}\n\nfunc (h *Handler) Enabled(_ context.Context, level slog.Level) bool {\n\tminLevel := slog.LevelInfo\n\tif h.opts.Level != nil {\n\t\tminLevel = h.opts.Level.Level()\n\t}\n\treturn level >= minLevel\n}\n\nfunc (h *Handler) WithGroup(name string) slog.Handler {\n\tif name == \"\" {\n\t\treturn h\n\t}\n\th2 := h.clone()\n\th2.unopenedGroups = make([]string, len(h.unopenedGroups)+1)\n\tcopy(h2.unopenedGroups, h.unopenedGroups)\n\th2.unopenedGroups[len(h2.unopenedGroups)-1] = name\n\treturn h2\n}\n\nfunc (h *Handler) WithAttrs(as []slog.Attr) slog.Handler {\n\tif len(as) == 0 {\n\t\treturn h\n\t}\n\th2 := h.clone()\n\th2.preformattedAttrs = h2.appendUnopenedGroups(h2.preformattedAttrs)\n\th2.unopenedGroups = nil\n\n\tfor _, a := range as {\n\t\th2.preformattedAttrs = h2.appendAttr(h2.preformattedAttrs, a)\n\t}\n\treturn h2\n}\n\nfunc (h *Handler) appendUnopenedGroups(buf []byte) []byte {\n\tfor _, g := range h.unopenedGroups {\n\t\tbuf = fmt.Appendf(buf, \"%s \", g)\n\t}\n\treturn buf\n}\n\nfunc (h *Handler) appendAttr(buf []byte, a slog.Attr) []byte {\n\ta.Value = a.Value.Resolve()\n\tif a.Equal(slog.Attr{}) {\n\t\treturn buf\n\t}\n\n\tswitch a.Value.Kind() {\n\tcase slog.KindGroup:\n\t\tattrs := a.Value.Group()\n\t\tif len(attrs) == 0 {\n\t\t\treturn buf\n\t\t}\n\t\tif a.Key != \"\" {\n\t\t\tfor _, ga := range attrs {\n\t\t\t\tbuf = h.appendAttr(buf, ga)\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tif a.Key == \"\" || a.Value.String() == \"\" {\n\t\t\treturn buf\n\t\t}\n\t\tbuf = h.appendKeyValuePair(buf, a)\n\t}\n\treturn buf\n}\n\nfunc (h *Handler) Handle(ctx context.Context, record slog.Record) error {\n\tbufp := bufPool.Get().(*[]byte)\n\tbuf := *bufp\n\n\tdefer func() {\n\t\t*bufp = buf\n\t\tfree(bufp)\n\t}()\n\n\t// append time, level, then message.\n\tif h.opts.Colored {\n\t\tbuf = fmt.Appendf(buf, WhiteDim)\n\t\tbuf = slog.Time(slog.TimeKey, record.Time).Value.Time().AppendFormat(buf, fmt.Sprintf(\"%s%s \", dateFormat, Reset))\n\n\t\tvar color string\n\t\tswitch record.Level {\n\t\tcase slog.LevelDebug:\n\t\t\tcolor = Magenta\n\t\tcase slog.LevelInfo:\n\t\t\tcolor = Green\n\t\tcase slog.LevelWarn:\n\t\t\tcolor = BrightYellow\n\t\tcase slog.LevelError:\n\t\t\tcolor = BrightRed\n\t\tdefault:\n\t\t\tcolor = Magenta\n\t\t}\n\t\tbuf = fmt.Appendf(buf, \"%s%s%s \", color, record.Level.String(), Reset)\n\n\t\tbuf = fmt.Appendf(buf, \"%s%s%s \", Cyan, record.Message, Reset)\n\t} else {\n\t\tbuf = slog.Time(slog.TimeKey, record.Time).Value.Time().AppendFormat(buf, fmt.Sprintf(\"%s \", dateFormat))\n\t\tbuf = fmt.Appendf(buf, \"%s \", record.Level)\n\t\tbuf = fmt.Appendf(buf, \"%s \", record.Message)\n\t}\n\n\tif h.opts.AddSource {\n\t\tbuf = h.appendAttr(buf, slog.Any(slog.SourceKey, source(record)))\n\t}\n\n\tbuf = append(buf, h.preformattedAttrs...)\n\tif record.NumAttrs() > 0 {\n\t\tbuf = h.appendUnopenedGroups(buf)\n\t\trecord.Attrs(func(a slog.Attr) bool {\n\t\t\tbuf = h.appendAttr(buf, a)\n\t\t\treturn true\n\t\t})\n\t}\n\tbuf = append(buf, \"\\n\"...)\n\th.mu.Lock()\n\tdefer h.mu.Unlock()\n\t_, err := h.w.Write(buf)\n\treturn err\n}\n\nfunc (h *Handler) appendKeyValuePair(buf []byte, a slog.Attr) []byte {\n\tif h.opts.Colored {\n\t\tif a.Key == \"err\" {\n\t\t\treturn fmt.Appendf(buf, \"%s%s=%v%s \", BrightRed, a.Key, a.Value.String(), Reset)\n\t\t}\n\t\treturn fmt.Appendf(buf, \"%s%s=%s%s%s%s \", WhiteDim, a.Key, Reset, White, a.Value.String(), Reset)\n\t}\n\treturn fmt.Appendf(buf, \"%s=%v \", a.Key, a.Value.String())\n}\n\nfunc free(b *[]byte) {\n\tif cap(*b) <= maxBufferSize {\n\t\t*b = (*b)[:0]\n\t\tbufPool.Put(b)\n\t}\n}\n\nfunc source(r slog.Record) *slog.Source {\n\tfs := runtime.CallersFrames([]uintptr{r.PC})\n\tf, _ := fs.Next()\n\treturn &slog.Source{\n\t\tFunction: f.Function,\n\t\tFile:     f.File,\n\t\tLine:     f.Line,\n\t}\n}\n"
  },
  {
    "path": "pkg/printer/cluster.go",
    "content": "package printer\n\nimport (\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/printer/types\"\n\t\"io\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n)\n\ntype ClusterPrinter struct {\n\tClusters  []types.Cluster\n\tOutWriter io.Writer\n}\n\nfunc (cp ClusterPrinter) PrintOutput(format string) error {\n\tswitch format {\n\tcase \"json\":\n\t\treturn PrintDataAsJson(cp.Clusters, cp.OutWriter)\n\tcase \"yaml\":\n\t\treturn PrintDataAsYaml(cp.Clusters, cp.OutWriter)\n\tcase \"table\":\n\t\treturn PrintDataAsTable(generateClusterTable(cp.Clusters), cp.OutWriter)\n\tdefault:\n\t\treturn fmt.Errorf(\"output format %s is not supported\", format)\n\t}\n}\n\nfunc generateClusterTable(input []types.Cluster) metav1.Table {\n\ttable := &metav1.Table{}\n\ttable.ColumnDefinitions = []metav1.TableColumnDefinition{\n\t\t{Name: \"Name\", Type: \"string\"},\n\t\t{Name: \"External-Port\", Type: \"string\"},\n\t\t{Name: \"Kube-Api\", Type: \"string\"},\n\t\t{Name: \"TLS\", Type: \"string\"},\n\t\t{Name: \"Kube-Port\", Type: \"string\"},\n\t\t{Name: \"Nodes\", Type: \"string\"},\n\t}\n\n\tfor _, cluster := range input {\n\t\trow := metav1.TableRow{\n\t\t\tCells: []interface{}{\n\t\t\t\tcluster.Name,\n\t\t\t\tcluster.ExternalPort,\n\t\t\t\tcluster.URLKubeApi,\n\t\t\t\tcluster.TlsCheck,\n\t\t\t\tcluster.KubePort,\n\t\t\t\tgenerateNodeData(cluster.Nodes),\n\t\t\t},\n\t\t}\n\t\ttable.Rows = append(table.Rows, row)\n\t}\n\treturn *table\n}\n\nfunc generateNodeData(nodes []types.Node) string {\n\tvar result string\n\tfor i, aNode := range nodes {\n\t\tresult += aNode.Name\n\t\tif i < len(nodes)-1 {\n\t\t\tresult += \",\"\n\t\t}\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "pkg/printer/package.go",
    "content": "package printer\n\nimport (\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/printer/types\"\n\t\"io\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n)\n\ntype PackagePrinter struct {\n\tPackages  []types.Package\n\tOutWriter io.Writer\n}\n\nfunc (pp PackagePrinter) PrintOutput(format string) error {\n\tswitch format {\n\tcase \"json\":\n\t\treturn PrintDataAsJson(pp.Packages, pp.OutWriter)\n\tcase \"yaml\":\n\t\treturn PrintDataAsYaml(pp.Packages, pp.OutWriter)\n\tcase \"table\":\n\t\treturn PrintDataAsTable(generatePackageTable(pp.Packages), pp.OutWriter)\n\tdefault:\n\t\treturn fmt.Errorf(\"output format %s is not supported\", format)\n\t}\n}\n\nfunc generatePackageTable(packagesTable []types.Package) metav1.Table {\n\ttable := &metav1.Table{}\n\ttable.ColumnDefinitions = []metav1.TableColumnDefinition{\n\t\t{Name: \"Name\", Type: \"string\"},\n\t\t{Name: \"idp namespace\", Type: \"string\"},\n\t\t{Name: \"Git Repository\", Type: \"string\"},\n\t\t{Name: \"Argocd Url\", Type: \"string\"},\n\t\t{Name: \"Status\", Type: \"string\"},\n\t}\n\tfor _, p := range packagesTable {\n\t\trow := metav1.TableRow{\n\t\t\tCells: []interface{}{\n\t\t\t\tp.Name,\n\t\t\t\tp.Namespace,\n\t\t\t\tp.GitRepository,\n\t\t\t\tp.ArgocdRepository,\n\t\t\t\tp.Status,\n\t\t\t},\n\t\t}\n\t\ttable.Rows = append(table.Rows, row)\n\t}\n\treturn *table\n}\n"
  },
  {
    "path": "pkg/printer/printer.go",
    "content": "package printer\n\nimport (\n\t\"encoding/json\"\n\t\"io\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/cli-runtime/pkg/printers\"\n\t\"sigs.k8s.io/yaml\"\n)\n\nfunc PrintDataAsTable(table metav1.Table, outWriter io.Writer) error {\n\tprinter := printers.NewTablePrinter(printers.PrintOptions{})\n\treturn printer.PrintObj(&table, outWriter)\n}\n\nfunc PrintDataAsJson(data any, outWriter io.Writer) error {\n\tenc := json.NewEncoder(outWriter)\n\tenc.SetEscapeHTML(false)\n\tenc.SetIndent(\"\", \"  \")\n\treturn enc.Encode(data)\n}\n\nfunc PrintDataAsYaml(data any, outWriter io.Writer) error {\n\tb, err := yaml.Marshal(data)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = outWriter.Write(b)\n\treturn err\n}\n"
  },
  {
    "path": "pkg/printer/secret.go",
    "content": "package printer\n\nimport (\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/printer/types\"\n\t\"io\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"strings\"\n)\n\ntype SecretPrinter struct {\n\tSecrets   []types.Secret\n\tOutWriter io.Writer\n}\n\nfunc (sp SecretPrinter) PrintOutput(format string) error {\n\tswitch format {\n\tcase \"json\":\n\t\treturn PrintDataAsJson(sp.Secrets, sp.OutWriter)\n\tcase \"yaml\":\n\t\treturn PrintDataAsYaml(sp.Secrets, sp.OutWriter)\n\tcase \"table\":\n\t\treturn PrintDataAsTable(generateSecretTable(sp.Secrets), sp.OutWriter)\n\tdefault:\n\t\treturn fmt.Errorf(\"output format %s is not supported\", format)\n\t}\n}\n\nfunc generateSecretTable(secretTable []types.Secret) metav1.Table {\n\ttable := &metav1.Table{}\n\ttable.ColumnDefinitions = []metav1.TableColumnDefinition{\n\t\t{Name: \"Name\", Type: \"string\"},\n\t\t{Name: \"Namespace\", Type: \"string\"},\n\t\t{Name: \"Username\", Type: \"string\"},\n\t\t{Name: \"Password\", Type: \"string\"},\n\t\t{Name: \"Token\", Type: \"string\"},\n\t\t{Name: \"Data\", Type: \"string\"},\n\t}\n\tfor _, secret := range secretTable {\n\t\tvar dataEntries []string\n\n\t\tif !secret.IsCore {\n\t\t\tfor key, value := range secret.Data {\n\t\t\t\tdataEntries = append(dataEntries, fmt.Sprintf(\"%s=%s\", key, value))\n\t\t\t}\n\t\t}\n\t\tdataString := strings.Join(dataEntries, \", \")\n\t\trow := metav1.TableRow{\n\t\t\tCells: []interface{}{\n\t\t\t\tsecret.Name,\n\t\t\t\tsecret.Namespace,\n\t\t\t\tsecret.Username,\n\t\t\t\tsecret.Password,\n\t\t\t\tsecret.Token,\n\t\t\t\tdataString,\n\t\t\t},\n\t\t}\n\t\ttable.Rows = append(table.Rows, row)\n\t}\n\treturn *table\n}\n"
  },
  {
    "path": "pkg/printer/types/internal_types.go",
    "content": "package types\n\n// Types used internally to define the objects needed to print data, etc\n\ntype Allocated struct {\n\tCpu    string\n\tMemory string\n}\n\ntype Capacity struct {\n\tMemory float64\n\tPods   int64\n\tCpu    int64\n}\n\ntype Cluster struct {\n\tName         string\n\tURLKubeApi   string\n\tKubePort     int32\n\tTlsCheck     bool\n\tExternalPort int32\n\tNodes        []Node\n}\n\ntype Node struct {\n\tName       string\n\tInternalIP string\n\tExternalIP string\n\tCapacity   Capacity\n\tAllocated  Allocated\n}\n\ntype Package struct {\n\tName             string\n\tNamespace        string\n\tType             string\n\tGitRepository    string\n\tArgocdRepository string\n\tStatus           string\n}\n\ntype Secret struct {\n\tIsCore    bool\n\tName      string            `json:\"name\"`\n\tNamespace string            `json:\"namespace\"`\n\tUsername  string            `json:\"username,omitempty\"`\n\tPassword  string            `json:\"password,omitempty\"`\n\tToken     string            `json:\"token,omitempty\"`\n\tData      map[string]string `json:\"data,omitempty\"`\n}\n"
  },
  {
    "path": "pkg/resources/localbuild/application.go",
    "content": "package localbuild\n\nimport (\n\targov1alpha1 \"github.com/cnoe-io/argocd-api/api/argo/application/v1alpha1\"\n\tv1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n)\n\nfunc SetProjectSpec(project *argov1alpha1.AppProject) {\n\tproject.Spec.Description = \"IDP Builder Project\"\n\n\tproject.Spec.ClusterResourceWhitelist = []v1.GroupKind{{\n\t\tGroup: \"*\",\n\t\tKind:  \"*\",\n\t}}\n\tproject.Spec.NamespaceResourceWhitelist = []v1.GroupKind{{\n\t\tGroup: \"*\",\n\t\tKind:  \"*\",\n\t}}\n\n\tproject.Spec.Destinations = []argov1alpha1.ApplicationDestination{{\n\t\tName:      \"*\",\n\t\tNamespace: \"*\",\n\t\tServer:    \"*\",\n\t}}\n\n\tproject.Spec.SourceRepos = []string{\n\t\t\"*\",\n\t}\n}\n\nfunc SetApplicationSpec(app *argov1alpha1.Application, repoUrl, path, project, dstNS string, targetRevision *string) {\n\theadRev := \"HEAD\"\n\tif targetRevision == nil {\n\t\ttargetRevision = &headRev\n\t}\n\n\tapp.Spec.Destination = argov1alpha1.ApplicationDestination{\n\t\tServer:    \"https://kubernetes.default.svc\",\n\t\tNamespace: dstNS,\n\t}\n\n\tapp.Spec.Project = project\n\n\tapp.Spec.Source = &argov1alpha1.ApplicationSource{\n\t\tPath:           path,\n\t\tRepoURL:        repoUrl,\n\t\tTargetRevision: *targetRevision,\n\t}\n\n\tapp.Spec.SyncPolicy = &argov1alpha1.SyncPolicy{\n\t\tAutomated: &argov1alpha1.SyncPolicyAutomated{\n\t\t\tSelfHeal: true,\n\t\t},\n\t\tSyncOptions: argov1alpha1.SyncOptions{\n\t\t\t\"CreateNamespace=true\",\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "pkg/util/argocd.go",
    "content": "package util\n\nimport (\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n)\n\nconst (\n\tArgocdInitialAdminSecretName = \"argocd-initial-admin-secret\"\n\tArgocdAdminName              = \"admin\"\n\tArgocdNamespace              = \"argocd\"\n\tArgocdURLTempl               = \"%s://%s%s:%s%s\"\n)\n\nfunc ArgocdBaseUrl(config v1alpha1.BuildCustomizationSpec) string {\n\tif config.UsePathRouting {\n\t\treturn fmt.Sprintf(ArgocdURLTempl, config.Protocol, \"\", config.Host, config.Port, \"/argocd\")\n\t}\n\treturn fmt.Sprintf(ArgocdURLTempl, config.Protocol, \"argocd.\", config.Host, config.Port, \"\")\n}\n\nfunc ArgocdInitialAdminSecretObject() corev1.Secret {\n\treturn corev1.Secret{\n\t\tTypeMeta: metav1.TypeMeta{\n\t\t\tKind:       \"Secret\",\n\t\t\tAPIVersion: \"v1\",\n\t\t},\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      ArgocdInitialAdminSecretName,\n\t\t\tNamespace: ArgocdNamespace,\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "pkg/util/files/files.go",
    "content": "package files\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"text/template\"\n)\n\nfunc CopyDirectory(scrDir, dest string) error {\n\tentries, err := os.ReadDir(scrDir)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor _, entry := range entries {\n\t\tsourcePath := filepath.Join(scrDir, entry.Name())\n\t\tdestPath := filepath.Join(dest, entry.Name())\n\n\t\tfileInfo, err := os.Stat(sourcePath)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tswitch fileInfo.Mode() & os.ModeType {\n\t\tcase os.ModeDir:\n\t\t\tif err := CreateIfNotExists(destPath, 0755); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif err := CopyDirectory(sourcePath, destPath); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase os.ModeSymlink:\n\t\t\tcontinue\n\t\tdefault:\n\t\t\tif err := Copy(sourcePath, destPath); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tfInfo, err := entry.Info()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := os.Chmod(destPath, fInfo.Mode()); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc Copy(srcFile, dstFile string) error {\n\tout, err := os.Create(dstFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer out.Close()\n\n\tin, err := os.Open(srcFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer in.Close()\n\n\t_, err = io.Copy(out, in)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Exists(filePath string) bool {\n\tif _, err := os.Stat(filePath); os.IsNotExist(err) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\nfunc CreateIfNotExists(dir string, perm os.FileMode) error {\n\tif Exists(dir) {\n\t\treturn nil\n\t}\n\n\tif err := os.MkdirAll(dir, perm); err != nil {\n\t\treturn fmt.Errorf(\"failed to create directory: '%s', error: '%s'\", dir, err.Error())\n\t}\n\n\treturn nil\n}\n\nfunc ApplyTemplate(in []byte, templateData any) ([]byte, error) {\n\tfuncMap := template.FuncMap{\n\t\t\"indentNewLines\": templateIndentNewlines,\n\t}\n\tt, err := template.New(\"template\").Funcs(funcMap).Parse(string(in))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Execute the template with the file content and write the output to the destination file\n\tret := bytes.Buffer{}\n\terr = t.Execute(&ret, templateData)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn ret.Bytes(), nil\n}\n\n// indent given string with given number of spaces whenever a newline symbol is found.\nfunc templateIndentNewlines(n int, val string) string {\n\treturn strings.Replace(val, \"\\n\", \"\\n\"+strings.Repeat(\" \", n), -1)\n}\n"
  },
  {
    "path": "pkg/util/fs/fs.go",
    "content": "package fs\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/util/files\"\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n)\n\ntype FS interface {\n\tReadDir(name string) ([]fs.DirEntry, error)\n\tReadFile(name string) ([]byte, error)\n}\n\nfunc ConvertFSToBytes(inFS FS, name string, templateData any) ([][]byte, error) {\n\td, err := inFS.ReadDir(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar rawResources [][]byte\n\n\tfor _, f := range d {\n\t\trawResource, err := inFS.ReadFile(path.Join(name, f.Name()))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif returnedRawResource, err := files.ApplyTemplate(rawResource, templateData); err == nil {\n\t\t\trawResources = append(rawResources, returnedRawResource)\n\t\t} else {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn rawResources, nil\n}\n\nfunc CopyFile(src fs.File, dest string) error {\n\tsrcStat, srcStatErr := src.Stat()\n\tif srcStatErr != nil {\n\t\treturn srcStatErr\n\t}\n\n\tdestFn := filepath.Join(dest, srcStat.Name())\n\n\tdestf, destErr := os.OpenFile(\n\t\tdestFn,\n\t\tos.O_WRONLY|os.O_CREATE|os.O_TRUNC,\n\t\tsrcStat.Mode(),\n\t)\n\tif destErr != nil {\n\t\treturn fmt.Errorf(\"opening a file for writing: %w\", destErr)\n\t}\n\n\t_, err := io.Copy(destf, src)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"copying %s to %s\", srcStat.Name(), destFn)\n\t}\n\n\treturn destf.Close()\n}\n\nfunc CopyDir(src fs.FS, dest string) error {\n\tents, err := fs.ReadDir(src, \".\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"reading src: %w\", err)\n\t}\n\n\tfor _, sdent := range ents {\n\t\tinfo, err := sdent.Info()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"reading file info: %v\", err)\n\t\t}\n\t\tswitch {\n\t\tcase info.IsDir():\n\t\t\tsubDest := filepath.Join(dest, sdent.Name())\n\n\t\t\tif err := os.Mkdir(subDest, 0700); err != nil {\n\t\t\t\treturn fmt.Errorf(\"mkdir on %s: %w\", subDest, err)\n\t\t\t}\n\n\t\t\tsubFS, err := fs.Sub(src, sdent.Name())\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"reading the sub directory: %w\", err)\n\t\t\t}\n\n\t\t\tif err := CopyDir(subFS, subDest); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase info.Mode().IsRegular():\n\t\t\tsrcf, err := src.Open(info.Name())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif err := CopyFile(srcf, dest); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc WriteFS(src fs.FS, dest string) error {\n\tdestInfo, destErr := os.Lstat(dest)\n\tif destErr != nil {\n\t\treturn destErr\n\t}\n\n\tif !destInfo.IsDir() {\n\t\treturn errors.New(\"the destination must be a directory\")\n\t}\n\n\treturn CopyDir(src, dest)\n}\n"
  },
  {
    "path": "pkg/util/fs/fs_test.go",
    "content": "package fs\n\nimport (\n\t\"fmt\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\t\"testing/fstest\"\n\n\t\"github.com/cnoe-io/idpbuilder/globals\"\n\t\"github.com/google/go-cmp/cmp\"\n)\n\nfunc TestWriteFS(t *testing.T) {\n\tcases := []struct {\n\t\tname        string\n\t\tsrcFS       fs.FS\n\t\texpectErr   error\n\t\texpectFiles map[string][]byte\n\t}{{\n\t\tname: \"single file\",\n\t\tsrcFS: fstest.MapFS{\n\t\t\t\"testfile\": &fstest.MapFile{\n\t\t\t\tData: []byte(\"testdata\"),\n\t\t\t\tMode: 0666,\n\t\t\t},\n\t\t},\n\t\texpectFiles: map[string][]byte{\n\t\t\t\"testfile\": []byte(\"testdata\"),\n\t\t},\n\t}, {\n\t\tname: \"file in subdir\",\n\t\tsrcFS: fstest.MapFS{\n\t\t\t\"somedir\": &fstest.MapFile{\n\t\t\t\tMode: fs.ModeDir,\n\t\t\t},\n\t\t\t\"somedir/testfile\": &fstest.MapFile{\n\t\t\t\tData: []byte(\"testdata\"),\n\t\t\t\tMode: 0666,\n\t\t\t},\n\t\t},\n\t\texpectFiles: map[string][]byte{\n\t\t\t\"somedir/testfile\": []byte(\"testdata\"),\n\t\t},\n\t}}\n\n\tfor _, tc := range cases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tworkDir, err := os.MkdirTemp(\"\", fmt.Sprintf(\"%s-fs_test.go-%s\", globals.ProjectName, tc.name))\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"creating tempdir: %v\", err)\n\t\t\t}\n\t\t\tdefer os.RemoveAll(workDir)\n\n\t\t\terr = WriteFS(tc.srcFS, workDir)\n\t\t\tif err != tc.expectErr {\n\t\t\t\tt.Errorf(\"unexpected error writing fs: %v\", err)\n\t\t\t}\n\n\t\t\tfor expectPath, expectData := range tc.expectFiles {\n\t\t\t\tfullExpectPath := filepath.Join(workDir, expectPath)\n\t\t\t\tgotData, err := os.ReadFile(fullExpectPath)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Errorf(\"Opening expected file: %v\", err)\n\t\t\t\t}\n\n\t\t\t\tif diff := cmp.Diff(string(expectData), string(gotData)); diff != \"\" {\n\t\t\t\t\tt.Errorf(\"Expected data in %q mismatch (-want +got):\\n%s\", expectPath, diff)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/util/git_repository.go",
    "content": "package util\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/sha256\"\n\t\"encoding/hex\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/go-git/go-billy/v5\"\n\t\"github.com/go-git/go-billy/v5/memfs\"\n\t\"github.com/go-git/go-git/v5\"\n\t\"github.com/go-git/go-git/v5/plumbing\"\n\t\"github.com/go-git/go-git/v5/storage/memory\"\n)\n\ntype RepoMap struct {\n\trepos sync.Map\n}\n\nfunc (r *RepoMap) LoadOrStore(repoName, dir string) *RepoState {\n\tv, _ := r.repos.LoadOrStore(repoName, &RepoState{Dir: dir})\n\treturn v.(*RepoState)\n}\n\ntype RepoState struct {\n\tMU  sync.Mutex\n\tDir string\n}\n\nfunc NewRepoLock() *RepoMap {\n\treturn &RepoMap{\n\t\trepos: sync.Map{},\n\t}\n}\n\nfunc RepoUrlHash(repoUrl string) string {\n\tsha := sha256.New()\n\tsha.Write([]byte(repoUrl))\n\treturn hex.EncodeToString(sha.Sum(nil))\n}\n\nfunc RepoDir(repoUrl, parent string) string {\n\treturn filepath.Join(parent, RepoUrlHash(repoUrl))\n}\n\nfunc FirstRemoteURL(repo *git.Repository) (string, error) {\n\tremotes, err := repo.Remotes()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif len(remotes) <= 0 {\n\t\treturn \"\", fmt.Errorf(\"no remotes found\")\n\t}\n\tr := remotes[0].Config().URLs\n\tif len(r) <= 0 {\n\t\treturn \"\", fmt.Errorf(\"no remote url found\")\n\t}\n\treturn r[0], nil\n}\n\n// returns all files with yaml or yml suffix from a worktree\nfunc GetWorktreeYamlFiles(parent string, wt billy.Filesystem, recurse bool) ([]string, error) {\n\tif strings.HasSuffix(parent, \"/\") {\n\t\tparent = strings.TrimSuffix(parent, \"/\")\n\t}\n\tpaths := make([]string, 0, 10)\n\tents, err := wt.ReadDir(parent)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor i := range ents {\n\t\tent := ents[i]\n\t\tif ent.IsDir() && recurse {\n\t\t\tdir := fmt.Sprintf(\"%s/%s\", parent, ent.Name())\n\t\t\trPaths, dErr := GetWorktreeYamlFiles(dir, wt, recurse)\n\t\t\tif dErr != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"reading %s : %w\", ent.Name(), dErr)\n\t\t\t}\n\t\t\tpaths = append(paths, rPaths...)\n\t\t}\n\t\tif ent.Mode().IsRegular() && IsYamlFile(ent.Name()) {\n\t\t\tpaths = append(paths, fmt.Sprintf(\"%s/%s\", parent, ent.Name()))\n\t\t}\n\t}\n\treturn paths, nil\n}\n\nfunc ReadWorktreeFile(wt billy.Filesystem, path string) ([]byte, error) {\n\tf, fErr := wt.Open(path)\n\tif fErr != nil {\n\t\treturn nil, fmt.Errorf(\"opening %s\", path)\n\t}\n\tdefer f.Close()\n\n\tb := new(bytes.Buffer)\n\t_, fErr = b.ReadFrom(f)\n\tif fErr != nil {\n\t\treturn nil, fmt.Errorf(\"reading %s\", path)\n\t}\n\n\treturn b.Bytes(), nil\n}\n\nfunc CloneRemoteRepoToMemory(ctx context.Context, remote v1alpha1.RemoteRepositorySpec, depth int, insecureSkipTLS bool) (billy.Filesystem, *git.Repository, error) {\n\tcloneOptions := &git.CloneOptions{\n\t\tURL:               remote.Url,\n\t\tDepth:             depth,\n\t\tShallowSubmodules: true,\n\t\tSingleBranch:      true,\n\t\tTags:              git.AllTags,\n\t\tInsecureSkipTLS:   insecureSkipTLS,\n\t}\n\tif remote.CloneSubmodules {\n\t\tcloneOptions.RecurseSubmodules = git.DefaultSubmoduleRecursionDepth\n\t}\n\n\tif remote.Ref != \"\" {\n\t\tcloneOptions.ReferenceName = plumbing.NewTagReferenceName(remote.Ref)\n\t}\n\n\twt := memfs.New()\n\tvar cloned *git.Repository\n\tcloned, err := git.CloneContext(ctx, memory.NewStorage(), wt, cloneOptions)\n\tif err != nil {\n\t\tcloneOptions.ReferenceName = plumbing.NewBranchReferenceName(remote.Ref)\n\t\tcloned, err = git.CloneContext(ctx, memory.NewStorage(), wt, cloneOptions)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\treturn wt, cloned, nil\n}\n\nfunc CloneRemoteRepoToDir(ctx context.Context, remote v1alpha1.RemoteRepositorySpec, depth int, insecureSkipTLS bool, dir, fallbackUrl string) (billy.Filesystem, *git.Repository, error) {\n\trepo, err := git.PlainOpen(dir)\n\tif err != nil {\n\t\tif errors.Is(err, git.ErrRepositoryNotExists) {\n\t\t\tcloneOptions := &git.CloneOptions{\n\t\t\t\tURL:               remote.Url,\n\t\t\t\tDepth:             depth,\n\t\t\t\tShallowSubmodules: true,\n\t\t\t\tTags:              git.AllTags,\n\t\t\t\tInsecureSkipTLS:   insecureSkipTLS,\n\t\t\t}\n\t\t\tif remote.CloneSubmodules {\n\t\t\t\tcloneOptions.RecurseSubmodules = git.DefaultSubmoduleRecursionDepth\n\t\t\t}\n\t\t\trepo, err = git.PlainCloneContext(ctx, dir, false, cloneOptions)\n\t\t\tif err != nil {\n\t\t\t\tif fallbackUrl != \"\" {\n\t\t\t\t\tcloneOptions.URL = fallbackUrl\n\t\t\t\t\trepo, err = git.PlainCloneContext(ctx, dir, false, cloneOptions)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, nil, fmt.Errorf(\"cloning repo with fall back url: %w\", err)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn nil, nil, fmt.Errorf(\"cloning repo: %w\", err)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn nil, nil, fmt.Errorf(\"opening repo at %s %w\", dir, err)\n\t\t}\n\t}\n\n\twt, err := repo.Worktree()\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"getting repo worktree: %w\", err)\n\t}\n\tif remote.Ref != \"\" {\n\t\tcErr := checkoutCommitOrRef(ctx, wt, remote.Ref)\n\t\tif cErr != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"checkout %s: %w\", remote.Ref, cErr)\n\t\t}\n\t}\n\n\treturn wt.Filesystem, repo, nil\n}\n\nfunc CopyTreeToTree(srcWT, dstWT billy.Filesystem, srcPath, dstPath string) error {\n\tfiles, err := srcWT.ReadDir(srcPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor i := range files {\n\t\tsrcFile := files[i]\n\t\tfullSrcPath := filepath.Join(srcPath, srcFile.Name())\n\t\tfullDstPath := filepath.Join(dstPath, srcFile.Name())\n\t\tif srcFile.Mode().IsRegular() {\n\t\t\tcErr := CopyWTFile(srcWT, dstWT, fullSrcPath, fullDstPath)\n\t\t\tif cErr != nil {\n\t\t\t\treturn cErr\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif srcFile.IsDir() {\n\t\t\tdErr := CopyTreeToTree(srcWT, dstWT, fullSrcPath, fullDstPath)\n\t\t\tif dErr != nil {\n\t\t\t\treturn dErr\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc CopyWTFile(srcWT, dstWT billy.Filesystem, srcFile, dstFile string) error {\n\tnewFile, err := dstWT.Create(dstFile)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"creating file %s: %w\", dstFile, err)\n\t}\n\tdefer newFile.Close()\n\n\tsrcF, err := srcWT.Open(srcFile)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"reading file %s: %w\", srcFile, err)\n\t}\n\tdefer srcF.Close()\n\n\t_, err = io.Copy(newFile, srcF)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"copying file %s: %w\", srcFile, err)\n\t}\n\treturn nil\n}\n\n// ref could be anything. Check if hash, tag, or branch in that order\nfunc checkoutCommitOrRef(ctx context.Context, wt *git.Worktree, ref string) error {\n\tvar refName plumbing.ReferenceName\n\topts := &git.CheckoutOptions{\n\t\tHash: plumbing.NewHash(ref),\n\t}\n\n\terr := wt.Checkout(opts)\n\tif err != nil {\n\t\trefName = plumbing.NewTagReferenceName(ref)\n\t\topts = &git.CheckoutOptions{\n\t\t\tBranch: refName,\n\t\t}\n\t\terr := wt.Checkout(opts)\n\t\tif err != nil {\n\t\t\trefName = plumbing.NewBranchReferenceName(ref)\n\t\t\topts = &git.CheckoutOptions{\n\t\t\t\tBranch: refName,\n\t\t\t}\n\t\t\terr := wt.Checkout(opts)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\tpullOpts := &git.PullOptions{\n\t\tRemoteName: \"origin\",\n\t}\n\n\tif opts.Hash.IsZero() {\n\t\tpullOpts.ReferenceName = refName\n\t\terr = wt.PullContext(ctx, pullOpts)\n\t\tif err != nil && !errors.Is(err, git.NoErrAlreadyUpToDate) {\n\t\t\treturn fmt.Errorf(\"pulling latest %s: %w\", ref, err)\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/util/git_repository_test.go",
    "content": "package util\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/go-git/go-billy/v5\"\n\t\"github.com/go-git/go-billy/v5/memfs\"\n\t\"github.com/go-git/go-git/v5\"\n\t\"github.com/go-git/go-git/v5/storage/memory\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestCloneRemoteRepoToDir(t *testing.T) {\n\tspec := v1alpha1.RemoteRepositorySpec{\n\t\tCloneSubmodules: false,\n\t\tPath:            \"examples/basic\",\n\t\tUrl:             \"https://github.com/cnoe-io/idpbuilder\",\n\t\tRef:             \"v0.3.0\",\n\t}\n\tdir, _ := os.MkdirTemp(\"\", \"TestCopyToDir\")\n\tdefer os.RemoveAll(dir)\n\t// new clone\n\t_, _, err := CloneRemoteRepoToDir(context.Background(), spec, 0, false, dir, \"\")\n\tassert.Nil(t, err)\n\ttestDir, _ := os.MkdirTemp(\"\", \"TestCopyToDir\")\n\tdefer os.RemoveAll(testDir)\n\n\trepo, err := git.PlainClone(testDir, false, &git.CloneOptions{URL: dir})\n\tassert.Nil(t, err)\n\tref, err := repo.Head()\n\tassert.Nil(t, err)\n\tassert.Equal(t, \"52783df3a8942cc882ebeb6168f80e1876a2f129\", ref.Hash().String())\n\n\t// existing\n\tspec.Ref = \"v0.4.0\"\n\ttestDir2, _ := os.MkdirTemp(\"\", \"TestCopyToDir\")\n\tdefer os.RemoveAll(testDir2)\n\n\t_, _, err = CloneRemoteRepoToDir(context.Background(), spec, 0, false, dir, \"\")\n\trepo, err = git.PlainClone(testDir2, false, &git.CloneOptions{URL: dir})\n\tassert.Nil(t, err)\n\tref, err = repo.Head()\n\tassert.Nil(t, err)\n\tassert.Equal(t, \"11eccd57fde9f4ef6de8bfa1fc11d168a4d30fe1\", ref.Hash().String())\n\n\tassert.Nil(t, err)\n}\n\nfunc TestCopyTreeToTree(t *testing.T) {\n\tspec := v1alpha1.RemoteRepositorySpec{\n\t\tCloneSubmodules: false,\n\t\tPath:            \"examples/basic\",\n\t\tUrl:             \"https://github.com/cnoe-io/idpbuilder\",\n\t\tRef:             \"\",\n\t}\n\n\tdst := memfs.New()\n\tsrc, _, err := CloneRemoteRepoToMemory(context.Background(), spec, 1, false)\n\tassert.Nil(t, err)\n\n\terr = CopyTreeToTree(src, dst, spec.Path, \".\")\n\tassert.Nil(t, err)\n\ttestCopiedFiles(t, src, dst, spec.Path, \".\")\n}\n\nfunc testCopiedFiles(t *testing.T, src, dst billy.Filesystem, srcStartPath, dstStartPath string) {\n\tfiles, err := src.ReadDir(srcStartPath)\n\tassert.Nil(t, err)\n\n\tfor i := range files {\n\t\tfile := files[i]\n\t\tif file.Mode().IsRegular() {\n\t\t\tsrcB, err := ReadWorktreeFile(src, filepath.Join(srcStartPath, file.Name()))\n\t\t\tassert.Nil(t, err)\n\n\t\t\tdstB, err := ReadWorktreeFile(dst, filepath.Join(dstStartPath, file.Name()))\n\t\t\tassert.Nil(t, err)\n\t\t\tassert.Equal(t, srcB, dstB)\n\t\t}\n\t\tif file.IsDir() {\n\t\t\ttestCopiedFiles(t, src, dst, filepath.Join(srcStartPath, file.Name()), filepath.Join(dstStartPath, file.Name()))\n\t\t}\n\t}\n}\n\nfunc TestGetWorktreeYamlFiles(t *testing.T) {\n\tfilepath.Join()\n\tcloneOptions := &git.CloneOptions{\n\t\tURL:               \"https://github.com/cnoe-io/idpbuilder\",\n\t\tDepth:             1,\n\t\tShallowSubmodules: true,\n\t}\n\n\twt := memfs.New()\n\t_, err := git.CloneContext(context.Background(), memory.NewStorage(), wt, cloneOptions)\n\tif err != nil {\n\t\tt.Fatalf(err.Error())\n\t}\n\n\tpaths, err := GetWorktreeYamlFiles(\"./pkg\", wt, true)\n\n\tassert.Equal(t, nil, err)\n\tassert.NotEqual(t, 0, len(paths))\n\tfor _, s := range paths {\n\t\tassert.Equal(t, true, strings.HasSuffix(s, \"yaml\") || strings.HasSuffix(s, \"yml\"))\n\t}\n\n\tpaths, err = GetWorktreeYamlFiles(\"./pkg\", wt, false)\n\tassert.Equal(t, nil, err)\n\tassert.Equal(t, 0, len(paths))\n}\n"
  },
  {
    "path": "pkg/util/gitea.go",
    "content": "package util\n\nimport (\n\t\"code.gitea.io/sdk/gitea\"\n\t\"context\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"strings\"\n)\n\nconst (\n\t// hardcoded values from what we have in the yaml installation file.\n\tGiteaNamespace           = \"gitea\"\n\tGiteaAdminSecret         = \"gitea-credential\"\n\tGiteaAdminName           = \"giteaAdmin\"\n\tGiteaAdminTokenName      = \"admin\"\n\tGiteaAdminTokenFieldName = \"token\"\n\tGiteaURLTempl            = \"%s://%s%s:%s%s\"\n)\n\nfunc GiteaAdminSecretObject() corev1.Secret {\n\treturn corev1.Secret{\n\t\tTypeMeta: metav1.TypeMeta{\n\t\t\tKind:       \"Secret\",\n\t\t\tAPIVersion: \"v1\",\n\t\t},\n\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\tName:      GiteaAdminSecret,\n\t\t\tNamespace: GiteaNamespace,\n\t\t},\n\t}\n}\n\nfunc PatchPasswordSecret(ctx context.Context, kubeClient client.Client, config v1alpha1.BuildCustomizationSpec, ns string, secretName string, username string, pass string) error {\n\tsec, err := GetSecretByName(ctx, kubeClient, ns, secretName)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting secret to patch fails: %w\", err)\n\t}\n\tu := unstructured.Unstructured{}\n\tu.SetName(sec.GetName())\n\tu.SetNamespace(sec.GetNamespace())\n\tu.SetGroupVersionKind(sec.GetObjectKind().GroupVersionKind())\n\n\terr = unstructured.SetNestedField(u.Object, base64.StdEncoding.EncodeToString([]byte(pass)), \"data\", \"password\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"setting password field: %w\", err)\n\t}\n\n\tif strings.Contains(secretName, \"gitea\") {\n\t\t// We should recreate a token as user/password changed\n\t\tgiteaUrl := GiteaBaseUrl(config)\n\n\t\tt, err := GetGiteaToken(ctx, giteaUrl, string(username), string(pass))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"getting gitea token: %w\", err)\n\t\t}\n\n\t\ttoken := base64.StdEncoding.EncodeToString([]byte(t))\n\t\terr = unstructured.SetNestedField(u.Object, token, \"data\", GiteaAdminTokenFieldName)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"setting gitea token field: %w\", err)\n\t\t}\n\t}\n\n\treturn kubeClient.Patch(ctx, &u, client.Apply, client.ForceOwnership, client.FieldOwner(v1alpha1.FieldManager))\n}\n\nfunc GetGiteaToken(ctx context.Context, baseUrl, username, password string) (string, error) {\n\tgiteaClient, err := gitea.NewClient(baseUrl, gitea.SetHTTPClient(GetHttpClient()),\n\t\tgitea.SetBasicAuth(username, password), gitea.SetContext(ctx),\n\t)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"creating gitea client: %w\", err)\n\t}\n\ttokens, resp, err := giteaClient.ListAccessTokens(gitea.ListAccessTokensOptions{})\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"listing gitea access tokens. status: %s error : %w\", resp.Status, err)\n\t}\n\n\tfor i := range tokens {\n\t\tif tokens[i].Name == GiteaAdminTokenName {\n\t\t\tresp, err := giteaClient.DeleteAccessToken(tokens[i].ID)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", fmt.Errorf(\"deleting gitea access tokens. status: %s error : %w\", resp.Status, err)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\ttoken, resp, err := giteaClient.CreateAccessToken(gitea.CreateAccessTokenOption{\n\t\tName: GiteaAdminTokenName,\n\t\tScopes: []gitea.AccessTokenScope{\n\t\t\tgitea.AccessTokenScopeAll,\n\t\t},\n\t})\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"deleting gitea access tokens. status: %s error : %w\", resp.Status, err)\n\t}\n\n\treturn token.Token, nil\n}\n\nfunc GiteaBaseUrl(config v1alpha1.BuildCustomizationSpec) string {\n\tif config.UsePathRouting {\n\t\treturn fmt.Sprintf(GiteaURLTempl, config.Protocol, \"\", config.Host, config.Port, \"/gitea\")\n\t}\n\treturn fmt.Sprintf(GiteaURLTempl, config.Protocol, \"gitea.\", config.Host, config.Port, \"\")\n}\n"
  },
  {
    "path": "pkg/util/gitea_test.go",
    "content": "package util\n\nimport (\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestGiteaBaseUrl(t *testing.T) {\n\tc := v1alpha1.BuildCustomizationSpec{\n\t\tProtocol:       \"http\",\n\t\tPort:           \"8080\",\n\t\tHost:           \"cnoe.localtest.me\",\n\t\tUsePathRouting: false,\n\t}\n\n\ts := GiteaBaseUrl(c)\n\tassert.Equal(t, \"http://gitea.cnoe.localtest.me:8080\", s)\n\tc.UsePathRouting = true\n\ts = GiteaBaseUrl(c)\n\tassert.Equal(t, \"http://cnoe.localtest.me:8080/gitea\", s)\n}\n"
  },
  {
    "path": "pkg/util/idp.go",
    "content": "package util\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nfunc GetConfig(ctx context.Context) (v1alpha1.BuildCustomizationSpec, error) {\n\tb := v1alpha1.BuildCustomizationSpec{}\n\n\tkubeConfig, err := GetKubeConfig()\n\tif err != nil {\n\t\treturn b, fmt.Errorf(\"getting kube config: %w\", err)\n\t}\n\n\tkubeClient, err := GetKubeClient(kubeConfig)\n\tif err != nil {\n\t\treturn b, fmt.Errorf(\"getting kube client: %w\", err)\n\t}\n\n\tlist, err := getLocalBuild(ctx, kubeClient)\n\tif err != nil {\n\t\treturn b, err\n\t}\n\n\t// TODO: We assume that only one LocalBuild exists !\n\treturn list.Items[0].Spec.BuildCustomization, nil\n}\n\nfunc getLocalBuild(ctx context.Context, kubeClient client.Client) (v1alpha1.LocalbuildList, error) {\n\tlocalBuildList := v1alpha1.LocalbuildList{}\n\treturn localBuildList, kubeClient.List(ctx, &localBuildList)\n}\n"
  },
  {
    "path": "pkg/util/k8s.go",
    "content": "package util\n\nimport (\n\t\"fmt\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\t\"k8s.io/client-go/rest\"\n\t\"k8s.io/client-go/tools/clientcmd\"\n\t\"k8s.io/client-go/tools/clientcmd/api\"\n\t\"k8s.io/client-go/util/homedir\"\n\t\"path/filepath\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nvar (\n\tKubeConfigPath string\n)\n\nfunc GetKubeConfigPath() string {\n\tif KubeConfigPath == \"\" {\n\t\treturn filepath.Join(homedir.HomeDir(), \".kube\", \"config\")\n\t} else {\n\t\treturn KubeConfigPath\n\t}\n}\n\nfunc LoadKubeConfig() (*api.Config, error) {\n\tconfig, err := clientcmd.LoadFromFile(GetKubeConfigPath())\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Failed to load kubeconfig file: %w\", err)\n\t} else {\n\t\treturn config, nil\n\t}\n}\n\nfunc GetKubeConfig() (*rest.Config, error) {\n\tkubeConfig, err := clientcmd.BuildConfigFromFlags(\"\", GetKubeConfigPath())\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Error building kubeconfig: %w\", err)\n\t}\n\treturn kubeConfig, nil\n}\n\nfunc GetKubeClient(kubeConfig *rest.Config) (client.Client, error) {\n\tkubeClient, err := client.New(kubeConfig, client.Options{Scheme: k8s.GetScheme()})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Error creating kubernetes client: %w\", err)\n\t}\n\treturn kubeClient, nil\n}\n"
  },
  {
    "path": "pkg/util/secret.go",
    "content": "package util\n\nimport (\n\t\"context\"\n\tv1 \"k8s.io/api/core/v1\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\nfunc GetSecretByName(ctx context.Context, kubeClient client.Client, ns, name string) (v1.Secret, error) {\n\ts := v1.Secret{}\n\treturn s, kubeClient.Get(ctx, client.ObjectKey{Name: name, Namespace: ns}, &s)\n}\n"
  },
  {
    "path": "pkg/util/url.go",
    "content": "package util\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// constants from remote target parameters supported by Kustomize\n// https://github.com/kubernetes-sigs/kustomize/blob/master/examples/remoteBuild.md\nconst (\n\tQueryStringRef        = \"ref\"\n\tQueryStringVersion    = \"version\"\n\tQueryStringTimeout    = \"timeout\"\n\tQueryStringSubmodules = \"submodules\"\n\n\tRepoUrlDelimiter = \"//\"\n\tSCPDelimiter     = \":\"\n\tUserDelimiter    = \"@\"\n\n\tdefaultTimeout        = time.Second * 27\n\tdefaultCloneSubmodule = true\n\n\terrMsgUrlUnsupported = \"url must have // after the repository url. example: https://github.com/kubernetes-sigs/kustomize//examples\"\n\terrMsgUrlColon       = \"first path segment in URL cannot contain colon\"\n)\n\ntype KustomizeRemote struct {\n\traw string\n\n\tScheme   string\n\tUser     string\n\tPassword string\n\tHost     string\n\tPort     string\n\tRepoPath string\n\n\tFilePath string\n\n\tRef        string\n\tSubmodules bool\n\tTimeout    time.Duration\n}\n\nfunc (g *KustomizeRemote) CloneUrl() string {\n\tsb := strings.Builder{}\n\tif g.Scheme != \"\" {\n\t\tsb.WriteString(fmt.Sprintf(\"%s://\", g.Scheme))\n\t}\n\tif g.User != \"\" {\n\t\tsb.WriteString(g.User)\n\t\tif g.Password != \"\" {\n\t\t\tsb.WriteString(fmt.Sprintf(\":%s\", g.Password))\n\t\t}\n\t\tsb.Write([]byte(UserDelimiter))\n\t}\n\n\tsb.WriteString(g.Host)\n\tif g.Port != \"\" {\n\t\tsb.WriteString(fmt.Sprintf(\":%s\", g.Port))\n\t}\n\tif g.Scheme == \"\" {\n\t\tsb.WriteString(\":\")\n\t} else {\n\t\tsb.WriteString(\"/\")\n\t}\n\n\tsb.WriteString(g.RepoPath)\n\treturn sb.String()\n}\n\nfunc (g *KustomizeRemote) Path() string {\n\treturn g.FilePath\n}\n\nfunc (g *KustomizeRemote) parseQuery() error {\n\t_, query, _ := strings.Cut(g.raw, \"?\")\n\tvalues, err := url.ParseQuery(query)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// if empty, it means we checkout the default branch\n\tversion := values.Get(QueryStringVersion)\n\tref := values.Get(QueryStringRef)\n\t// ref has higher priority per kustomize doc\n\tif ref != \"\" {\n\t\tversion = ref\n\t}\n\n\tduration := defaultTimeout\n\ttimeoutString := values.Get(QueryStringTimeout)\n\tif timeoutString != \"\" {\n\t\ttimeoutInt, sErr := strconv.Atoi(timeoutString)\n\t\tif sErr == nil {\n\t\t\tduration = time.Duration(timeoutInt) * time.Second\n\t\t} else {\n\t\t\tt, sErr := time.ParseDuration(timeoutString)\n\t\t\tif sErr == nil {\n\t\t\t\tduration = t\n\t\t\t}\n\t\t}\n\t}\n\n\tcloneSubmodules := defaultCloneSubmodule\n\tsubmodule := values.Get(QueryStringSubmodules)\n\tif submodule != \"\" {\n\t\tv, pErr := strconv.ParseBool(submodule)\n\t\tif pErr == nil {\n\t\t\tcloneSubmodules = v\n\t\t}\n\t}\n\n\tg.Ref = version\n\tg.Submodules = cloneSubmodules\n\tg.Timeout = duration\n\n\treturn nil\n}\n\nfunc (g *KustomizeRemote) parse() error {\n\tparsed, err := url.Parse(g.raw)\n\tif err != nil {\n\t\tif strings.Contains(err.Error(), errMsgUrlColon) {\n\t\t\treturn g.parseSCPStyle()\n\t\t}\n\t\treturn err\n\t}\n\n\tg.Scheme, g.User, g.Host = parsed.Scheme, parsed.User.Username(), parsed.Host\n\tp, ok := parsed.User.Password()\n\tif ok {\n\t\tg.Password = p\n\t}\n\n\terr = g.parseQuery()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"parsing query parameters in package url: %s: %w\", g.raw, err)\n\t}\n\n\treturn g.parsePath(parsed.Path)\n}\n\nfunc (g *KustomizeRemote) parseSCPStyle() error {\n\t// example git@github.com:owner/repo\n\tcIndex := strings.Index(g.raw, SCPDelimiter)\n\tif cIndex == -1 {\n\t\treturn fmt.Errorf(\"not a valid SCP style URL\")\n\t}\n\n\tuIndex := strings.Index(g.raw[:cIndex], UserDelimiter)\n\tif uIndex != -1 {\n\t\tg.User = g.raw[:uIndex]\n\t}\n\tg.Host = g.raw[uIndex+1 : cIndex]\n\terr := g.parseQuery()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"parsing query parameters in package url: %s: %w\", g.raw, err)\n\t}\n\n\tpathEnd := len(g.raw)\n\tqIndex := strings.Index(g.raw, \"?\")\n\tif qIndex != -1 {\n\t\tpathEnd = qIndex\n\t}\n\treturn g.parsePath(g.raw[cIndex+1 : pathEnd])\n}\n\nfunc (g *KustomizeRemote) parsePath(path string) error {\n\t// example kubernetes-sigs/kustomize//examples/multibases/dev/\n\tindex := strings.Index(path, RepoUrlDelimiter)\n\tif index == -1 {\n\t\treturn fmt.Errorf(errMsgUrlUnsupported)\n\t}\n\n\tg.RepoPath = strings.TrimPrefix(path[:index], \"/\")\n\tg.FilePath = strings.TrimSuffix(path[index+2:], \"/\")\n\treturn nil\n}\n\nfunc NewKustomizeRemote(uri string) (*KustomizeRemote, error) {\n\tr := &KustomizeRemote{raw: uri}\n\treturn r, r.parse()\n}\n"
  },
  {
    "path": "pkg/util/url_test.go",
    "content": "package util\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestURLParse(t *testing.T) {\n\n\ttype expect struct {\n\t\tcloneUrl  string\n\t\tpath      string\n\t\tref       string\n\t\tsubmodule bool\n\t\ttimeout   time.Duration\n\t\terr       bool\n\t}\n\n\ttype testCase struct {\n\t\texpect expect\n\t\tinput  string\n\t}\n\n\tcases := []testCase{\n\t\t{\n\t\t\tinput: \"https://github.com/kubernetes-sigs/kustomize//examples/multibases/dev/?timeout=120&ref=v3.3.1\",\n\t\t\texpect: expect{\n\t\t\t\tcloneUrl:  \"https://github.com/kubernetes-sigs/kustomize\",\n\t\t\t\tpath:      \"examples/multibases/dev\",\n\t\t\t\tref:       \"v3.3.1\",\n\t\t\t\tsubmodule: true,\n\t\t\t\ttimeout:   120 * time.Second,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: \"git@github.com:owner/repo//examples?timeout=120&version=v3.3.1\",\n\t\t\texpect: expect{\n\t\t\t\tcloneUrl:  \"git@github.com:owner/repo\",\n\t\t\t\tpath:      \"examples\",\n\t\t\t\tref:       \"v3.3.1\",\n\t\t\t\tsubmodule: true,\n\t\t\t\ttimeout:   120 * time.Second,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: \"https://   /(@kubernetes-sigs/kustomize//examples/multibases/dev/?timeout=120&ref=v3.3.1\",\n\t\t\texpect: expect{\n\t\t\t\terr: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: \"https://my.github.com/kubernetes-sigs/kustomize//examples/multibases/dev/?version=v3.3.1&submodules=false&timeout=1s\",\n\t\t\texpect: expect{\n\t\t\t\tcloneUrl:  \"https://my.github.com/kubernetes-sigs/kustomize\",\n\t\t\t\tpath:      \"examples/multibases/dev\",\n\t\t\t\tref:       \"v3.3.1\",\n\t\t\t\tsubmodule: false,\n\t\t\t\ttimeout:   1 * time.Second,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i := range cases {\n\t\tc := cases[i]\n\n\t\tr, err := NewKustomizeRemote(c.input)\n\t\tif err != nil {\n\t\t\tif !c.expect.err {\n\t\t\t\tassert.Fail(t, err.Error())\n\t\t\t} else {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tassert.Equal(t, c.expect.path, r.Path())\n\t\tassert.Equal(t, c.expect.cloneUrl, r.CloneUrl())\n\t\tassert.Equal(t, c.expect.timeout, r.Timeout)\n\t\tassert.Equal(t, c.expect.ref, r.Ref)\n\t\tassert.Equal(t, c.expect.submodule, r.Submodules)\n\t}\n}\n"
  },
  {
    "path": "pkg/util/util.go",
    "content": "package util\n\nimport (\n\t\"context\"\n\t\"crypto/rand\"\n\t\"crypto/tls\"\n\t\"fmt\"\n\t\"math\"\n\t\"math/big\"\n\tmathrand \"math/rand\"\n\t\"net\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n\t\"sigs.k8s.io/kind/pkg/cluster\"\n)\n\nconst (\n\tchars           = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"\n\tdigits          = \"0123456789\"\n\tspecialChars    = `!#$%&'()*+,-./:;<=>?@[]^_{|}~`\n\tpasswordLength  = 40\n\tnumSpecialChars = 3\n\tnumDigits       = 3\n\tStaticPassword  = \"developer\"\n)\n\nfunc GetCLIStartTimeAnnotationValue(annotations map[string]string) (string, error) {\n\tif annotations == nil {\n\t\treturn \"\", fmt.Errorf(\"this object's annotation is nil\")\n\t}\n\ttimeStamp, ok := annotations[v1alpha1.CliStartTimeAnnotation]\n\tif ok {\n\t\treturn timeStamp, nil\n\t}\n\treturn \"\", fmt.Errorf(\"expected annotation, %s, not found\", v1alpha1.CliStartTimeAnnotation)\n}\n\nfunc SetCLIStartTimeAnnotationValue(annotations map[string]string, timeStamp string) {\n\tif timeStamp != \"\" && annotations != nil {\n\t\tannotations[v1alpha1.CliStartTimeAnnotation] = timeStamp\n\t}\n}\n\nfunc SetLastObservedSyncTimeAnnotationValue(annotations map[string]string, timeStamp string) {\n\tif timeStamp != \"\" && annotations != nil {\n\t\tannotations[v1alpha1.LastObservedCLIStartTimeAnnotation] = timeStamp\n\t}\n}\n\nfunc GetLastObservedSyncTimeAnnotationValue(annotations map[string]string) (string, error) {\n\tif annotations == nil {\n\t\treturn \"\", fmt.Errorf(\"this object's annotation is nil\")\n\t}\n\ttimeStamp, ok := annotations[v1alpha1.LastObservedCLIStartTimeAnnotation]\n\tif ok {\n\t\treturn timeStamp, nil\n\t}\n\treturn \"\", fmt.Errorf(\"expected annotation, %s, not found\", v1alpha1.LastObservedCLIStartTimeAnnotation)\n}\n\nfunc UpdateSyncAnnotation(ctx context.Context, kubeClient client.Client, obj client.Object) error {\n\ttimeStamp, err := GetCLIStartTimeAnnotationValue(obj.GetAnnotations())\n\tif err != nil {\n\t\treturn err\n\t}\n\tannotations := make(map[string]string, 1)\n\tSetLastObservedSyncTimeAnnotationValue(annotations, timeStamp)\n\n\treturn ApplyAnnotation(ctx, kubeClient, obj, annotations, client.ForceOwnership, client.FieldOwner(v1alpha1.FieldManager))\n}\n\nfunc ApplyAnnotation(ctx context.Context, kubeClient client.Client, obj client.Object, annotations map[string]string, opts ...client.PatchOption) error {\n\t// MUST be unstructured to avoid managing fields we do not care about.\n\tu := unstructured.Unstructured{}\n\tu.SetAnnotations(annotations)\n\tu.SetName(obj.GetName())\n\tu.SetNamespace(obj.GetNamespace())\n\tu.SetGroupVersionKind(obj.GetObjectKind().GroupVersionKind())\n\treturn kubeClient.Patch(ctx, &u, client.Apply, opts...)\n}\n\nfunc GeneratePassword() (string, error) {\n\tpassChars := make([]string, passwordLength)\n\tvalidChars := fmt.Sprintf(\"%s%s%s\", chars, digits, specialChars)\n\n\tfor i := 0; i < numSpecialChars; i++ {\n\t\tc, err := getRandElement(specialChars)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tpassChars = append(passChars, c)\n\t}\n\n\tfor i := 0; i < numDigits; i++ {\n\t\tc, err := getRandElement(digits)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tpassChars = append(passChars, c)\n\t}\n\n\tfor i := 0; i < passwordLength-numDigits-numSpecialChars; i++ {\n\t\tc, err := getRandElement(validChars)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tpassChars = append(passChars, c)\n\t}\n\n\tseed, err := rand.Int(rand.Reader, big.NewInt(math.MaxInt64))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tr := mathrand.New(mathrand.NewSource(seed.Int64()))\n\tr.Shuffle(len(passChars), func(i, j int) {\n\t\tpassChars[i], passChars[j] = passChars[j], passChars[i]\n\t})\n\n\treturn strings.Join(passChars, \"\"), nil\n}\n\nfunc getRandElement(input string) (string, error) {\n\tposition, err := rand.Int(rand.Reader, big.NewInt(int64(len(input))))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn string(input[position.Int64()]), nil\n}\n\nfunc IsYamlFile(input string) bool {\n\textension := filepath.Ext(input)\n\treturn extension == \".yaml\" || extension == \".yml\"\n}\n\nfunc GetHttpClient() *http.Client {\n\ttr := &http.Transport{\n\t\tTLSClientConfig: &tls.Config{InsecureSkipVerify: true},\n\t\tDialContext: (&net.Dialer{\n\t\t\tTimeout:   5 * time.Second,\n\t\t\tKeepAlive: 30 * time.Second, // from http.DefaultTransport\n\t\t}).DialContext,\n\t}\n\treturn &http.Client{Transport: tr, Timeout: 30 * time.Second}\n}\n\n// DetectKindNodeProvider follows the kind CLI convention where:\n// 1. if KIND_EXPERIMENTAL_PROVIDER env var is specified, it uses the value:\n// 2. if env var is not specified, use the first available supported engine.\n// https://github.com/kubernetes-sigs/kind/blob/ac81e7b64e06670132dae3486e64e531953ad58c/pkg/cluster/provider.go#L100-L114\nfunc DetectKindNodeProvider() (cluster.ProviderOption, error) {\n\tswitch p := os.Getenv(\"KIND_EXPERIMENTAL_PROVIDER\"); p {\n\tcase \"podman\":\n\t\treturn cluster.ProviderWithPodman(), nil\n\tcase \"docker\":\n\t\treturn cluster.ProviderWithDocker(), nil\n\tcase \"nerdctl\", \"finch\", \"nerdctl.lima\":\n\t\treturn cluster.ProviderWithNerdctl(p), nil\n\tdefault:\n\t\treturn cluster.DetectNodeProvider()\n\t}\n}\n\nfunc SetPackageLabels(obj client.Object) {\n\tlabels := obj.GetLabels()\n\tif labels == nil {\n\t\tlabels = map[string]string{}\n\t\tobj.SetLabels(labels)\n\t}\n\tlabels[v1alpha1.PackageNameLabelKey] = obj.GetName()\n\n\tswitch n := obj.GetName(); n {\n\tcase v1alpha1.ArgoCDPackageName, v1alpha1.GiteaPackageName, v1alpha1.IngressNginxPackageName:\n\t\tlabels[v1alpha1.PackageTypeLabelKey] = v1alpha1.PackageTypeLabelCore\n\tdefault:\n\t\tlabels[v1alpha1.PackageTypeLabelKey] = v1alpha1.PackageTypeLabelCustom\n\t}\n}\n"
  },
  {
    "path": "pkg/util/util_test.go",
    "content": "package util\n\nimport (\n\t\"strconv\"\n\t\"testing\"\n\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/apimachinery/pkg/runtime\"\n\t\"k8s.io/apimachinery/pkg/runtime/schema\"\n)\n\nvar specialCharMap = make(map[string]struct{})\n\nfunc TestGeneratePassword(t *testing.T) {\n\tfor i := range specialChars {\n\t\tspecialCharMap[string(specialChars[i])] = struct{}{}\n\t}\n\n\tfor i := 0; i < 1000; i++ {\n\t\tp, err := GeneratePassword()\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"error generating password: %v\", err)\n\t\t}\n\t\tcounts := make([]int, 3)\n\t\tfor j := range p {\n\t\t\tcounts[0] += 1\n\t\t\tc := string(p[j])\n\t\t\t_, ok := specialCharMap[c]\n\t\t\tif ok {\n\t\t\t\tcounts[1] += 1\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t_, err := strconv.Atoi(c)\n\t\t\tif err == nil {\n\t\t\t\tcounts[2] += 1\n\t\t\t}\n\t\t}\n\t\tif counts[0] != passwordLength {\n\t\t\tt.Fatalf(\"password length incorrect\")\n\t\t}\n\t\tif counts[1] < numSpecialChars {\n\t\t\tt.Fatalf(\"min number of special chars not generated\")\n\t\t}\n\t\tif counts[2] < numDigits {\n\t\t\tt.Fatalf(\"min number of digits not generated\")\n\t\t}\n\t}\n}\n\ntype MockObject struct {\n\tv1.ObjectMeta\n}\n\nfunc (m *MockObject) GetObjectKind() schema.ObjectKind {\n\treturn nil\n}\n\nfunc (m *MockObject) DeepCopyObject() runtime.Object {\n\treturn nil\n}\n\nfunc TestSetPackageLabels(t *testing.T) {\n\ttestCases := []struct {\n\t\tname           string\n\t\tobjectName     string\n\t\tinitialLabels  map[string]string\n\t\texpectedLabels map[string]string\n\t}{\n\t\t{\n\t\t\tname:          \"No initial labels\",\n\t\t\tobjectName:    \"test-package\",\n\t\t\tinitialLabels: nil,\n\t\t\texpectedLabels: map[string]string{\n\t\t\t\tv1alpha1.PackageNameLabelKey: \"test-package\",\n\t\t\t\tv1alpha1.PackageTypeLabelKey: v1alpha1.PackageTypeLabelCustom,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"With initial labels\",\n\t\t\tobjectName: \"test-package-one\",\n\t\t\tinitialLabels: map[string]string{\n\t\t\t\t\"existing\":                   \"label\",\n\t\t\t\tv1alpha1.PackageNameLabelKey: \"incorrect\",\n\t\t\t},\n\t\t\texpectedLabels: map[string]string{\n\t\t\t\t\"existing\":                   \"label\",\n\t\t\t\tv1alpha1.PackageNameLabelKey: \"test-package-one\",\n\t\t\t\tv1alpha1.PackageTypeLabelKey: v1alpha1.PackageTypeLabelCustom,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:          \"ArgoCD package\",\n\t\t\tobjectName:    v1alpha1.ArgoCDPackageName,\n\t\t\tinitialLabels: nil,\n\t\t\texpectedLabels: map[string]string{\n\t\t\t\tv1alpha1.PackageNameLabelKey: v1alpha1.ArgoCDPackageName,\n\t\t\t\tv1alpha1.PackageTypeLabelKey: v1alpha1.PackageTypeLabelCore,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:          \"Gitea package\",\n\t\t\tobjectName:    v1alpha1.GiteaPackageName,\n\t\t\tinitialLabels: nil,\n\t\t\texpectedLabels: map[string]string{\n\t\t\t\tv1alpha1.PackageNameLabelKey: v1alpha1.GiteaPackageName,\n\t\t\t\tv1alpha1.PackageTypeLabelKey: v1alpha1.PackageTypeLabelCore,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:          \"IngressNginx package\",\n\t\t\tobjectName:    v1alpha1.IngressNginxPackageName,\n\t\t\tinitialLabels: nil,\n\t\t\texpectedLabels: map[string]string{\n\t\t\t\tv1alpha1.PackageNameLabelKey: v1alpha1.IngressNginxPackageName,\n\t\t\t\tv1alpha1.PackageTypeLabelKey: v1alpha1.PackageTypeLabelCore,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tobj := &MockObject{\n\t\t\t\tObjectMeta: v1.ObjectMeta{\n\t\t\t\t\tName:   tc.objectName,\n\t\t\t\t\tLabels: tc.initialLabels,\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tSetPackageLabels(obj)\n\n\t\t\tassert.Equal(t, tc.expectedLabels, obj.GetLabels())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "tests/e2e/docker/docker_test.go",
    "content": "//go:build e2e\n\npackage docker\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/cnoe-io/idpbuilder/tests/e2e\"\n\t\"github.com/go-logr/logr\"\n\t\"github.com/stretchr/testify/assert\"\n\tctrl \"sigs.k8s.io/controller-runtime\"\n)\n\nfunc CleanUpDocker(t *testing.T) {\n\tt.Log(\"cleaning up docker env\")\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\tb, err := e2e.RunCommand(ctx, `docker ps -aqf name=localdev-control-plane`, 10*time.Second)\n\tassert.NoError(t, err, fmt.Sprintf(\"error while listing docker containers: %s, %s\", err, b))\n\n\tconts := strings.TrimSpace(string(b))\n\tif len(conts) == 0 {\n\t\treturn\n\t}\n\tb, err = e2e.RunCommand(ctx, fmt.Sprintf(\"docker container rm -f %s\", conts), 60*time.Second)\n\tassert.NoError(t, err, fmt.Sprintf(\"error while removing docker containers: %s, %s\", err, b))\n\n\tb, err = e2e.RunCommand(ctx, \"docker system prune -f\", 60*time.Second)\n\tassert.NoError(t, err, fmt.Sprintf(\"error while pruning system: %s, %s\", err, b))\n\n\tb, err = e2e.RunCommand(ctx, \"docker volume prune -f\", 60*time.Second)\n\tassert.NoError(t, err, fmt.Sprintf(\"error while pruning volumes: %s, %s\", err, b))\n\tt.Log(\"finished cleaning up docker env\")\n}\n\nfunc Test_CreateDocker(t *testing.T) {\n\tslogger := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: slog.LevelDebug}))\n\tctrl.SetLogger(logr.FromSlogHandler(slogger.Handler()))\n\n\ttestCreate(t)\n\ttestCreatePath(t)\n\ttestCreatePort(t)\n\ttestCustomPkg(t)\n\ttestPackagePriority(t)\n}\n\n// test idpbuilder create\nfunc testCreate(t *testing.T) {\n\tctx, cancel := context.WithTimeout(context.Background(), 8*time.Minute)\n\tdefer cancel()\n\tdefer CleanUpDocker(t)\n\n\tt.Log(\"running idpbuilder create\")\n\tcmd := exec.CommandContext(ctx, e2e.IdpbuilderBinaryLocation, \"create\")\n\tb, err := cmd.CombinedOutput()\n\tassert.NoError(t, err, b)\n\n\tkubeClient, err := e2e.GetKubeClient()\n\tassert.NoError(t, err, fmt.Sprintf(\"error while getting client: %s\", err))\n\n\te2e.TestArgoCDApps(ctx, t, kubeClient, e2e.CorePackages)\n\n\targoBaseUrl := fmt.Sprintf(\"https://argocd.%s:%s\", e2e.DefaultBaseDomain, e2e.DefaultPort)\n\tgiteaBaseUrl := fmt.Sprintf(\"https://gitea.%s:%s\", e2e.DefaultBaseDomain, e2e.DefaultPort)\n\te2e.TestCoreEndpoints(ctx, t, argoBaseUrl, giteaBaseUrl)\n\n\te2e.TestGiteaRegistry(ctx, t, \"docker\", fmt.Sprintf(\"gitea.%s\", e2e.DefaultBaseDomain), e2e.DefaultPort)\n}\n\n// test idpbuilder create --use-path-routing\nfunc testCreatePath(t *testing.T) {\n\tctx, cancel := context.WithTimeout(context.Background(), 8*time.Minute)\n\tdefer cancel()\n\tdefer CleanUpDocker(t)\n\n\tt.Log(\"running idpbuilder create --use-path-routing\")\n\tcmd := exec.CommandContext(ctx, e2e.IdpbuilderBinaryLocation, \"create\", \"--use-path-routing\")\n\tb, err := cmd.CombinedOutput()\n\tassert.NoError(t, err, fmt.Sprintf(\"error while running create: %s, %s\", err, b))\n\n\tkubeClient, err := e2e.GetKubeClient()\n\tassert.NoError(t, err, fmt.Sprintf(\"error while getting client: %s\", err))\n\n\te2e.TestArgoCDApps(ctx, t, kubeClient, e2e.CorePackages)\n\n\targoBaseUrl := fmt.Sprintf(\"https://%s:%s/argocd\", e2e.DefaultBaseDomain, e2e.DefaultPort)\n\tgiteaBaseUrl := fmt.Sprintf(\"https://%s:%s/gitea\", e2e.DefaultBaseDomain, e2e.DefaultPort)\n\te2e.TestCoreEndpoints(ctx, t, argoBaseUrl, giteaBaseUrl)\n\n\te2e.TestGiteaRegistry(ctx, t, \"docker\", e2e.DefaultBaseDomain, e2e.DefaultPort)\n\te2e.TestGiteaRegistryInCluster(ctx, t, \"docker\", e2e.DefaultBaseDomain, e2e.DefaultPort, kubeClient)\n}\n\nfunc testCreatePort(t *testing.T) {\n\tctx, cancel := context.WithTimeout(context.Background(), 8*time.Minute)\n\tdefer cancel()\n\tdefer CleanUpDocker(t)\n\n\tport := \"2443\"\n\tt.Logf(\"running idpbuilder create --port %s\", port)\n\tcmd := exec.CommandContext(ctx, e2e.IdpbuilderBinaryLocation, \"create\", \"--port\", port)\n\tb, err := cmd.CombinedOutput()\n\tassert.NoError(t, err, fmt.Sprintf(\"error while running create: %s, %s\", err, b))\n\n\tkubeClient, err := e2e.GetKubeClient()\n\tassert.NoError(t, err, fmt.Sprintf(\"error while getting client: %s\", err))\n\n\te2e.TestArgoCDApps(ctx, t, kubeClient, e2e.CorePackages)\n\n\targoBaseUrl := fmt.Sprintf(\"https://argocd.%s:%s\", e2e.DefaultBaseDomain, port)\n\tgiteaBaseUrl := fmt.Sprintf(\"https://gitea.%s:%s\", e2e.DefaultBaseDomain, port)\n\te2e.TestCoreEndpoints(ctx, t, argoBaseUrl, giteaBaseUrl)\n}\n\nfunc testCustomPkg(t *testing.T) {\n\tctx, cancel := context.WithTimeout(context.Background(), 8*time.Minute)\n\tdefer cancel()\n\tdefer CleanUpDocker(t)\n\n\tcmdString := \"create --package ../../../pkg/controllers/custompackage/test/resources/customPackages/testDir\"\n\n\tt.Log(fmt.Sprintf(\"running %s\", cmdString))\n\tcmd := exec.CommandContext(ctx, e2e.IdpbuilderBinaryLocation, strings.Split(cmdString, \" \")...)\n\tb, err := cmd.CombinedOutput()\n\tassert.NoError(t, err, fmt.Sprintf(\"error while running create: %s, %s\", err, b))\n\n\tkubeClient, err := e2e.GetKubeClient()\n\n\tassert.NoError(t, err, fmt.Sprintf(\"error while getting client: %s\", err))\n\tif err != nil {\n\t\tassert.FailNow(t, \"failed creating cluster\")\n\t}\n\n\te2e.TestArgoCDApps(ctx, t, kubeClient, e2e.CorePackages)\n\n\tgiteaBaseUrl := fmt.Sprintf(\"https://gitea.%s:%s\", e2e.DefaultBaseDomain, e2e.DefaultPort)\n\n\texpectedApps := map[string]string{\n\t\t\"my-app\":  \"argocd\",\n\t\t\"my-app2\": \"argocd\",\n\t}\n\te2e.TestArgoCDApps(ctx, t, kubeClient, expectedApps)\n\trepos, err := e2e.GetGiteaRepos(ctx, giteaBaseUrl)\n\tassert.NoError(t, err)\n\texpectedRepoNames := map[string]struct{}{\n\t\t\"idpbuilder-localdev-my-app-app1\":  {},\n\t\t\"idpbuilder-localdev-my-app2-app2\": {},\n\t}\n\n\tfor i := range repos {\n\t\trepo := repos[i]\n\t\t_, ok := expectedRepoNames[repo.Name]\n\t\tif ok {\n\t\t\tdelete(expectedRepoNames, repo.Name)\n\t\t}\n\t}\n\tassert.Empty(t, expectedRepoNames)\n}\n\n// testPackagePriority tests the priority-based package reconciliation feature\n// where multiple packages for the same app can be specified, and only the highest priority wins\nfunc testPackagePriority(t *testing.T) {\n\tctx, cancel := context.WithTimeout(context.Background(), 8*time.Minute)\n\tdefer cancel()\n\tdefer CleanUpDocker(t)\n\n\t// Create with multiple package directories\n\t// The packages will be assigned priorities based on their order (0, 1, 2, ...)\n\tcmdString := \"create --package ../../../pkg/controllers/custompackage/test/resources/customPackages/testDir --package ../../../pkg/controllers/custompackage/test/resources/customPackages/testDir2\"\n\n\tt.Log(fmt.Sprintf(\"running %s to test package priority\", cmdString))\n\tcmd := exec.CommandContext(ctx, e2e.IdpbuilderBinaryLocation, strings.Split(cmdString, \" \")...)\n\tb, err := cmd.CombinedOutput()\n\tassert.NoError(t, err, fmt.Sprintf(\"error while running create: %s, %s\", err, b))\n\n\tkubeClient, err := e2e.GetKubeClient()\n\tassert.NoError(t, err, fmt.Sprintf(\"error while getting client: %s\", err))\n\tif err != nil {\n\t\tassert.FailNow(t, \"failed creating cluster\")\n\t}\n\n\t// Wait for core packages to be ready\n\te2e.TestArgoCDApps(ctx, t, kubeClient, e2e.CorePackages)\n\n\t// Verify CustomPackages have priority annotations\n\tt.Log(\"Verifying CustomPackages have correct priority annotations\")\n\n\tcustomPkgList := &e2e.CustomPackageList{}\n\terr = kubeClient.List(ctx, customPkgList, &e2e.ListOptions{Namespace: \"idpbuilder-localdev\"})\n\tassert.NoError(t, err, \"failed to list custom packages\")\n\n\t// Verify that packages have priority annotations\n\tfoundPriorities := make(map[string]string)\n\tfor _, pkg := range customPkgList.Items {\n\t\tif pkg.ObjectMeta.Annotations != nil {\n\t\t\tif priority, exists := pkg.ObjectMeta.Annotations[\"cnoe.io/package-priority\"]; exists {\n\t\t\t\tt.Logf(\"Package %s has priority: %s\", pkg.Name, priority)\n\t\t\t\tfoundPriorities[pkg.Name] = priority\n\t\t\t}\n\t\t\tif sourcePath, exists := pkg.ObjectMeta.Annotations[\"cnoe.io/package-source-path\"]; exists {\n\t\t\t\tt.Logf(\"Package %s has source path: %s\", pkg.Name, sourcePath)\n\t\t\t}\n\t\t}\n\t}\n\n\t// At least some packages should have priority annotations\n\tassert.NotEmpty(t, foundPriorities, \"expected custom packages to have priority annotations\")\n\n\t// Wait for custom packages to reconcile\n\ttime.Sleep(10 * time.Second)\n\n\t// Verify apps are deployed\n\texpectedApps := map[string]string{\n\t\t\"my-app\":    \"argocd\",\n\t\t\"guestbook\": \"argocd\",\n\t}\n\te2e.TestArgoCDApps(ctx, t, kubeClient, expectedApps)\n\n\tt.Log(\"Package priority test completed successfully\")\n}\n"
  },
  {
    "path": "tests/e2e/docker/test-dockerfile",
    "content": "FROM scratch\nCOPY test-dockerfile .\n"
  },
  {
    "path": "tests/e2e/e2e.go",
    "content": "//go:build e2e\n\npackage e2e\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/tls\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"code.gitea.io/sdk/gitea\"\n\targov1alpha1 \"github.com/cnoe-io/argocd-api/api/argo/application/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/api/v1alpha1\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/k8s\"\n\t\"github.com/cnoe-io/idpbuilder/pkg/printer/types\"\n\tcorev1 \"k8s.io/api/core/v1\"\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\t\"k8s.io/client-go/tools/clientcmd\"\n\t\"k8s.io/client-go/util/homedir\"\n\t\"k8s.io/client-go/util/retry\"\n\t\"k8s.io/apimachinery/pkg/util/wait\"\n\t\"sigs.k8s.io/controller-runtime/pkg/client\"\n)\n\n// Type aliases for convenience\ntype CustomPackageList = v1alpha1.CustomPackageList\ntype ListOptions = client.ListOptions\n\nconst (\n\tIdpbuilderBinaryLocation = \"../../../idpbuilder\"\n\tDefaultPort              = \"8443\"\n\tDefaultBaseDomain        = \"cnoe.localtest.me\"\n\tArgoCDSessionEndpoint    = \"/api/v1/session\"\n\tArgoCDAppsEndpoint       = \"/api/v1/applications\"\n\tGiteaSessionEndpoint     = \"/api/v1/users/%s/tokens\"\n\tGiteaUserEndpoint        = \"/api/v1/users/%s\"\n\tGiteaRepoEndpoint        = \"/api/v1/repos/search\"\n\n\thttpRetryDelay   = 5 * time.Second\n\thttpRetryTimeout = 300 * time.Second\n)\n\nvar (\n\t// CorePackages is a map of argocd app name to its namespace.\n\tCorePackages = map[string]string{\n\t\t\"argocd\": \"argocd\",\n\t\t\"nginx\":  \"argocd\",\n\t\t\"gitea\":  \"argocd\",\n\t}\n)\n\ntype BasicAuth struct {\n\tUsername string `json:\"username\"`\n\tPassword string `json:\"password\"`\n}\n\ntype ArgoCDAuthResponse struct {\n\tToken string `json:\"token\"`\n}\n\ntype ArgoCDAppResp struct {\n\tItems []argov1alpha1.Application\n}\n\ntype GiteaSearchRepoResponse struct {\n\tOk   bool\n\tData []gitea.Repository\n}\n\nfunc GetHttpClient() *http.Client {\n\ttr := http.DefaultTransport.(*http.Transport).Clone()\n\ttr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}\n\treturn &http.Client{Transport: tr}\n}\n\nfunc TestCoreEndpoints(ctx context.Context, t *testing.T, argoBaseUrl, giteaBaseUrl string) {\n\tTestArgoCDEndpoints(ctx, t, argoBaseUrl)\n\tTestGiteaEndpoints(ctx, t, giteaBaseUrl)\n}\n\nfunc RunCommand(ctx context.Context, command string, timeout time.Duration) ([]byte, error) {\n\tcmdCtx, cancel := context.WithTimeout(ctx, timeout)\n\tdefer cancel()\n\tcmds := strings.Split(command, \" \")\n\tif len(cmds) == 0 {\n\t\treturn nil, fmt.Errorf(\"supply at least one command\")\n\t}\n\tbinary := cmds[0]\n\targs := make([]string, 0, len(cmds)-1)\n\tif len(cmds) > 1 {\n\t\targs = append(args, cmds[1:]...)\n\t}\n\n\tc := exec.CommandContext(cmdCtx, binary, args...)\n\tb, err := c.CombinedOutput()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error while running %s: %s, %s\", command, err, b)\n\t}\n\n\treturn b, nil\n}\n\nfunc SendAndParse(ctx context.Context, target any, httpClient *http.Client, req *http.Request) error {\n\tsendCtx, cancel := context.WithTimeout(ctx, httpRetryTimeout)\n\tdefer cancel()\n\tvar bodyBytes []byte\n\tif req.Body != nil {\n\t\tb, bErr := io.ReadAll(req.Body)\n\t\tif bErr != nil {\n\t\t\treturn fmt.Errorf(\"failed copying http request body: %w\", bErr)\n\t\t}\n\t\tbodyBytes = b\n\t}\n\n\tfor {\n\t\tselect {\n\t\tcase <-sendCtx.Done():\n\t\t\treturn fmt.Errorf(\"timedout\")\n\t\tdefault:\n\t\t\tif req.Body != nil {\n\t\t\t\tb := append(make([]byte, 0, len(bodyBytes)), bodyBytes...)\n\t\t\t\treq.Body = io.NopCloser(bytes.NewBuffer(b))\n\t\t\t}\n\t\t\tresp, err := httpClient.Do(req)\n\t\t\tif err != nil {\n\t\t\t\tfmt.Println(\"failed running http request: \", err)\n\t\t\t\ttime.Sleep(httpRetryDelay)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tdefer resp.Body.Close()\n\n\t\t\trespB, err := io.ReadAll(resp.Body)\n\t\t\tif err != nil {\n\t\t\t\tfmt.Println(\"failed reading http response body: \", err)\n\t\t\t\ttime.Sleep(httpRetryDelay)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\terr = json.Unmarshal(respB, target)\n\t\t\tif err != nil {\n\t\t\t\tfmt.Println(\"failed parsing response body: \", err, \"\\n\", string(respB))\n\t\t\t\ttime.Sleep(httpRetryDelay)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t}\n}\n\nfunc TestGiteaEndpoints(ctx context.Context, t *testing.T, baseUrl string) {\n\tt.Log(\"testing gitea endpoints\")\n\trepos, err := GetGiteaRepos(ctx, baseUrl)\n\tassert.Nil(t, err)\n\n\tassert.Equal(t, 3, len(repos))\n\texpectedRepoNames := map[string]struct{}{\n\t\t\"idpbuilder-localdev-gitea\":  {},\n\t\t\"idpbuilder-localdev-nginx\":  {},\n\t\t\"idpbuilder-localdev-argocd\": {},\n\t}\n\n\tfor i := range repos {\n\t\t_, ok := expectedRepoNames[repos[i].Name]\n\t\tif ok {\n\t\t\tdelete(expectedRepoNames, repos[i].Name)\n\t\t}\n\t}\n\tassert.Equal(t, 0, len(expectedRepoNames))\n}\n\nfunc GetGiteaRepos(ctx context.Context, baseUrl string) ([]gitea.Repository, error) {\n\tauth, err := GetBasicAuth(ctx, \"gitea-credential\")\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"getting gitea credentials %w\", err)\n\t}\n\n\ttoken, err := GetGiteaSessionToken(ctx, auth, baseUrl)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"getting gitea token %w\", err)\n\t}\n\n\tuserEP := fmt.Sprintf(\"%s%s\", baseUrl, fmt.Sprintf(GiteaUserEndpoint, auth.Username))\n\treq, err := http.NewRequestWithContext(ctx, http.MethodGet, userEP, nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"creating new request %w\", err)\n\t}\n\n\thttpClient := GetHttpClient()\n\treq.Header.Set(\"Authorization\", fmt.Sprintf(\"token %s\", token))\n\n\tuser := gitea.User{}\n\terr = SendAndParse(ctx, &user, httpClient, req)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"getting user info %w\", err)\n\t}\n\n\trepos := GiteaSearchRepoResponse{}\n\trepoEp := fmt.Sprintf(\"%s%s\", baseUrl, GiteaRepoEndpoint)\n\trepoReq, _ := http.NewRequestWithContext(ctx, http.MethodGet, repoEp, nil)\n\terr = SendAndParse(ctx, &repos, httpClient, repoReq)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"getting gitea repositories %w\", err)\n\t}\n\n\treturn repos.Data, nil\n}\n\nfunc GetGiteaSessionToken(ctx context.Context, auth BasicAuth, baseUrl string) (string, error) {\n\thttpClient := GetHttpClient()\n\tsessionEP := fmt.Sprintf(\"%s%s\", baseUrl, fmt.Sprintf(GiteaSessionEndpoint, auth.Username))\n\n\tsb := []byte(fmt.Sprintf(`{\"name\":\"%d\", \"scopes\":[\"%s\"]}`, time.Now().Unix(), gitea.AccessTokenScopeAll))\n\tsessionReq, err := http.NewRequestWithContext(ctx, http.MethodPost, sessionEP, bytes.NewBuffer(sb))\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"reating new request for session: %w\", err)\n\t}\n\n\tsessionReq.SetBasicAuth(auth.Username, auth.Password)\n\tsessionReq.Header.Set(\"Content-Type\", \"application/json\")\n\n\tvar sess gitea.AccessToken\n\terr = SendAndParse(ctx, &sess, httpClient, sessionReq)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif sess.Token == \"\" {\n\t\treturn \"\", fmt.Errorf(\"received empty token\")\n\t}\n\treturn sess.Token, nil\n}\n\nfunc TestArgoCDEndpoints(ctx context.Context, t *testing.T, baseUrl string) {\n\tt.Log(\"testing argocd endpoints\")\n\tsessionURL := fmt.Sprintf(\"%s%s\", baseUrl, ArgoCDSessionEndpoint)\n\tappURL := fmt.Sprintf(\"%s%s\", baseUrl, ArgoCDAppsEndpoint)\n\n\ttoken, err := GetArgoCDSessionToken(ctx, sessionURL)\n\tassert.Nil(t, err, fmt.Sprintf(\"getting argocd token: %v\", err))\n\n\thttpClient := GetHttpClient()\n\n\treq, _ := http.NewRequestWithContext(ctx, http.MethodGet, appURL, nil)\n\treq.Header.Set(\"Authorization\", fmt.Sprintf(\"Bearer %s\", token))\n\n\tvar appResp ArgoCDAppResp\n\terr = SendAndParse(ctx, &appResp, httpClient, req)\n\tassert.Nil(t, err, fmt.Sprintf(\"getting argocd applications: %s\", err))\n\n\tassert.Equal(t, 3, len(appResp.Items), fmt.Sprintf(\"number of apps do not match: %v\", appResp.Items))\n}\n\nfunc GetBasicAuth(ctx context.Context, name string) (BasicAuth, error) {\n\tvar lastErr error\n\n\tfor attempt := 0; attempt < 5; attempt++ {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn BasicAuth{}, ctx.Err()\n\t\tdefault:\n\t\t\tb, err := RunCommand(ctx, fmt.Sprintf(\"%s get secrets -o json\", IdpbuilderBinaryLocation), 10*time.Second)\n\t\t\tif err != nil {\n\t\t\t\tlastErr = err\n\t\t\t\ttime.Sleep(httpRetryDelay)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tout := BasicAuth{}\n\t\t\tsecs := make([]types.Secret, 2)\n\t\t\tif err = json.Unmarshal(b, &secs); err != nil {\n\t\t\t\tlastErr = err\n\t\t\t\ttime.Sleep(httpRetryDelay)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfor _, sec := range secs {\n\t\t\t\tif sec.Name == name {\n\t\t\t\t\tout.Password = sec.Password\n\t\t\t\t\tout.Username = sec.Username\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif out.Password == \"\" || out.Username == \"\" {\n\t\t\t\ttime.Sleep(httpRetryDelay)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\treturn out, nil\n\t\t}\n\t}\n\n\treturn BasicAuth{}, fmt.Errorf(\"failed after 5 attempts: %w\", lastErr)\n}\n\nfunc GetArgoCDSessionToken(ctx context.Context, endpoint string) (string, error) {\n\tauth, err := GetBasicAuth(ctx, \"argocd-initial-admin-secret\")\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\thttpClient := GetHttpClient()\n\n\tauthJ, err := json.Marshal(auth)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treq, err := http.NewRequest(http.MethodPost, endpoint, bytes.NewBuffer(authJ))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\n\tvar tokenResp ArgoCDAuthResponse\n\terr = SendAndParse(ctx, &tokenResp, httpClient, req)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif tokenResp.Token == \"\" {\n\t\treturn \"\", fmt.Errorf(\"received token is empty\")\n\t}\n\n\treturn tokenResp.Token, nil\n}\n\nfunc TestArgoCDApps(ctx context.Context, t *testing.T, kubeClient client.Client, apps map[string]string) {\n\tdone := false\n\tfor !done {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn\n\t\tdefault:\n\t\t\tfor k := range apps {\n\t\t\t\tns := apps[k]\n\t\t\t\tt.Logf(\"checking argocd app %s in %s ns\", k, ns)\n\t\t\t\tready, argoErr := isArgoAppSyncedAndHealthy(ctx, kubeClient, k, ns)\n\t\t\t\tif argoErr != nil {\n\t\t\t\t\tt.Logf(\"error when checking ArgoCD app health: %s\", argoErr)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif ready {\n\t\t\t\t\tt.Logf(\"app %s ready\", k)\n\t\t\t\t\tdelete(apps, k)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif len(apps) != 0 {\n\t\t\t\tt.Logf(\"waiting for apps to be ready\")\n\t\t\t\ttime.Sleep(httpRetryDelay)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdone = true\n\t\t\tt.Log(\"all argocd apps healthy\")\n\t\t}\n\t}\n}\n\nfunc isArgoAppSyncedAndHealthy(ctx context.Context, kubeClient client.Client, name, namespace string) (bool, error) {\n\tapp := argov1alpha1.Application{}\n\n\terr := kubeClient.Get(ctx, client.ObjectKey{Name: name, Namespace: namespace}, &app)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn app.Status.Health.Status == \"Healthy\" && app.Status.Sync.Status == \"Synced\", nil\n}\n\nfunc GetKubeClient() (client.Client, error) {\n\tconf, err := clientcmd.BuildConfigFromFlags(\"\", filepath.Join(homedir.HomeDir(), \".kube\", \"config\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn client.New(conf, client.Options{Scheme: k8s.GetScheme()})\n}\n\n// login, build a test image, push, then pull.\nfunc TestGiteaRegistry(ctx context.Context, t *testing.T, cmd, giteaHost, giteaPort string) {\n\tt.Log(\"testing gitea container registry\")\n\tb, err := RunCommand(ctx, fmt.Sprintf(\"%s get secrets -o json -p gitea\", IdpbuilderBinaryLocation), 10*time.Second)\n\tassert.NoError(t, err)\n\n\tsecs := make([]types.Secret, 1)\n\terr = json.Unmarshal(b, &secs)\n\tassert.NoError(t, err)\n\n\tsec := secs[0]\n\tuser := sec.Username\n\tpass := sec.Password\n\n\tlogin, err := RunCommand(ctx, fmt.Sprintf(\"%s login %s:%s -u %s -p %s\", cmd, giteaHost, giteaPort, user, pass), 10*time.Second)\n\trequire.NoErrorf(t, err, \"%s login err: %s\", cmd, login)\n\n\ttag := fmt.Sprintf(\"%s:%s/giteaadmin/test:latest\", giteaHost, giteaPort)\n\n\tbuild, err := RunCommand(ctx, fmt.Sprintf(\"%s build -f test-dockerfile -t %s .\", cmd, tag), 10*time.Second)\n\trequire.NoErrorf(t, err, \"%s build err: %s\", cmd, build)\n\n\tpush, err := RunCommand(ctx, fmt.Sprintf(\"%s push %s\", cmd, tag), 10*time.Second)\n\trequire.NoErrorf(t, err, \"%s push err: %s\", cmd, push)\n\n\tpull, err := RunCommand(ctx, fmt.Sprintf(\"%s pull %s\", cmd, tag), 10*time.Second)\n\trequire.NoErrorf(t, err, \"%s pull err: %s\", cmd, pull)\n}\n\n// login, build a test image, push, then pull.\nfunc TestGiteaRegistryInCluster(ctx context.Context, t *testing.T, cmd, giteaHost, giteaPort string, kubeClient client.Client) {\n\tt.Log(\"testing using gitea container registry in cluster\")\n\tb, err := RunCommand(ctx, fmt.Sprintf(\"%s get secrets -o json -p gitea\", IdpbuilderBinaryLocation), 10*time.Second)\n\tassert.NoError(t, err)\n\n\tsecs := make([]types.Secret, 1)\n\terr = json.Unmarshal(b, &secs)\n\tassert.NoError(t, err)\n\n\tsec := secs[0]\n\tuser := sec.Username\n\tpass := sec.Password\n\n\tlogin, err := RunCommand(ctx, fmt.Sprintf(\"%s login %s:%s -u %s -p %s\", cmd, giteaHost, giteaPort, user, pass), 10*time.Second)\n\trequire.NoErrorf(t, err, \"%s login err: %s\", cmd, login)\n\n\tupstreamImage := \"nginx\"\n\ttag := fmt.Sprintf(\"%s:%s/giteaadmin/nginx:latest\", giteaHost, giteaPort)\n\n\tpull, err := RunCommand(ctx, fmt.Sprintf(\"%s pull %s\", cmd, upstreamImage), 10*time.Second)\n\trequire.NoErrorf(t, err, \"%s pull err: %s\", cmd, pull)\n\n\tretag, err := RunCommand(ctx, fmt.Sprintf(\"%s tag %s %s\", cmd, upstreamImage, tag), 10*time.Second)\n\trequire.NoErrorf(t, err, \"%s tag err: %s\", cmd, retag)\n\n\tpush, err := RunCommand(ctx, fmt.Sprintf(\"%s push %s\", cmd, tag), 10*time.Second)\n\trequire.NoErrorf(t, err, \"%s push err: %s\", cmd, push)\n\n\tpod := &corev1.Pod{\n\t\tObjectMeta: metav1.ObjectMeta{Name: \"test-pod\", Namespace: \"default\"},\n\t\tSpec: corev1.PodSpec{\n\t\t\tContainers: []corev1.Container{{\n\t\t\t\tName:  \"nginx\",\n\t\t\t\tImage: tag,\n\t\t\t}},\n\t\t},\n\t}\n\n\terr = kubeClient.Create(ctx, pod)\n\trequire.NoErrorf(t, err, \"pod creation err\")\n\n\t// Retry for 30 seconds\n\tbackoff := wait.Backoff{\n\t\tSteps:    3,\n\t\tDuration: 10 * time.Second,\n\t\tJitter:   0.0,\n\t}\n\n\tretriable := func(_ error) bool {\n\t\t// Retry all errors\n\t\treturn true\n\t}\n\n\ttestfunc := func() error {\n\t\tfoundPod := &corev1.Pod{}\n\t\terr = kubeClient.Get(ctx, client.ObjectKey{Name: pod.Name, Namespace: pod.Namespace}, foundPod)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif foundPod.Status.Phase != \"Running\" {\n\t\t\treturn fmt.Errorf(\"Pod phase not running: %s\", foundPod.Status.Phase)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\terr = retry.OnError(backoff, retriable, testfunc)\n\trequire.NoErrorf(t, err, \"pod startup err\")\n}\n"
  }
]