From 1cadd2d6051f8f04cea94b816ca46e72e51ededf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20Gond=C5=BEa?= Date: Tue, 9 Sep 2025 08:27:25 +0200 Subject: [PATCH] docs: Document new verification routines MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Oliver Gondža --- README.md | 197 ++++------------- test/suite.sh | 108 ---------- test/test1.sh | 4 - test/test2.sh | 11 - test/testdata/expected/test1.expected | 1 - test/testdata/expected/test2.expected | 290 -------------------------- 6 files changed, 37 insertions(+), 574 deletions(-) delete mode 100755 test/suite.sh delete mode 100755 test/test1.sh delete mode 100644 test/test2.sh delete mode 100644 test/testdata/expected/test1.expected delete mode 100644 test/testdata/expected/test2.expected diff --git a/README.md b/README.md index 4596e14..e6e6c98 100644 --- a/README.md +++ b/README.md @@ -22,179 +22,56 @@ You will get a dump of: - Logs of Argo CD - Warning and error-level Events -In addition to that, we will get a summary of: +To get data about other parts of the cluster (not specific to [gitops-operator](https://github.com/redhat-developer/gitops-operator/)), run `oc adm must-gather` (without passing a custom image). +Run `oc adm must-gather -h` to see more options. -- All executed commands: `must-gather-script-commands.txt` -- Errors: `must-gather-script-errors.txt` -- Commands that produced no output: `must-gather-script-no-output.txt` +## Development -All the output of the commands is stored into 3 different formats: +Make sure you run `make lint` before pushing new changes. +This requires `shellcheck` to be installed in your machine. + +For more information about `building` and `pushing` the image, see `make help`. + +### Image publishing -- `*.txt` that represents the normal view without any structure. -- `*.yaml` that is the YAML output of the command. -- `*.json` that is the JSON output of the command. +CD images are pushed to the following destinations, from where they can be used for testing: -In order to get data about other parts of the cluster (not specific to gitops-operator) you should run just `oc adm must-gather` (without passing a custom image). Run `oc adm must-gather -h` to see more options. +- HEAD of the `main` branch: quay.io/redhat-user-workloads/rh-openshift-gitops-tenant/gitops-must-gather:latest +- PRs: quay.io/redhat-user-workloads/rh-openshift-gitops-tenant/gitops-must-gather:on-pr- +- `main` branch: quay.io/redhat-user-workloads/rh-openshift-gitops-tenant/gitops-must-gather: -An example of the GitOps must-gather output would be something like the following, where there are two argocd instances in namespaces `openshift-gitops` and `foo` and an additional namespace called `foo-managed` which is managed by namespace `foo`: +Custom image can be pushed, too: ```shell -cluster-gitops - └── gitops - ├── clusterversion.txt - ├── crds - │ ├── crds.json/.txt./.yaml - ├── managedNamespace_foo-managed - │ └── resources - │ ├── deployments - │ ├── pods - │ ├── replicasets - │ ├── routes - │ ├── services - │ └── statefulsets - ├── namespace_foo_resources - │ ├── argocd - │ │ ├── applications - │ │ │ ├── applications.json/.txt./.yaml - │ │ │ └── guestbook.yaml - │ │ ├── applicationsets - │ │ │ ├── applicationsets.txt - │ │ │ ├── guestbook.json - │ │ │ ├── guestbook.txt - │ │ │ └── guestbook.yaml - │ │ ├── argocd.json - │ │ ├── argocd.txt - │ │ ├── argocd.yaml - │ │ ├── logs - │ │ │ └── server-logs.txt - │ │ ├── managed-namespaces.txt - │ │ └── sourceNamespaces.txt - │ ├── deployments - │ │ ├── argocd-dex-server.json/.txt./.yaml - │ │ ├── argocd-redis.json/.txt./.yaml - │ │ ├── argocd-repo-server.json/.txt./.yaml - │ │ ├── argocd-server.json/.txt./.yaml - │ │ └── deployments.txt - │ ├── events - │ │ ├── all-events.txt - │ │ └── warning-events.txt - │ ├── pods - │ │ ├── argocd-application-controller-0.json/.txt./.yaml - │ │ ├── argocd-dex-server-69f99bdd45-g84b9.json/.txt./.yaml - │ │ ├── argocd-dex-server-6d4f7d9d48-rkk9d.json/.txt./.yaml - │ │ ├── argocd-redis-78d4849f68-pxxbp.json/.txt./.yaml - │ │ ├── argocd-repo-server-6cfc8bbd5f-w4bsg.json/.txt./.yaml - │ │ ├── argocd-server-5dc69475bf-98m6s.json/.txt./.yaml - │ │ └── pods.txt - │ ├── replicaSets - │ │ ├── argocd-dex-server-69f99bdd45.json/.txt./.yaml - │ │ ├── argocd-dex-server-6d4f7d9d48.json/.txt./.yaml - │ │ ├── argocd-redis-78d4849f68.json/.txt./.yaml - │ │ ├── argocd-repo-server-6cfc8bbd5f.json/.txt./.yaml - │ │ ├── argocd-server-5dc69475bf.json/.txt./.yaml - │ │ └── replicaSets.txt - │ ├── routes - │ │ ├── argocd-server.json/.txt./.yaml - │ │ └── routes.txt - │ ├── services - │ │ ├── argocd-dex-server.json/.txt./.yaml - │ │ ├── argocd-metrics.json/.txt./.yaml - │ │ ├── argocd-redis.json/.txt./.yaml - │ │ ├── argocd-repo-server.json/.txt./.yaml - │ │ ├── argocd-server.json/.txt./.yaml - │ │ ├── argocd-server-metrics.json/.txt./.yaml - │ │ └── services.txt - │ └── statefulsets - │ ├── argocd-application-controller.json/.txt./.yaml - │ └── statefulsets.txt - ├── namespace_openshift-gitops_resources - │ ├── argocd - │ │ ├── applications - │ │ ├── applicationsets - │ │ ├── appprojects - │ │ ├── appprojects.json/.txt./.yaml - │ │ ├── argocd.txt - │ │ ├── logs - │ │ │ ├── application-controller-logs.txt - │ │ │ ├── dex-server-logs.txt - │ │ │ ├── redis-logs.txt - │ │ │ ├── repo-server-logs.txt - │ │ │ └── server-logs.txt - │ │ ├── openshift-gitops.json - │ │ ├── openshift-gitops.txt - │ │ ├── openshift-gitops.yaml - │ │ └── sourceNamespaces.txt - │ ├── deployments - │ │ ├── cluster.json/.txt./.yaml - │ │ ├── deployments.txt - │ │ ├── kam.json - │ │ ├── kam.txt - │ │ ├── kam.yaml - │ │ ├── openshift-gitops-applicationset-controller.json/.txt./.yaml - │ │ ├── openshift-gitops-dex-server.json/.txt./.yaml - │ │ ├── openshift-gitops-redis.json/.txt./.yaml - │ │ ├── openshift-gitops-repo-server.json/.txt./.yaml - │ │ ├── openshift-gitops-server.json/.txt./.yaml - │ ├── events - │ ├── pods - │ │ ├── cluster-5db4b95547-mks98.json/.txt./.yaml - │ │ ├── kam-fff7f474f-t875v.json/.txt./.yaml - │ │ ├── openshift-gitops-application-controller-0.json/.txt./.yaml - │ │ ├── openshift-gitops-applicationset-controller-5dbdfcc689-6x4vf.json/.txt./.yaml - │ │ ├── openshift-gitops-dex-server-5bf6f4f684-ghtqf.json/.txt./.yaml - │ │ ├── openshift-gitops-redis-664cdd4757-f9jcc.json/.txt./.yaml - │ │ ├── openshift-gitops-repo-server-6795d6d8cd-x7hzc.json/.txt./.yaml - │ │ ├── openshift-gitops-server-6cc58f9cc8-fx8g7.json/.txt./.yaml - │ │ └── pods.txt - │ ├── replicaSets - │ │ ├── cluster-5db4b95547.json/.txt./.yaml - │ │ ├── kam-fff7f474f.json/.txt./.yaml - │ │ ├── openshift-gitops-applicationset-controller-5dbdfcc689.json/.txt./.yaml - │ │ ├── openshift-gitops-dex-server-5bf6f4f684.json/.txt./.yaml - │ │ ├── openshift-gitops-dex-server-684c85d5d7.json/.txt./.yaml - │ │ ├── openshift-gitops-redis-664cdd4757.json/.txt./.yaml - │ │ ├── openshift-gitops-repo-server-6795d6d8cd.json/.txt./.yaml - │ │ ├── openshift-gitops-server-6cc58f9cc8.json/.txt./.yaml - │ │ └── replicaSets.txt - │ ├── routes - │ │ ├── kam.json/.txt./.yaml - │ │ ├── openshift-gitops-server.json/.txt./.yaml - │ │ └── routes.txt - │ ├── services - │ │ ├── cluster.json/.txt./.yaml - │ │ ├── kam.json/.txt./.yaml - │ │ ├── openshift-gitops-applicationset-controller.json/.txt./.yaml - │ │ ├── openshift-gitops-dex-server.json/.txt./.yaml - │ │ ├── openshift-gitops-metrics.json/.txt./.yaml - │ │ ├── openshift-gitops-redis.json/.txt./.yaml - │ │ ├── openshift-gitops-repo-server.json/.txt./.yaml - │ │ ├── openshift-gitops-server.json/.txt./.yaml - │ │ ├── openshift-gitops-server-metrics.json/.txt./.yaml - │ │ └── services.txt - │ └── statefulsets - │ ├── openshift-gitops-application-controller.json/.txt./.yaml - │ └── statefulsets.txt - ├── oc-version.txt - ├── subscription.json/.txt./.yaml - ├── must-gather-script-commands.txt - ├── must-gather-script-no-output.txt - └── must-gather-script-errors.txt +# You may need to create the repository on quay.io manually to make sure it is public +make REGISTRY_USERNAME=my-non-production-org CONTAINER_IMAGE_TAG=latest push ``` -Note: most of the resource outputs are given in 3 file types: `.json`, `.yaml`, and `.txt`, however those files are combined in this tree for clarity and conciseness. +It is recomanded to use `latest` tag for development, because it does not get cached on OpenShift nodes - other tags might. ## Testing -To do that you need an OpenShift cluster, and you will have to install the Red Hat GitOps Operator. -Then you can test how your changes affects gathered data: +Create the OpenShift cluster, log in and install the Red Hat GitOps Operator. +For the development version, use: ```shell -# You may need to create the repository on quay.io manually to make sure it is public -make REGISTRY_USERNAME=my-non-production-org CONTAINER_IMAGE_TAG="$(git rev-parse HEAD)" push -# Note some differences are expected, like few lines in rapidly populated logs -./test/compare.sh registry.redhat.io/openshift-gitops-1/must-gather-rhel8:"$SOME_OLD_VERSION" quay.io/my-non-production-org/gitops-must-gather:"$(git rev-parse HEAD)" +git clone https://github.com/redhat-developer/gitops-operator/ +cd gitops-operator +make clean install ``` -Last but not least, please make sure you run `make lint` before pushing new changes. -This requires `shellcheck` to be installed in your machine. +### Compare gathered data between 2 gitops-must-gather images -For more information about `building` and `pushing` the image, see `make help`. +```shell +# Note some differences are expected, like a few lines at the end of rapidly populated logs, etc. +./test/compare.sh registry.redhat.io/openshift-gitops-1/must-gather-rhel8:"$SOME_OLD_VERSION" quay.io/my-non-production-org/gitops-must-gather:latest +``` + +### Verify the structure of the must-gather output + +```shell +# After logging in to a cluster +git clone https://github.com/redhat-developer/gitops-operator/ +cd gitops-operator +env E2E_MUST_GATHER_IMAGE= LOCAL_RUN=true \ + ./bin/ginkgo -v -focus "validate_running_must_gather" -r ./test/openshift/e2e/ginkgo/parallel/ +``` diff --git a/test/suite.sh b/test/suite.sh deleted file mode 100755 index 5049eae..0000000 --- a/test/suite.sh +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/bash - -# Set testdata directories -TESTDATA_ACTUAL="testdata/actual" -TESTDATA_EXPECTED="testdata/expected" - -# Create actual folder if it doesn't exist -if [ ! -d "$TESTDATA_ACTUAL" ]; then - mkdir -p "$TESTDATA_ACTUAL" -fi - -# Set color codes -COLOR_GREEN="\033[32m" -COLOR_RED="\033[31m" -COLOR_CYAN="\033[36m" -COLOR_RESET="\033[0m" - -# Print welcome message -echo -e "${COLOR_CYAN}Starting must-gather test suite...${COLOR_RESET}" - -# --------------------------------------------------------- # - -# Check if there are any test files (excluding this script) -if ! ls test*.sh >/dev/null; then - echo -e " ${COLOR_RED}No test files found.${COLOR_RESET}" - exit 1 -fi - -echo -e " ${COLOR_GREEN}Test files found.${COLOR_RESET}" - -# Check if kubectl is installed -if ! command -v kubectl >/dev/null; then - echo -e " ${COLOR_RED}kubectl not found. Please install kubectl and try again.${COLOR_RESET}" - exit 1 -fi - -echo -e " ${COLOR_GREEN}kubectl binary is installed.${COLOR_RESET}" - -# Check if kubectl can access the cluster -if ! kubectl get nodes >/dev/null; then - echo -e " ${COLOR_RED}kubectl failed to access the cluster. Please check your kubectl configuration and try again.${COLOR_RESET}" - exit 1 -fi - -echo -e " ${COLOR_GREEN}kubectl is working correctly against the cluster.${COLOR_RESET}" - -# --------------------------------------------------------- # -echo - -# Run the gather_gitops.sh command and check the exit status -echo -e "${COLOR_CYAN}Running MustGather against the cluster...${COLOR_RESET}" -if ! ../gather_gitops.sh --base-collection-path "$TESTDATA_ACTUAL/mustgather_output"; then - echo -e " ${COLOR_RED}Test failed: command exited with an error${COLOR_RESET}" - echo -e " ${COLOR_RED}This is a big issue, the must gather fails by default${COLOR_RESET}" - exit 1 -fi -echo -e " ${COLOR_GREEN}Test passed: command ran successfully${COLOR_RESET}" - -# --------------------------------------------------------- # - -# Print message -echo -echo -e "${COLOR_CYAN}Running individual test files...${COLOR_RESET}" - -# Initialize variables -TEST_COUNTER=0 -FAILED_TESTS=0 - -# Loop over all the test files -for TEST_FILE in ./test*.sh; do - # Increment the test counter - ((TEST_COUNTER++)) - - # Execute the test and save the output - TEST_NAME=$(basename "$TEST_FILE" .sh) - sh "$TEST_FILE" > "$TESTDATA_ACTUAL/$TEST_NAME.actual" - - # Check if the output file exists and has content - if ! [ -f "$TESTDATA_ACTUAL/$TEST_NAME.actual" ]; then - echo "Test failed: output file is empty or does not exist" - echo "This is a problem with the test itself (e.g. poorly written), not the must-gather tool" - exit 1 - fi - - # Compare the actual and expected outputs - if diff "$TESTDATA_ACTUAL/$TEST_NAME.actual" "$TESTDATA_EXPECTED/$TEST_NAME.expected" >/dev/null; then - echo -e " TEST $TEST_COUNTER: ${COLOR_GREEN}$TEST_NAME PASSED${COLOR_RESET}" - else - echo -e " TEST $TEST_COUNTER: ${COLOR_RED}$TEST_NAME FAILED${COLOR_RESET}" - ((FAILED_TESTS++)) - # Print the diff if there is a mismatch - echo -e "=== ACTUAL ===" - cat "$TESTDATA_ACTUAL/$TEST_NAME.actual" - echo -e "=== EXPECTED ===" - cat "$TESTDATA_EXPECTED/$TEST_NAME.expected" - fi -done - -# Print the final message -echo -echo -echo -if [ "$FAILED_TESTS" -eq 0 ]; then - echo -e "${COLOR_GREEN}Test suite successfully completed without errors!${COLOR_RESET}" -else - echo -e "${COLOR_RED}Testing failed. $FAILED_TESTS test(s) failed.${COLOR_RESET}" -fi - diff --git a/test/test1.sh b/test/test1.sh deleted file mode 100755 index 64d13a8..0000000 --- a/test/test1.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -# Check if the number of files for expected is the same as actual -cd testdata/actual/mustgather_output/ && tree | tail -n -1 diff --git a/test/test2.sh b/test/test2.sh deleted file mode 100644 index 1771dbb..0000000 --- a/test/test2.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -# Check if the mustgather_output tree for expected is the same as actual tree output -# sed looks for the uid of the resource and replaces it with xxxxxx-xxxxx -# sed also removes the lines for files for events because the presence of those can be impacted by external sources resulting in flaky tests -cd testdata/actual/mustgather_output/ && tree | sed -r ' -s/([a-zA-Z0-9-]+(-[a-zA-Z0-9]+)?)-[a-f0-9]{4,}(-[a-z0-9]+)?(\.[a-zA-Z0-9_-]+)?/\1-xxxxxx-xxxxx\4/g -/warning-events.txt/d -/error-events.txt/d -/all-events.txt/d -' diff --git a/test/testdata/expected/test1.expected b/test/testdata/expected/test1.expected deleted file mode 100644 index 89841be..0000000 --- a/test/testdata/expected/test1.expected +++ /dev/null @@ -1 +0,0 @@ -29 directories, 240 files diff --git a/test/testdata/expected/test2.expected b/test/testdata/expected/test2.expected deleted file mode 100644 index 7356098..0000000 --- a/test/testdata/expected/test2.expected +++ /dev/null @@ -1,290 +0,0 @@ -. -└── cluster-gitops - └── gitops - ├── clusterversion.txt - ├── crds - │   ├── crds.json - │   ├── crds.txt - │   └── crds.yaml - ├── must-gather-script-commands.txt - ├── must-gather-script-no-output.txt - ├── namespace_openshift-gitops_resources - │   ├── argocd - │   │   ├── applications - │   │   ├── applicationsets - │   │   ├── argocd.txt - │   │   ├── logs - │   │   │   ├── application-controller-logs.txt - │   │   │   ├── dex-server-logs.txt - │   │   │   ├── redis-logs.txt - │   │   │   ├── repo-server-logs.txt - │   │   │   └── server-logs.txt - │   │   ├── openshift-gitops.json - │   │   ├── openshift-gitops.txt - │   │   ├── openshift-gitops.yaml - │   │   └── sourceNamespaces.txt - │   ├── deployments - │   │   ├── cluster.json - │   │   ├── cluster.txt - │   │   ├── cluster.yaml - │   │   ├── deployments.txt - │   │   ├── kam.json - │   │   ├── kam.txt - │   │   ├── kam.yaml - │   │   ├── openshift-gitops-applicationset-controller.json - │   │   ├── openshift-gitops-applicationset-controller.txt - │   │   ├── openshift-gitops-applicationset-controller.yaml - │   │   ├── openshift-gitops-dex-server.json - │   │   ├── openshift-gitops-dex-server.txt - │   │   ├── openshift-gitops-dex-server.yaml - │   │   ├── openshift-gitops-redis.json - │   │   ├── openshift-gitops-redis.txt - │   │   ├── openshift-gitops-redis.yaml - │   │   ├── openshift-gitops-repo-server.json - │   │   ├── openshift-gitops-repo-server.txt - │   │   ├── openshift-gitops-repo-server.yaml - │   │   ├── openshift-gitops-server.json - │   │   ├── openshift-gitops-server.txt - │   │   └── openshift-gitops-server.yaml - │   ├── events - │   ├── pods - │   │   ├── cluster-xxxxxx-xxxxx.json - │   │   ├── cluster-xxxxxx-xxxxx-logs.txt - │   │   ├── cluster-xxxxxx-xxxxx.txt - │   │   ├── cluster-xxxxxx-xxxxx.yaml - │   │   ├── kam-xxxxxx-xxxxx.json - │   │   ├── kam-xxxxxx-xxxxx-logs.txt - │   │   ├── kam-xxxxxx-xxxxx.txt - │   │   ├── kam-xxxxxx-xxxxx.yaml - │   │   ├── openshift-gitops-application-controller-0.json - │   │   ├── openshift-gitops-application-controller-0-logs.txt - │   │   ├── openshift-gitops-application-controller-0.txt - │   │   ├── openshift-gitops-application-controller-0.yaml - │   │   ├── openshift-gitops-applicationset-controller-xxxxxx-xxxxx.json - │   │   ├── openshift-gitops-applicationset-controller-xxxxxx-xxxxx-logs.txt - │   │   ├── openshift-gitops-applicationset-controller-xxxxxx-xxxxx.txt - │   │   ├── openshift-gitops-applicationset-controller-xxxxxx-xxxxx.yaml - │   │   ├── openshift-gitops-dex-server-xxxxxx-xxxxx.json - │   │   ├── openshift-gitops-dex-server-xxxxxx-xxxxx-logs.txt - │   │   ├── openshift-gitops-dex-server-xxxxxx-xxxxx.txt - │   │   ├── openshift-gitops-dex-server-xxxxxx-xxxxx.yaml - │   │   ├── openshift-gitops-redis-xxxxxx-xxxxx.json - │   │   ├── openshift-gitops-redis-xxxxxx-xxxxx-logs.txt - │   │   ├── openshift-gitops-redis-xxxxxx-xxxxx.txt - │   │   ├── openshift-gitops-redis-xxxxxx-xxxxx.yaml - │   │   ├── openshift-gitops-repo-server-xxxxxx-xxxxx.json - │   │   ├── openshift-gitops-repo-server-xxxxxx-xxxxx-logs.txt - │   │   ├── openshift-gitops-repo-server-xxxxxx-xxxxx.txt - │   │   ├── openshift-gitops-repo-server-xxxxxx-xxxxx.yaml - │   │   ├── openshift-gitops-server-xxxxxx-xxxxx.json - │   │   ├── openshift-gitops-server-xxxxxx-xxxxx-logs.txt - │   │   ├── openshift-gitops-server-xxxxxx-xxxxx.txt - │   │   ├── openshift-gitops-server-xxxxxx-xxxxx.yaml - │   │   └── pods.txt - │   ├── replicaSets - │   │   ├── cluster-xxxxxx-xxxxx.json - │   │   ├── cluster-xxxxxx-xxxxx.txt - │   │   ├── cluster-xxxxxx-xxxxx.yaml - │   │   ├── kam-xxxxxx-xxxxx.json - │   │   ├── kam-xxxxxx-xxxxx.txt - │   │   ├── kam-xxxxxx-xxxxx.yaml - │   │   ├── openshift-gitops-applicationset-controller-xxxxxx-xxxxx.json - │   │   ├── openshift-gitops-applicationset-controller-xxxxxx-xxxxx.txt - │   │   ├── openshift-gitops-applicationset-controller-xxxxxx-xxxxx.yaml - │   │   ├── openshift-gitops-dex-server-xxxxxx-xxxxx.json - │   │   ├── openshift-gitops-dex-server-xxxxxx-xxxxx.txt - │   │   ├── openshift-gitops-dex-server-xxxxxx-xxxxx.yaml - │   │   ├── openshift-gitops-dex-server-xxxxxx-xxxxx.json - │   │   ├── openshift-gitops-dex-server-xxxxxx-xxxxx.txt - │   │   ├── openshift-gitops-dex-server-xxxxxx-xxxxx.yaml - │   │   ├── openshift-gitops-redis-xxxxxx-xxxxx.json - │   │   ├── openshift-gitops-redis-xxxxxx-xxxxx.txt - │   │   ├── openshift-gitops-redis-xxxxxx-xxxxx.yaml - │   │   ├── openshift-gitops-repo-server-xxxxxx-xxxxx.json - │   │   ├── openshift-gitops-repo-server-xxxxxx-xxxxx.txt - │   │   ├── openshift-gitops-repo-server-xxxxxx-xxxxx.yaml - │   │   ├── openshift-gitops-server-xxxxxx-xxxxx.json - │   │   ├── openshift-gitops-server-xxxxxx-xxxxx.txt - │   │   ├── openshift-gitops-server-xxxxxx-xxxxx.yaml - │   │   └── replicaSets.txt - │   ├── routes - │   │   ├── kam.json - │   │   ├── kam.txt - │   │   ├── kam.yaml - │   │   ├── openshift-gitops-server.json - │   │   ├── openshift-gitops-server.txt - │   │   ├── openshift-gitops-server.yaml - │   │   └── routes.txt - │   ├── services - │   │   ├── cluster.json - │   │   ├── cluster.txt - │   │   ├── cluster.yaml - │   │   ├── kam.json - │   │   ├── kam.txt - │   │   ├── kam.yaml - │   │   ├── openshift-gitops-applicationset-controller.json - │   │   ├── openshift-gitops-applicationset-controller.txt - │   │   ├── openshift-gitops-applicationset-controller.yaml - │   │   ├── openshift-gitops-dex-server.json - │   │   ├── openshift-gitops-dex-server.txt - │   │   ├── openshift-gitops-dex-server.yaml - │   │   ├── openshift-gitops-metrics.json - │   │   ├── openshift-gitops-metrics.txt - │   │   ├── openshift-gitops-metrics.yaml - │   │   ├── openshift-gitops-redis.json - │   │   ├── openshift-gitops-redis.txt - │   │   ├── openshift-gitops-redis.yaml - │   │   ├── openshift-gitops-repo-server.json - │   │   ├── openshift-gitops-repo-server.txt - │   │   ├── openshift-gitops-repo-server.yaml - │   │   ├── openshift-gitops-server.json - │   │   ├── openshift-gitops-server-metrics.json - │   │   ├── openshift-gitops-server-metrics.txt - │   │   ├── openshift-gitops-server-metrics.yaml - │   │   ├── openshift-gitops-server.txt - │   │   ├── openshift-gitops-server.yaml - │   │   └── services.txt - │   └── statefulsets - │   ├── openshift-gitops-application-controller.json - │   ├── openshift-gitops-application-controller.txt - │   ├── openshift-gitops-application-controller.yaml - │   └── statefulsets.txt - ├── namespace_regina_resources - │   ├── argocd - │   │   ├── applications - │   │   │   ├── applications.txt - │   │   │   ├── guestbook.json - │   │   │   ├── guestbook.txt - │   │   │   └── guestbook.yaml - │   │   ├── applicationsets - │   │   │   ├── applicationsets.txt - │   │   │   ├── guestbook.json - │   │   │   ├── guestbook.txt - │   │   │   └── guestbook.yaml - │   │   ├── appprojects - │   │   │   ├── appprojects.json - │   │   │   ├── appprojects.txt - │   │   │   └── appprojects.yaml - │   │   ├── argocd.json - │   │   ├── argocd.txt - │   │   ├── argocd.yaml - │   │   ├── logs - │   │   │   ├── application-controller-logs.txt - │   │   │   ├── dex-server-logs.txt - │   │   │   ├── redis-logs.txt - │   │   │   ├── repo-server-logs.txt - │   │   │   └── server-logs.txt - │   │   └── sourceNamespaces.txt - │   ├── deployments - │   │   ├── argocd-dex-server.json - │   │   ├── argocd-dex-server.txt - │   │   ├── argocd-dex-server.yaml - │   │   ├── argocd-redis.json - │   │   ├── argocd-redis.txt - │   │   ├── argocd-redis.yaml - │   │   ├── argocd-repo-server.json - │   │   ├── argocd-repo-server.txt - │   │   ├── argocd-repo-server.yaml - │   │   ├── argocd-server.json - │   │   ├── argocd-server.txt - │   │   ├── argocd-server.yaml - │   │   └── deployments.txt - │   ├── events - │   ├── pods - │   │   ├── argocd-application-controller-0.json - │   │   ├── argocd-application-controller-0-logs.txt - │   │   ├── argocd-application-controller-0.txt - │   │   ├── argocd-application-controller-0.yaml - │   │   ├── argocd-dex-server-xxxxxx-xxxxx.json - │   │   ├── argocd-dex-server-xxxxxx-xxxxx-logs.txt - │   │   ├── argocd-dex-server-xxxxxx-xxxxx.txt - │   │   ├── argocd-dex-server-xxxxxx-xxxxx.yaml - │   │   ├── argocd-redis-xxxxxx-xxxxx.json - │   │   ├── argocd-redis-xxxxxx-xxxxx-logs.txt - │   │   ├── argocd-redis-xxxxxx-xxxxx.txt - │   │   ├── argocd-redis-xxxxxx-xxxxx.yaml - │   │   ├── argocd-repo-server-xxxxxx-xxxxx.json - │   │   ├── argocd-repo-server-xxxxxx-xxxxx-logs.txt - │   │   ├── argocd-repo-server-xxxxxx-xxxxx.txt - │   │   ├── argocd-repo-server-xxxxxx-xxxxx.yaml - │   │   ├── argocd-server-xxxxxx-xxxxx.json - │   │   ├── argocd-server-xxxxxx-xxxxx-logs.txt - │   │   ├── argocd-server-xxxxxx-xxxxx.txt - │   │   ├── argocd-server-xxxxxx-xxxxx.yaml - │   │   └── pods.txt - │   ├── replicaSets - │   │   ├── argocd-dex-server-xxxxxx-xxxxx.json - │   │   ├── argocd-dex-server-xxxxxx-xxxxx.txt - │   │   ├── argocd-dex-server-xxxxxx-xxxxx.yaml - │   │   ├── argocd-dex-server-xxxxxx-xxxxx.json - │   │   ├── argocd-dex-server-xxxxxx-xxxxx.txt - │   │   ├── argocd-dex-server-xxxxxx-xxxxx.yaml - │   │   ├── argocd-redis-xxxxxx-xxxxx.json - │   │   ├── argocd-redis-xxxxxx-xxxxx.txt - │   │   ├── argocd-redis-xxxxxx-xxxxx.yaml - │   │   ├── argocd-repo-server-xxxxxx-xxxxx.json - │   │   ├── argocd-repo-server-xxxxxx-xxxxx.txt - │   │   ├── argocd-repo-server-xxxxxx-xxxxx.yaml - │   │   ├── argocd-server-xxxxxx-xxxxx.json - │   │   ├── argocd-server-xxxxxx-xxxxx.txt - │   │   ├── argocd-server-xxxxxx-xxxxx.yaml - │   │   └── replicaSets.txt - │   ├── rollouts - │   │   ├── cr - │   │   │   ├── rollouts-cr.json - │   │   │   └── rollouts-cr.yaml - │   │   ├── logs - │   │   │   └── rollout-logs.txt - │   │   ├── manager_cr - │   │   │   ├── rollouts-manager-cr.json - │   │   │   ├── rollouts-manager-cr.txt - │   │   │   └── rollouts-manager-cr.yaml - │   │   ├── rollout_deployment - │   │   │   ├── rollout-deployments.json - │   │   │   ├── rollout-deployments.txt - │   │   │   └── rollout-deployments.yaml - │   │   ├── rollout_replicaSet - │   │   │   ├── rollout-replicaSet.json - │   │   │   ├── rollout-replicaSet.txt - │   │   │   └── rollout-replicaSet.yaml - │   │   └── rollout_services - │   │   ├── rollout-service.json - │   │   ├── rollout-service.txt - │   │   └── rollout-service.yaml - │   ├── routes - │   │   ├── argocd-server.json - │   │   ├── argocd-server.txt - │   │   ├── argocd-server.yaml - │   │   └── routes.txt - │   ├── services - │   │   ├── argocd-dex-server.json - │   │   ├── argocd-dex-server.txt - │   │   ├── argocd-dex-server.yaml - │   │   ├── argocd-metrics.json - │   │   ├── argocd-metrics.txt - │   │   ├── argocd-metrics.yaml - │   │   ├── argocd-redis.json - │   │   ├── argocd-redis.txt - │   │   ├── argocd-redis.yaml - │   │   ├── argocd-repo-server.json - │   │   ├── argocd-repo-server.txt - │   │   ├── argocd-repo-server.yaml - │   │   ├── argocd-server.json - │   │   ├── argocd-server-metrics.json - │   │   ├── argocd-server-metrics.txt - │   │   ├── argocd-server-metrics.yaml - │   │   ├── argocd-server.txt - │   │   ├── argocd-server.yaml - │   │   └── services.txt - │   └── statefulsets - │   ├── argocd-application-controller.json - │   ├── argocd-application-controller.txt - │   ├── argocd-application-controller.yaml - │   └── statefulsets.txt - ├── oc-version.txt - ├── subscription.json - ├── subscription.txt - ├── subscription.yaml - └── version.txt - -29 directories, 240 files