Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NDK 0.3.0/0.4.0 release notes #172

Merged
merged 4 commits into from
Oct 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion docs/ndk/guide/dev/go/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,19 @@ The toolchain that can be used to develop and build Go-based NDK apps consists o
Goreleaser is optional, but it is a nice tool to build and release Go-based NDK applications in an automated fashion.

## Bond or no Bond?
<!-- --8<-- [start:bond-intro] -->
The [**`srl-labs/bond`**][bond-repo] package is a helper Go [package][bond-pkg] that abstracts the low-level NDK API and assists in the development of the NDK applications. It is a wrapper around the NDK gRPC services with utility functions that were designed to provide a more pleasant development experience.

The [**`srl-labs/bond`**][bond-repo] package is a helper Go package that abstracts the low-level NDK API and assists in the development of the NDK applications. It is a wrapper around the NDK gRPC services with utility functions that were designed to provide a more pleasant development experience.
Bond takes care of the following tasks:

* registering the NDK agent with the NDK server
* creation of NDK gRPC clients for the NDK services
* creation of gNMI client to interact with SR Linux gNMI server and providing the GetWithGNMI method to
* receiving the notifications from the NDK services
* aggregating configuration notifications and forwarding the aggregated config to the NDK application
* handling of the NDK application graceful shutdown

<!-- --8<-- [end:bond-intro] -->
Since using `bond` is optional, we provide two documentation sets for a basic NDK app development:

1. With Bond - a development workflow that leverages [bond][bond-repo] package.
Expand Down Expand Up @@ -73,3 +83,4 @@ Let's see how we can develop this app using the `bond` package.
[greeter-go-repo]: https://github.com/srl-labs/ndk-greeter-go

[bond-repo]: https://github.com/srl-labs/bond
[bond-pkg]: https://pkg.go.dev/github.com/srl-labs/bond
3 changes: 2 additions & 1 deletion docs/ndk/guide/dev/py/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Python Development Environment

/// warning "Work in progress"
/// admonition | Work in progress
type: warning
This tutorial might be outdated. Please check Go tutorial for the latest updates until this version is updated.
///

Expand Down
20 changes: 20 additions & 0 deletions docs/ndk/releases/0.3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
version: v0.3.0
prev_version: v0.2.0
---
# NDK -{{version}}- Release Notes

