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 6f8ab26c..464803d4 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" @@ -92,7 +93,27 @@ 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()) +} + +// SetObjectPrefix sets prefix for object name. +func (op *createOperation) SetObjectPrefix(prefix string) { + u, err := toUnstructured(op.object) + if err != nil { + return + } + + name := u.GetName() + if strings.HasPrefix(name, prefix+"-") { + return + } + + u.SetName(fmt.Sprintf("%s-%s", prefix, name)) + op.object = u } func (op *createOperation) WithSubresource(subresource string) { @@ -127,6 +148,15 @@ func (op *deleteOperation) WithSubresource(subresource string) { op.subresource = subresource } +// SetObjectPrefix sets prefix for object name. +func (op *deleteOperation) SetObjectPrefix(prefix string) { + if strings.HasPrefix(op.name, prefix+"-") { + return + } + + op.name = fmt.Sprintf("%s-%s", prefix, op.name) +} + type patchOperation struct { // Object coordinates for patch and delete. apiVersion string @@ -150,6 +180,15 @@ func (op *patchOperation) Description() string { return fmt.Sprintf("Filter object %s/%s/%s/%s", op.apiVersion, op.kind, op.namespace, op.name) } +// SetObjectPrefix sets prefix for object name. +func (op *patchOperation) SetObjectPrefix(prefix string) { + if strings.HasPrefix(op.name, prefix+"-") { + return + } + + op.name = fmt.Sprintf("%s-%s", prefix, op.name) +} + func (op *patchOperation) hasFilterFn() bool { return op.filterFunc != nil }