111 lines
3.3 KiB
Markdown
111 lines
3.3 KiB
Markdown
# 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.
|
|
|
|
|
|
|
|
|
|
|