From 51db0f7d51d1b0ff9969ee62ce5ff3888ccb9e1e Mon Sep 17 00:00:00 2001 From: Yuji Ito Date: Mon, 15 Jan 2024 02:19:50 +0000 Subject: [PATCH] move some modules to internal dir MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since kubebuilder's layout is now Standard Go Project Layout, some modules have been re-located. Since there is no specification as to where the constants should be located, they were moved to the top directory, similar to TopoLVM. Signed-off-by: Yuji Ito --- Dockerfile | 5 ++--- cmd/run.go | 4 ++-- runners/constants.go => constants.go | 2 +- .../hooks}/persistentvolumeclaim.go | 5 +++-- .../metrics}/kubernetes_client.go | 0 .../metrics}/kubernetes_client_test.go | 0 {metrics => internal/metrics}/mertics.go | 0 .../metrics}/metrics_client.go | 0 .../metrics}/metrics_client_test.go | 0 {metrics => internal/metrics}/resizer.go | 0 {metrics => internal/metrics}/resizer_test.go | 0 .../runners}/fake_client_wrapper.go | 0 .../runners}/metrics_client.go | 2 +- .../runners}/metrics_client_test.go | 0 .../runners}/pvc_autoresizer.go | 19 ++++++++++--------- .../runners}/pvc_autoresizer_test.go | 9 +++++---- {runners => internal/runners}/suite_test.go | 3 ++- 17 files changed, 26 insertions(+), 23 deletions(-) rename runners/constants.go => constants.go (98%) rename {hooks => internal/hooks}/persistentvolumeclaim.go (94%) rename {metrics => internal/metrics}/kubernetes_client.go (100%) rename {metrics => internal/metrics}/kubernetes_client_test.go (100%) rename {metrics => internal/metrics}/mertics.go (100%) rename {metrics => internal/metrics}/metrics_client.go (100%) rename {metrics => internal/metrics}/metrics_client_test.go (100%) rename {metrics => internal/metrics}/resizer.go (100%) rename {metrics => internal/metrics}/resizer_test.go (100%) rename {runners => internal/runners}/fake_client_wrapper.go (100%) rename {runners => internal/runners}/metrics_client.go (98%) rename {runners => internal/runners}/metrics_client_test.go (100%) rename {runners => internal/runners}/pvc_autoresizer.go (91%) rename {runners => internal/runners}/pvc_autoresizer_test.go (97%) rename {runners => internal/runners}/suite_test.go (97%) diff --git a/Dockerfile b/Dockerfile index 85a47425..6c1da5e4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,10 +6,9 @@ WORKDIR /workspace COPY go.mod go.mod COPY go.sum go.sum # Copy the go source +COPY constants.go constants.go COPY cmd/ cmd/ -COPY hooks/ hooks/ -COPY metrics/ metrics/ -COPY runners/ runners/ +COPY internal/ internal/ # Build RUN CGO_ENABLED=0 go build -ldflags="-w -s" -a -o pvc-autoresizer cmd/*.go diff --git a/cmd/run.go b/cmd/run.go index 777b7110..3fbdbe60 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -4,8 +4,8 @@ import ( "net" "time" - "github.com/topolvm/pvc-autoresizer/hooks" - "github.com/topolvm/pvc-autoresizer/runners" + "github.com/topolvm/pvc-autoresizer/internal/hooks" + "github.com/topolvm/pvc-autoresizer/internal/runners" corev1 "k8s.io/api/core/v1" storagev1 "k8s.io/api/storage/v1" "k8s.io/apimachinery/pkg/runtime" diff --git a/runners/constants.go b/constants.go similarity index 98% rename from runners/constants.go rename to constants.go index b97deea9..1cbcef3d 100644 --- a/runners/constants.go +++ b/constants.go @@ -1,4 +1,4 @@ -package runners +package pvcautoresizer // AutoResizeEnabledKey is the key of flag that enables pvc-autoresizer. const AutoResizeEnabledKey = "resize.topolvm.io/enabled" diff --git a/hooks/persistentvolumeclaim.go b/internal/hooks/persistentvolumeclaim.go similarity index 94% rename from hooks/persistentvolumeclaim.go rename to internal/hooks/persistentvolumeclaim.go index 99a4754b..6df343f8 100644 --- a/hooks/persistentvolumeclaim.go +++ b/internal/hooks/persistentvolumeclaim.go @@ -7,7 +7,8 @@ import ( "net/http" "github.com/go-logr/logr" - "github.com/topolvm/pvc-autoresizer/runners" + pvcautoresizer "github.com/topolvm/pvc-autoresizer" + "github.com/topolvm/pvc-autoresizer/internal/runners" admissionv1 "k8s.io/api/admission/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/labels" @@ -35,7 +36,7 @@ func (m *persistentVolumeClaimMutator) Handle(ctx context.Context, req admission if err := m.dec.Decode(req, pvc); err != nil { return admission.Errored(http.StatusBadRequest, err) } - groupLabelKey, ok := pvc.Annotations[runners.InitialResizeGroupByAnnotation] + groupLabelKey, ok := pvc.Annotations[pvcautoresizer.InitialResizeGroupByAnnotation] if !ok || groupLabelKey == "" { return admission.Allowed("annotation not set") } diff --git a/metrics/kubernetes_client.go b/internal/metrics/kubernetes_client.go similarity index 100% rename from metrics/kubernetes_client.go rename to internal/metrics/kubernetes_client.go diff --git a/metrics/kubernetes_client_test.go b/internal/metrics/kubernetes_client_test.go similarity index 100% rename from metrics/kubernetes_client_test.go rename to internal/metrics/kubernetes_client_test.go diff --git a/metrics/mertics.go b/internal/metrics/mertics.go similarity index 100% rename from metrics/mertics.go rename to internal/metrics/mertics.go diff --git a/metrics/metrics_client.go b/internal/metrics/metrics_client.go similarity index 100% rename from metrics/metrics_client.go rename to internal/metrics/metrics_client.go diff --git a/metrics/metrics_client_test.go b/internal/metrics/metrics_client_test.go similarity index 100% rename from metrics/metrics_client_test.go rename to internal/metrics/metrics_client_test.go diff --git a/metrics/resizer.go b/internal/metrics/resizer.go similarity index 100% rename from metrics/resizer.go rename to internal/metrics/resizer.go diff --git a/metrics/resizer_test.go b/internal/metrics/resizer_test.go similarity index 100% rename from metrics/resizer_test.go rename to internal/metrics/resizer_test.go diff --git a/runners/fake_client_wrapper.go b/internal/runners/fake_client_wrapper.go similarity index 100% rename from runners/fake_client_wrapper.go rename to internal/runners/fake_client_wrapper.go diff --git a/runners/metrics_client.go b/internal/runners/metrics_client.go similarity index 98% rename from runners/metrics_client.go rename to internal/runners/metrics_client.go index c6c616ef..e464b941 100644 --- a/runners/metrics_client.go +++ b/internal/runners/metrics_client.go @@ -8,7 +8,7 @@ import ( "github.com/prometheus/client_golang/api" prometheusv1 "github.com/prometheus/client_golang/api/prometheus/v1" "github.com/prometheus/common/model" - "github.com/topolvm/pvc-autoresizer/metrics" + "github.com/topolvm/pvc-autoresizer/internal/metrics" "k8s.io/apimachinery/pkg/types" ) diff --git a/runners/metrics_client_test.go b/internal/runners/metrics_client_test.go similarity index 100% rename from runners/metrics_client_test.go rename to internal/runners/metrics_client_test.go diff --git a/runners/pvc_autoresizer.go b/internal/runners/pvc_autoresizer.go similarity index 91% rename from runners/pvc_autoresizer.go rename to internal/runners/pvc_autoresizer.go index 8e0304b1..d330f78b 100644 --- a/runners/pvc_autoresizer.go +++ b/internal/runners/pvc_autoresizer.go @@ -9,7 +9,8 @@ import ( "time" "github.com/go-logr/logr" - "github.com/topolvm/pvc-autoresizer/metrics" + pvcautoresizer "github.com/topolvm/pvc-autoresizer" + "github.com/topolvm/pvc-autoresizer/internal/metrics" corev1 "k8s.io/api/core/v1" storagev1 "k8s.io/api/storage/v1" "k8s.io/apimachinery/pkg/api/resource" @@ -166,15 +167,15 @@ func (w *pvcAutoresizer) reconcile(ctx context.Context) error { func (w *pvcAutoresizer) resize(ctx context.Context, pvc *corev1.PersistentVolumeClaim, vs *VolumeStats) error { log := w.log.WithName("resize").WithValues("namespace", pvc.Namespace, "name", pvc.Name) - threshold, err := convertSizeInBytes(pvc.Annotations[ResizeThresholdAnnotation], vs.CapacityBytes, DefaultThreshold) + threshold, err := convertSizeInBytes(pvc.Annotations[pvcautoresizer.ResizeThresholdAnnotation], vs.CapacityBytes, pvcautoresizer.DefaultThreshold) if err != nil { log.V(logLevelWarn).Info("failed to convert threshold annotation", "error", err.Error()) // lint:ignore nilerr ignores this because invalid annotations should be allowed. return nil } - annotation := pvc.Annotations[ResizeInodesThresholdAnnotation] - inodesThreshold, err := convertSize(annotation, vs.CapacityInodeSize, DefaultInodesThreshold) + annotation := pvc.Annotations[pvcautoresizer.ResizeInodesThresholdAnnotation] + inodesThreshold, err := convertSize(annotation, vs.CapacityInodeSize, pvcautoresizer.DefaultInodesThreshold) if err != nil { log.V(logLevelWarn).Info("failed to convert threshold annotation", "error", err.Error()) // lint:ignore nilerr ignores this because invalid annotations should be allowed. @@ -191,13 +192,13 @@ func (w *pvcAutoresizer) resize(ctx context.Context, pvc *corev1.PersistentVolum return nil } - increase, err := convertSizeInBytes(pvc.Annotations[ResizeIncreaseAnnotation], cap.Value(), DefaultIncrease) + increase, err := convertSizeInBytes(pvc.Annotations[pvcautoresizer.ResizeIncreaseAnnotation], cap.Value(), pvcautoresizer.DefaultIncrease) if err != nil { log.V(logLevelWarn).Info("failed to convert increase annotation", "error", err.Error()) return nil } - preCap, exist := pvc.Annotations[PreviousCapacityBytesAnnotation] + preCap, exist := pvc.Annotations[pvcautoresizer.PreviousCapacityBytesAnnotation] if exist { preCapInt64, err := strconv.ParseInt(preCap, 10, 64) if err != nil { @@ -232,7 +233,7 @@ func (w *pvcAutoresizer) resize(ctx context.Context, pvc *corev1.PersistentVolum } pvc.Spec.Resources.Requests[corev1.ResourceStorage] = *newReq - pvc.Annotations[PreviousCapacityBytesAnnotation] = strconv.FormatInt(vs.CapacityBytes, 10) + pvc.Annotations[pvcautoresizer.PreviousCapacityBytesAnnotation] = strconv.FormatInt(vs.CapacityBytes, 10) err = w.client.Update(ctx, pvc) if err != nil { metrics.KubernetesClientFailTotal.Increment() @@ -255,7 +256,7 @@ func (w *pvcAutoresizer) resize(ctx context.Context, pvc *corev1.PersistentVolum func indexByResizeEnableAnnotation(obj client.Object) []string { sc := obj.(*storagev1.StorageClass) - if val, ok := sc.Annotations[AutoResizeEnabledKey]; ok { + if val, ok := sc.Annotations[pvcautoresizer.AutoResizeEnabledKey]; ok { return []string{val} } @@ -335,7 +336,7 @@ func calcSize(valStr string, capacity int64) (int64, error) { func PvcStorageLimit(pvc *corev1.PersistentVolumeClaim) (resource.Quantity, error) { // storage limit on the annotation has precedence - if annotation, ok := pvc.Annotations[StorageLimitAnnotation]; ok && annotation != "" { + if annotation, ok := pvc.Annotations[pvcautoresizer.StorageLimitAnnotation]; ok && annotation != "" { return resource.ParseQuantity(annotation) } diff --git a/runners/pvc_autoresizer_test.go b/internal/runners/pvc_autoresizer_test.go similarity index 97% rename from runners/pvc_autoresizer_test.go rename to internal/runners/pvc_autoresizer_test.go index 67bd664b..ad95091b 100644 --- a/runners/pvc_autoresizer_test.go +++ b/internal/runners/pvc_autoresizer_test.go @@ -8,6 +8,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + pvcautoresizer "github.com/topolvm/pvc-autoresizer" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -447,18 +448,18 @@ func createPVC(ctx context.Context, ns, name, scName, threshold, inodesThreshold } if len(threshold) != 0 { - pvc.Annotations[ResizeThresholdAnnotation] = threshold + pvc.Annotations[pvcautoresizer.ResizeThresholdAnnotation] = threshold } if len(inodesThreshold) != 0 { - pvc.Annotations[ResizeInodesThresholdAnnotation] = inodesThreshold + pvc.Annotations[pvcautoresizer.ResizeInodesThresholdAnnotation] = inodesThreshold } if len(increase) != 0 { - pvc.Annotations[ResizeIncreaseAnnotation] = increase + pvc.Annotations[pvcautoresizer.ResizeIncreaseAnnotation] = increase } if limit != 0 { - pvc.Annotations[StorageLimitAnnotation] = strconv.FormatInt(limit, 10) + pvc.Annotations[pvcautoresizer.StorageLimitAnnotation] = strconv.FormatInt(limit, 10) } err := k8sClient.Create(ctx, &pvc) diff --git a/runners/suite_test.go b/internal/runners/suite_test.go similarity index 97% rename from runners/suite_test.go rename to internal/runners/suite_test.go index f5eef049..b4a73248 100644 --- a/runners/suite_test.go +++ b/internal/runners/suite_test.go @@ -12,6 +12,7 @@ import ( . "github.com/onsi/gomega" dto "github.com/prometheus/client_model/go" "github.com/prometheus/common/expfmt" + pvcautoresizer "github.com/topolvm/pvc-autoresizer" corev1 "k8s.io/api/core/v1" storagev1 "k8s.io/api/storage/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -121,7 +122,7 @@ func createStorageClass(ctx context.Context, name, provisioner string) { ObjectMeta: metav1.ObjectMeta{ Name: name, Annotations: map[string]string{ - AutoResizeEnabledKey: "true", + pvcautoresizer.AutoResizeEnabledKey: "true", }, }, Provisioner: provisioner,