From 438f6534da39409792854af2f91a7641aeb472e7 Mon Sep 17 00:00:00 2001 From: randytqwjp Date: Thu, 10 Oct 2024 13:32:18 +0900 Subject: [PATCH] upgrade kubebuilder to plugin/v4 --- Dockerfile | 6 +- Makefile | 171 +++++++---- PROJECT | 2 +- api/autoscaling/v2/webhook_suite_test.go | 22 +- api/core/v1/webhook_suite_test.go | 22 +- api/v1beta3/webhook_suite_test.go | 22 +- main.go => cmd/main.go | 6 +- cmd/tortoisectl/main.go | 2 +- .../autoscaling.mercari.com_tortoises.yaml | 283 +++++++++--------- config/crd/kustomization.yaml | 4 +- config/default/kustomization.yaml | 10 +- config/default/manager_webhook_patch.yaml | 3 + config/default/metrics_service.yaml | 17 ++ config/default/webhookcainjection_patch.yaml | 10 + config/manager/kustomization.yaml | 2 +- config/manager/manager.yaml | 5 + config/prometheus/monitor.yaml | 2 + config/rbac/leader_election_role.yaml | 3 + config/rbac/leader_election_role_binding.yaml | 3 + config/rbac/role.yaml | 36 +-- config/rbac/role_binding.yaml | 3 + config/rbac/service_account.yaml | 3 + go.mod | 102 +++---- go.sum | 262 +++++++--------- .../controller}/suite_test.go | 4 +- .../testdata/crd/vpa-v1-crd-gen.yaml | 0 .../deletion-no-delete/before/deployment.yaml | 0 .../deletion-no-delete/before/hpa.yaml | 0 .../deletion-no-delete/before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../deletion-policy-all/before/hpa.yaml | 0 .../deletion-policy-all/before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../after/deployment.yaml | 0 .../after/hpa.yaml | 0 .../after/tortoise.yaml | 0 .../after/vpa-Monitor.yaml | 0 .../before/deployment.yaml | 0 .../before/hpa.yaml | 0 .../before/tortoise.yaml | 0 .../before/vpa-Monitor.yaml | 0 .../controller}/tortoise_controller.go | 2 +- .../controller}/tortoise_controller_test.go | 7 +- 213 files changed, 515 insertions(+), 499 deletions(-) rename main.go => cmd/main.go (98%) create mode 100644 config/default/metrics_service.yaml rename {controllers => internal/controller}/suite_test.go (96%) rename {controllers => internal/controller}/testdata/crd/vpa-v1-crd-gen.yaml (100%) rename {controllers => internal/controller}/testdata/deletion-no-delete/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/deletion-no-delete/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/deletion-no-delete/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/deletion-no-delete/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/deletion-policy-all/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/deletion-policy-all/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/deletion-policy-all/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/deletion-policy-all/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/mutable-autoscalingpolicy-remove-horizontal/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-istio-enabled-pod-working/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-istio-enabled-pod-working/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-istio-enabled-pod-working/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-istio-enabled-pod-working/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-istio-enabled-pod-working/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-istio-enabled-pod-working/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-istio-enabled-pod-working/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-istio-enabled-pod-working/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-working/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-working/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-working/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-working/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-working/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-working/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-working/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-multiple-containers-pod-working/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-backtonormal/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-backtonormal/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-backtonormal/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-backtonormal/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-backtonormal/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-backtonormal/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-backtonormal/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-backtonormal/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-dryrun/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-dryrun/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-dryrun/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-dryrun/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-dryrun/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-dryrun/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-dryrun/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-dryrun/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-during-emergency/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-during-emergency/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-during-emergency/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-during-emergency/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-during-emergency/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-during-emergency/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-during-emergency/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-during-emergency/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-emergency-started/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-emergency-started/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-emergency-started/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-emergency-started/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-emergency-started/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-emergency-started/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-emergency-started/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-emergency-started/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-gathering-data/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-initializing/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-initializing/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-initializing/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-initializing/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-initializing/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-initializing/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-initializing/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-partly-working/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-partly-working/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-partly-working/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-partly-working/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-partly-working/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-partly-working/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-partly-working/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-partly-working/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-too-big/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-too-big/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-too-big/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-too-big/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-too-big/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-too-big/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-too-big/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-too-big/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-working/after/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-working/after/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-working/after/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-working/after/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-working/before/deployment.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-working/before/hpa.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-working/before/tortoise.yaml (100%) rename {controllers => internal/controller}/testdata/reconcile-for-the-single-container-pod-working/before/vpa-Monitor.yaml (100%) rename {controllers => internal/controller}/tortoise_controller.go (99%) rename {controllers => internal/controller}/tortoise_controller_test.go (99%) diff --git a/Dockerfile b/Dockerfile index 541c670a..0d36760b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,13 +10,13 @@ COPY go.sum go.sum RUN go mod download # Copy the go source -COPY main.go main.go +COPY cmd/main.go cmd/main.go COPY api/ api/ -COPY controllers/ controllers/ +COPY internal/controller/ internal/controller/ COPY pkg/ pkg/ # Build -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o manager main.go +RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager cmd/main.go # Use distroless as minimal base image to package the manager binary # Refer to https://github.com/GoogleContainerTools/distroless for more details diff --git a/Makefile b/Makefile index 0a7cf930..a1edfd3f 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,7 @@ - # Image URL to use all building/pushing image targets -IMG ?= ghcr.io/mercari/tortoise:v0.9.0 +IMG ?= ghcr.io/mercari/tortoise:v0.11.0 # ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. -ENVTEST_K8S_VERSION = 1.27.1 +ENVTEST_K8S_VERSION = 1.31.0 # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) ifeq (,$(shell go env GOBIN)) @@ -11,6 +10,12 @@ else GOBIN=$(shell go env GOBIN) endif +# CONTAINER_TOOL defines the container tool to be used for building images. +# Be aware that the target commands are only tested with Docker which is +# scaffolded by default. However, you might want to replace it to use other +# tools. (i.e. podman) +CONTAINER_TOOL ?= docker + # Setting SHELL to bash allows bash commands to be executed by recipes. # Options are set to exit when a recipe line exits non-zero or a piped command fails. SHELL = /usr/bin/env bash -o pipefail @@ -23,7 +28,7 @@ all: build # The help target prints out all targets with their descriptions organized # beneath their categories. The categories are represented by '##@' and the -# target descriptions by '##'. The awk commands is responsible for reading the +# target descriptions by '##'. The awk command is responsible for reading the # entire set of makefiles included in this invocation, looking for lines of the # file as xyz: ## something, and then pretty-format the target and help. Then, # if there's a line with ##@ something, that gets pretty-printed as a category. @@ -39,11 +44,8 @@ help: ## Display this help. ##@ Development .PHONY: manifests -manifests: kustomize controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects. +manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects. $(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases - cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG} - $(KUSTOMIZE) build config/default -o manifests/default - $(KUSTOMIZE) build config/crd -o manifests/crd .PHONY: generate generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations. @@ -57,39 +59,78 @@ fmt: ## Run go fmt against code. vet: ## Run go vet against code. go vet ./... -test: manifests generate fmt vet envtest ginkgo ## Run tests. - KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" $(GINKGO) -r --cover --coverprofile cover.out - -.PHONY: test-debug -test-debug: envtest ginkgo - KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" DEBUG=true $(GINKGO) -r --fail-fast -v --progress +.PHONY: test +test: manifests generate fmt vet envtest ## Run tests. + KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test $$(go list ./... | grep -v /e2e) -coverprofile cover.out + +# TODO(user): To use a different vendor for e2e tests, modify the setup under 'tests/e2e'. +# The default setup assumes Kind is pre-installed and builds/loads the Manager Docker image locally. +# Prometheus and CertManager are installed by default; skip with: +# - PROMETHEUS_INSTALL_SKIP=true +# - CERT_MANAGER_INSTALL_SKIP=true +.PHONY: test-e2e +test-e2e: manifests generate fmt vet ## Run the e2e tests. Expected an isolated environment using Kind. + @command -v kind >/dev/null 2>&1 || { \ + echo "Kind is not installed. Please install Kind manually."; \ + exit 1; \ + } + @kind get clusters | grep -q 'kind' || { \ + echo "No Kind cluster is running. Please start a Kind cluster before running the e2e tests."; \ + exit 1; \ + } + go test ./test/e2e/ -v -ginkgo.v -.PHONY: test-update -test-update: envtest ginkgo - KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" UPDATE_TESTCASES=true $(GINKGO) -r --fail-fast - -.PHONY: test-tortoisectl -test-tortoisectl: envtest - KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test -timeout 30s -v -run Test_TortoiseCtlStop ./cmd/tortoisectl/test/... - -GINKGO ?= $(LOCALBIN)/ginkgo -GINKGO_VERSION ?= v2.1.4 +.PHONY: lint +lint: golangci-lint ## Run golangci-lint linter + $(GOLANGCI_LINT) run -.PHONY: ginkgo -ginkgo: $(GINKGO) ## Download controller-gen locally if necessary. -$(GINKGO): $(LOCALBIN) - test -s $(LOCALBIN)/ginkgo || GOBIN=$(LOCALBIN) go install github.com/onsi/ginkgo/v2/ginkgo@$(GINKGO_VERSION) +.PHONY: lint-fix +lint-fix: golangci-lint ## Run golangci-lint linter and perform fixes + $(GOLANGCI_LINT) run --fix ##@ Build .PHONY: build -build: generate fmt vet ## Build manager binary. - go build -o bin/manager main.go - go build -o bin/tortoisectl cmd/tortoisectl/main.go +build: manifests generate fmt vet ## Build manager binary. + go build -o bin/manager cmd/main.go .PHONY: run run: manifests generate fmt vet ## Run a controller from your host. - go run ./main.go + go run ./cmd/main.go + +# If you wish to build the manager image targeting other platforms you can use the --platform flag. +# (i.e. docker build --platform linux/arm64). However, you must enable docker buildKit for it. +# More info: https://docs.docker.com/develop/develop-images/build_enhancements/ +.PHONY: docker-build +docker-build: ## Build docker image with the manager. + $(CONTAINER_TOOL) build -t ${IMG} . + +.PHONY: docker-push +docker-push: ## Push docker image with the manager. + $(CONTAINER_TOOL) push ${IMG} + +# PLATFORMS defines the target platforms for the manager image be built to provide support to multiple +# architectures. (i.e. make docker-buildx IMG=myregistry/mypoperator:0.0.1). To use this option you need to: +# - be able to use docker buildx. More info: https://docs.docker.com/build/buildx/ +# - have enabled BuildKit. More info: https://docs.docker.com/develop/develop-images/build_enhancements/ +# - be able to push the image to your registry (i.e. if you do not set a valid value via IMG=> then the export will fail) +# To adequately provide solutions that are compatible with multiple platforms, you should consider using this option. +PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le +.PHONY: docker-buildx +docker-buildx: ## Build and push docker image for the manager for cross-platform support + # copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile + sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross + - $(CONTAINER_TOOL) buildx create --name project-v4-builder + $(CONTAINER_TOOL) buildx use project-v4-builder + - $(CONTAINER_TOOL) buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile.cross . + - $(CONTAINER_TOOL) buildx rm project-v4-builder + rm Dockerfile.cross + +.PHONY: build-installer +build-installer: manifests generate kustomize ## Generate a consolidated YAML with CRDs and deployment. + mkdir -p dist + cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG} + $(KUSTOMIZE) build config/default > dist/install.yaml ##@ Deployment @@ -99,21 +140,22 @@ endif .PHONY: install install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config. - $(KUSTOMIZE) build config/crd | kubectl apply -f - + $(KUSTOMIZE) build config/crd | $(KUBECTL) apply -f - .PHONY: uninstall uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion. - $(KUSTOMIZE) build config/crd | kubectl delete --ignore-not-found=$(ignore-not-found) -f - + $(KUSTOMIZE) build config/crd | $(KUBECTL) delete --ignore-not-found=$(ignore-not-found) -f - .PHONY: deploy deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config. - $(KUSTOMIZE) build config/default | kubectl apply -f - + cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG} + $(KUSTOMIZE) build config/default | $(KUBECTL) apply -f - .PHONY: undeploy -undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion. - $(KUSTOMIZE) build config/default | kubectl delete --ignore-not-found=$(ignore-not-found) -f - +undeploy: kustomize ## Undeploy controller from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion. + $(KUSTOMIZE) build config/default | $(KUBECTL) delete --ignore-not-found=$(ignore-not-found) -f - -##@ Build Dependencies +##@ Dependencies ## Location to install dependencies to LOCALBIN ?= $(shell pwd)/bin @@ -121,41 +163,50 @@ $(LOCALBIN): mkdir -p $(LOCALBIN) ## Tool Binaries +KUBECTL ?= kubectl KUSTOMIZE ?= $(LOCALBIN)/kustomize CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen ENVTEST ?= $(LOCALBIN)/setup-envtest +GOLANGCI_LINT = $(LOCALBIN)/golangci-lint ## Tool Versions -KUSTOMIZE_VERSION ?= v3.8.7 -CONTROLLER_TOOLS_VERSION ?= v0.13.0 +KUSTOMIZE_VERSION ?= v5.4.3 +CONTROLLER_TOOLS_VERSION ?= v0.16.1 +ENVTEST_VERSION ?= release-0.19 +GOLANGCI_LINT_VERSION ?= v1.59.1 -KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" .PHONY: kustomize kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. $(KUSTOMIZE): $(LOCALBIN) - test -s $(LOCALBIN)/kustomize || { curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); } + $(call go-install-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v5,$(KUSTOMIZE_VERSION)) .PHONY: controller-gen controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. $(CONTROLLER_GEN): $(LOCALBIN) - test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION) + $(call go-install-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen,$(CONTROLLER_TOOLS_VERSION)) .PHONY: envtest -envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. +envtest: $(ENVTEST) ## Download setup-envtest locally if necessary. $(ENVTEST): $(LOCALBIN) - test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest - -## Install tools -.PHONY: dependencies -dependencies: - @./scripts/dependencies.sh - -.PHONY: lint -lint: - golangci-lint run $(args) ./... - -.PHONY: lint-fix -lint-fix: - # Note: gci's autofix on golangci-lint was disabled. We can remove this if that is enabled again. - find . -name "*.go" | xargs gci write --section Standard --section Default --section "Prefix(github.com/mercari/tortoise)" --section blank --section dot - @make lint args='--fix -v' cons_args='-v' \ No newline at end of file + $(call go-install-tool,$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest,$(ENVTEST_VERSION)) + +.PHONY: golangci-lint +golangci-lint: $(GOLANGCI_LINT) ## Download golangci-lint locally if necessary. +$(GOLANGCI_LINT): $(LOCALBIN) + $(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/cmd/golangci-lint,$(GOLANGCI_LINT_VERSION)) + +# go-install-tool will 'go install' any package with custom target and name of binary, if it doesn't exist +# $1 - target path with name of binary +# $2 - package url which can be installed +# $3 - specific version of package +define go-install-tool +@[ -f "$(1)-$(3)" ] || { \ +set -e; \ +package=$(2)@$(3) ;\ +echo "Downloading $${package}" ;\ +rm -f $(1) || true ;\ +GOBIN=$(LOCALBIN) go install $${package} ;\ +mv $(1) $(1)-$(3) ;\ +} ;\ +ln -sf $(1)-$(3) $(1) +endef \ No newline at end of file diff --git a/PROJECT b/PROJECT index 5fc2fe1f..f3c19a5a 100644 --- a/PROJECT +++ b/PROJECT @@ -4,7 +4,7 @@ # More info: https://book.kubebuilder.io/reference/project-config.html domain: mercari.com layout: -- go.kubebuilder.io/v3 +- go.kubebuilder.io/v4 projectName: tortoise repo: github.com/mercari/tortoise resources: diff --git a/api/autoscaling/v2/webhook_suite_test.go b/api/autoscaling/v2/webhook_suite_test.go index e0e4f0d4..96cd3e46 100644 --- a/api/autoscaling/v2/webhook_suite_test.go +++ b/api/autoscaling/v2/webhook_suite_test.go @@ -37,8 +37,8 @@ import ( "time" //+kubebuilder:scaffold:imports - admissionv1beta1 "k8s.io/api/admission/v1beta1" - admissionv1 "k8s.io/api/admissionregistration/v1" + admissionv1 "k8s.io/api/admission/v1" + admissionregistrationv1 "k8s.io/api/admissionregistration/v1" autoscalingv1 "k8s.io/api/autoscaling/v1" autoscalingv2 "k8s.io/api/autoscaling/v2" "k8s.io/apimachinery/pkg/runtime" @@ -84,8 +84,8 @@ var _ = BeforeSuite(func() { y, err := os.ReadFile(filepath.Join("..", "..", "..", "config", "webhook", "manifests.yaml")) Expect(err).NotTo(HaveOccurred()) - mutatingWebhookConfig := &admissionv1.MutatingWebhookConfiguration{} - validatingWebhookConfig := &admissionv1.ValidatingWebhookConfiguration{} + mutatingWebhookConfig := &admissionregistrationv1.MutatingWebhookConfiguration{} + validatingWebhookConfig := &admissionregistrationv1.ValidatingWebhookConfiguration{} d := yaml.NewYAMLOrJSONDecoder(bytes.NewReader(y), 4096) err = d.Decode(mutatingWebhookConfig) Expect(err).NotTo(HaveOccurred()) @@ -119,8 +119,8 @@ var _ = BeforeSuite(func() { ErrorIfCRDPathMissing: false, WebhookInstallOptions: envtest.WebhookInstallOptions{ Paths: []string{filepath.Join("..", "..", "..", "config", "webhook", "service.yaml")}, - MutatingWebhooks: []*admissionv1.MutatingWebhookConfiguration{mutatingWebhookConfig}, - ValidatingWebhooks: []*admissionv1.ValidatingWebhookConfiguration{validatingWebhookConfig}, + MutatingWebhooks: []*admissionregistrationv1.MutatingWebhookConfiguration{mutatingWebhookConfig}, + ValidatingWebhooks: []*admissionregistrationv1.ValidatingWebhookConfiguration{validatingWebhookConfig}, }, } @@ -139,7 +139,7 @@ var _ = BeforeSuite(func() { err = autoscalingv2.AddToScheme(scheme) Expect(err).NotTo(HaveOccurred()) - err = admissionv1beta1.AddToScheme(scheme) + err = admissionv1.AddToScheme(scheme) Expect(err).NotTo(HaveOccurred()) //+kubebuilder:scaffold:scheme @@ -151,12 +151,8 @@ var _ = BeforeSuite(func() { // start webhook server using Manager webhookInstallOptions := &testEnv.WebhookInstallOptions mgr, err := ctrl.NewManager(cfg, ctrl.Options{ - Scheme: scheme, - Host: webhookInstallOptions.LocalServingHost, - Port: webhookInstallOptions.LocalServingPort, - CertDir: webhookInstallOptions.LocalServingCertDir, - LeaderElection: false, - MetricsBindAddress: "0", + Scheme: scheme, + LeaderElection: false, }) Expect(err).NotTo(HaveOccurred()) config, err := config.ParseConfig("") diff --git a/api/core/v1/webhook_suite_test.go b/api/core/v1/webhook_suite_test.go index 0a8ed6bb..98152831 100644 --- a/api/core/v1/webhook_suite_test.go +++ b/api/core/v1/webhook_suite_test.go @@ -37,8 +37,8 @@ import ( "time" //+kubebuilder:scaffold:imports - admissionv1beta1 "k8s.io/api/admission/v1beta1" - admissionv1 "k8s.io/api/admissionregistration/v1" + admissionv1 "k8s.io/api/admission/v1beta1" + admissionregistrationv1 "k8s.io/api/admissionregistration/v1" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/yaml" @@ -86,8 +86,8 @@ var _ = BeforeSuite(func() { y, err := os.ReadFile(filepath.Join("..", "..", "..", "config", "webhook", "manifests.yaml")) Expect(err).NotTo(HaveOccurred()) - mutatingWebhookConfig := &admissionv1.MutatingWebhookConfiguration{} - validatingWebhookConfig := &admissionv1.ValidatingWebhookConfiguration{} + mutatingWebhookConfig := &admissionregistrationv1.MutatingWebhookConfiguration{} + validatingWebhookConfig := &admissionregistrationv1.ValidatingWebhookConfiguration{} d := yaml.NewYAMLOrJSONDecoder(bytes.NewReader(y), 4096) err = d.Decode(mutatingWebhookConfig) Expect(err).NotTo(HaveOccurred()) @@ -121,8 +121,8 @@ var _ = BeforeSuite(func() { ErrorIfCRDPathMissing: false, WebhookInstallOptions: envtest.WebhookInstallOptions{ Paths: []string{filepath.Join("..", "..", "..", "config", "webhook", "service.yaml")}, - MutatingWebhooks: []*admissionv1.MutatingWebhookConfiguration{mutatingWebhookConfig}, - ValidatingWebhooks: []*admissionv1.ValidatingWebhookConfiguration{validatingWebhookConfig}, + MutatingWebhooks: []*admissionregistrationv1.MutatingWebhookConfiguration{mutatingWebhookConfig}, + ValidatingWebhooks: []*admissionregistrationv1.ValidatingWebhookConfiguration{validatingWebhookConfig}, }, } @@ -139,7 +139,7 @@ var _ = BeforeSuite(func() { err = clientgoscheme.AddToScheme(scheme) Expect(err).NotTo(HaveOccurred()) - err = admissionv1beta1.AddToScheme(scheme) + err = admissionv1.AddToScheme(scheme) Expect(err).NotTo(HaveOccurred()) //+kubebuilder:scaffold:scheme @@ -151,12 +151,8 @@ var _ = BeforeSuite(func() { // start webhook server using Manager webhookInstallOptions := &testEnv.WebhookInstallOptions mgr, err := ctrl.NewManager(cfg, ctrl.Options{ - Scheme: scheme, - Host: webhookInstallOptions.LocalServingHost, - Port: webhookInstallOptions.LocalServingPort, - CertDir: webhookInstallOptions.LocalServingCertDir, - LeaderElection: false, - MetricsBindAddress: "0", + Scheme: scheme, + LeaderElection: false, }) Expect(err).NotTo(HaveOccurred()) config, err := config.ParseConfig("") diff --git a/api/v1beta3/webhook_suite_test.go b/api/v1beta3/webhook_suite_test.go index b2c00c8e..1d177adf 100644 --- a/api/v1beta3/webhook_suite_test.go +++ b/api/v1beta3/webhook_suite_test.go @@ -37,8 +37,8 @@ import ( "time" //+kubebuilder:scaffold:imports - admissionv1beta1 "k8s.io/api/admission/v1beta1" - admissionv1 "k8s.io/api/admissionregistration/v1" + admissionv1 "k8s.io/api/admission/v1" + admissionregistrationv1 "k8s.io/api/admissionregistration/v1" autoscalingv1 "k8s.io/api/autoscaling/v1" autoscalingv2 "k8s.io/api/autoscaling/v2" "k8s.io/apimachinery/pkg/runtime" @@ -79,8 +79,8 @@ var _ = BeforeSuite(func() { y, err := os.ReadFile(filepath.Join("..", "..", "config", "webhook", "manifests.yaml")) Expect(err).NotTo(HaveOccurred()) - mutatingWebhookConfig := &admissionv1.MutatingWebhookConfiguration{} - validatingWebhookConfig := &admissionv1.ValidatingWebhookConfiguration{} + mutatingWebhookConfig := &admissionregistrationv1.MutatingWebhookConfiguration{} + validatingWebhookConfig := &admissionregistrationv1.ValidatingWebhookConfiguration{} d := yaml.NewYAMLOrJSONDecoder(bytes.NewReader(y), 4096) err = d.Decode(mutatingWebhookConfig) Expect(err).NotTo(HaveOccurred()) @@ -114,8 +114,8 @@ var _ = BeforeSuite(func() { ErrorIfCRDPathMissing: false, WebhookInstallOptions: envtest.WebhookInstallOptions{ Paths: []string{filepath.Join("..", "..", "config", "webhook", "service.yaml")}, - MutatingWebhooks: []*admissionv1.MutatingWebhookConfiguration{mutatingWebhookConfig}, - ValidatingWebhooks: []*admissionv1.ValidatingWebhookConfiguration{validatingWebhookConfig}, + MutatingWebhooks: []*admissionregistrationv1.MutatingWebhookConfiguration{mutatingWebhookConfig}, + ValidatingWebhooks: []*admissionregistrationv1.ValidatingWebhookConfiguration{validatingWebhookConfig}, }, } @@ -134,7 +134,7 @@ var _ = BeforeSuite(func() { err = autoscalingv2.AddToScheme(scheme) Expect(err).NotTo(HaveOccurred()) - err = admissionv1beta1.AddToScheme(scheme) + err = admissionv1.AddToScheme(scheme) Expect(err).NotTo(HaveOccurred()) //+kubebuilder:scaffold:scheme @@ -146,12 +146,8 @@ var _ = BeforeSuite(func() { // start webhook server using Manager webhookInstallOptions := &testEnv.WebhookInstallOptions mgr, err := ctrl.NewManager(cfg, ctrl.Options{ - Scheme: scheme, - Host: webhookInstallOptions.LocalServingHost, - Port: webhookInstallOptions.LocalServingPort, - CertDir: webhookInstallOptions.LocalServingCertDir, - LeaderElection: false, - MetricsBindAddress: "0", + Scheme: scheme, + LeaderElection: false, }) Expect(err).NotTo(HaveOccurred()) diff --git a/main.go b/cmd/main.go similarity index 98% rename from main.go rename to cmd/main.go index e74eb562..c5124b24 100644 --- a/main.go +++ b/cmd/main.go @@ -48,7 +48,7 @@ import ( autoscalingv2 "github.com/mercari/tortoise/api/autoscaling/v2" v1 "github.com/mercari/tortoise/api/core/v1" autoscalingv1beta3 "github.com/mercari/tortoise/api/v1beta3" - "github.com/mercari/tortoise/controllers" + "github.com/mercari/tortoise/internal/controller" "github.com/mercari/tortoise/pkg/config" "github.com/mercari/tortoise/pkg/deployment" "github.com/mercari/tortoise/pkg/hpa" @@ -120,8 +120,6 @@ func main() { mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ Scheme: scheme, - MetricsBindAddress: metricsAddr, - Port: 9443, HealthProbeBindAddress: probeAddr, LeaderElection: enableLeaderElection, LeaderElectionID: "76c4d78a.mercari.com", @@ -160,7 +158,7 @@ func main() { os.Exit(1) } - if err = (&controllers.TortoiseReconciler{ + if err = (&controller.TortoiseReconciler{ Scheme: mgr.GetScheme(), HpaService: hpaService, VpaService: vpaClient, diff --git a/cmd/tortoisectl/main.go b/cmd/tortoisectl/main.go index a03dd8ae..f50d98ae 100644 --- a/cmd/tortoisectl/main.go +++ b/cmd/tortoisectl/main.go @@ -2,6 +2,6 @@ package main import "github.com/mercari/tortoise/cmd/tortoisectl/commands" -func main() { +func tortoisectl() { commands.Execute() } diff --git a/config/crd/bases/autoscaling.mercari.com_tortoises.yaml b/config/crd/bases/autoscaling.mercari.com_tortoises.yaml index 09195403..2cdb75a8 100644 --- a/config/crd/bases/autoscaling.mercari.com_tortoises.yaml +++ b/config/crd/bases/autoscaling.mercari.com_tortoises.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.1 name: tortoises.autoscaling.mercari.com spec: group: autoscaling.mercari.com @@ -27,14 +27,19 @@ spec: description: Tortoise is the Schema for the tortoises API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -42,36 +47,29 @@ spec: description: TortoiseSpec defines the desired state of Tortoise properties: autoscalingPolicy: - description: "AutoscalingPolicy is an optional field for specifying - the scaling approach for each resource within each container. \n - There are two primary options for configuring resource scaling within - containers: 1. Allow Tortoise to automatically determine the appropriate - autoscaling policy for each resource. 2. Manually define the autoscaling - policy for each resource. \n For the first option, simply leave - this field unset. In this case, Tortoise will adjust the autoscaling - policies using the following rules: - If .spec.TargetRefs.HorizontalPodAutoscalerName - is not provided, the policies default to \"Horizontal\" for CPU - and \"Vertical\" for memory across all containers. - If .spec.TargetRefs.HorizontalPodAutoscalerName - is specified, resources governed by the referenced Horizontal Pod - Autoscaler will use a \"Horizontal\" policy, while those not managed - by the HPA will use a \"Vertical\" policy. Note that Tortoise supports - only the ContainerResource metric type for HPAs; other metric types - will be disregarded. Additionally, if a ContainerResource metric - is later added to an HPA associated with Tortoise, Tortoise will - automatically update relevant resources to utilize a \"Horizontal\" - policy. - if a container doesn't have the resource request, that - container's autoscaling policy is always set to \"Off\" because - tortoise cannot generate any recommendation without the resource - request. \n With the second option, you must manually specify the - AutoscalingPolicy for the resources of each container within this - field. If policies are defined for some but not all containers or - resources, Tortoise will assign a default \"Off\" policy to unspecified - resources. Be aware that when new containers are introduced to the - workload, the AutoscalingPolicy configuration must be manually updated, - as Tortoise will default to an \"Off\" policy for resources within - the new container, preventing scaling. \n The AutoscalingPolicy - field is mutable; you can modify it at any time, whether from an - empty state to populated or vice versa." + description: |- + AutoscalingPolicy is an optional field for specifying the scaling approach for each resource within each container. + + There are two primary options for configuring resource scaling within containers: + 1. Allow Tortoise to automatically determine the appropriate autoscaling policy for each resource. + 2. Manually define the autoscaling policy for each resource. + + For the first option, simply leave this field unset. In this case, Tortoise will adjust the autoscaling policies using the following rules: + - If .spec.TargetRefs.HorizontalPodAutoscalerName is not provided, the policies default to "Horizontal" for CPU and "Vertical" for memory across all containers. + - If .spec.TargetRefs.HorizontalPodAutoscalerName is specified, resources governed by the referenced Horizontal Pod Autoscaler will use a "Horizontal" policy, + while those not managed by the HPA will use a "Vertical" policy. + Note that Tortoise supports only the ContainerResource metric type for HPAs; other metric types will be disregarded. + Additionally, if a ContainerResource metric is later added to an HPA associated with Tortoise, + Tortoise will automatically update relevant resources to utilize a "Horizontal" policy. + - if a container doesn't have the resource request, that container's autoscaling policy is always set to "Off" + because tortoise cannot generate any recommendation without the resource request. + + With the second option, you must manually specify the AutoscalingPolicy for the resources of each container within this field. + If policies are defined for some but not all containers or resources, Tortoise will assign a default "Off" policy to unspecified resources. + Be aware that when new containers are introduced to the workload, the AutoscalingPolicy configuration must be manually updated, + as Tortoise will default to an "Off" policy for resources within the new container, preventing scaling. + + The AutoscalingPolicy field is mutable; you can modify it at any time, whether from an empty state to populated or vice versa. items: properties: containerName: @@ -84,29 +82,30 @@ spec: - Horizontal - Vertical type: string - description: Policy specifies how each resource is scaled. See - .spec.AutoscalingPolicy for more defail. + description: |- + Policy specifies how each resource is scaled. + See .spec.AutoscalingPolicy for more defail. type: object required: - containerName type: object type: array deletionPolicy: - description: "DeletionPolicy is the policy how the controller deletes - associated HPA and VPA when tortoise is removed. If \"DeleteAll\", - tortoise deletes all associated HPA and VPA, created by tortoise. - If the associated HPA is not created by tortoise, which is associated - by spec.targetRefs.horizontalPodAutoscalerName, tortoise never delete - the HPA. If \"NoDelete\", tortoise doesn't delete any associated - HPA and VPA. \n \"NoDelete\" is the default value." + description: |- + DeletionPolicy is the policy how the controller deletes associated HPA and VPA when tortoise is removed. + If "DeleteAll", tortoise deletes all associated HPA and VPA, created by tortoise. If the associated HPA is not created by tortoise, + which is associated by spec.targetRefs.horizontalPodAutoscalerName, tortoise never delete the HPA. + If "NoDelete", tortoise doesn't delete any associated HPA and VPA. + + "NoDelete" is the default value. enum: - DeleteAll - NoDelete type: string maxReplicas: - description: MaxReplicas is the maximum number of MaxReplicas that - Tortoise will give to HPA. If nil, Tortoise uses the cluster wide - default value, which can be configured via the admin config. + description: |- + MaxReplicas is the maximum number of MaxReplicas that Tortoise will give to HPA. + If nil, Tortoise uses the cluster wide default value, which can be configured via the admin config. format: int32 type: integer resourcePolicy: @@ -124,11 +123,10 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: MaxAllocatedResources is the maximum amount of - resources which is given to the container. Tortoise never - set the resources request on the container more than MaxAllocatedResources. - If nil, Tortoise uses the cluster wide default value, which - can be configured via the admin config. + description: |- + MaxAllocatedResources is the maximum amount of resources which is given to the container. + Tortoise never set the resources request on the container more than MaxAllocatedResources. + If nil, Tortoise uses the cluster wide default value, which can be configured via the admin config. type: object minAllocatedResources: additionalProperties: @@ -137,16 +135,15 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: "MinAllocatedResources is the minimum amount of - resources which is given to the container. Tortoise never - set the resources request on the container less than MinAllocatedResources. - If nil, Tortoise uses the cluster wide default value, which - can be configured via the admin config. \n If empty, tortoise - may reduce the resource request to the value which is suggested - from VPA. Given the VPA suggests values based on the historical - resource usage, you have no choice but to use MinAllocatedResources - to pre-scaling your Pods, for example, when maybe your application - change will result in consuming resources more than the past." + description: |- + MinAllocatedResources is the minimum amount of resources which is given to the container. + Tortoise never set the resources request on the container less than MinAllocatedResources. + If nil, Tortoise uses the cluster wide default value, which can be configured via the admin config. + + If empty, tortoise may reduce the resource request to the value which is suggested from VPA. + Given the VPA suggests values based on the historical resource usage, + you have no choice but to use MinAllocatedResources to pre-scaling your Pods, + for example, when maybe your application change will result in consuming resources more than the past. type: object required: - containerName @@ -156,30 +153,30 @@ spec: description: TargetRefs has reference to involved resources. properties: horizontalPodAutoscalerName: - description: "HorizontalPodAutoscalerName is the name of the target - HPA. You can specify existing HPA only, otherwise Tortoise errors - out. \n The target of this HPA should be the same as the ScaleTargetRef - above. The target HPA should have the ContainerResource type - metric that refers to the container resource utilization. If - HPA has Resource type metrics, Tortoise just removes them because - they'd be conflict with ContainerResource type metrics managed - by Tortoise. If HPA has metrics other than Resource or ContainerResource, - Tortoise just keeps them unless the administrator uses the HPAExternalMetricExclusionRegex - feature. HPAExternalMetricExclusionRegex feature: https://github.com/mercari/tortoise/blob/main/docs/admin-guide.md#hpaexternalmetricexclusionregex - \n Please check out the document for more detail: https://github.com/mercari/tortoise/blob/master/docs/horizontal.md#attach-your-hpa - \n Also, if your Tortoise is in the Auto mode, you should not - edit the target resource utilization in HPA directly. Even if - you edit your HPA in that case, tortoise will overwrite the - HPA with the metrics/values. \n You may also want to see the - document in .spec.autoscalingPolicy to understand how tortoise - with this field decides the autoscaling policy. \n This is an - optional field, and if you don't specify this field, tortoise - will create a new default HPA named `tortoise-hpa-{tortoise - name}`." + description: |- + HorizontalPodAutoscalerName is the name of the target HPA. + You can specify existing HPA only, otherwise Tortoise errors out. + + The target of this HPA should be the same as the ScaleTargetRef above. + The target HPA should have the ContainerResource type metric that refers to the container resource utilization. + If HPA has Resource type metrics, + Tortoise just removes them because they'd be conflict with ContainerResource type metrics managed by Tortoise. + If HPA has metrics other than Resource or ContainerResource, Tortoise just keeps them unless the administrator uses the HPAExternalMetricExclusionRegex feature. + HPAExternalMetricExclusionRegex feature: https://github.com/mercari/tortoise/blob/main/docs/admin-guide.md#hpaexternalmetricexclusionregex + + Please check out the document for more detail: https://github.com/mercari/tortoise/blob/master/docs/horizontal.md#attach-your-hpa + + Also, if your Tortoise is in the Auto mode, you should not edit the target resource utilization in HPA directly. + Even if you edit your HPA in that case, tortoise will overwrite the HPA with the metrics/values. + + You may also want to see the document in .spec.autoscalingPolicy to understand how tortoise with this field decides the autoscaling policy. + + This is an optional field, and if you don't specify this field, tortoise will create a new default HPA named `tortoise-hpa-{tortoise name}`. type: string scaleTargetRef: - description: ScaleTargetRef is the target of scaling. It should - be the same as the target of HPA. + description: |- + ScaleTargetRef is the target of scaling. + It should be the same as the target of HPA. properties: apiVersion: description: apiVersion is the API version of the referent @@ -200,15 +197,15 @@ spec: - scaleTargetRef type: object updateMode: - description: "UpdateMode is how tortoise update resources. If \"Off\", - tortoise generates the recommendations in .Status, but doesn't apply - it actually. If \"Auto\", tortoise generates the recommendations - in .Status, and apply it to resources. If \"Emergency\", tortoise - generates the recommendations in .Status as usual, but increase - replica number high enough value. \"Emergency\" is useful when something - unexpected happens in workloads, and you want to scale up the workload - with high enough resources. See https://github.com/mercari/tortoise/blob/main/docs/emergency.md - to know more about emergency mode. \n \"Off\" is the default value." + description: |- + UpdateMode is how tortoise update resources. + If "Off", tortoise generates the recommendations in .Status, but doesn't apply it actually. + If "Auto", tortoise generates the recommendations in .Status, and apply it to resources. + If "Emergency", tortoise generates the recommendations in .Status as usual, but increase replica number high enough value. + "Emergency" is useful when something unexpected happens in workloads, and you want to scale up the workload with high enough resources. + See https://github.com/mercari/tortoise/blob/main/docs/emergency.md to know more about emergency mode. + + "Off" is the default value. enum: - "Off" - Auto @@ -221,11 +218,11 @@ spec: description: TortoiseStatus defines the observed state of Tortoise properties: autoscalingPolicy: - description: AutoscalingPolicy contains the policy how this tortoise - actually scales each resource. It should basically be the same as - .spec.autoscalingPolicy. But, if .spec.autoscalingPolicy is empty, - tortoise manages/generates the policies generated based on HPA and - the target deployment. + description: |- + AutoscalingPolicy contains the policy how this tortoise actually scales each resource. + It should basically be the same as .spec.autoscalingPolicy. + But, if .spec.autoscalingPolicy is empty, tortoise manages/generates + the policies generated based on HPA and the target deployment. items: properties: containerName: @@ -238,8 +235,9 @@ spec: - Horizontal - Vertical type: string - description: Policy specifies how each resource is scaled. See - .spec.AutoscalingPolicy for more defail. + description: |- + Policy specifies how each resource is scaled. + See .spec.AutoscalingPolicy for more defail. type: object required: - containerName @@ -268,9 +266,9 @@ spec: format: date-time type: string type: object - description: MaxRecommendation is the max recommendation - value from VPA in a certain period (1 week). Tortoise - generates all recommendation based on this MaxRecommendation. + description: |- + MaxRecommendation is the max recommendation value from VPA in a certain period (1 week). + Tortoise generates all recommendation based on this MaxRecommendation. type: object recommendation: additionalProperties: @@ -296,12 +294,11 @@ spec: type: object type: array containerResourceRequests: - description: ContainerResourceRequests has the ideal resource - request for each container. If the mode is Off, it should be - the same value as the current resource request. If the mode - is Auto, it would basically be the same value as the recommendation. - (Tortoise sometimes doesn't immediately apply the recommendation - value to the resource request for the sake of safety.) + description: |- + ContainerResourceRequests has the ideal resource request for each container. + If the mode is Off, it should be the same value as the current resource request. + If the mode is Auto, it would basically be the same value as the recommendation. + (Tortoise sometimes doesn't immediately apply the recommendation value to the resource request for the sake of safety.) items: properties: containerName: @@ -327,8 +324,9 @@ spec: items: properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another + description: |- + lastTransitionTime is the last time the condition transitioned from + one status to another format: date-time type: string lastUpdateTime: @@ -336,8 +334,9 @@ spec: format: date-time type: string message: - description: message is a human-readable explanation containing - details about the transition + description: |- + message is a human-readable explanation containing details about + the transition type: string reason: description: reason is the reason for the condition's last @@ -369,8 +368,9 @@ spec: additionalProperties: properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another + description: |- + lastTransitionTime is the last time the condition transitioned from + one status to another format: date-time type: string phase: @@ -391,7 +391,8 @@ spec: horizontal: properties: maxReplicas: - description: MaxReplicas has the recommendation of maxReplicas. + description: |- + MaxReplicas has the recommendation of maxReplicas. It contains the recommendations for each time slot. items: properties: @@ -407,15 +408,16 @@ spec: format: date-time type: string value: - description: Value is the recommendation value. It's - calculated every reconciliation, and updated if the - calculated recommendation value is more than the current - recommendation value on tortoise. + description: |- + Value is the recommendation value. + It's calculated every reconciliation, + and updated if the calculated recommendation value is more than the current recommendation value on tortoise. format: int32 type: integer weekday: - description: WeekDay is the day of the week. If empty, - it means it applies to all days of the week. + description: |- + WeekDay is the day of the week. + If empty, it means it applies to all days of the week. type: string required: - from @@ -425,7 +427,8 @@ spec: type: object type: array minReplicas: - description: MinReplicas has the recommendation of minReplicas. + description: |- + MinReplicas has the recommendation of minReplicas. It contains the recommendations for each time slot. items: properties: @@ -441,15 +444,16 @@ spec: format: date-time type: string value: - description: Value is the recommendation value. It's - calculated every reconciliation, and updated if the - calculated recommendation value is more than the current - recommendation value on tortoise. + description: |- + Value is the recommendation value. + It's calculated every reconciliation, + and updated if the calculated recommendation value is more than the current recommendation value on tortoise. format: int32 type: integer weekday: - description: WeekDay is the day of the week. If empty, - it means it applies to all days of the week. + description: |- + WeekDay is the day of the week. + If empty, it means it applies to all days of the week. type: string required: - from @@ -491,15 +495,14 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: "RecommendedResource is the recommendation - calculated by the tortoise. \n If AutoscalingPolicy - is vertical, it's the same value as the VPA suggests. - If AutoscalingPolicy is horizontal, it's basically - the same value as the current resource request. But, - when the number of replicas are too small or too large, - tortoise may try to increase/decrease the amount of - resources given to the container, so that the number - of replicas won't be very small or very large." + description: |- + RecommendedResource is the recommendation calculated by the tortoise. + + If AutoscalingPolicy is vertical, it's the same value as the VPA suggests. + If AutoscalingPolicy is horizontal, it's basically the same value as the current resource request. + But, when the number of replicas are too small or too large, + tortoise may try to increase/decrease the amount of resources given to the container, + so that the number of replicas won't be very small or very large. type: object containerName: description: ContainerName is the name of target container. diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml index 2307667d..eb60ab0c 100644 --- a/config/crd/kustomization.yaml +++ b/config/crd/kustomization.yaml @@ -8,13 +8,13 @@ resources: patchesStrategicMerge: # [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix. # patches here are for enabling the conversion webhook for each CRD -- patches/webhook_in_tortoises.yaml +- path: patches/webhook_in_tortoises.yaml #- patches/webhook_in_tortoises.yaml #+kubebuilder:scaffold:crdkustomizewebhookpatch # [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix. # patches here are for enabling the CA injection for each CRD -- patches/cainjection_in_tortoises.yaml +- path: patches/cainjection_in_tortoises.yaml #- patches/cainjection_in_tortoises.yaml #+kubebuilder:scaffold:crdkustomizecainjectionpatch diff --git a/config/default/kustomization.yaml b/config/default/kustomization.yaml index bbbe440d..7cd3874a 100644 --- a/config/default/kustomization.yaml +++ b/config/default/kustomization.yaml @@ -18,6 +18,7 @@ bases: - ../manager - ../webhook - ../certmanager +- metrics_service.yaml # [PROMETHEUS] To enable prometheus monitor, uncomment all sections with 'PROMETHEUS'. #- ../prometheus @@ -25,14 +26,17 @@ patchesStrategicMerge: # Protect the /metrics endpoint by putting it behind auth. # If you want your controller-manager to expose the /metrics # endpoint w/o any authn/z, please comment the following line. -- manager_auth_proxy_patch.yaml +- path: manager_auth_proxy_patch.yaml # Mount the controller config file for loading manager configurations # through a ComponentConfig type #- manager_config_patch.yaml -- manager_webhook_patch.yaml -- webhookcainjection_patch.yaml +- path: manager_webhook_patch.yaml +- path: webhookcainjection_patch.yaml +- path: manager_metrics_patch.yaml + target: + kind: Deployment # the following config is for teaching kustomize how to do var substitution vars: diff --git a/config/default/manager_webhook_patch.yaml b/config/default/manager_webhook_patch.yaml index 738de350..4e3dc475 100644 --- a/config/default/manager_webhook_patch.yaml +++ b/config/default/manager_webhook_patch.yaml @@ -3,6 +3,9 @@ kind: Deployment metadata: name: controller-manager namespace: system + labels: + app.kubernetes.io/name: tortoise + app.kubernetes.io/managed-by: kustomize spec: template: spec: diff --git a/config/default/metrics_service.yaml b/config/default/metrics_service.yaml new file mode 100644 index 00000000..7034ceaa --- /dev/null +++ b/config/default/metrics_service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + control-plane: controller-manager + app.kubernetes.io/name: tortoise + app.kubernetes.io/managed-by: kustomize + name: controller-manager-metrics-service + namespace: system +spec: + ports: + - name: https + port: 8443 + protocol: TCP + targetPort: 8443 + selector: + control-plane: controller-manager \ No newline at end of file diff --git a/config/default/webhookcainjection_patch.yaml b/config/default/webhookcainjection_patch.yaml index 02ab515d..2fdc24c1 100644 --- a/config/default/webhookcainjection_patch.yaml +++ b/config/default/webhookcainjection_patch.yaml @@ -3,6 +3,9 @@ apiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration metadata: + labels: + app.kubernetes.io/name: tortoise + app.kubernetes.io/managed-by: kustomize name: mutating-webhook-configuration annotations: cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) @@ -10,6 +13,13 @@ metadata: apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: + labels: + app.kubernetes.io/name: validatingwebhookconfiguration + app.kubernetes.io/instance: validating-webhook-configuration + app.kubernetes.io/component: webhook + app.kubernetes.io/created-by: tortoise + app.kubernetes.io/part-of: tortoise + app.kubernetes.io/managed-by: kustomize name: validating-webhook-configuration annotations: cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index e76984ab..f109803c 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -13,4 +13,4 @@ kind: Kustomization images: - name: controller newName: ghcr.io/mercari/tortoise - newTag: v0.9.0 + newTag: v0.11.2 diff --git a/config/manager/manager.yaml b/config/manager/manager.yaml index 878ad486..718b572d 100644 --- a/config/manager/manager.yaml +++ b/config/manager/manager.yaml @@ -3,6 +3,8 @@ kind: Namespace metadata: labels: control-plane: controller-manager + app.kubernetes.io/name: tortoise + app.kubernetes.io/managed-by: kustomize name: system --- apiVersion: apps/v1 @@ -12,6 +14,8 @@ metadata: namespace: system labels: control-plane: controller-manager + app.kubernetes.io/name: tortoise + app.kubernetes.io/managed-by: kustomize spec: selector: matchLabels: @@ -38,6 +42,7 @@ spec: - /manager args: - --leader-elect + - --health-probe-bind-address=:8081 image: controller:latest name: manager securityContext: diff --git a/config/prometheus/monitor.yaml b/config/prometheus/monitor.yaml index d19136ae..63f7895c 100644 --- a/config/prometheus/monitor.yaml +++ b/config/prometheus/monitor.yaml @@ -5,6 +5,8 @@ kind: ServiceMonitor metadata: labels: control-plane: controller-manager + app.kubernetes.io/name: tortoise + app.kubernetes.io/managed-by: kustomize name: controller-manager-metrics-monitor namespace: system spec: diff --git a/config/rbac/leader_election_role.yaml b/config/rbac/leader_election_role.yaml index 4190ec80..a6d3cca8 100644 --- a/config/rbac/leader_election_role.yaml +++ b/config/rbac/leader_election_role.yaml @@ -2,6 +2,9 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: + labels: + app.kubernetes.io/name: tortoise + app.kubernetes.io/managed-by: kustomize name: leader-election-role rules: - apiGroups: diff --git a/config/rbac/leader_election_role_binding.yaml b/config/rbac/leader_election_role_binding.yaml index 1d1321ed..fb069ae2 100644 --- a/config/rbac/leader_election_role_binding.yaml +++ b/config/rbac/leader_election_role_binding.yaml @@ -1,6 +1,9 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: + labels: + app.kubernetes.io/name: tortoise + app.kubernetes.io/managed-by: kustomize name: leader-election-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index fe3e7558..b01a62dc 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -8,6 +8,8 @@ rules: - apps resources: - daemonsets + - replicasets + - statefulsets verbs: - get - list @@ -24,22 +26,6 @@ rules: - patch - update - watch -- apiGroups: - - apps - resources: - - replicasets - verbs: - - get - - list - - watch -- apiGroups: - - apps - resources: - - statefulsets - verbs: - - get - - list - - watch - apiGroups: - autoscaling resources: @@ -56,17 +42,6 @@ rules: - autoscaling.k8s.io resources: - verticalpodautoscalers - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - autoscaling.k8s.io - resources: - verticalpodautoscalers/status verbs: - create @@ -106,13 +81,6 @@ rules: - batch resources: - cronjobs - verbs: - - get - - list - - watch -- apiGroups: - - batch - resources: - jobs verbs: - get diff --git a/config/rbac/role_binding.yaml b/config/rbac/role_binding.yaml index 2070ede4..a114c8bb 100644 --- a/config/rbac/role_binding.yaml +++ b/config/rbac/role_binding.yaml @@ -1,6 +1,9 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: + labels: + app.kubernetes.io/name: tortoise + app.kubernetes.io/managed-by: kustomize name: manager-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io diff --git a/config/rbac/service_account.yaml b/config/rbac/service_account.yaml index 7cd6025b..85860fa8 100644 --- a/config/rbac/service_account.yaml +++ b/config/rbac/service_account.yaml @@ -1,5 +1,8 @@ apiVersion: v1 kind: ServiceAccount metadata: + labels: + app.kubernetes.io/name: tortoise + app.kubernetes.io/managed-by: kustomize name: controller-manager namespace: system diff --git a/go.mod b/go.mod index bcba95cd..1c97e284 100644 --- a/go.mod +++ b/go.mod @@ -1,85 +1,85 @@ module github.com/mercari/tortoise -go 1.21 +go 1.22.0 -toolchain go1.21.4 +toolchain go1.23.1 require ( - github.com/go-logr/zapr v1.2.4 - github.com/google/go-cmp v0.5.9 - github.com/onsi/ginkgo/v2 v2.9.5 - github.com/onsi/gomega v1.27.7 - github.com/prometheus/client_golang v1.17.0 - go.uber.org/zap v1.24.0 + github.com/go-logr/zapr v1.3.0 + github.com/google/go-cmp v0.6.0 + github.com/onsi/ginkgo/v2 v2.19.0 + github.com/onsi/gomega v1.33.1 + github.com/prometheus/client_golang v1.20.4 + go.uber.org/zap v1.27.0 gopkg.in/yaml.v3 v3.0.1 - k8s.io/api v0.28.3 - k8s.io/apimachinery v0.28.3 + k8s.io/api v0.31.1 + k8s.io/apimachinery v0.31.1 // Need to use this commit, to use the controller fetcher. k8s.io/autoscaler/vertical-pod-autoscaler v0.10.1-0.20240119175703-2bba2bac1635 - k8s.io/client-go v0.28.3 - k8s.io/klog/v2 v2.100.1 - k8s.io/utils v0.0.0-20240102154912-e7106e64919e - sigs.k8s.io/controller-runtime v0.15.1 - sigs.k8s.io/yaml v1.3.0 + k8s.io/client-go v0.31.1 + k8s.io/klog/v2 v2.130.1 + k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 + sigs.k8s.io/controller-runtime v0.19.0 + sigs.k8s.io/yaml v1.4.0 ) require ( github.com/kyokomi/emoji/v2 v2.2.12 - github.com/spf13/cobra v1.7.0 + github.com/spf13/cobra v1.8.1 ) require ( github.com/beorn7/perks v1.0.1 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful/v3 v3.10.2 // indirect - github.com/evanphx/json-patch v4.12.0+incompatible // indirect - github.com/evanphx/json-patch/v5 v5.6.0 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-logr/logr v1.2.4 // indirect - github.com/go-openapi/jsonpointer v0.19.6 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/swag v0.22.3 // indirect - github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/emicklei/go-restful/v3 v3.12.1 // indirect + github.com/evanphx/json-patch v5.9.0+incompatible // indirect + github.com/evanphx/json-patch/v5 v5.9.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/imdario/mergo v0.3.15 // indirect + github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect - github.com/prometheus/common v0.44.0 // indirect - github.com/prometheus/procfs v0.11.1 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.8.3 // indirect - go.uber.org/atomic v1.10.0 // indirect + github.com/x448/float16 v0.8.4 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.20.0 // indirect - golang.org/x/oauth2 v0.8.0 // indirect - golang.org/x/sys v0.16.0 // indirect - golang.org/x/term v0.16.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.4.0 // indirect - golang.org/x/tools v0.9.1 // indirect - gomodules.xyz/jsonpatch/v2 v2.3.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/protobuf v1.33.0 // indirect + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/oauth2 v0.23.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.24.0 // indirect + golang.org/x/text v0.18.0 // indirect + golang.org/x/time v0.6.0 // indirect + golang.org/x/tools v0.24.0 // indirect + gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/apiextensions-apiserver v0.27.2 // indirect - k8s.io/component-base v0.28.3 // indirect - k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect + k8s.io/apiextensions-apiserver v0.31.1 // indirect + k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect ) diff --git a/go.sum b/go.sum index 7f340175..40b5f63a 100644 --- a/go.sum +++ b/go.sum @@ -1,85 +1,74 @@ -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/emicklei/go-restful/v3 v3.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= -github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= -github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= -github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= -github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= +github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= +github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= +github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= +github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= -github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQuYXQ+6EN5stWmeY/AZqtM8xk9k= +github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= +github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/kyokomi/emoji/v2 v2.2.12 h1:sSVA5nH9ebR3Zji1o31wu3yOwD1zKXQA2z0zUyeit60= github.com/kyokomi/emoji/v2 v2.2.12/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5CqkmoirZZP9qE= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -87,155 +76,122 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= -github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= -github.com/onsi/gomega v1.27.7 h1:fVih9JD6ogIiHUN6ePK7HJidyEDpWGVB5mzM7cWNXoU= -github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= +github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= +github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= +github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= -github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= -github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM= -github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= -github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= -github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= -github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= -go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= -golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.4.0 h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY= -golang.org/x/time v0.4.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= -golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= -gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= +gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.28.3 h1:Gj1HtbSdB4P08C8rs9AR94MfSGpRhJgsS+GF9V26xMM= -k8s.io/api v0.28.3/go.mod h1:MRCV/jr1dW87/qJnZ57U5Pak65LGmQVkKTzf3AtKFHc= -k8s.io/apiextensions-apiserver v0.27.2 h1:iwhyoeS4xj9Y7v8YExhUwbVuBhMr3Q4bd/laClBV6Bo= -k8s.io/apiextensions-apiserver v0.27.2/go.mod h1:Oz9UdvGguL3ULgRdY9QMUzL2RZImotgxvGjdWRq6ZXQ= -k8s.io/apimachinery v0.28.3 h1:B1wYx8txOaCQG0HmYF6nbpU8dg6HvA06x5tEffvOe7A= -k8s.io/apimachinery v0.28.3/go.mod h1:uQTKmIqs+rAYaq+DFaoD2X7pcjLOqbQX2AOiO0nIpb8= +k8s.io/api v0.31.1 h1:Xe1hX/fPW3PXYYv8BlozYqw63ytA92snr96zMW9gWTU= +k8s.io/api v0.31.1/go.mod h1:sbN1g6eY6XVLeqNsZGLnI5FwVseTrZX7Fv3O26rhAaI= +k8s.io/apiextensions-apiserver v0.31.1 h1:L+hwULvXx+nvTYX/MKM3kKMZyei+UiSXQWciX/N6E40= +k8s.io/apiextensions-apiserver v0.31.1/go.mod h1:tWMPR3sgW+jsl2xm9v7lAyRF1rYEK71i9G5dRtkknoQ= +k8s.io/apimachinery v0.31.1 h1:mhcUBbj7KUjaVhyXILglcVjuS4nYXiwC+KKFBgIVy7U= +k8s.io/apimachinery v0.31.1/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= k8s.io/autoscaler/vertical-pod-autoscaler v0.10.1-0.20240119175703-2bba2bac1635 h1:HdBci+VKLE2+qp+TF6p+M/NxdqGDto6lxaQOGJW6uMQ= k8s.io/autoscaler/vertical-pod-autoscaler v0.10.1-0.20240119175703-2bba2bac1635/go.mod h1:9rkcHM+tg3H2Qujk+9zyyYtuBXJieliujL1ITKGx9p0= -k8s.io/client-go v0.28.3 h1:2OqNb72ZuTZPKCl+4gTKvqao0AMOl9f3o2ijbAj3LI4= -k8s.io/client-go v0.28.3/go.mod h1:LTykbBp9gsA7SwqirlCXBWtK0guzfhpoW4qSm7i9dxo= -k8s.io/component-base v0.28.3 h1:rDy68eHKxq/80RiMb2Ld/tbH8uAE75JdCqJyi6lXMzI= -k8s.io/component-base v0.28.3/go.mod h1:fDJ6vpVNSk6cRo5wmDa6eKIG7UlIQkaFmZN2fYgIUD8= -k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= -k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ= -k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM= -k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ= -k8s.io/utils v0.0.0-20240102154912-e7106e64919e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUTb/+4c= -sigs.k8s.io/controller-runtime v0.15.1/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= +k8s.io/client-go v0.31.1 h1:f0ugtWSbWpxHR7sjVpQwuvw9a3ZKLXX0u0itkFXufb0= +k8s.io/client-go v0.31.1/go.mod h1:sKI8871MJN2OyeqRlmA4W4KM9KBdBUpDLu/43eGemCg= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 h1:1dWzkmJrrprYvjGwh9kEUxmcUV/CtNU8QM7h1FLWQOo= +k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38/go.mod h1:coRQXBK9NxO98XUv3ZD6AK3xzHCxV6+b7lrquKwaKzA= +k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 h1:MDF6h2H/h4tbzmtIKTuctcwZmY0tY9mD9fNT47QO6HI= +k8s.io/utils v0.0.0-20240921022957-49e7df575cb6/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/controller-runtime v0.19.0 h1:nWVM7aq+Il2ABxwiCizrVDSlmDcshi9llbaFbC0ji/Q= +sigs.k8s.io/controller-runtime v0.19.0/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/controllers/suite_test.go b/internal/controller/suite_test.go similarity index 96% rename from controllers/suite_test.go rename to internal/controller/suite_test.go index 652ed475..1e0ee6f4 100644 --- a/controllers/suite_test.go +++ b/internal/controller/suite_test.go @@ -23,7 +23,7 @@ SOFTWARE. */ -package controllers +package controller import ( "fmt" @@ -73,7 +73,7 @@ var _ = BeforeSuite(func() { By("bootstrapping test environment") testEnv = &envtest.Environment{ - CRDDirectoryPaths: []string{filepath.Join("..", "config", "crd", "bases"), filepath.Join("testdata", "crd")}, + CRDDirectoryPaths: []string{filepath.Join("..", "..", "config", "crd", "bases"), filepath.Join("testdata", "crd")}, ErrorIfCRDPathMissing: true, } diff --git a/controllers/testdata/crd/vpa-v1-crd-gen.yaml b/internal/controller/testdata/crd/vpa-v1-crd-gen.yaml similarity index 100% rename from controllers/testdata/crd/vpa-v1-crd-gen.yaml rename to internal/controller/testdata/crd/vpa-v1-crd-gen.yaml diff --git a/controllers/testdata/deletion-no-delete/before/deployment.yaml b/internal/controller/testdata/deletion-no-delete/before/deployment.yaml similarity index 100% rename from controllers/testdata/deletion-no-delete/before/deployment.yaml rename to internal/controller/testdata/deletion-no-delete/before/deployment.yaml diff --git a/controllers/testdata/deletion-no-delete/before/hpa.yaml b/internal/controller/testdata/deletion-no-delete/before/hpa.yaml similarity index 100% rename from controllers/testdata/deletion-no-delete/before/hpa.yaml rename to internal/controller/testdata/deletion-no-delete/before/hpa.yaml diff --git a/controllers/testdata/deletion-no-delete/before/tortoise.yaml b/internal/controller/testdata/deletion-no-delete/before/tortoise.yaml similarity index 100% rename from controllers/testdata/deletion-no-delete/before/tortoise.yaml rename to internal/controller/testdata/deletion-no-delete/before/tortoise.yaml diff --git a/controllers/testdata/deletion-no-delete/before/vpa-Monitor.yaml b/internal/controller/testdata/deletion-no-delete/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/deletion-no-delete/before/vpa-Monitor.yaml rename to internal/controller/testdata/deletion-no-delete/before/vpa-Monitor.yaml diff --git a/controllers/testdata/deletion-policy-all/before/deployment.yaml b/internal/controller/testdata/deletion-policy-all/before/deployment.yaml similarity index 100% rename from controllers/testdata/deletion-policy-all/before/deployment.yaml rename to internal/controller/testdata/deletion-policy-all/before/deployment.yaml diff --git a/controllers/testdata/deletion-policy-all/before/hpa.yaml b/internal/controller/testdata/deletion-policy-all/before/hpa.yaml similarity index 100% rename from controllers/testdata/deletion-policy-all/before/hpa.yaml rename to internal/controller/testdata/deletion-policy-all/before/hpa.yaml diff --git a/controllers/testdata/deletion-policy-all/before/tortoise.yaml b/internal/controller/testdata/deletion-policy-all/before/tortoise.yaml similarity index 100% rename from controllers/testdata/deletion-policy-all/before/tortoise.yaml rename to internal/controller/testdata/deletion-policy-all/before/tortoise.yaml diff --git a/controllers/testdata/deletion-policy-all/before/vpa-Monitor.yaml b/internal/controller/testdata/deletion-policy-all/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/deletion-policy-all/before/vpa-Monitor.yaml rename to internal/controller/testdata/deletion-policy-all/before/vpa-Monitor.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/deployment.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/deployment.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/deployment.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/deployment.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/hpa.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/hpa.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/hpa.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/hpa.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/tortoise.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/tortoise.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/tortoise.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/tortoise.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/vpa-Monitor.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/vpa-Monitor.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/after/vpa-Monitor.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/deployment.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/deployment.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/deployment.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/deployment.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/hpa.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/hpa.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/hpa.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/hpa.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/tortoise.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/tortoise.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/tortoise.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/tortoise.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/vpa-Monitor.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/vpa-Monitor.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-add-another-horizontal/before/vpa-Monitor.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/deployment.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/deployment.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/deployment.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/deployment.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/hpa.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/hpa.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/hpa.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/hpa.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/tortoise.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/tortoise.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/tortoise.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/tortoise.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/vpa-Monitor.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/vpa-Monitor.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/after/vpa-Monitor.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/deployment.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/deployment.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/deployment.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/deployment.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/tortoise.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/tortoise.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/tortoise.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/tortoise.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/vpa-Monitor.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/vpa-Monitor.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-no-hpa-and-add-horizontal/before/vpa-Monitor.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/deployment.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/deployment.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/deployment.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/deployment.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/hpa.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/hpa.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/hpa.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/hpa.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/tortoise.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/tortoise.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/tortoise.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/tortoise.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/vpa-Monitor.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/vpa-Monitor.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/after/vpa-Monitor.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/deployment.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/deployment.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/deployment.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/deployment.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/hpa.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/hpa.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/hpa.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/hpa.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/tortoise.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/tortoise.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/tortoise.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/tortoise.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/vpa-Monitor.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/vpa-Monitor.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal-2/before/vpa-Monitor.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/after/deployment.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/after/deployment.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/after/deployment.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/after/deployment.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/after/tortoise.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/after/tortoise.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/after/tortoise.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/after/tortoise.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/after/vpa-Monitor.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/after/vpa-Monitor.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/after/vpa-Monitor.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/before/deployment.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/before/deployment.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/before/deployment.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/before/deployment.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/before/hpa.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/before/hpa.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/before/hpa.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/before/hpa.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/before/tortoise.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/before/tortoise.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/before/tortoise.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/before/tortoise.yaml diff --git a/controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/before/vpa-Monitor.yaml b/internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/mutable-autoscalingpolicy-remove-horizontal/before/vpa-Monitor.yaml rename to internal/controller/testdata/mutable-autoscalingpolicy-remove-horizontal/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-istio-enabled-pod-working/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-istio-enabled-pod-working/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-istio-enabled-pod-working/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-istio-enabled-pod-working/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-istio-enabled-pod-working/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-istio-enabled-pod-working/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-istio-enabled-pod-working/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-istio-enabled-pod-working/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-istio-enabled-pod-working/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-istio-enabled-pod-working/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-istio-enabled-pod-working/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-istio-enabled-pod-working/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-istio-enabled-pod-working/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-istio-enabled-pod-working/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-istio-enabled-pod-working/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-istio-enabled-pod-working/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-istio-enabled-pod-working/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-off/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-all-vertical/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-during-emergency/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-emergency-started/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-one-off/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-suggested-too-small/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-working/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-working/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-working/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-working/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-working/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-working/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-working/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-working/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-working/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-working/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-working/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-working/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-working/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-working/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-multiple-containers-pod-working/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-multiple-containers-pod-working/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-multiple-containers-pod-working/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-backtonormal/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-backtonormal/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-dryrun/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-dryrun/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-dryrun/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-dryrun/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-dryrun/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-dryrun/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-dryrun/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-dryrun/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-dryrun/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-dryrun/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-dryrun/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-dryrun/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-dryrun/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-dryrun/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-dryrun/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-dryrun/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-dryrun/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-during-emergency/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-during-emergency/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-emergency-started/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-emergency-started/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data-finished/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-gathering-data/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-gathering-data/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-hpa-changed/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-initializing/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-initializing/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-initializing/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-initializing/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-initializing/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-initializing/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-initializing/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-initializing/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-initializing/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-initializing/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-initializing/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-initializing/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-initializing/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-initializing/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-initializing/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-partly-working/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-partly-working/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-partly-working/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-partly-working/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-partly-working/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-partly-working/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-partly-working/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-partly-working/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-partly-working/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-partly-working/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-partly-working/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-partly-working/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-partly-working/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-partly-working/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-partly-working/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-partly-working/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-partly-working/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-too-big/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-too-big/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-too-big/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-too-big/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-too-big/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-too-big/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-too-big/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-too-big/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-too-big/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-too-big/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-too-big/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-too-big/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-too-big/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-too-big/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-too-big/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-too-big/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-too-big/before/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-working/after/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-working/after/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-working/after/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-working/after/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-working/after/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-working/after/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-working/after/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-working/after/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-working/after/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-working/after/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-working/after/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-working/after/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-working/after/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-working/after/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-working/after/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-working/after/vpa-Monitor.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-working/before/deployment.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-working/before/deployment.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-working/before/deployment.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-working/before/deployment.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-working/before/hpa.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-working/before/hpa.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-working/before/hpa.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-working/before/hpa.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-working/before/tortoise.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-working/before/tortoise.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-working/before/tortoise.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-working/before/tortoise.yaml diff --git a/controllers/testdata/reconcile-for-the-single-container-pod-working/before/vpa-Monitor.yaml b/internal/controller/testdata/reconcile-for-the-single-container-pod-working/before/vpa-Monitor.yaml similarity index 100% rename from controllers/testdata/reconcile-for-the-single-container-pod-working/before/vpa-Monitor.yaml rename to internal/controller/testdata/reconcile-for-the-single-container-pod-working/before/vpa-Monitor.yaml diff --git a/controllers/tortoise_controller.go b/internal/controller/tortoise_controller.go similarity index 99% rename from controllers/tortoise_controller.go rename to internal/controller/tortoise_controller.go index 5770d647..f08fe9f6 100644 --- a/controllers/tortoise_controller.go +++ b/internal/controller/tortoise_controller.go @@ -23,7 +23,7 @@ SOFTWARE. */ -package controllers +package controller import ( "context" diff --git a/controllers/tortoise_controller_test.go b/internal/controller/tortoise_controller_test.go similarity index 99% rename from controllers/tortoise_controller_test.go rename to internal/controller/tortoise_controller_test.go index 38ad1468..72fd16a9 100644 --- a/controllers/tortoise_controller_test.go +++ b/internal/controller/tortoise_controller_test.go @@ -1,4 +1,4 @@ -package controllers +package controller import ( "context" @@ -233,9 +233,8 @@ func removeUnnecessaryFields(rawdata []byte) ([]byte, error) { func startController(ctx context.Context) func() { mgr, err := ctrl.NewManager(cfg, ctrl.Options{ - Scheme: scheme, - LeaderElection: false, - MetricsBindAddress: "0", + Scheme: scheme, + LeaderElection: false, }) Expect(err).ShouldNot(HaveOccurred())