docker support
This commit is contained in:
parent
6366fc631e
commit
eb93d82caa
18 changed files with 370 additions and 125 deletions
|
|
@ -41,7 +41,7 @@ SHELL = /bin/sh
|
||||||
|
|
||||||
SUBDIRS = lib apps include etc
|
SUBDIRS = lib apps include etc
|
||||||
|
|
||||||
.PHONY: doc all clean depend $(SUBDIRS) install loc TAGS .config.status
|
.PHONY: doc all clean depend $(SUBDIRS) install loc TAGS .config.status docker
|
||||||
|
|
||||||
all: $(SUBDIRS) clicon.conf.cpp clicon.mk
|
all: $(SUBDIRS) clicon.conf.cpp clicon.mk
|
||||||
|
|
||||||
|
|
@ -98,6 +98,10 @@ distclean:
|
||||||
for i in $(SUBDIRS) doc example; \
|
for i in $(SUBDIRS) doc example; \
|
||||||
do (cd $$i && $(MAKE) $(MFLAGS) $@); done
|
do (cd $$i && $(MAKE) $(MFLAGS) $@); done
|
||||||
|
|
||||||
|
docker:
|
||||||
|
for i in docker; \
|
||||||
|
do (cd $$i && $(MAKE) $(MFLAGS) $@); done
|
||||||
|
|
||||||
# Lines of code
|
# Lines of code
|
||||||
loc:
|
loc:
|
||||||
find . -name '*.[chyl]' -type f | xargs wc -l | tail -1 2> /dev/null
|
find . -name '*.[chyl]' -type f | xargs wc -l | tail -1 2> /dev/null
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ uninstall:
|
||||||
rm -f $(libdir)/$(MYLIB)
|
rm -f $(libdir)/$(MYLIB)
|
||||||
rm -f $(includedir)/clicon/*
|
rm -f $(includedir)/clicon/*
|
||||||
|
|
||||||
install-include: clicon_backend.h clicon_backend_api.h
|
install-include: clicon_backend.h clicon_backend_handle.h clicon_backend_transaction.h
|
||||||
install -d $(DESTDIR)$(includedir)/clicon
|
install -d $(DESTDIR)$(includedir)/clicon
|
||||||
install -m 644 $^ $(DESTDIR)$(includedir)/clicon
|
install -m 644 $^ $(DESTDIR)$(includedir)/clicon
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,9 +32,6 @@
|
||||||
# Location of configuration-file for default values (this file)
|
# Location of configuration-file for default values (this file)
|
||||||
CLICON_CONFIGFILE sysconfdir/APPNAME.conf
|
CLICON_CONFIGFILE sysconfdir/APPNAME.conf
|
||||||
|
|
||||||
# Database (yang) specification file.
|
|
||||||
CLICON_DBSPEC_FILE prefix/share/APPNAME/datamodel.spec
|
|
||||||
|
|
||||||
# Location of YANG module and submodule files. Only if CLICON_DBSPEC_TYPE is YANG
|
# Location of YANG module and submodule files. Only if CLICON_DBSPEC_TYPE is YANG
|
||||||
CLICON_YANG_DIR prefix/share/APPNAME/yang
|
CLICON_YANG_DIR prefix/share/APPNAME/yang
|
||||||
|
|
||||||
|
|
|
||||||
8
configure
vendored
8
configure
vendored
|
|
@ -4191,7 +4191,7 @@ fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ac_config_files="$ac_config_files Makefile lib/Makefile lib/src/Makefile lib/clicon/Makefile apps/Makefile apps/cli/Makefile apps/backend/Makefile apps/netconf/Makefile apps/dbctrl/Makefile include/Makefile etc/Makefile etc/cliconrc example/Makefile docker/Makefile doc/Makefile docker/Dockerfile"
|
ac_config_files="$ac_config_files Makefile lib/Makefile lib/src/Makefile lib/clicon/Makefile apps/Makefile apps/cli/Makefile apps/backend/Makefile apps/netconf/Makefile apps/dbctrl/Makefile include/Makefile etc/Makefile etc/cliconrc example/Makefile example/docker/Makefile docker/Makefile docker/cli/Makefile docker/cli/Dockerfile docker/backend/Makefile docker/backend/Dockerfile doc/Makefile"
|
||||||
|
|
||||||
cat >confcache <<\_ACEOF
|
cat >confcache <<\_ACEOF
|
||||||
# This file is a shell script that caches the results of configure
|
# This file is a shell script that caches the results of configure
|
||||||
|
|
@ -4897,9 +4897,13 @@ do
|
||||||
"etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;;
|
"etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;;
|
||||||
"etc/cliconrc") CONFIG_FILES="$CONFIG_FILES etc/cliconrc" ;;
|
"etc/cliconrc") CONFIG_FILES="$CONFIG_FILES etc/cliconrc" ;;
|
||||||
"example/Makefile") CONFIG_FILES="$CONFIG_FILES example/Makefile" ;;
|
"example/Makefile") CONFIG_FILES="$CONFIG_FILES example/Makefile" ;;
|
||||||
|
"example/docker/Makefile") CONFIG_FILES="$CONFIG_FILES example/docker/Makefile" ;;
|
||||||
"docker/Makefile") CONFIG_FILES="$CONFIG_FILES docker/Makefile" ;;
|
"docker/Makefile") CONFIG_FILES="$CONFIG_FILES docker/Makefile" ;;
|
||||||
|
"docker/cli/Makefile") CONFIG_FILES="$CONFIG_FILES docker/cli/Makefile" ;;
|
||||||
|
"docker/cli/Dockerfile") CONFIG_FILES="$CONFIG_FILES docker/cli/Dockerfile" ;;
|
||||||
|
"docker/backend/Makefile") CONFIG_FILES="$CONFIG_FILES docker/backend/Makefile" ;;
|
||||||
|
"docker/backend/Dockerfile") CONFIG_FILES="$CONFIG_FILES docker/backend/Dockerfile" ;;
|
||||||
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
|
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
|
||||||
"docker/Dockerfile") CONFIG_FILES="$CONFIG_FILES docker/Dockerfile" ;;
|
|
||||||
|
|
||||||
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
|
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
|
||||||
esac
|
esac
|
||||||
|
|
|
||||||
|
|
@ -168,8 +168,12 @@ AC_OUTPUT(Makefile
|
||||||
etc/Makefile
|
etc/Makefile
|
||||||
etc/cliconrc
|
etc/cliconrc
|
||||||
example/Makefile
|
example/Makefile
|
||||||
|
example/docker/Makefile
|
||||||
docker/Makefile
|
docker/Makefile
|
||||||
|
docker/cli/Makefile
|
||||||
|
docker/cli/Dockerfile
|
||||||
|
docker/backend/Makefile
|
||||||
|
docker/backend/Dockerfile
|
||||||
doc/Makefile
|
doc/Makefile
|
||||||
docker/Dockerfile
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,43 +18,53 @@
|
||||||
# <http://www.gnu.org/licenses/>.
|
# <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
prefix = @prefix@
|
CC = @CC@
|
||||||
bindir = @bindir@
|
CFLAGS = @CFLAGS@
|
||||||
sbindir = @sbindir@
|
LDFLAGS = @LDFLAGS@
|
||||||
libdir = @libdir@
|
LIBS = @LIBS@
|
||||||
includedir = @includedir@
|
|
||||||
datarootdir = @datarootdir@
|
|
||||||
|
|
||||||
all:
|
SHELL = /bin/sh
|
||||||
@echo "Run make docker to build docker image"
|
|
||||||
clean:
|
|
||||||
|
|
||||||
distclean: clean
|
SUBDIRS = cli backend
|
||||||
rm -f Makefile *~ .depend libcli* clicon_cli clicon_backend Dockerfile
|
|
||||||
|
|
||||||
# Kind of reverse install, could have copied from src dir,...
|
.PHONY: all clean depend install $(SUBDIRS) docker push
|
||||||
.PHONY: docker
|
|
||||||
docker:
|
|
||||||
cp $(DESTDIR)$(libdir)/libcligen.so.@CLIGEN_VERSION@ .
|
|
||||||
cp $(DESTDIR)$(libdir)/libclicon.so.@CLICON_VERSION_MAJOR@ .
|
|
||||||
cp $(DESTDIR)$(libdir)/libclicon_cli.so.@CLICON_VERSION_MAJOR@ .
|
|
||||||
cp $(DESTDIR)$(libdir)/libclicon_backend.so.@CLICON_VERSION_MAJOR@ .
|
|
||||||
cp $(DESTDIR)$(bindir)/clicon_cli .
|
|
||||||
cp $(DESTDIR)$(sbindir)/clicon_backend .
|
|
||||||
touch nullfile
|
|
||||||
|
|
||||||
install:
|
all: $(SUBDIRS)
|
||||||
|
|
||||||
uninstall:
|
|
||||||
|
|
||||||
install-include:
|
|
||||||
|
|
||||||
depend:
|
depend:
|
||||||
# $(CC) $(DEPENDFLAGS) $(INCLUDES) $(CFLAGS) -MM $(SRC) > .depend
|
for i in $(SUBDIRS); \
|
||||||
|
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||||
|
|
||||||
#include .depend
|
$(SUBDIRS):
|
||||||
|
(cd $@; $(MAKE) $(MFLAGS) all)
|
||||||
|
|
||||||
|
install-include:
|
||||||
|
for i in $(SUBDIRS); \
|
||||||
|
do (cd $$i ; $(MAKE) $(MFLAGS) $@); done;
|
||||||
|
|
||||||
|
install:
|
||||||
|
for i in $(SUBDIRS); \
|
||||||
|
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
for i in $(SUBDIRS); \
|
||||||
|
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||||
|
|
||||||
|
clean:
|
||||||
|
for i in $(SUBDIRS); \
|
||||||
|
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile *~ .depend
|
||||||
|
for i in $(SUBDIRS); \
|
||||||
|
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||||
|
|
||||||
|
docker:
|
||||||
|
for i in $(SUBDIRS); \
|
||||||
|
do (cd $$i && $(MAKE) $(MFLAGS) $@); done
|
||||||
|
|
||||||
|
push:
|
||||||
|
for i in $(SUBDIRS); \
|
||||||
|
do (cd $$i && $(MAKE) $(MFLAGS) $@); done
|
||||||
|
|
|
||||||
|
|
@ -1,80 +1,6 @@
|
||||||
You can skip directly to (3)
|
This dir contains docker code - how to build clixon as docker containers
|
||||||
|
cli Build olofhagsand/clicon_cli container
|
||||||
1. Building it yourself
|
backend Build olofhagsand/clicon_backend container
|
||||||
+++++++++++++++++++++++
|
|
||||||
Ensure that cligen and clicon has been built and installed.
|
|
||||||
make docker
|
|
||||||
|
|
||||||
2. Building a docker and publishing it
|
|
||||||
++++++++++++++++++++++++++++++++++++++
|
|
||||||
This example pushes it to my (Olof Hagsand)s docker hub repository
|
|
||||||
|
|
||||||
sudo docker build --no-cache=true -t olofhagsand/clicon_cli:v1.0 .
|
|
||||||
sudo docker push olofhagsand/clicon_yang
|
|
||||||
|
|
||||||
3. From docker
|
|
||||||
++++++++++++++
|
|
||||||
The easiest is just to run it from docker hub:
|
|
||||||
> sudo docker run -i -t -P olofhagsand/clicon_yang:v1.0
|
|
||||||
|
|
||||||
Either just try out the default yang specification or try out your own.
|
|
||||||
|
|
||||||
3.1 Enter your own spec
|
|
||||||
-----------------------
|
|
||||||
$ sudo docker run -i -t -P olofhagsand/clicon_yang:v1.0
|
|
||||||
input yang spec(end with ^d). Or just ^d for default spec>
|
|
||||||
container hello{
|
|
||||||
leaf world{
|
|
||||||
type string; }
|
|
||||||
}
|
|
||||||
^d
|
|
||||||
clicon_yang> hello world !
|
|
||||||
clicon_yang> show
|
|
||||||
hello {
|
|
||||||
world !;
|
|
||||||
}
|
|
||||||
clicon_yang>
|
|
||||||
|
|
||||||
3.2 Run the default
|
|
||||||
-------------------
|
|
||||||
> sudo docker run -i -t -P olofhagsand/clicon_yang:v1.0
|
|
||||||
input yang spec(end with ^d). Or just ^d for default spec> ^d
|
|
||||||
clicon_yang> a 43 b y 88
|
|
||||||
clicon_yang> a 43 c z 12
|
|
||||||
clicon_yang> show
|
|
||||||
a {
|
|
||||||
x 43;
|
|
||||||
b {
|
|
||||||
y 88;
|
|
||||||
}
|
|
||||||
c {
|
|
||||||
z 12;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
3.3 Show options
|
|
||||||
----------------
|
|
||||||
|
|
||||||
There are several show commands where you can display your
|
|
||||||
specification as CLI, JSON or XML. You can also display the YANG specification.
|
|
||||||
|
|
||||||
clicon_yang> show cli
|
|
||||||
hello world !
|
|
||||||
clicon_yang> show json
|
|
||||||
{
|
|
||||||
"hello": {
|
|
||||||
"world": "!"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
clicon_yang> show xml
|
|
||||||
<hello>
|
|
||||||
<world>!</world>
|
|
||||||
</hello>
|
|
||||||
clicon_yang> show yang
|
|
||||||
container hello {
|
|
||||||
leaf world {
|
|
||||||
type string;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
You may run the container directly by going directly to example and
|
||||||
|
the docker runtime scripts there
|
||||||
20
docker/backend/Dockerfile.in
Normal file
20
docker/backend/Dockerfile.in
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
FROM ubuntu:14.04
|
||||||
|
# 12.04
|
||||||
|
MAINTAINER Olof Hagsand <olof@hagsand.se>
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
RUN apt-get update && apt-get install -y libqdbm-dev
|
||||||
|
COPY libcligen.so.@CLIGEN_VERSION@ /usr/lib/
|
||||||
|
COPY libclicon.so.@CLICON_VERSION_MAJOR@ /usr/lib/
|
||||||
|
COPY libclicon_backend.so.@CLICON_VERSION_MAJOR@ /usr/lib/
|
||||||
|
COPY clicon_backend /usr/sbin/
|
||||||
|
RUN ldconfig
|
||||||
|
RUN sudo groupadd clicon
|
||||||
|
CMD ["/usr/sbin/clicon_backend", "-D", "1", "-F", "-f", "/data/clicon.conf"]
|
||||||
|
|
||||||
|
EXPOSE 7878 7878/udp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
63
docker/backend/Makefile.in
Normal file
63
docker/backend/Makefile.in
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2009-2016 Olof Hagsand and Benny Holmgren
|
||||||
|
#
|
||||||
|
# This file is part of CLIXON.
|
||||||
|
#
|
||||||
|
# CLIXON is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# CLIXON is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with CLIXON; see the file LICENSE. If not, see
|
||||||
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
VPATH = @srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
bindir = @bindir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
libdir = @libdir@
|
||||||
|
includedir = @includedir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
image = olofhagsand/clicon_backend:v1.0
|
||||||
|
|
||||||
|
all:
|
||||||
|
@echo "Run make docker to build docker image"
|
||||||
|
clean:
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile *~ .depend libcli* clicon_cli clicon_backend Dockerfile
|
||||||
|
|
||||||
|
# Kind of reverse install, could have copied from src dir,...
|
||||||
|
.PHONY: docker push
|
||||||
|
docker:
|
||||||
|
cp $(DESTDIR)$(libdir)/libcligen.so.@CLIGEN_VERSION@ .
|
||||||
|
cp $(DESTDIR)$(libdir)/libclicon.so.@CLICON_VERSION_MAJOR@ .
|
||||||
|
cp $(DESTDIR)$(libdir)/libclicon_backend.so.@CLICON_VERSION_MAJOR@ .
|
||||||
|
cp $(DESTDIR)$(sbindir)/clicon_backend .
|
||||||
|
sudo docker build -t $(image) .
|
||||||
|
|
||||||
|
push:
|
||||||
|
docker push $(image)
|
||||||
|
|
||||||
|
|
||||||
|
install:
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
|
||||||
|
install-include:
|
||||||
|
|
||||||
|
depend:
|
||||||
|
# $(CC) $(DEPENDFLAGS) $(INCLUDES) $(CFLAGS) -MM $(SRC) > .depend
|
||||||
|
|
||||||
|
#include .depend
|
||||||
|
|
||||||
6
docker/backend/README
Normal file
6
docker/backend/README
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
Ensure that cligen and clicon has been built and installed.
|
||||||
|
sudo make docker
|
||||||
|
make push
|
||||||
|
|
||||||
|
Then go to example and run the example as a docker container
|
||||||
|
|
||||||
|
|
@ -2,18 +2,14 @@ FROM ubuntu:14.04
|
||||||
# 12.04
|
# 12.04
|
||||||
MAINTAINER Olof Hagsand <olof@hagsand.se>
|
MAINTAINER Olof Hagsand <olof@hagsand.se>
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y libqdbm-dev
|
||||||
libqdbm-dev \
|
|
||||||
curl
|
|
||||||
COPY libcligen.so.@CLIGEN_VERSION@ /usr/lib/
|
COPY libcligen.so.@CLIGEN_VERSION@ /usr/lib/
|
||||||
COPY libclicon.so.@CLICON_VERSION_MAJOR@ /usr/lib/
|
COPY libclicon.so.@CLICON_VERSION_MAJOR@ /usr/lib/
|
||||||
COPY libclicon_cli.so.@CLIGEN_VERSION@ /usr/lib/
|
COPY libclicon_cli.so.@CLIGEN_VERSION@ /usr/lib/
|
||||||
COPY clicon_cli /usr/bin/
|
COPY clicon_cli /usr/bin/
|
||||||
COPY nullfile /usr/local/var/clicon_yang/
|
|
||||||
COPY start.sh /usr/bin/
|
|
||||||
RUN ldconfig
|
RUN ldconfig
|
||||||
#CMD ["clicon_cli", "-c", "-f", "/usr/local/etc/clicon_yang.conf"]
|
CMD ["/usr/bin/clicon_cli", "-f", "/data/clicon.conf"]
|
||||||
CMD ["start.sh"]
|
|
||||||
|
|
||||||
EXPOSE 7878 7878/udp
|
EXPOSE 7878 7878/udp
|
||||||
|
|
||||||
63
docker/cli/Makefile.in
Normal file
63
docker/cli/Makefile.in
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2009-2016 Olof Hagsand and Benny Holmgren
|
||||||
|
#
|
||||||
|
# This file is part of CLIXON.
|
||||||
|
#
|
||||||
|
# CLIXON is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# CLIXON is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with CLIXON; see the file LICENSE. If not, see
|
||||||
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
VPATH = @srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
bindir = @bindir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
libdir = @libdir@
|
||||||
|
includedir = @includedir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
# This is my dockerhub account
|
||||||
|
image = olofhagsand/clicon_cli:v1.0
|
||||||
|
|
||||||
|
all:
|
||||||
|
@echo "Run make docker to build docker image"
|
||||||
|
clean:
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile *~ .depend libcli* clicon_cli clicon_backend Dockerfile
|
||||||
|
|
||||||
|
# Kind of reverse install, could have copied from src dir,...
|
||||||
|
.PHONY: docker push
|
||||||
|
docker:
|
||||||
|
cp $(DESTDIR)$(libdir)/libcligen.so.@CLIGEN_VERSION@ .
|
||||||
|
cp $(DESTDIR)$(libdir)/libclicon.so.@CLICON_VERSION_MAJOR@ .
|
||||||
|
cp $(DESTDIR)$(libdir)/libclicon_cli.so.@CLICON_VERSION_MAJOR@ .
|
||||||
|
cp $(DESTDIR)$(bindir)/clicon_cli .
|
||||||
|
sudo docker build -t $(image) .
|
||||||
|
|
||||||
|
push:
|
||||||
|
sudo docker push $(image)
|
||||||
|
|
||||||
|
install:
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
|
||||||
|
install-include:
|
||||||
|
|
||||||
|
depend:
|
||||||
|
# $(CC) $(DEPENDFLAGS) $(INCLUDES) $(CFLAGS) -MM $(SRC) > .depend
|
||||||
|
|
||||||
|
#include .depend
|
||||||
|
|
||||||
6
docker/cli/README
Normal file
6
docker/cli/README
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
Ensure that cligen and clicon has been built and installed.
|
||||||
|
sudo make docker
|
||||||
|
make push
|
||||||
|
|
||||||
|
Then go to example and run the example as a docker container
|
||||||
|
|
||||||
|
|
@ -30,4 +30,9 @@ Clixon yang routing example
|
||||||
|
|
||||||
<rpc><get-config><source><candidate/></source><filter type="subtree"><configuration><interfaces><interface><ipv4/></interface></interfaces></configuration></filter></get-config></rpc>]]>]]>
|
<rpc><get-config><source><candidate/></source><filter type="subtree"><configuration><interfaces><interface><ipv4/></interface></interfaces></configuration></filter></get-config></rpc>]]>]]>
|
||||||
|
|
||||||
<rpc><get-config><source><candidate/></source><filter type="xpath" select="/interfaces/interface/ipv4"/></get-config></rpc>]]>]]>
|
<rpc><get-config><source><candidate/></source><filter type="xpath" select="/interfaces/interface/ipv4"/></get-config></rpc>]]>]]>
|
||||||
|
|
||||||
|
3. Run as docker container
|
||||||
|
--------------------------
|
||||||
|
cd docker
|
||||||
|
# look in README
|
||||||
|
|
|
||||||
66
example/docker/Makefile.in
Normal file
66
example/docker/Makefile.in
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2009-2016 Olof Hagsand and Benny Holmgren
|
||||||
|
#
|
||||||
|
# This file is part of CLIXON.
|
||||||
|
#
|
||||||
|
# CLIXON is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# CLIXON is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with CLIXON; see the file LICENSE. If not, see
|
||||||
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
VPATH = @srcdir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
bindir = @bindir@
|
||||||
|
includedir = @includedir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
|
||||||
|
APPNAME = routing
|
||||||
|
|
||||||
|
all: $(APPNAME).conf
|
||||||
|
|
||||||
|
-include $(DESTDIR)$(datarootdir)/clicon/clicon.mk
|
||||||
|
|
||||||
|
# Kind of reverse install, could have copied from src dir,...
|
||||||
|
.PHONY: docker push
|
||||||
|
docker: $(APPNAME).conf
|
||||||
|
install -d data
|
||||||
|
install -d data/yang
|
||||||
|
install -d data/backend
|
||||||
|
install -d data/cli
|
||||||
|
install -d data/netconf
|
||||||
|
install -d data/clispec
|
||||||
|
install $(APPNAME).conf data/clicon.conf # docker image assumes /data/clicon.conf
|
||||||
|
install ../*.yang data/yang/
|
||||||
|
install ../routing_cli.so data/cli/
|
||||||
|
install ../routing_backend.so data/backend/
|
||||||
|
install ../routing_netconf.so data/netconf/
|
||||||
|
install ../*.cli data/clispec
|
||||||
|
|
||||||
|
clean:
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile *~ .depend
|
||||||
|
rm -rf data
|
||||||
|
|
||||||
|
install:
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
|
||||||
|
install-include:
|
||||||
|
|
||||||
|
depend:
|
||||||
|
$(CC) $(DEPENDFLAGS) $(INCLUDES) $(CFLAGS) -MM $(SRC) > .depend
|
||||||
|
|
||||||
|
#include .depend
|
||||||
|
|
||||||
8
example/docker/README
Normal file
8
example/docker/README
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
Run the ietf routing example as docker container.
|
||||||
|
Use the dockerhub container, or alternatively, build clicon as docker images
|
||||||
|
by doing make docker in the top builddir.
|
||||||
|
|
||||||
|
data_dir="$(pwd)/data"
|
||||||
|
sudo docker run -ti --rm --net host -v "$data_dir":/data olofhagsand/clicon_backend:v1.0
|
||||||
|
|
||||||
|
sudo docker run -ti --rm --net host -v "$data_dir":/data olofhagsand/clicon_cli:v1.0
|
||||||
67
example/docker/routing.conf.local
Normal file
67
example/docker/routing.conf.local
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
# Main YANG module first parsed by parser (in CLICON_YANG_DIR). eg clicon.yang.
|
||||||
|
|
||||||
|
# Location of configuration-file for default values (this file)
|
||||||
|
CLICON_CONFIGFILE /data/clicon.conf
|
||||||
|
# Location of YANG module and submodule files. Only if CLICON_DBSPEC_TYPE is YANG
|
||||||
|
CLICON_YANG_DIR /data/yang
|
||||||
|
# Option used to construct initial yang file:
|
||||||
|
# <module>[@<revision>]
|
||||||
|
# This option is only relevant if CLICON_DBSPEC_TYPE is YANG
|
||||||
|
# CLICON_YANG_MODULE_MAIN clicon
|
||||||
|
# Option used to construct initial yang file:
|
||||||
|
# <module>[@<revision>]
|
||||||
|
# This option is only relevant if CLICON_DBSPEC_TYPE is YANG
|
||||||
|
CLICON_YANG_MODULE_REVISION
|
||||||
|
# Candidate qdbm database
|
||||||
|
CLICON_CANDIDATE_DB /data/candidate_db
|
||||||
|
# Running qdbm database
|
||||||
|
CLICON_RUNNING_DB /data/running_db
|
||||||
|
# Location of backend .so plugins
|
||||||
|
CLICON_BACKEND_DIR /data/backend
|
||||||
|
# Location of netconf (frontend) .so plugins
|
||||||
|
CLICON_NETCONF_DIR /data/netconf
|
||||||
|
# Location of cli frontend .so plugins
|
||||||
|
CLICON_CLI_DIR /data/cli
|
||||||
|
# Location of frontend .cli cligen spec files
|
||||||
|
CLICON_CLISPEC_DIR /data/clispec
|
||||||
|
# Directory where to save configuration commit history (in XML). Snapshots
|
||||||
|
# are saved chronologically
|
||||||
|
CLICON_ARCHIVE_DIR /data
|
||||||
|
# XXX Name of startup configuration file (in XML)
|
||||||
|
CLICON_STARTUP_CONFIG /data/startup-config
|
||||||
|
# Address family for communicating with clicon_backend (UNIX|IPv4|IPv6)
|
||||||
|
CLICON_SOCK_FAMILY UNIX
|
||||||
|
# If family above is AF_UNIX: Unix socket for communicating with clicon_backend
|
||||||
|
# If family above is AF_INET: IPv4 address
|
||||||
|
CLICON_SOCK /data/routing.sock
|
||||||
|
# Inet socket port for communicating with clicon_backend (only IPv4|IPv6)
|
||||||
|
CLICON_SOCK_PORT 4535
|
||||||
|
# Process-id file
|
||||||
|
CLICON_BACKEND_PIDFILE /data/routing.pidfile
|
||||||
|
|
||||||
|
|
||||||
|
# Save values as XML in database instead of lvec:s.
|
||||||
|
# This is optimized for yang specified applications
|
||||||
|
# But not compatible with key-based application (eg Rost)
|
||||||
|
CLICON_DB_XML 1
|
||||||
|
|
||||||
|
# Startup CLI mode. This should match the CLICON_MODE in your startup clispec file
|
||||||
|
CLICON_CLI_MODE routing
|
||||||
|
|
||||||
|
# Option used to construct initial yang file:
|
||||||
|
# <module>[@<revision>]
|
||||||
|
# This option is only relevant if CLICON_DBSPEC_TYPE is YANG
|
||||||
|
CLICON_YANG_MODULE_MAIN ietf-ip
|
||||||
|
|
||||||
|
# Option used to construct initial yang file:
|
||||||
|
# <module>[@<revision>]
|
||||||
|
# This option is only relevant if CLICON_DBSPEC_TYPE is YANG
|
||||||
|
CLICON_YANG_MODULE_REVISION 2014-06-16
|
||||||
|
|
||||||
|
# Generate code for CLI completion of existing db symbols
|
||||||
|
# CLICON_CLI_GENMODEL_COMPLETION 0
|
||||||
|
CLICON_CLI_GENMODEL_COMPLETION 1
|
||||||
|
|
||||||
|
# How to generate and show CLI syntax: VARS|ALL
|
||||||
|
# CLICON_CLI_GENMODEL_TYPE VARS
|
||||||
|
CLICON_CLI_GENMODEL_TYPE VARS
|
||||||
Loading…
Add table
Add a link
Reference in a new issue