From ab58820f778271ed1073fbfb07f90ff2b5d75070 Mon Sep 17 00:00:00 2001 From: Sinelnikov Michail Date: Wed, 4 Feb 2026 17:20:06 +0300 Subject: [PATCH 1/6] prefix object patch Signed-off-by: Sinelnikov Michail --- pkg/kube/object_patch/operation.go | 67 +++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/pkg/kube/object_patch/operation.go b/pkg/kube/object_patch/operation.go index 6f8ab26c..911f363b 100644 --- a/pkg/kube/object_patch/operation.go +++ b/pkg/kube/object_patch/operation.go @@ -92,7 +92,43 @@ type createOperation struct { } func (op *createOperation) Description() string { - return "Create object" + u, err := toUnstructured(op.object) + if err != nil { + return "Create object (unknown)" + } + return fmt.Sprintf("Create object %s/%s/%s/%s", u.GetAPIVersion(), u.GetKind(), u.GetNamespace(), u.GetName()) +} + +func (op *createOperation) GetName() string { + u, err := toUnstructured(op.object) + if err != nil { + return "" + } + return u.GetName() +} + +func (op *createOperation) SetName(name string) { + u, err := toUnstructured(op.object) + if err != nil { + return + } + u.SetName(name) + op.object = u +} + +func (op *createOperation) SetNamePrefix(prefix string) { + name := op.GetName() + if name != "" { + op.SetName(prefix + name) + } +} + +func (op *createOperation) GetNamespace() string { + u, err := toUnstructured(op.object) + if err != nil { + return "" + } + return u.GetNamespace() } func (op *createOperation) WithSubresource(subresource string) { @@ -127,6 +163,22 @@ func (op *deleteOperation) WithSubresource(subresource string) { op.subresource = subresource } +func (op *deleteOperation) GetName() string { + return op.name +} + +func (op *deleteOperation) SetName(name string) { + op.name = name +} + +func (op *deleteOperation) SetNamePrefix(prefix string) { + op.name = prefix + op.name +} + +func (op *deleteOperation) GetNamespace() string { + return op.namespace +} + type patchOperation struct { // Object coordinates for patch and delete. apiVersion string @@ -146,6 +198,19 @@ type patchOperation struct { ignoreHookError bool } +func (op *patchOperation) GetName() string { + return op.name +} +func (op *patchOperation) SetName(name string) { + op.name = name +} +func (op *patchOperation) SetNamePrefix(prefix string) { + op.name = prefix + op.name +} +func (op *patchOperation) GetNamespace() string { + return op.namespace +} + func (op *patchOperation) Description() string { return fmt.Sprintf("Filter object %s/%s/%s/%s", op.apiVersion, op.kind, op.namespace, op.name) } From fabda4a922503e55e57140d172f66cf033f8f472 Mon Sep 17 00:00:00 2001 From: Sinelnikov Michail Date: Wed, 4 Feb 2026 17:39:05 +0300 Subject: [PATCH 2/6] fix Signed-off-by: Sinelnikov Michail --- pkg/kube/object_patch/patch_collector.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/kube/object_patch/patch_collector.go b/pkg/kube/object_patch/patch_collector.go index 4b6e27ff..1626b54b 100644 --- a/pkg/kube/object_patch/patch_collector.go +++ b/pkg/kube/object_patch/patch_collector.go @@ -1,6 +1,8 @@ package object_patch import ( + "io" + sdkpkg "github.com/deckhouse/module-sdk/pkg" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) @@ -151,3 +153,8 @@ func (dop *PatchCollector) PatchWithJSON(jsonPatch any, apiVersion string, kind func (dop *PatchCollector) PatchWithMerge(mergePatch any, apiVersion string, kind string, namespace string, name string, opts ...sdkpkg.PatchCollectorOption) { dop.add(NewMergePatchOperation(mergePatch, apiVersion, kind, namespace, name, opts...)) } + +func (dop *PatchCollector) WriteOutput(w io.Writer) error { + //TODO implement me + return nil +} From be1a9ab7648c7d9e72a2d6256895e26946d4e33c Mon Sep 17 00:00:00 2001 From: Sinelnikov Michail Date: Mon, 16 Feb 2026 12:58:26 +0300 Subject: [PATCH 3/6] bump Signed-off-by: Sinelnikov Michail --- pkg/kube/object_patch/operation.go | 3 +++ pkg/kube/object_patch/patch_collector.go | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/kube/object_patch/operation.go b/pkg/kube/object_patch/operation.go index 911f363b..02d82137 100644 --- a/pkg/kube/object_patch/operation.go +++ b/pkg/kube/object_patch/operation.go @@ -201,12 +201,15 @@ type patchOperation struct { func (op *patchOperation) GetName() string { return op.name } + func (op *patchOperation) SetName(name string) { op.name = name } + func (op *patchOperation) SetNamePrefix(prefix string) { op.name = prefix + op.name } + func (op *patchOperation) GetNamespace() string { return op.namespace } diff --git a/pkg/kube/object_patch/patch_collector.go b/pkg/kube/object_patch/patch_collector.go index 1626b54b..5fd576ef 100644 --- a/pkg/kube/object_patch/patch_collector.go +++ b/pkg/kube/object_patch/patch_collector.go @@ -154,7 +154,7 @@ func (dop *PatchCollector) PatchWithMerge(mergePatch any, apiVersion string, kin dop.add(NewMergePatchOperation(mergePatch, apiVersion, kind, namespace, name, opts...)) } -func (dop *PatchCollector) WriteOutput(w io.Writer) error { - //TODO implement me +func (dop *PatchCollector) WriteOutput(_ io.Writer) error { + // TODO implement me return nil } From b4a6df535521619ea84a7209e838d9e063611b04 Mon Sep 17 00:00:00 2001 From: Stepan Paksashvili Date: Wed, 4 Mar 2026 19:14:40 +0300 Subject: [PATCH 4/6] [fix] patch prefix Signed-off-by: Stepan Paksashvili --- go.mod | 2 +- go.sum | 2 + pkg/kube/object_patch/operation.go | 73 +++++++----------------- pkg/kube/object_patch/patch_collector.go | 7 --- 4 files changed, 25 insertions(+), 59 deletions(-) diff --git a/go.mod b/go.mod index dd3637c3..31c066fe 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( replace github.com/go-openapi/validate => github.com/flant/go-openapi-validate v0.19.12-flant.0 require ( - github.com/deckhouse/module-sdk v0.10.0 + github.com/deckhouse/module-sdk v0.10.2-0.20260304160619-6b32d3428382 github.com/gojuno/minimock/v3 v3.4.7 github.com/itchyny/gojq v0.12.17 github.com/muesli/termenv v0.16.0 diff --git a/go.sum b/go.sum index 3898cd4e..df68a34b 100644 --- a/go.sum +++ b/go.sum @@ -39,6 +39,8 @@ github.com/deckhouse/deckhouse/pkg/metrics-storage v0.3.0 h1:xZvbKuexrSQGEw6CB4n github.com/deckhouse/deckhouse/pkg/metrics-storage v0.3.0/go.mod h1:Rz++SzCLkFW03WGgftnn91TimGU2shiKb5S/YuxcBuE= github.com/deckhouse/module-sdk v0.10.0 h1:VPhYvMVQ3pT32I2WL1ITtQyrYdpiUR0RocLw7S4TfNg= github.com/deckhouse/module-sdk v0.10.0/go.mod h1:Z1jfmd0fICoYww0daMijWAU+OZTxeJUXfMciKKuYAYA= +github.com/deckhouse/module-sdk v0.10.2-0.20260304160619-6b32d3428382 h1:EjnN5+q6/FI1N+JmPpRz7vm/Vfz8nW7FOT2/TtwS07Y= +github.com/deckhouse/module-sdk v0.10.2-0.20260304160619-6b32d3428382/go.mod h1:Z1jfmd0fICoYww0daMijWAU+OZTxeJUXfMciKKuYAYA= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= diff --git a/pkg/kube/object_patch/operation.go b/pkg/kube/object_patch/operation.go index 02d82137..cd5f08e6 100644 --- a/pkg/kube/object_patch/operation.go +++ b/pkg/kube/object_patch/operation.go @@ -3,6 +3,7 @@ package object_patch import ( "fmt" "log/slog" + "strings" "github.com/deckhouse/deckhouse/pkg/log" sdkpkg "github.com/deckhouse/module-sdk/pkg" @@ -99,36 +100,20 @@ func (op *createOperation) Description() string { return fmt.Sprintf("Create object %s/%s/%s/%s", u.GetAPIVersion(), u.GetKind(), u.GetNamespace(), u.GetName()) } -func (op *createOperation) GetName() string { - u, err := toUnstructured(op.object) - if err != nil { - return "" - } - return u.GetName() -} - -func (op *createOperation) SetName(name string) { +// SetObjectPrefix sets prefix for object name. +func (op *createOperation) SetObjectPrefix(prefix string) { u, err := toUnstructured(op.object) if err != nil { return } - u.SetName(name) - op.object = u -} -func (op *createOperation) SetNamePrefix(prefix string) { - name := op.GetName() - if name != "" { - op.SetName(prefix + name) + name := u.GetName() + if strings.HasPrefix(name, prefix) { + return } -} -func (op *createOperation) GetNamespace() string { - u, err := toUnstructured(op.object) - if err != nil { - return "" - } - return u.GetNamespace() + u.SetName(fmt.Sprintf("%s-%s", prefix, name)) + op.object = u } func (op *createOperation) WithSubresource(subresource string) { @@ -163,20 +148,13 @@ func (op *deleteOperation) WithSubresource(subresource string) { op.subresource = subresource } -func (op *deleteOperation) GetName() string { - return op.name -} - -func (op *deleteOperation) SetName(name string) { - op.name = name -} - -func (op *deleteOperation) SetNamePrefix(prefix string) { - op.name = prefix + op.name -} +// SetObjectPrefix sets prefix for object name. +func (op *deleteOperation) SetObjectPrefix(prefix string) { + if strings.HasPrefix(op.name, prefix) { + return + } -func (op *deleteOperation) GetNamespace() string { - return op.namespace + op.name = fmt.Sprintf("%s-%s", prefix, op.name) } type patchOperation struct { @@ -198,24 +176,17 @@ type patchOperation struct { ignoreHookError bool } -func (op *patchOperation) GetName() string { - return op.name -} - -func (op *patchOperation) SetName(name string) { - op.name = name -} - -func (op *patchOperation) SetNamePrefix(prefix string) { - op.name = prefix + op.name +func (op *patchOperation) Description() string { + return fmt.Sprintf("Filter object %s/%s/%s/%s", op.apiVersion, op.kind, op.namespace, op.name) } -func (op *patchOperation) GetNamespace() string { - return op.namespace -} +// SetObjectPrefix sets prefix for object name. +func (op *patchOperation) SetObjectPrefix(prefix string) { + if strings.HasPrefix(op.name, prefix) { + return + } -func (op *patchOperation) Description() string { - return fmt.Sprintf("Filter object %s/%s/%s/%s", op.apiVersion, op.kind, op.namespace, op.name) + op.name = fmt.Sprintf("%s-%s", prefix, op.name) } func (op *patchOperation) hasFilterFn() bool { diff --git a/pkg/kube/object_patch/patch_collector.go b/pkg/kube/object_patch/patch_collector.go index 5fd576ef..4b6e27ff 100644 --- a/pkg/kube/object_patch/patch_collector.go +++ b/pkg/kube/object_patch/patch_collector.go @@ -1,8 +1,6 @@ package object_patch import ( - "io" - sdkpkg "github.com/deckhouse/module-sdk/pkg" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) @@ -153,8 +151,3 @@ func (dop *PatchCollector) PatchWithJSON(jsonPatch any, apiVersion string, kind func (dop *PatchCollector) PatchWithMerge(mergePatch any, apiVersion string, kind string, namespace string, name string, opts ...sdkpkg.PatchCollectorOption) { dop.add(NewMergePatchOperation(mergePatch, apiVersion, kind, namespace, name, opts...)) } - -func (dop *PatchCollector) WriteOutput(_ io.Writer) error { - // TODO implement me - return nil -} From 74a93bb32277cf9a0e7f7be8a38da261850fac2b Mon Sep 17 00:00:00 2001 From: Sinelnikov Michail Date: Thu, 5 Mar 2026 17:20:05 +0300 Subject: [PATCH 5/6] fix bug Signed-off-by: Sinelnikov Michail --- pkg/kube/object_patch/operation.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/kube/object_patch/operation.go b/pkg/kube/object_patch/operation.go index cd5f08e6..b95afe2f 100644 --- a/pkg/kube/object_patch/operation.go +++ b/pkg/kube/object_patch/operation.go @@ -108,7 +108,7 @@ func (op *createOperation) SetObjectPrefix(prefix string) { } name := u.GetName() - if strings.HasPrefix(name, prefix) { + if strings.HasPrefix(name, prefix+"-") { return } @@ -148,9 +148,12 @@ func (op *deleteOperation) WithSubresource(subresource string) { op.subresource = subresource } +// obj.name = test +// prefix = test + // SetObjectPrefix sets prefix for object name. func (op *deleteOperation) SetObjectPrefix(prefix string) { - if strings.HasPrefix(op.name, prefix) { + if strings.HasPrefix(op.name, prefix+"-") { return } @@ -182,7 +185,7 @@ func (op *patchOperation) Description() string { // SetObjectPrefix sets prefix for object name. func (op *patchOperation) SetObjectPrefix(prefix string) { - if strings.HasPrefix(op.name, prefix) { + if strings.HasPrefix(op.name, prefix+"-") { return } From dc71761c0d3599d7a2481ddaa61fced584d88387 Mon Sep 17 00:00:00 2001 From: Sinelnikov Michail Date: Thu, 5 Mar 2026 19:55:11 +0300 Subject: [PATCH 6/6] fix Signed-off-by: Sinelnikov Michail --- pkg/kube/object_patch/operation.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkg/kube/object_patch/operation.go b/pkg/kube/object_patch/operation.go index b95afe2f..464803d4 100644 --- a/pkg/kube/object_patch/operation.go +++ b/pkg/kube/object_patch/operation.go @@ -148,9 +148,6 @@ func (op *deleteOperation) WithSubresource(subresource string) { op.subresource = subresource } -// obj.name = test -// prefix = test - // SetObjectPrefix sets prefix for object name. func (op *deleteOperation) SetObjectPrefix(prefix string) { if strings.HasPrefix(op.name, prefix+"-") {