* Documentation - [ndk.srlinux.dev](https://ndk.srlinux.dev/doc/sdk?version=-{{version}}-)
* Protobuf definitions - [github.com/nokia/srlinux-ndk-protobufs](https://github.com/nokia/srlinux-ndk-protobufs/tree/-{{version}}-)
* Language bindings - [Go](https://github.com/nokia/srlinux-ndk-go/tree/-{{version}}-), [Python](https://github.com/nokia/srlinux-ndk-py/tree/-{{version}}-).
* Introduced with SR Linux `v24.3.1`.
* Diff with the previous release: [`-{{prev_version}}-...-{{version}}-`](https://github.com/nokia/srlinux-ndk-protobufs/compare/-{{prev_version}}-...-{{version}}-)

## Configuration Acknowledgements

To allow NDK agents to explicitly acknowledge the received configuration a new agent registration option - `wait_config_ack` - has been added to the [`AgentRegistrationRequest`][agent-reg-req-doc].

To facilitate acknowledgment exchange, a new gRPC service - [`SdkMgrConfigService`][sdk-mgr-config-svc-doc] - has been introduced in this release. Clients (NDK agents) send `AcknowledgeConfigRequest` to the NDK server to explicitly acknowledge each configuration update they received.

[agent-reg-req-doc]: https://ndk.srlinux.dev/doc/sdk?version=-{{version}}-#AgentRegistrationRequest
[sdk-mgr-config-svc-doc]: https://ndk.srlinux.dev/doc/config?version=-{{version}}-#SdkMgrConfigService
35 changes: 35 additions & 0 deletions docs/ndk/releases/0.4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
version: v0.4.0
prev_version: v0.3.0
---
# NDK -{{version}}- Release Notes

* Documentation - [ndk.srlinux.dev](https://ndk.srlinux.dev/doc/sdk?version=-{{version}}-)
* Protobuf definitions - [github.com/nokia/srlinux-ndk-protobufs](https://github.com/nokia/srlinux-ndk-protobufs/tree/-{{version}}-)
* Language bindings - [Go](https://github.com/nokia/srlinux-ndk-go/tree/-{{version}}-), [Python](https://github.com/nokia/srlinux-ndk-py/tree/-{{version}}-).
* Introduced with SR Linux `v24.10.1`.
* Diff with the previous release: [`-{{prev_version}}-...-{{version}}-`](https://github.com/nokia/srlinux-ndk-protobufs/compare/-{{prev_version}}-...-{{version}}-)

## Project Bond

--8<-- "docs/ndk/guide/dev/go/index.md:bond-intro"

We have created a tutorial demonstrating how to use Bond to develop a simple [NDK Greeter](../guide/dev/go/with-bond/index.md) application in Go.
Developing NDK agents is much simpler with the help of the [Bond][bond-repo] package and we recommend new users to start with it.

## Disabled NDK caching

Starting with SR Linux 24.10.1 caching will be disabled by default for all NDK services except Network instance, Appid, and Config. This is done to ensure high performance of the NDK server while keeping the memory consumption low.

A user can enable caching by registering the agent with the `enable_cache` registration option against the NDK manager server. With disabled caching, the services will have to use `CreateOrUpdate` SDK Manager Operation, instead of a separate `Create` and `Update` operations.

## Auto Telemetry State

The [`auto_telemetry_state`][ats-proto] field has been added to the `AgentRegistrationRequest` message to instruct the NDK server to automatically mirror the NDK app's configuration to the state database.

When this field is set to `true`, the application will no longer need to set the its configuration to state manually via Telemetry service. This can be useful for applications that do not manage their own state and only need to have configuration values. For such apps, it is no longer needed to update the state manually as it will be done automatically by the NDK server.

[bond-repo]: https://github.com/srl-labs/bond
<!-- used in the snippet import -->
[bond-pkg]: https://pkg.go.dev/github.com/srl-labs/bond
[ats-proto]: https://github.com/nokia/srlinux-ndk-protobufs/blob/v0.4.0/ndk/sdk_service.proto#L69
15 changes: 9 additions & 6 deletions docs/ndk/releases/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,19 @@ For the same reason the NDK versioning scheme is different from the SR Linux's o

At the same time, new NDK release appear together with a certain SR Linux release where NDK updates were made.

/// note | Semantic Versioning and Non Backwards Compatible Changes
/// admonition | Semantic Versioning and Non Backwards Compatible Changes
type: subtle-note
Semantic Versioning imposes certain rules on how to version software releases. The most important one is that a new major version release (e.g. 2.0.0) may contain non backwards compatible changes.

Since NDK is versioned with `v0` at the moment of this writing, we are not bound by this rule and may introduce non backwards compatible changes in any release. The NBC changes would be mentioned in the release notes.
Since NDK is versioned with `v0`, we may introduce non backwards compatible changes in the forthcoming releases until we reach `v1`. The non-backwards compatible (NBC) changes will be mentioned in the release notes.
///

The following table shows the mapping between SR Linux and NDK releases:

| NDK Release | SR Linux Release[^10] | Comments |
| ---------------- | ---------------- | -------- |
| [v0.2.0](0.2.md) | 23.10.1 | |
| NDK Release | SR Linux Release[^1] | Comments |
| ---------------- | -------------------- | -------- |
| [v0.2.0](0.2.md) | 23.10.1 | |
| [v0.3.0](0.3.md) | 24.3.1 | |
| [v0.4.0](0.4.md) | 24.10.1 | |

[^10]: SR Linux release where NDK changes were introduced.
[^1]: SR Linux release where NDK changes were introduced.
2 changes: 2 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ nav:
- Releases:
- ndk/releases/index.md
- 0.2: ndk/releases/0.2.md
- 0.3: ndk/releases/0.3.md
- 0.4: ndk/releases/0.4.md
- Ansible:
- ansible/index.md
- nokia.srlinux collection:
Expand Down