* A new "hello world" example is added
* The directory `docker/system` has been moved to `docker/main`
This commit is contained in:
parent
d46ca41c8b
commit
14d319dd9b
21 changed files with 382 additions and 11 deletions
111
example/hello/README.md
Normal file
111
example/hello/README.md
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
# Clixon hello world example
|
||||
|
||||
* [Content](#content)
|
||||
* [Compile and run](#compile)
|
||||
* [Using the CLI](#using-the-cli)
|
||||
* [Netconf](#netconf)
|
||||
* [Restconf](#restconf)
|
||||
* [Next steps](#next-steps)
|
||||
|
||||
## Content
|
||||
|
||||
This directory contains a Clixon example which includes a simple example. It contains the following files:
|
||||
* `hello.xml` The configuration file. See [yang/clixon-config@<date>.yang](../../yang/clixon-config@2019-03-05.yang) for the documentation of all available fields.
|
||||
* `clixon-hello@2019-04-17.yang` The yang spec of the example.
|
||||
* `hello_cli.cli` CLIgen specification.
|
||||
* `Makefile.in` Example makefile where plugins are built and installed
|
||||
* `README.md` This file
|
||||
|
||||
|
||||
## Compile and run
|
||||
|
||||
Before you start,
|
||||
* Make [group setup](../../doc/FAQ.md#do-i-need-to-setup-anything-important)
|
||||
|
||||
```
|
||||
make && sudo make install
|
||||
```
|
||||
Start backend in the background:
|
||||
```
|
||||
sudo clixon_backend
|
||||
```
|
||||
Start cli:
|
||||
```
|
||||
clixon_cli
|
||||
```
|
||||
|
||||
## Using the CLI
|
||||
|
||||
The example CLI allows you to modify and view the data model using `set`, `delete` and `show` via generated code.
|
||||
|
||||
The following example shows how to add a very simple configuration `hello world` using the generated CLI. The config is added to the candidate database, shown, committed to running, and then deleted.
|
||||
```
|
||||
olof@vandal> clixon_cli
|
||||
cli> set <?>
|
||||
hello
|
||||
cli> set hello world
|
||||
cli> show configuration
|
||||
hello world;
|
||||
cli> commit
|
||||
cli> delete <?>
|
||||
all Delete whole candidate configuration
|
||||
hello
|
||||
cli> delete hello
|
||||
cli> show configuration
|
||||
cli> commit
|
||||
cli> quit
|
||||
olof@vandal>
|
||||
```
|
||||
|
||||
## Netconf
|
||||
|
||||
Clixon also provides a Netconf interface. The following example starts a netconf client form the shell, adds the hello world config, commits it, and shows it:
|
||||
```
|
||||
olof@vandal> clixon_netconf -q
|
||||
<rpc><edit-config><target><candidate/></target><config><hello xmlns="urn:example:hello"><world/></hello></config></edit-config></rpc>]]>]]>
|
||||
<rpc-reply><ok/></rpc-reply>]]>]]>
|
||||
<rpc><commit/></rpc>]]>]]>
|
||||
<rpc-reply><ok/></rpc-reply>]]>]]>
|
||||
<rpc><get-config><source><running/></source></get-config></rpc>]]>]]>
|
||||
<rpc-reply><data><hello xmlns="urn:example:hello"><world/></hello></data></rpc-reply>]]>]]>
|
||||
olof@vandal>
|
||||
```
|
||||
|
||||
## Restconf
|
||||
|
||||
Clixon also provides a Restconf interface. A reverse proxy needs to be configured. There are [instructions how to setup Nginx](../../doc/FAQ.md#how-do-i-use-restconf) for Clixon.
|
||||
|
||||
Start restconf daemon
|
||||
```
|
||||
sudo su -c "/www-data/clixon_restconf" -s /bin/sh www-data &
|
||||
```
|
||||
|
||||
Start sending restconf commands (using Curl):
|
||||
```
|
||||
olof@vandal> curl -X POST http://localhost/restconf/data -d '{"clixon-hello:hello":{"world":null}}'
|
||||
olof@vandal> curl -X GET http://localhost/restconf/data
|
||||
{
|
||||
"data": {
|
||||
"clixon-hello:hello": {
|
||||
"world": null
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Next steps
|
||||
|
||||
The hello world example only has a Yang spec and a template CLI
|
||||
spec. For more advanced applications, customized backend, cli, netconf
|
||||
and restconf code callbacks becomes necessary.
|
||||
|
||||
Further, you may want to add upgrade, RPC:s, state data, notification
|
||||
streams, authentication and authorization. The [main example](../main)
|
||||
contains examples for such capabilities.
|
||||
|
||||
There are also [container examples](../../docker) and lots more.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue