From 0af8cb6304c7cb44d124b4a9b860590ad3123604 Mon Sep 17 00:00:00 2001
From: Fabian Seidl <fabian.seidl@h-da.de>
Date: Fri, 11 Nov 2022 11:25:52 +0000
Subject: [PATCH] Fix issue when trying to access empty gnmi notification in
 CLI

See merge request danet/gosdn!398
---
 cli/cmd/networkElementGet.go | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/cli/cmd/networkElementGet.go b/cli/cmd/networkElementGet.go
index af9a45a3c..1635f140f 100644
--- a/cli/cmd/networkElementGet.go
+++ b/cli/cmd/networkElementGet.go
@@ -69,14 +69,18 @@ The network element UUID and request path must be specified as a positional argu
 			panel1 := pterm.DefaultBox.WithTitle("Timestamp:").Sprint(n.GetTimestamp())
 			panel2 := pterm.DefaultBox.WithTitle("Requested Path:").Sprint(args[1])
 
-			val := n.Update[0].GetVal()
-			switch valTyped := val.GetValue().(type) {
-			case *gpb.TypedValue_JsonIetfVal:
-				panel3 = pterm.DefaultBox.WithTitle("Update:").Sprint(string(valTyped.JsonIetfVal))
-			case *gpb.TypedValue_JsonVal:
-				panel3 = pterm.DefaultBox.WithTitle("Update:").Sprint(string(valTyped.JsonVal))
-			default:
-				panel3 = pterm.DefaultBox.WithTitle("Update:").Sprint(protojson.Format(val))
+			if len(n.Update) == 0 {
+				panel3 = pterm.DefaultBox.WithTitle("Update:").Sprint("empty value")
+			} else {
+				val := n.Update[0].GetVal()
+				switch valTyped := val.GetValue().(type) {
+				case *gpb.TypedValue_JsonIetfVal:
+					panel3 = pterm.DefaultBox.WithTitle("Update:").Sprint(string(valTyped.JsonIetfVal))
+				case *gpb.TypedValue_JsonVal:
+					panel3 = pterm.DefaultBox.WithTitle("Update:").Sprint(string(valTyped.JsonVal))
+				default:
+					panel3 = pterm.DefaultBox.WithTitle("Update:").Sprint(protojson.Format(val))
+				}
 			}
 
 			panels, _ := pterm.DefaultPanel.WithPanels(pterm.Panels{
-- 
GitLab