From ce87e31ce24c53b7b4a4a3f7b7835649173071bb Mon Sep 17 00:00:00 2001 From: gwizdms Date: Tue, 7 Nov 2023 09:58:53 -0500 Subject: [PATCH 1/4] Update gnmi-specification.md Updated wording to clarify explicit deletion section 3.5.2.3. --- rpc/gnmi/gnmi-specification.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/rpc/gnmi/gnmi-specification.md b/rpc/gnmi/gnmi-specification.md index 04d9b38..c56c457 100644 --- a/rpc/gnmi/gnmi-specification.md +++ b/rpc/gnmi/gnmi-specification.md @@ -1682,6 +1682,13 @@ rate byte flow over an interface appearing to have adjacent spikes and dips). #### 3.5.2.3 Sending Telemetry Updates +'Notification' is a reuseable message that is used to encode data from the target to the client. +A 'Notification' carries two types of data from the data tree: +- Deleted values (delete) - a set of paths that have been removed from the +data tree. +- Updated values (update) - a set of path-value pairs indicating the path +whose value has changed in the data tree. + When an update for a subscribed telemetry path is to be sent, a `SubscribeResponse` message is sent from the target to the client, on the RPC associated with the subscription. The `update` field of the message contains a @@ -1699,6 +1706,14 @@ Where a node within the subscribed paths has been removed, the `delete` field of the `Notification` message MUST have the path of the node that has been removed appended to it. +Explicit deletion is always required to signify the removal of a leaf that is no longer +present on a target device regardless of subscription mode. Otherwise, the existence +could be ambiguous and indistinguishable from other types of faults. +Additionally, deletes are not required to be per-leaf and can be at an intermediate +branch that applies to a multitude of leaves, e.g. when removing a logical interface +in a configuration, deletes could be issued at container level branches that apply to +that interface, rather than all the individual leaves. + To replace the contents of an entire node within the tree, the target populates the `delete` field with the path of the node being removed, along with the new contents within the `update` field. From 2ed4b3442a496b815b88b97cebb9b23a39887c53 Mon Sep 17 00:00:00 2001 From: gwizdms Date: Tue, 7 Nov 2023 12:42:11 -0500 Subject: [PATCH 2/4] Update gnmi-specification.md Eliminated a proposed change. --- rpc/gnmi/gnmi-specification.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/rpc/gnmi/gnmi-specification.md b/rpc/gnmi/gnmi-specification.md index c56c457..98a4b2b 100644 --- a/rpc/gnmi/gnmi-specification.md +++ b/rpc/gnmi/gnmi-specification.md @@ -1682,13 +1682,6 @@ rate byte flow over an interface appearing to have adjacent spikes and dips). #### 3.5.2.3 Sending Telemetry Updates -'Notification' is a reuseable message that is used to encode data from the target to the client. -A 'Notification' carries two types of data from the data tree: -- Deleted values (delete) - a set of paths that have been removed from the -data tree. -- Updated values (update) - a set of path-value pairs indicating the path -whose value has changed in the data tree. - When an update for a subscribed telemetry path is to be sent, a `SubscribeResponse` message is sent from the target to the client, on the RPC associated with the subscription. The `update` field of the message contains a @@ -1709,6 +1702,7 @@ appended to it. Explicit deletion is always required to signify the removal of a leaf that is no longer present on a target device regardless of subscription mode. Otherwise, the existence could be ambiguous and indistinguishable from other types of faults. + Additionally, deletes are not required to be per-leaf and can be at an intermediate branch that applies to a multitude of leaves, e.g. when removing a logical interface in a configuration, deletes could be issued at container level branches that apply to From 0c89517308941a1e41190f5500122b955cbf2dba Mon Sep 17 00:00:00 2001 From: gwizdms Date: Mon, 5 Feb 2024 13:58:52 -0500 Subject: [PATCH 3/4] Update gnmi-specification.md Rewording after OpenConfig Community meeting call feedback. --- rpc/gnmi/gnmi-specification.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/rpc/gnmi/gnmi-specification.md b/rpc/gnmi/gnmi-specification.md index 98a4b2b..2cc0b1f 100644 --- a/rpc/gnmi/gnmi-specification.md +++ b/rpc/gnmi/gnmi-specification.md @@ -1699,9 +1699,8 @@ Where a node within the subscribed paths has been removed, the `delete` field of the `Notification` message MUST have the path of the node that has been removed appended to it. -Explicit deletion is always required to signify the removal of a leaf that is no longer -present on a target device regardless of subscription mode. Otherwise, the existence -could be ambiguous and indistinguishable from other types of faults. +Explicit deletion is required to signify the removal of a leaf that is no longer +present on a target device in ON-CHANGE subscription mode, and optional in SAMPLE subscription mode. Additionally, deletes are not required to be per-leaf and can be at an intermediate branch that applies to a multitude of leaves, e.g. when removing a logical interface From 42f7fa4f0accb51af394adb6fc3ccc1f08e969a5 Mon Sep 17 00:00:00 2001 From: gwizdms Date: Thu, 30 May 2024 09:13:49 -0400 Subject: [PATCH 4/4] Update gnmi-specification.md Added explicit deletion verbiage for TARGET-DEFINED. --- rpc/gnmi/gnmi-specification.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rpc/gnmi/gnmi-specification.md b/rpc/gnmi/gnmi-specification.md index 2cc0b1f..863845b 100644 --- a/rpc/gnmi/gnmi-specification.md +++ b/rpc/gnmi/gnmi-specification.md @@ -1707,6 +1707,10 @@ branch that applies to a multitude of leaves, e.g. when removing a logical inter in a configuration, deletes could be issued at container level branches that apply to that interface, rather than all the individual leaves. +Explicit deletion also applies to TARGET-DEFINED subscription mode. +Whereas, if the TARGET-DEFINED subscription determines the best type of delivery to be ON-CHANGE, +explicit deletion is required and if decided to be SAMPLE, deletion will be optional. + To replace the contents of an entire node within the tree, the target populates the `delete` field with the path of the node being removed, along with the new contents within the `update` field.