faq docker

This commit is contained in:
Olof hagsand 2016-02-28 11:02:33 +01:00
parent aaf5116bb4
commit cd0883ba95

View file

@ -22,20 +22,20 @@ Yes. All application semantics is defined in plugins with well-defined APIs. The
Q: Which language is CliXon implemented in? Q: Which language is CliXon implemented in?
------------------------------------------- -------------------------------------------
CliXon is written in C. The plugins are written in C. The CLI CliXon is written in C. The plugins are written in C. The CLI
specification uses cligen. specification uses cligen (http://cligen.se)
There is a project for writing plugins in Python. It is reasonable There is a project for writing plugins in Python. It is reasonable
simple to spawn an external script from a backend. simple to spawn an external script from a backend.
Q: Is CliXon different from Clicon? Q: Is CliXon different from Clicon?
----------------------------------- -----------------------------------
Yes, but CliXon is a fork of Clicon focussing on Yang specification and XML CliXon is a fork of Clicon focussing on Yang specification and XML
database. The yang support in clicon was grown out of a key-based database. The yang support in clicon was grown out of a key-based
scheme that became more and more complex since it had to translate scheme that became more and more complex since it had to translate
between many different formats. CliXon uses only XML internally. between many different formats. CliXon uses only XML internally.
The commit transaction mechanism has been simplified too. But CliXon The commit transaction mechanism has been simplified too. But CliXon
is not backward compliant with key-based Clicon applications, such as is not backward compliant with key-based Clixon applications, such as
Rost. Rost.
Q: How to best understand CliXon? Q: How to best understand CliXon?
@ -58,26 +58,29 @@ The example:
Q: What about reference documentation? Q: What about reference documentation?
-------------------------------------- --------------------------------------
CliXon uses Doxygen for reference documentation. CliXon uses Doxygen for reference documentation.
Build using 'make doc' and aim your browser at doc/html/index.html Build using 'make doc' and aim your browser at doc/html/index.html or
use the web resource: http://clicon.org/ref/index.html
Q: How do you run the example? Q: How do you run the example?
------------------------------ ------------------------------
- Start a backend server: 'clicon_backend -Ff /usr/local/etc/routing.conf' - Start a backend server: 'clixon_backend -Ff /usr/local/etc/routing.conf'
- Start a cli session: clicon_cli -f /usr/local/etc/routing.conf - Start a cli session: clixon_cli -f /usr/local/etc/routing.conf
- Start a netconf session: clicon_netconf -f /usr/local/etc/routing.conf - Start a netconf session: clixon_netconf -f /usr/local/etc/routing.conf
Q: Can you run clicon as docker containers? Q: Can you run CliXon as docker containers?
------------------------------------------- -------------------------------------------
Yes, the example works as docker containers as well. backend and cli needs a Yes, the example works as docker containers as well. backend and cli needs a
common file-system so they need to run as a composed pair. common file-system so they need to run as a composed pair.
cd example/docker cd example/docker
make docker # Prepares /data as shared file-system mount make docker # Prepares /data as shared file-system mount
run.sh # Starts an example backend and a cli run.sh # Starts an example backend and a cli
Futhermore, you build the clicon docker containers as follows:
The containers are by default downloaded from dockerhib, but you may
build the containers locally:
cd docker cd docker
make docker make docker
You may also push the containers with 'make push' but you may then consider changing the image
name in the makefile. You may also push the containers with 'make push' but you may then consider changing the image name in the makefile.
Q: How do you change the example? Q: How do you change the example?
--------------------------------- ---------------------------------
@ -90,10 +93,10 @@ Q: How do you change the example?
Q: How do you check what is in a database? Q: How do you check what is in a database?
------------------------------------------ ------------------------------------------
Use clicon_dbctrl. The name of the running or candidate databases are found in the Use clixon_dbctrl. The name of the running or candidate databases are found in the
configuration file. configuration file.
Example: Example:
> clicon_dbctrl -d /usr/local/var/routing/candidate_db / -p > clixon_dbctrl -d /usr/local/var/routing/candidate_db / -p
/interfaces/interface/eth0/ipv4 /interfaces/interface/eth0/ipv4
/interfaces/interface/eth0/type bgp /interfaces/interface/eth0/type bgp
/interfaces/interface/eth0 /interfaces/interface/eth0
@ -118,7 +121,7 @@ You write a commit function in routing_backend.c.
Every time a commit is made, transaction_commit() is called in the Every time a commit is made, transaction_commit() is called in the
backend. It has a 'transaction_data td' argument which is used to fetch backend. It has a 'transaction_data td' argument which is used to fetch
information on added, deleted and changed entries. You access this information on added, deleted and changed entries. You access this
information using access functions as defined in clicon_backend_transaction.h information using access functions as defined in clixon_backend_transaction.h
Q: How do you check what has changed on commit? Q: How do you check what has changed on commit?
----------------------------------------------- -----------------------------------------------
@ -168,6 +171,6 @@ Q: How do you use netconf?
As an alternative to cli configuration, you can use netconf As an alternative to cli configuration, you can use netconf
directly. Easiesty is to just pipe netconf commands to the directly. Easiesty is to just pipe netconf commands to the
clicon_netconf application. clixon_netconf application.
Example: Example:
echo "<rpc><get-config><source><candidate/></source><configuration/></get-config></rpc>]]>]]>" | clicon_netconf -f /usr/local/etc/routing.conf echo "<rpc><get-config><source><candidate/></source><configuration/></get-config></rpc>]]>]]>" | clixon_netconf -f /usr/local/etc/routing.conf