From a6f74f3198bb4578139a433eb3036bb01827d1ea Mon Sep 17 00:00:00 2001 From: ZverGuy Date: Tue, 14 Apr 2026 14:06:29 +0300 Subject: [PATCH] refactor(controller): remove s3-buckets count resource from bucket workloads Bucket existence is already tracked via LifetimeHours. The s3-buckets count resource produced a meaningless "s3-buckets-Hours" fallback type in billing. Only storage size metrics (s3-storage-bytes, s3-physical-storage-bytes) are now set on bucket Workloads. Co-Authored-By: Claude Signed-off-by: ZverGuy --- .../controller/workloadmonitor_controller.go | 1 - .../workloadmonitor_controller_test.go | 20 +++---------------- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/internal/controller/workloadmonitor_controller.go b/internal/controller/workloadmonitor_controller.go index 61fe8a99..f1f64f29 100644 --- a/internal/controller/workloadmonitor_controller.go +++ b/internal/controller/workloadmonitor_controller.go @@ -230,7 +230,6 @@ func (r *WorkloadMonitorReconciler) reconcileBucketClaimForMonitor( } resources := make(map[string]resource.Quantity) - resources["s3-buckets"] = resource.MustParse("1") // Query actual bucket sizes from SeaweedFS metrics via Prometheus. // The monitoring endpoint is resolved from the namespace label diff --git a/internal/controller/workloadmonitor_controller_test.go b/internal/controller/workloadmonitor_controller_test.go index c78efd18..71294927 100644 --- a/internal/controller/workloadmonitor_controller_test.go +++ b/internal/controller/workloadmonitor_controller_test.go @@ -9,7 +9,6 @@ import ( cozyv1alpha1 "github.com/cozystack/cozystack/api/v1alpha1" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" @@ -264,14 +263,6 @@ func TestReconcileBucketClaimCreatesWorkload(t *testing.T) { if !workload.Status.Operational { t.Error("expected Operational=true for ready BucketClaim") } - - qty, ok := workload.Status.Resources["s3-buckets"] - if !ok { - t.Fatal("expected s3-buckets resource to be set") - } - if qty.Cmp(resource.MustParse("1")) != 0 { - t.Errorf("expected s3-buckets=1, got %s", qty.String()) - } } func TestReconcileBucketClaimNotReady(t *testing.T) { @@ -552,16 +543,11 @@ func TestReconcileBucketClaimRequeuesWhenBucketsExist(t *testing.T) { t.Fatalf("expected Workload to be created, got error: %v", err) } - // Without monitoring label on namespace, only s3-buckets should be set (no size metrics) + // Without monitoring label on namespace, no size metrics should be set if _, ok := workload.Status.Resources["s3-storage-bytes"]; ok { t.Error("expected no s3-storage-bytes when monitoring is not configured") } - - bucketsQty, ok := workload.Status.Resources["s3-buckets"] - if !ok { - t.Fatal("expected s3-buckets resource to be set") - } - if bucketsQty.Cmp(resource.MustParse("1")) != 0 { - t.Errorf("expected s3-buckets=1, got %s", bucketsQty.String()) + if len(workload.Status.Resources) != 0 { + t.Errorf("expected empty resources without monitoring, got %v", workload.Status.Resources) } }