From 2f6470a399eaeb7d0e92672700ff5a7cb3e547a7 Mon Sep 17 00:00:00 2001
From: Malte Bauch <malte.bauch@h-da.de>
Date: Fri, 19 Jul 2024 11:08:27 +0000
Subject: [PATCH] Add case for API_OPERATION_REPLACE within plugins
 ValidateChange method

See merge request danet/gosdn!968
---
 plugins/sdk/deviceModel.go | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/plugins/sdk/deviceModel.go b/plugins/sdk/deviceModel.go
index 8aec7a59d..710ee23dd 100644
--- a/plugins/sdk/deviceModel.go
+++ b/plugins/sdk/deviceModel.go
@@ -241,13 +241,21 @@ func (d *DeviceModel) ValidateChange(operation mnepb.ApiOperation, path *gpb.Pat
 	d.mu.RUnlock()
 
 	switch operation {
-	case mnepb.ApiOperation_API_OPERATION_UPDATE, mnepb.ApiOperation_API_OPERATION_REPLACE:
+	case mnepb.ApiOperation_API_OPERATION_DELETE:
+		if err := ytypes.DeleteNode(d.schema.RootSchema(), modelCopy, path); err != nil {
+			return nil, err
+		}
+	case mnepb.ApiOperation_API_OPERATION_REPLACE:
+		if err := ytypes.DeleteNode(d.schema.RootSchema(), modelCopy, path); err != nil {
+			return nil, err
+		}
 		opts := []ytypes.SetNodeOpt{&ytypes.InitMissingElements{}, &ytypes.TolerateJSONInconsistencies{}, &ytypes.IgnoreExtraFields{}}
 		if err := ytypes.SetNode(d.schema.RootSchema(), modelCopy, path, value, opts...); err != nil {
 			return nil, err
 		}
-	case mnepb.ApiOperation_API_OPERATION_DELETE:
-		if err := ytypes.DeleteNode(d.schema.RootSchema(), modelCopy, path); err != nil {
+	case mnepb.ApiOperation_API_OPERATION_UPDATE:
+		opts := []ytypes.SetNodeOpt{&ytypes.InitMissingElements{}, &ytypes.TolerateJSONInconsistencies{}, &ytypes.IgnoreExtraFields{}}
+		if err := ytypes.SetNode(d.schema.RootSchema(), modelCopy, path, value, opts...); err != nil {
 			return nil, err
 		}
 	default:
-- 
GitLab