Proto commits in holo-routing/holo

These 8 commits are when the Protocol Buffers files have changed:

Commit:f9dbb2a
Author:Renato Westphal
Committer:Renato Westphal

daemon-grpc: introduce the `GetSchema` RPC This RPC mirrors NETCONF's get-schema operation but offers more flexibility, as it can fetch YANG submodules in addition to YANG modules. The primary use case is for a CLI program to retrieve the list of supported YANG modules at startup, then use this RPC to fetch any missing modules. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>

The documentation is generated from this commit.

Commit:277809b
Author:Renato Westphal
Committer:Renato Westphal

daemon-grpc: update `Capabilities` RPC to return supported features per module It's important to know which features are enabled or disabled, as this determines which parts of the YANG module are implemented. gNMI's `Capabilities` RPC doesn't provide this information, since OpenConfig modules typically don't use "feature" and "if-feature" statements, unlike IETF models. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>

Commit:79fb0d7
Author:Renato Westphal
Committer:Renato Westphal

grpc: add support for LYB binary YANG data format This commit updates the .proto file to allow instance data to be represented as either a string or binary data. This change is necessary because, in Rust, the `String` type cannot contain invalid UTF-8, which might be the case for LYB binary data. The introduction of the "oneof data" field increases complexity, as it introduces two possible fields to hold the data. However, this is necessary to support binary data. An alternative approach would be to use the "bytes" type exclusively for both text and binary data, but this would require clients to convert bytes to text (for XML and JSON), which can incur significant overhead in some languages. Performance tests indicate that using the LYB data format improves the holo-cli "show" commands' performance by approximately 30%. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>

Commit:bbeaa7e
Author:Renato Westphal
Committer:Renato Westphal

grpc: add `with_defaults` parameter to the `Get` RPC Signed-off-by: Renato Westphal <renato@opensourcerouting.org>

Commit:5bb16e0
Author:Renato Westphal
Committer:Renato Westphal

daemon-grpc: introduce the Validate() RPC This RPC enables users to fully validate a candidate configuration without committing it. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>

Commit:5d2cc0e
Author:Renato Westphal
Committer:Renato Westphal

daemon, cli: add support for commit comments Commit comments can be used to describe the configuration changes being pushed to the device, making the rollback log more informative. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>

Commit:1676c1e
Author:Renato Westphal
Committer:Renato Westphal

daemon: introduce rollback log feature This commit adds a new rollback log feature to holod, which enables network administrators to restore a previous configuration in the event of problems caused by recent changes. The feature is optional but enabled by default, and uses the lightweight PickleDB key-value store to store transactions. Currently, access to the rollback log is only available through gRPC. However, CLI rollback commands should come soon. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>

Commit:bff4e28
Author:Renato Westphal

Initial import. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>