From 574da4a43729a5f1a04e517a64f3198f727c1324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Sterba?= <andre.sterba@stud.h-da.de> Date: Wed, 20 Jul 2022 16:39:32 +0200 Subject: [PATCH] Fix processing delete response --- controller/nucleus/gnmi_transport.go | 38 +++++++++++++--------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/controller/nucleus/gnmi_transport.go b/controller/nucleus/gnmi_transport.go index d430a392e..beb213b9e 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 -- GitLab