From 172851864791339b587f5d8ffdfc6cf5b180744f Mon Sep 17 00:00:00 2001 From: Charles-Schleich Date: Tue, 10 Sep 2024 12:56:45 +0000 Subject: [PATCH] deploy: 05656a974b7f0ebd08df668d956eaf2d0441a010 --- docs/apis/c/index.html | 2 +- docs/apis/cpp/index.html | 2 +- docs/apis/kotlin/index.html | 2 +- docs/apis/python/index.html | 2 +- docs/apis/rest/index.html | 2 +- docs/apis/rust/index.html | 2 +- docs/getting-started/deployment/index.html | 2 +- docs/getting-started/first-app/index.html | 2 +- docs/getting-started/installation/index.html | 2 +- docs/getting-started/quick-test/index.html | 2 +- .../troubleshooting/index.html | 2 +- docs/index.xml | 3 +- docs/manual/abstractions/index.html | 2 +- docs/manual/access-control/index.html | 121 ++++++++++++++++++ docs/manual/configuration/index.html | 2 +- docs/manual/plugin-http/index.html | 2 +- docs/manual/plugin-storage-manager/index.html | 2 +- docs/manual/plugins/index.html | 2 +- docs/manual/quic/index.html | 2 +- docs/manual/tls/index.html | 2 +- docs/manual/user-password/index.html | 4 +- .../migrationguide-c-v0.5.x-v0.6.x/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../migrationguide-v0.5.x-v0.6.x/index.html | 2 +- .../index.html | 2 +- docs/migration_1.0/c++/index.html | 2 +- docs/migration_1.0/c_pico/index.html | 2 +- docs/migration_1.0/concepts/index.html | 2 +- docs/migration_1.0/java/index.html | 2 +- docs/migration_1.0/kotlin/index.html | 2 +- docs/migration_1.0/python/index.html | 2 +- docs/migration_1.0/rust/index.html | 2 +- docs/overview/what-is-zenoh/index.html | 2 +- docs/overview/zenoh-in-action/index.html | 2 +- index.xml | 3 +- sitemap.xml | 2 +- 38 files changed, 161 insertions(+), 38 deletions(-) create mode 100644 docs/manual/access-control/index.html diff --git a/docs/apis/c/index.html b/docs/apis/c/index.html index 32b855f0..efe16f0a 100644 --- a/docs/apis/c/index.html +++ b/docs/apis/c/index.html @@ -1,6 +1,6 @@ C API · Zenoh - pub/sub, geo distributed storage, query

C API

The C API documentation is available on + diff --git a/docs/apis/cpp/index.html b/docs/apis/cpp/index.html index d791d622..bacd5eed 100644 --- a/docs/apis/cpp/index.html +++ b/docs/apis/cpp/index.html @@ -1,6 +1,6 @@ C++ API · Zenoh - pub/sub, geo distributed storage, query

C++ API

The C++ API documentation is available on + diff --git a/docs/apis/kotlin/index.html b/docs/apis/kotlin/index.html index 8d428cad..248fd3e7 100644 --- a/docs/apis/kotlin/index.html +++ b/docs/apis/kotlin/index.html @@ -1,6 +1,6 @@ Kotlin API · Zenoh - pub/sub, geo distributed storage, query

Kotlin API

The Kotlin API documentation is available on + diff --git a/docs/apis/python/index.html b/docs/apis/python/index.html index 2a683e4a..6181f285 100644 --- a/docs/apis/python/index.html +++ b/docs/apis/python/index.html @@ -1,6 +1,6 @@ Python API · Zenoh - pub/sub, geo distributed storage, query

Python API

The Python API documentation is available on + diff --git a/docs/apis/rest/index.html b/docs/apis/rest/index.html index 4799f1ae..267155b7 100644 --- a/docs/apis/rest/index.html +++ b/docs/apis/rest/index.html @@ -1,6 +1,6 @@ REST API · Zenoh - pub/sub, geo distributed storage, query

REST API

Zenoh also offers a REST API via the zenoh-rest plugin. When starting Zenoh with default options, +

