This allows a distro to put the distro specific default network
configuration (for example bridge device, link type), or other lxc
configuration in the case that -f is not passed by the user to
lxc-create, in which case lxc-create will use the distro conf file as
the basis for the containers config.

Signed-off-by: Dwight Engen <dwight.en...@oracle.com>
---
 Makefile.am             |    2 +-
 config/Makefile.am      |    9 +++++++++
 config/lxc.conf.debian  |    3 +++
 config/lxc.conf.libvirt |    3 +++
 config/lxc.conf.unknown |    1 +
 configure.ac            |   25 +++++++++++++++++++++++++
 lxc.spec.in             |    1 +
 src/lxc/lxc-create.in   |   23 +++++++++--------------
 8 files changed, 52 insertions(+), 15 deletions(-)
 create mode 100644 config/lxc.conf.debian
 create mode 100644 config/lxc.conf.libvirt
 create mode 100644 config/lxc.conf.unknown

diff --git a/Makefile.am b/Makefile.am
index c66ecc6..2f7606f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,7 +2,7 @@
 
 ACLOCAL_AMFLAGS = -I config
 
-SUBDIRS = src templates doc
+SUBDIRS = config src templates doc
 DIST_SUBDIRS = config src templates doc
 EXTRA_DIST = autogen.sh lxc.spec CONTRIBUTING MAINTAINERS ChangeLog
 
diff --git a/config/Makefile.am b/config/Makefile.am
index 783ba73..6c39d3c 100644
--- a/config/Makefile.am
+++ b/config/Makefile.am
@@ -1,2 +1,11 @@
+configdir = $(sysconfdir)/lxc
+config_DATA = lxc.conf
+conffile = @LXC_CONFFILE@
+
+EXTRA_DIST = lxc.conf.debian lxc.conf.libvirt lxc.conf.unknown
+
+lxc.conf:
+       cp $(conffile) $@
+
 distclean:
        @$(RM) -f compile config.guess config.sub depcomp install-sh ltmain.sh 
missing Makefile.in Makefile
diff --git a/config/lxc.conf.debian b/config/lxc.conf.debian
new file mode 100644
index 0000000..d2ac167
--- /dev/null
+++ b/config/lxc.conf.debian
@@ -0,0 +1,3 @@
+lxc.network.type=veth
+lxc.network.link=lxcbr0
+lxc.network.flags=up
diff --git a/config/lxc.conf.libvirt b/config/lxc.conf.libvirt
new file mode 100644
index 0000000..7128619
--- /dev/null
+++ b/config/lxc.conf.libvirt
@@ -0,0 +1,3 @@
+lxc.network.type=veth
+lxc.network.link=virbr0
+lxc.network.flags=up
diff --git a/config/lxc.conf.unknown b/config/lxc.conf.unknown
new file mode 100644
index 0000000..16fa9d6
--- /dev/null
+++ b/config/lxc.conf.unknown
@@ -0,0 +1 @@
+lxc.network.type=empty
diff --git a/configure.ac b/configure.ac
index b9a0d65..9f1e669 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,10 +12,34 @@ AM_PROG_CC_C_O
 AC_GNU_SOURCE
 AC_CHECK_PROG(SETCAP, setcap, yes, no, $PATH$PATH_SEPARATOR/sbin)
 
+# Make sure to test for fedora first since it has both fedora-release
+# and redhat-release
 if test -f /etc/debian_version; then
     osname="debian"
+elif test -f /etc/oracle-release; then
+    osname="oracle"
+elif test -f /etc/fedora-release; then
+    osname="fedora"
+elif test -f /etc/redhat-release; then
+    osname="redhat"
 fi
+
 AM_CONDITIONAL([HAVE_DEBIAN], [test x"$osname" == xdebian])
+AM_CONDITIONAL([HAVE_ORACLE], [test x"$osname" == xoracle])
+AM_CONDITIONAL([HAVE_FEDORA], [test x"$osname" == xfedora])
+AM_CONDITIONAL([HAVE_REDHAT], [test x"$osname" == xredhat])
+
+case $osname in
+       debian)
+               conffile=lxc.conf.debian
+               ;;
+       oracle|redhat|fedora)
+               conffile=lxc.conf.libvirt
+               ;;
+       *)
+               conffile=lxc.conf.unknown
+               ;;
+esac
 
 AC_ARG_ENABLE([rpath],
        [AC_HELP_STRING([--disable-rpath], [do not set rpath in executables])],
@@ -111,6 +135,7 @@ AC_ARG_WITH([rootfs-path],
                [lxc rootfs mount point]
        )], [], [with_rootfs_path=['${libdir}/lxc/rootfs']])
 
+AS_AC_EXPAND(LXC_CONFFILE, $conffile)
 AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)")
 AS_AC_EXPAND(LXCPATH, "${with_config_path}")
 AS_AC_EXPAND(LXCROOTFSMOUNT, "${with_rootfs_path}")
diff --git a/lxc.spec.in b/lxc.spec.in
index e14eff6..24d3ded 100644
--- a/lxc.spec.in
+++ b/lxc.spec.in
@@ -93,6 +93,7 @@ rm -rf %{buildroot}
 %{_mandir}/*
 %{_datadir}/doc/*
 %{_datadir}/lxc/*
+%{_sysconfdir}/lxc/*
 
 %files libs
 %defattr(-,root,root)
diff --git a/src/lxc/lxc-create.in b/src/lxc/lxc-create.in
index 79c67d6..949edbe 100644
--- a/src/lxc/lxc-create.in
+++ b/src/lxc/lxc-create.in
@@ -260,16 +260,18 @@ trap cleanup HUP INT TERM
 mkdir -p $lxc_path/$lxc_name
 
 if [ -z "$lxc_config" ]; then
-    touch $lxc_path/$lxc_name/config
-else
-    if [ ! -r "$lxc_config" ]; then
-       echo "$(basename $0): '$lxc_config' configuration file not found" >&2
-       exit 1
-    fi
+    lxc_config="@SYSCONFDIR@/lxc/lxc.conf"
+    echo
+    echo "$(basename $0): No config file specified, using the default config 
$lxc_config"
+fi
 
-    cp $lxc_config $lxc_path/$lxc_name/config
+if [ ! -r "$lxc_config" ]; then
+    echo "$(basename $0): '$lxc_config' configuration file not found" >&2
+    exit 1
 fi
 
+cp $lxc_config $lxc_path/$lxc_name/config
+
 if [ -n "$custom_rootfs" ]; then
        if grep -q "lxc.rootfs" $lxc_path/$lxc_name/config ; then
                echo "configuration file already specifies a lxc.rootfs"
@@ -295,13 +297,6 @@ if [ ! -z $lxc_template ]; then
         cleanup
     fi
 
-    if [ -z "$lxc_config" ]; then
-       echo "Note: Usually the template option is called with a configuration"
-       echo "file option too, mostly to configure the network."
-       echo "For more information look at lxc.conf (5)"
-       echo
-    fi
-
     ${templatedir}/lxc-$lxc_template --path=$lxc_path/$lxc_name 
--name=$lxc_name $*
     if [ $? -ne 0 ]; then
         echo "$(basename $0): failed to execute template '$lxc_template'" >&2
-- 
1.7.1


------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to