diff --git a/controller/nucleus/gnmi_transport.go b/controller/nucleus/gnmi_transport.go index d430a392e0ea313f2ce201434ff3dd8894016bee..beb213b9e20de6f1f01f8b1e25e270d9a594d6cc 100644 --- a/controller/nucleus/gnmi_transport.go +++ b/controller/nucleus/gnmi_transport.go @@ -314,29 +314,25 @@ func handleProcessResponseErrors(errs []error) error { return fmt.Errorf("encountered %v errors during response processing\n%v", len(errs), errs) } -func (g *Gnmi) processResponseDeletes(deletes []*gpb.Path, root ygot.ValidatedGoStruct, s *ytypes.Schema) error { - errs := make([]error, 0) - - for _, path := range deletes { - if err := ytypes.DeleteNode(s.RootSchema(), root, path); err != nil { - errs = append(errs, err) - } - modelAsString, _ := ygot.EmitJSON(root, &ygot.EmitJSONConfig{ - Format: ygot.RFC7951, - Indent: "", - SkipValidation: true, - RFC7951Config: &ygot.RFC7951JSONConfig{ - AppendModuleName: true, - }}) - if err := g.Unmarshal([]byte(modelAsString), path, root); err != nil { - errs = append(errs, err) - } - - log.Error(root) +func (g *Gnmi) processResponseDeletes(deletes []*gpb.Path, deviceModel ygot.ValidatedGoStruct, rootSchema *ytypes.Schema) error { + if err := ytypes.DeleteNode(rootSchema.RootSchema(), deviceModel, deletes[0]); err != nil { + return err + } + modelAsString, _ := ygot.EmitJSON(deviceModel, &ygot.EmitJSONConfig{ + Format: ygot.RFC7951, + Indent: "", + SkipValidation: true, + RFC7951Config: &ygot.RFC7951JSONConfig{ + AppendModuleName: true, + }}) + + rootPath, err := ygot.StringToStructuredPath("/") + if err != nil { + return err } - if len(errs) != 0 { - return handleProcessResponseErrors(errs) + if err := g.Unmarshal([]byte(modelAsString), rootPath, deviceModel); err != nil { + return err } return nil