77 "strings"
88
99 "github.com/go-logr/logr"
10- "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
1110 toolscache "k8s.io/client-go/tools/cache"
1211
1312 "github.com/hsnlab/dcontroller/pkg/cache"
@@ -253,8 +252,9 @@ func (eng *defaultEngine) evalStage(e *expression.Expression, u unstruct) ([]uns
253252
254253 // @demux is one to many
255254 case "@unwind" , "@demux" :
256- if _ , err := Normalize (eng , u ); err != nil {
257- return nil , errors .New ("@demux requires a valid .metadata.name" )
255+ name , err := expression .GetJSONPathExp ("$.metadata.name" , u )
256+ if err != nil {
257+ return nil , errors .New ("@valid .metadata.name required" )
258258 }
259259
260260 arg , err := e .Arg .Evaluate (expression.EvalCtx {Object : u , Log : eng .log })
@@ -275,19 +275,6 @@ func (eng *defaultEngine) evalStage(e *expression.Expression, u unstruct) ([]uns
275275 return nil , errors .New ("could not deepcopy object content" )
276276 }
277277
278- // update the index stack
279- stack , ok , err := unstructured .NestedSlice (v , "metadata" , demuxIndexStack )
280- if err != nil {
281- return nil , fmt .Errorf ("@demux: cannot get index stack: %w" , err )
282- }
283- if ! ok {
284- stack = []any {}
285- }
286- stack = append (stack , int64 (i ))
287- if err := unstructured .SetNestedSlice (v , stack , "metadata" , demuxIndexStack ); err != nil {
288- return nil , fmt .Errorf ("@demux: cannot set index: %w" , err )
289- }
290-
291278 // the elem to the corresponding jsonpath
292279 jp , err := e .Arg .GetLiteralString ()
293280 if err != nil {
@@ -299,6 +286,11 @@ func (eng *defaultEngine) evalStage(e *expression.Expression, u unstruct) ([]uns
299286 return nil , err
300287 }
301288
289+ // add index to name
290+ if err := expression .SetJSONPathExp ("$.metadata.name" , fmt .Sprintf ("%s-%d" , name , i ), v ); err != nil {
291+ return nil , fmt .Errorf ("could add index to .metadata.name" )
292+ }
293+
302294 v , err = expression .AsObject (v )
303295 if err != nil {
304296 return nil , err
0 commit comments