REST API

Zenoh also offers a REST API via the zenoh-rest plugin. When starting Zenoh with default options, this REST plugin is automatically started on port 8000 and ready to answer HTTP requests.
The full Zenoh key/value space is accessible via this REST API, including the Admin Space under the '@'prefix.

GET

Binds to the get(selector) operation on Zenoh.

  • URL: http://host:8000/<selector>
  • body: none
  • headers: none

The results are returned as a JSON array of objects containing "key", "value"and "time".

Examples using curl:

# Get the keys/values matching demo/**
 $ curl http://localhost:8000/demo/**
 [
diff --git a/docs/apis/rust/index.html b/docs/apis/rust/index.html
index bc558448..24d558c9 100644
--- a/docs/apis/rust/index.html
+++ b/docs/apis/rust/index.html
@@ -1,6 +1,6 @@
 Rust API · Zenoh - pub/sub, geo distributed storage, query

Rust API

The Rust API documentation is available on + diff --git a/docs/getting-started/deployment/index.html b/docs/getting-started/deployment/index.html index 0eb3ca99..ccfa5ed3 100644 --- a/docs/getting-started/deployment/index.html +++ b/docs/getting-started/deployment/index.html @@ -1,6 +1,6 @@ Deployment · Zenoh - pub/sub, geo distributed storage, query

Deployment

Overview

topology animation

Peer to peer

By default Zenoh applications are configured to communicate peer to peer (peer mode). All applications in the local network directly communicate with each other.

peer to peer

Configuration

{
+

Deployment

Overview

topology animation

Peer to peer

By default Zenoh applications are configured to communicate peer to peer (peer mode). All applications in the local network directly communicate with each other.

peer to peer

Configuration

{
   mode: peer,
 }
 

Scouting

Zenoh applications in peer mode run both multicast and gossip scouting to discover other applications or Zenoh routers and connect them.

Multicast scouting

Zenoh applications in peer mode join multicast group 224.0.0.224 on UDP port 7446 and send scout messages on this address to discover local applications and routers. They automatically connect to all accessible peer mode applications and routers they discover. The scouting address and behavior can be configured.

Configuration

{
diff --git a/docs/getting-started/first-app/index.html b/docs/getting-started/first-app/index.html
index 803dc059..a521463c 100644
--- a/docs/getting-started/first-app/index.html
+++ b/docs/getting-started/first-app/index.html
@@ -1,6 +1,6 @@
 Your first Zenoh app · Zenoh - pub/sub, geo distributed storage, query

Your first Zenoh app

Let us take a step-by-step approach in putting together your first Zenoh application in Python. +

Your first Zenoh app

Let us take a step-by-step approach in putting together your first Zenoh application in Python. As the first step, let us see how we get some data from a temperature sensor in our kitchen. Then we see how we can route this data to store and perform some analytics.

Before cranking some code, let’s define some terminology.

Zenoh deals with keys/values where each key is a path and is associated to a value. A key looks like just a Unix file system path, such as myhome/kitchen/temp. The value can be defined with different encodings (string, JSON, raw bytes buffer…).

Let’s get started!

Pub/sub in Zenoh

First, let’s write an application, z_sensor.py that will produce temperature measurements at each second:

import zenoh, random, time
diff --git a/docs/getting-started/installation/index.html b/docs/getting-started/installation/index.html
index db273feb..1a5554f2 100644
--- a/docs/getting-started/installation/index.html
+++ b/docs/getting-started/installation/index.html
@@ -1,6 +1,6 @@
 Installation · Zenoh - pub/sub, geo distributed storage, query

Installation

To start playing with Zenoh we need the Zenoh router and/or the Zenoh client library.

Installing client library

To develop your application Zenoh, you need to install a Zenoh client library. +

Installation

To start playing with Zenoh we need the Zenoh router and/or the Zenoh client library.

Installing client library

To develop your application Zenoh, you need to install a Zenoh client library. Depending on your programming language, pick one of the following API and refer to the installation and usage instructions in here:

Note that if you wish to always have access to all of Zenoh’s latest features, Rust is Zenoh’s original language, and will therefore always be the most feature-complete version.

Installing the Zenoh router

The Zenoh router (a.k.a. zenohd) and its plugins are currently available as pre-built binaries for various platforms. All release packages can be downloaded from:

Each subdirectory has the name of the Rust target. See the platforms each target corresponds to on https://doc.rust-lang.org/stable/rustc/platform-support.html

You can also install it via a package manager on macOS (homebrew) or Linux Debian (apt). See instructions below.

For other platforms, you can use the Docker image or build it directly on your platform.

MacOS

Tap our brew package repository:

$ brew tap eclipse-zenoh/homebrew-zenoh
 

Install Zenoh:

$ brew install zenoh
 

Then you can start the Zenoh router with this command:

$ zenohd
diff --git a/docs/getting-started/quick-test/index.html b/docs/getting-started/quick-test/index.html
index b89296ff..520fc604 100644
--- a/docs/getting-started/quick-test/index.html
+++ b/docs/getting-started/quick-test/index.html
@@ -1,6 +1,6 @@
 For a quick test using Docker · Zenoh - pub/sub, geo distributed storage, query

For a quick test using Docker

This page describe how to perform a quick test of Zenoh, using a Docker image.

Run Zenoh router in a Docker container

The Zenoh router is also available in a Docker image. You can deploy a single instance on your local host just running:

docker run --init -p 7447:7447/tcp -p 8000:8000/tcp eclipse/zenoh
+

For a quick test using Docker

This page describe how to perform a quick test of Zenoh, using a Docker image.

Run Zenoh router in a Docker container

The Zenoh router is also available in a Docker image. You can deploy a single instance on your local host just running:

docker run --init -p 7447:7447/tcp -p 8000:8000/tcp eclipse/zenoh
 

The ports used by Zenoh are the following:

  • 7447/tcp : the Zenoh protocol via TCP
  • 8000/tcp : the Zenoh REST API

⚠️ WARNING ⚠️: Docker doesn’t support UDP multicast between a container and its host (see cases moby/moby#23659, moby/libnetwork#2397 or moby/libnetwork#552). The only case where it works is on Linux using the --net=host option to make the container to share the host’s networking space (i.e. run: docker run --init --net=host eclipse/zenoh).
The implication of not having UDP multicast working for the Zenoh router is that you need to configure your Zenoh applications (peer or client) with the router’s locator as peer:

  • running the examples we provide, just add the option: -e tcp/localhost:7447
  • writing your own Zenoh application, you need to add a connect: {endpoints: ["tcp/localhost:7447"]}} configuration when initiating the Zenoh API

Adding plugins and backends to the container

The Zenoh router supports the dynamic loading of plugins libraries (at startup) and backends libraries (during runtime).
See the relevant chapters for more details about plugins and backends:

⚠️ WARNING ⚠️: To be compatible with Zenoh in Docker, the libraries must be compiled for x86_64-unknown-linux-musl target. Look for .tgz filenames with this extension when downloading plugins or backends from the Eclipse zenoh download space.

By default the Zenoh router will search for plugins and backends libraries to load in ~/.zenoh/lib. Thus, to make it able to find the libraries, you can copy them into a zenoh-docker/lib directory on your local host and mount the zenoh-docker directory as a volume in your container targeting /root/.zenoh.

Example:

docker run --init -p 7447:7447/tcp -p 8000:8000/tcp -v $(pwd)/zenoh-docker:/root/.zenoh eclipse/zenoh
 

Example of a Docker compose file (also configuring Zenoh log level to “debug”):

version: "3.9"
 services:
diff --git a/docs/getting-started/troubleshooting/index.html b/docs/getting-started/troubleshooting/index.html
index a553c08b..3403acf5 100644
--- a/docs/getting-started/troubleshooting/index.html
+++ b/docs/getting-started/troubleshooting/index.html
@@ -1,6 +1,6 @@
 Troubleshooting · Zenoh - pub/sub, geo distributed storage, query

Troubleshooting

Activate logging

Activating the Zenoh logging can provide useful information for any troubleshooting. The Zenoh router (zenohd) and all the Zenoh APIs (except zenoh-pico) are developed with a Rust code base. Logging is controlled via the RUST_LOG environment variable that can typically be defined with the desired logging level amongst:

  • error - this is the default level if RUST_LOG is not defined
  • warn
  • info
  • debug
  • trace
  • off - to disable all logging

More advanced logging directives can be defined via the RUST_LOG. For more details see this page.
Note that the logs are written on stderr.


Known troubles with the Zenoh router (zenohd)

Segmentation fault at startup

The router is likely trying to load an incompatible plugin.

To check this look for such logs:

[2022-03-28T15:23:36Z INFO  zenohd] Successfully started plugin rest from "/Users/test/.zenoh/lib/libzplugin_rest.dylib"
+

Troubleshooting

Activate logging

Activating the Zenoh logging can provide useful information for any troubleshooting. The Zenoh router (zenohd) and all the Zenoh APIs (except zenoh-pico) are developed with a Rust code base. Logging is controlled via the RUST_LOG environment variable that can typically be defined with the desired logging level amongst:

  • error - this is the default level if RUST_LOG is not defined
  • warn
  • info
  • debug
  • trace
  • off - to disable all logging

More advanced logging directives can be defined via the RUST_LOG. For more details see this page.
Note that the logs are written on stderr.


Known troubles with the Zenoh router (zenohd)

Segmentation fault at startup

The router is likely trying to load an incompatible plugin.

To check this look for such logs:

[2022-03-28T15:23:36Z INFO  zenohd] Successfully started plugin rest from "/Users/test/.zenoh/lib/libzplugin_rest.dylib"
 [2022-03-28T15:23:36Z INFO  zenohd] Successfully started plugin storage_manager from "/Users/test/.zenoh/lib/libzplugin_storage_manager.dylib"
 [2022-03-28T15:23:36Z INFO  zenohd] Successfully started plugin webserver from "/Users/test/.zenoh/lib/libzplugin_webserver.dylib"
 

Here you can see all the plugins libraries that have been loaded by zenohd at startup. diff --git a/docs/index.xml b/docs/index.xml index 0ad4879d..d6d82180 100644 --- a/docs/index.xml +++ b/docs/index.xml @@ -31,7 +31,8 @@ The configuration of TLS certificates is done via a configuration file.User-Password authentication/docs/manual/user-password/Mon, 01 Jan 0001 00:00:00 +0000/docs/manual/user-password/Zenoh supports basic user-password authentication. Clients and peers can use user and password for authentication against a router or a peer. Similarly, peers and routers can use user and password for authentication among themselves. The configuration of credentials is done via a configuration file. Client configuration The required configuration fields for a client would hence be: -{ /// The node&#39;s mode (router, peer or client) mode: &#34;client&#34;, transport: { auth: { /// The configuration of authentication.Rust API/docs/apis/rust/Mon, 01 Jan 0001 00:00:00 +0000/docs/apis/rust/ The Rust API documentation is available on docs.rs.C API/docs/apis/c/Mon, 01 Jan 0001 00:00:00 +0000/docs/apis/c/ The C API documentation is available on Read the Docs.C++ API/docs/apis/cpp/Mon, 01 Jan 0001 00:00:00 +0000/docs/apis/cpp/ The C++ API documentation is available on Read the Docs.Python API/docs/apis/python/Mon, 01 Jan 0001 00:00:00 +0000/docs/apis/python/ The Python API documentation is available on Read the Docs.REST API/docs/apis/rest/Mon, 01 Jan 0001 00:00:00 +0000/docs/apis/rest/Zenoh also offers a REST API via the zenoh-rest plugin. When starting Zenoh with default options, this REST plugin is automatically started on port 8000 and ready to answer HTTP requests. +{ /// The node&#39;s mode (router, peer or client) mode: &#34;client&#34;, transport: { auth: { /// The configuration of authentication.Access Control/docs/manual/access-control/Mon, 01 Jan 0001 00:00:00 +0000/docs/manual/access-control/NOTE: This documentation covers the Zenoh 1.0 ACL config. For Zenoh 0.11 ACL config, please refer to the Zenoh 0.11 Access Control Rules RFC +Access control enables Zenoh instances to filter (allow or deny) messages, depending on certain characteristics of individual messages and their respective source or destination. Authentication on the other hand allows Zenoh instances to identify certain characteristics in other instances they connect to, which are used to match the remote instances with configured subjects in the ACL policies and apply the rules accordingly on the exhanged messages.Rust API/docs/apis/rust/Mon, 01 Jan 0001 00:00:00 +0000/docs/apis/rust/ The Rust API documentation is available on docs.rs.C API/docs/apis/c/Mon, 01 Jan 0001 00:00:00 +0000/docs/apis/c/ The C API documentation is available on Read the Docs.C++ API/docs/apis/cpp/Mon, 01 Jan 0001 00:00:00 +0000/docs/apis/cpp/ The C++ API documentation is available on Read the Docs.Python API/docs/apis/python/Mon, 01 Jan 0001 00:00:00 +0000/docs/apis/python/ The Python API documentation is available on Read the Docs.REST API/docs/apis/rest/Mon, 01 Jan 0001 00:00:00 +0000/docs/apis/rest/Zenoh also offers a REST API via the zenoh-rest plugin. When starting Zenoh with default options, this REST plugin is automatically started on port 8000 and ready to answer HTTP requests. The full Zenoh key/value space is accessible via this REST API, including the Admin Space under the '@'prefix. GET Binds to the get(selector) operation on Zenoh. URL: http://host:8000/&lt;selector&gt; body: none headers: none The results are returned as a JSON array of objects containing &quot;key&quot;, &quot;value&quot;and &quot;time&quot;.Kotlin API/docs/apis/kotlin/Mon, 01 Jan 0001 00:00:00 +0000/docs/apis/kotlin/ The Kotlin API documentation is available on https://eclipse-zenoh.github.io/zenoh-kotlin.Migrating from Zenoh v0.5.x to Zenoh v0.6.x/docs/migration_0.5_to_0.6/migrationguide-v0.5.x-v0.6.x/Mon, 01 Jan 0001 00:00:00 +0000/docs/migration_0.5_to_0.6/migrationguide-v0.5.x-v0.6.x/Key expressions Some key expressions are now considered invalid: diff --git a/docs/manual/abstractions/index.html b/docs/manual/abstractions/index.html index becf44a9..4260a34a 100644 --- a/docs/manual/abstractions/index.html +++ b/docs/manual/abstractions/index.html @@ -1,6 +1,6 @@ Abstractions · Zenoh - pub/sub, geo distributed storage, query

Abstractions

Zenoh is a distributed service to define, manage and operate on key/value spaces.

The main abstractions at the core of Zenoh are the following:

Key

Zenoh operates on key/value pairs. The most important thing to know about Zenoh keys is that / is the hierarchical separator, just like in unix filesystems. +

Abstractions

Zenoh is a distributed service to define, manage and operate on key/value spaces.

The main abstractions at the core of Zenoh are the following:

Key

Zenoh operates on key/value pairs. The most important thing to know about Zenoh keys is that / is the hierarchical separator, just like in unix filesystems. While you could set up your own hierarchy using other separators, your Zenoh exchanges would benefit from better performance using /, as it will let Zenoh do clever optimisations (users have informed us in the past that switching from . to / as their hierarchy-separator almost divided their CPU usage by 2).

However, you will much more often interact with key expressions, which provide a small regular language to match sets of keys.

There are a few restrictions on what may be a key:

  • It is a /-joined list of non-empty UTF-8 chunks. This implies that leading and trailing / are forbidden, as well as the // pattern.
  • An individual key may not contain the characters *, $, ?, #.

A typical Zenoh key would look something like: organizationA/building8/room275/sensor3/temperature


Key Expression

A key expression denotes a set of keys. It is declared using Key Expression Language, a small regular language, where: