-
Notifications
You must be signed in to change notification settings - Fork 88
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Update gNMI proto encoding, remove decimal64 #151
Conversation
Would it be possible to reference examples when choosing the different enum encodings? |
this redefines how PROTO encoding should be use in non backwards compatible manner (iso using any_val use scalar values). |
We can look to add examples encodings. This would be a backward incompatible change according to the existing wording. Are there existing implementations using the any_val today? I am not aware of any. One of the main downsides of any_val is that it will embed a full path to the proto definition for every instance of the any_val message, significantly increasing the overhead of delivering such a value. We have an ongoing discussion on an alternative that would eliminate this overhead that we are awaiting real need to codify in the specification. It certainly would be possible to use a different enum name if necessary. We are trying to clarify and clean up the document to remove unimplemented specifications. |
Carl, Thanks for your response. many thanks! Miro |
Hi Miro, One question -- today, we were intending To allow the subtree serialisation then we had a field ( A few questions:
Cheers, |
Hi Rob, yes we use protobuf_bytes in "atomic" fashion. What I mean is that all leafs sent in a single notification have been collected at the same time per definition. If this would not be case, they would be sent as separate notifications. to answer your remaining questions:
I hope this answers your question. If not please let me know. many thanks! Miro |
Miro, Apologies -- I typoed If I understand you right, you're essentially aggregating multiple values together in a manner that does not consider either How do you tell whether the values can be aggregated -- is it based on the underlying schema (e.g.., OpenConfig's If we create a new enum type here that is specifically "scalar-only Does this make sense? r. |
Rob, Carl, I have not seen response from Miro to Rob’s last comment, but since the same topic has continued to surface with other vendors, I wanted to provide some additional comparisons of observed implementations and comments as I don’t believe another enum type is required or desired when following the existing specification controls provide the desired results. An item that has been observed across implementations is that various aggregation approaches have been implemented despite the fact that “allow_aggregration” has never been set. In fact, the current state of the yang modules suggests that aggregation is not technically allowed due to the on the lack of application of the “telemetry-atomic” definition. I have only found the use of atomic within the oc-message module for syslog. While looking through different implementations it also became evident that the use of json encoding was not adhering to the same allow_aggregation and atomic controls if the aggregation behavior should be independent of the encoding used for streaming. The description and examples in 2.3.1 of the gNMI specification for json provide examples of serialization as if is aggregation was allowed and the schema had defined atomic. These examples appear to have been used by many as the specification to encode using json where aggregation and atomic had been defined. There have also been many discussions, comparison and confusion regarding comparison of proto and json that are now subject to question as they compared aggregation using json with scalar TypedValues using proto. A remaining question is then the expectation for using protobuf.any encoding. If this is to remain an option, I might suggest adding it as part of an oc-extension to be exchanged using the Capabilities exchange and included in the Subscribe if accepted by the client and set by the target if aggregation and atomic allow for its use without need for yet another enum to distinguish between bytes and any. Thanks for your consideration. Eric |
Eric, Rob, Carl, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, couple of minor changes.
Co-authored-by: Rob Shakir <robjs@google.com>
Co-authored-by: Rob Shakir <robjs@google.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good to merge as per previous approval :-)
References Decimal64 deprecation document in #150