Hello.
I think the directory /etc better suited for storing configuration files.
This patch allows you to specify the location configs as options for
./configure.


-- 
Alexey Shabalin
From 81c5933f62c85f2b09288393b44f831a1debfdee Mon Sep 17 00:00:00 2001
From: Alexey Shabalin <sh...@altlinux.org>
Date: Tue, 23 Aug 2011 17:35:23 +0400
Subject: [PATCH] - Change --with-config-path in configure for define path for
 config files. - Add --with-container-path to configure for
 define path for containers repository. Allow install config
 files for containers to /etc/lxc dir. For old way you can
 use same --with-config-path and --with-container-path.

---
 configure.ac              |   17 +++++++++++++----
 src/lxc/lxc-clone.in      |   30 ++++++++++++++++--------------
 src/lxc/lxc-create.in     |    8 +++++---
 src/lxc/lxc-destroy.in    |    6 ++++--
 src/lxc/lxc_execute.c     |    2 +-
 src/lxc/lxc_restart.c     |    2 +-
 src/lxc/lxc_start.c       |    2 +-
 templates/lxc-busybox.in  |   11 ++++++-----
 templates/lxc-debian.in   |    7 ++++---
 templates/lxc-fedora.in   |    6 ++++--
 templates/lxc-lenny.in    |    7 ++++---
 templates/lxc-opensuse.in |   11 ++++++-----
 templates/lxc-sshd.in     |    9 +++++----
 templates/lxc-ubuntu.in   |   11 ++++++-----
 14 files changed, 76 insertions(+), 53 deletions(-)

diff --git a/configure.ac b/configure.ac
index 56c5f98..8b53060 100644
--- a/configure.ac
+++ b/configure.ac
@@ -43,8 +43,14 @@ AS_AC_EXPAND(DOCDIR, $docdir)
 AC_ARG_WITH([config-path],
 	[AC_HELP_STRING(
 		[--with-config-path=dir],
-		[lxc configuration repository path]
-	)], [], [with_config_path="${localstatedir}/lib/lxc"])
+		[lxc configuration files path]
+	)], [], [with_config_path="${sysconfdir}/lxc"])
+
+AC_ARG_WITH([container-path],
+	[AC_HELP_STRING(
+		[--with-container-path=dir],
+		[lxc containers repository path]
+	)], [], [with_container_path="${localstatedir}/lib/lxc"])
 
 AC_ARG_WITH([rootfs-path],
 	[AC_HELP_STRING(
@@ -54,13 +60,16 @@ AC_ARG_WITH([rootfs-path],
 
 AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)")
 
-AS_AC_EXPAND(LXCPATH, "${with_config_path}")
+AS_AC_EXPAND(LXCETCPATH, "${with_config_path}")
+AS_AC_EXPAND(LXCPATH, "${with_container_path}")
 AS_AC_EXPAND(LXCROOTFSMOUNT, "${with_rootfs_path}")
 AS_AC_EXPAND(LXCINITDIR, $libdir/lxc)
 AS_AC_EXPAND(LXCTEMPLATEDIR, $libdir/lxc/templates)
-AH_TEMPLATE([LXCPATH], [lxc configuration repository])
+AH_TEMPLATE([LXCETCPATH], [lxc configuration files])
+AH_TEMPLATE([LXCPATH], [lxc containers repository])
 AH_TEMPLATE([LXCINITDIR], [lxc-init directory location])
 AH_TEMPLATE([LXCROOTFSMOUNT], [lxc default rootfs mount point])
+AC_DEFINE_UNQUOTED(LXCETCPATH, "$LXCETCPATH")
 AC_DEFINE_UNQUOTED(LXCPATH, "$LXCPATH")
 AC_DEFINE_UNQUOTED(LXCINITDIR, "$LXCINITDIR")
 AC_DEFINE_UNQUOTED(LXCROOTFSMOUNT, "$LXCROOTFSMOUNT")
diff --git a/src/lxc/lxc-clone.in b/src/lxc/lxc-clone.in
index 91944a0..810efac 100644
--- a/src/lxc/lxc-clone.in
+++ b/src/lxc/lxc-clone.in
@@ -40,7 +40,8 @@ help() {
 
 shortoptions='ho:n:sL:v:'
 longoptions='help,orig:,name:,snapshot,fssize,vgname'
-lxc_path=/var/lib/lxc
+lxc_path=@LXCPATH@
+config_path=@LXCETCPATH@
 bindir=/usr/bin
 snapshot=no
 lxc_size=2G
@@ -127,12 +128,12 @@ if [ ! -r $lxc_path ]; then
     exit 1
 fi
 
-if [ ! -d "$lxc_path/$lxc_orig" ]; then
+if [ ! -d "$lxc_path/$lxc_orig" -o ! -f "$config_path/$lxc_orig/config" ]; then
     echo "'$lxc_orig' does not exist"
     exit 1
 fi
 
-if [ -d "$lxc_path/$lxc_new" ]; then
+if [ -d "$lxc_path/$lxc_new" -o -f "$config_path/$lxc_new/config" ]; then
     echo "'$lxc_new' already exists"
     exit 1
 fi
@@ -140,25 +141,26 @@ fi
 trap "${bindir}/lxc-destroy -n $lxc_new; echo aborted; exit 1" SIGHUP SIGINT SIGTERM
 
 mkdir -p $lxc_path/$lxc_new
+mkdir -p $config_path/$lxc_new
 
 echo "Tweaking configuration"
-cp $lxc_path/$lxc_orig/config $lxc_path/$lxc_new/config
-sed -i '/lxc.utsname/d' $lxc_path/$lxc_new/config
-echo "lxc.utsname = $hostname" >> $lxc_path/$lxc_new/config
+cp $config_path/$lxc_orig/config $config_path/$lxc_new/config
+sed -i '/lxc.utsname/d' $config_path/$lxc_new/config
+echo "lxc.utsname = $hostname" >> $config_path/$lxc_new/config
 
-sed -i '/lxc.mount/d' $lxc_path/$lxc_new/config
-echo "lxc.mount = $lxc_path/$lxc_new/fstab" >> $lxc_path/$lxc_new/config
+sed -i '/lxc.mount/d' $config_path/$lxc_new/config
+echo "lxc.mount = $config_path/$lxc_new/fstab" >> $config_path/$lxc_new/config
 
-cp $lxc_path/$lxc_orig/fstab $lxc_path/$lxc_new/fstab
-sed -i "s@$lxc_path/$lxc_orig@$lxc_path/$lxc_new@" $lxc_path/$lxc_new/fstab
+cp $config_path/$lxc_orig/fstab $config_path/$lxc_new/fstab
+sed -i "s@$config_path/$lxc_orig@$config_path/$lxc_new@" $config_path/$lxc_new/fstab
 
 echo "Copying rootfs..."
 rootfs=$lxc_path/$lxc_new/rootfs
 # First figure out if the old is a device.  For now we only support
 # lvm devices.
 mounted=0
-sed -i '/lxc.rootfs/d' $lxc_path/$lxc_new/config
-oldroot=`grep lxc.rootfs $lxc_path/$lxc_orig/config | awk -F= '{ print $2 '}`
+sed -i '/lxc.rootfs/d' $config_path/$lxc_new/config
+oldroot=`grep lxc.rootfs $config_path/$lxc_orig/config | awk -F= '{ print $2 '}`
 if [ -b $oldroot ]; then
 	# this is a device.  If we don't want to snapshot, then mkfs, mount
 	# and rsync.  Trivial but not yet implemented
@@ -173,14 +175,14 @@ if [ -b $oldroot ]; then
 	fi
 	# ok, create a snapshot of the lvm device
 	lvcreate -s -L $lxc_size -n $lxc_new /dev/$lxc_vg/$lxc_orig || exit 1
-	echo "lxc.rootfs = /dev/$lxc_vg/$lxc_new" >> $lxc_path/$lxc_new/config
+	echo "lxc.rootfs = /dev/$lxc_vg/$lxc_new" >> $config_path/$lxc_new/config
 	# and mount it so we can tweak it
 	mkdir -p $lxc_path/$lxc_new/rootfs
 	mount /dev/$lxc_vg/$lxc_new $rootfs || { echo "failed to mount new rootfs"; exit 1; }
 	mounted=1
 else
 	cp -a $lxc_path/$lxc_orig/rootfs $lxc_path/$lxc_new/rootfs || return 1
-	echo "lxc.rootfs = $rootfs" >> $lxc_path/$lxc_new/config
+	echo "lxc.rootfs = $rootfs" >> $config_path/$lxc_new/config
 fi
 
 echo "Updating rootfs..."
diff --git a/src/lxc/lxc-create.in b/src/lxc/lxc-create.in
index 63750e9..a12d8eb 100644
--- a/src/lxc/lxc-create.in
+++ b/src/lxc/lxc-create.in
@@ -49,6 +49,7 @@ help() {
 shortoptions='hn:f:t:'
 longoptions='help,name:,config:,template:'
 lxc_path=@LXCPATH@
+lxc_etc_path=@LXCETCPATH@
 bindir=@BINDIR@
 templatedir=@LXCTEMPLATEDIR@
 
@@ -118,7 +119,7 @@ if [ ! -r $lxc_path ]; then
     exit 1
 fi
 
-if [ -d "$lxc_path/$lxc_name" ]; then
+if [ -d "$lxc_path/$lxc_name" -o -d "$lxc_etc_path/$lxc_name" ]; then
     echo "'$lxc_name' already exists"
     exit 1
 fi
@@ -126,16 +127,17 @@ fi
 trap "${bindir}/lxc-destroy -n $lxc_name; echo aborted; exit 1" SIGHUP SIGINT SIGTERM
 
 mkdir -p $lxc_path/$lxc_name
+mkdir -p $lxc_etc_path/$lxc_name
 
 if [ -z "$lxc_config" ]; then
-    touch $lxc_path/$lxc_name/config
+    touch $lxc_etc_path/$lxc_name/config
 else
     if [ ! -r "$lxc_config" ]; then
 	echo "'$lxc_config' configuration file not found"
 	exit 1
     fi
 
-    cp $lxc_config $lxc_path/$lxc_name/config
+    cp $lxc_config $lxc_etc_path/$lxc_name/config
 fi
 
 if [ ! -z $lxc_template ]; then
diff --git a/src/lxc/lxc-destroy.in b/src/lxc/lxc-destroy.in
index ddd3c3b..91bdbe1 100644
--- a/src/lxc/lxc-destroy.in
+++ b/src/lxc/lxc-destroy.in
@@ -37,6 +37,7 @@ fi
 shortoptions='n:'
 longoptions='name:'
 lxc_path=@LXCPATH@
+lxc_etc_path=@LXCETCPATH@
 
 getopt=$(getopt -o $shortoptions --longoptions  $longoptions -- "$@")
 if [ $? != 0 ]; then
@@ -70,7 +71,7 @@ if [ -z "$lxc_name" ]; then
     exit 1
 fi
 
-if [ ! -d "$lxc_path/$lxc_name" ]; then
+if [ ! -d "$lxc_path/$lxc_name" -o ! -f "$lxc_etc_path/$lxc_name/config"  ]; then
     echo "'$lxc_name' does not exist"
     exit 1
 fi
@@ -78,7 +79,7 @@ fi
 # Deduce the type of rootfs
 # If LVM partition, destroy it.  If anything else, ignore it.  We'll support
 # deletion of others later.
-rootdev=`grep lxc.rootfs $lxc_path/$lxc_name/config | awk -F= '{ print $2 '}`
+rootdev=`grep lxc.rootfs $lxc_etc_path/$lxc_name/config | awk -F= '{ print $2 '}`
 if [ -b $rootdev -o -h $rootdev ]; then
 	lvdisplay $rootdev > /dev/null 2>&1
 	if [ $? -eq 0 ]; then
@@ -87,3 +88,4 @@ if [ -b $rootdev -o -h $rootdev ]; then
 fi
 # recursively remove the container to remove old container configuration
 rm -rf --preserve-root $lxc_path/$lxc_name
+rm -rf --preserve-root $lxc_etc_path/$lxc_name
diff --git a/src/lxc/lxc_execute.c b/src/lxc/lxc_execute.c
index f480859..e2dd5b1 100644
--- a/src/lxc/lxc_execute.c
+++ b/src/lxc/lxc_execute.c
@@ -113,7 +113,7 @@ int main(int argc, char *argv[])
 	else {
 		int rc;
 
-		rc = asprintf(&rcfile, LXCPATH "/%s/config", my_args.name);
+		rc = asprintf(&rcfile, LXCETCPATH "/%s/config", my_args.name);
 		if (rc == -1) {
 			SYSERROR("failed to allocate memory");
 			return -1;
diff --git a/src/lxc/lxc_restart.c b/src/lxc/lxc_restart.c
index 7548682..31c8143 100644
--- a/src/lxc/lxc_restart.c
+++ b/src/lxc/lxc_restart.c
@@ -132,7 +132,7 @@ int main(int argc, char *argv[])
 	else {
 		int rc;
 
-		rc = asprintf(&rcfile, LXCPATH "/%s/config", my_args.name);
+		rc = asprintf(&rcfile, LXCETCPATH "/%s/config", my_args.name);
 		if (rc == -1) {
 			SYSERROR("failed to allocate memory");
 			return -1;
diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c
index fdd4c72..36b4dd8 100644
--- a/src/lxc/lxc_start.c
+++ b/src/lxc/lxc_start.c
@@ -131,7 +131,7 @@ int main(int argc, char *argv[])
 	else {
 		int rc;
 
-		rc = asprintf(&rcfile, LXCPATH "/%s/config", my_args.name);
+		rc = asprintf(&rcfile, LXCETCPATH "/%s/config", my_args.name);
 		if (rc == -1) {
 			SYSERROR("failed to allocate memory");
 			return err;
diff --git a/templates/lxc-busybox.in b/templates/lxc-busybox.in
index 720ceef..ccd5830 100644
--- a/templates/lxc-busybox.in
+++ b/templates/lxc-busybox.in
@@ -224,11 +224,11 @@ configure_busybox()
 
 copy_configuration()
 {
-    path=$1
+    config_path=$1
     rootfs=$2
     name=$3
 
-cat <<EOF >> $path/config
+cat <<EOF >> $config_path/$name/config
 lxc.utsname = $name
 lxc.tty = 1
 lxc.pts = 1
@@ -236,14 +236,14 @@ lxc.rootfs = $rootfs
 EOF
 
 if [ -d "$rootfs/lib" ]; then
-cat <<EOF >> $path/config
+cat <<EOF >> $config_path/$name/config
 lxc.mount.entry=/lib $rootfs/lib none ro,bind 0 0
 lxc.mount.entry=/usr/lib $rootfs/usr/lib none ro,bind 0 0
 EOF
 fi
 
 if [ -d "/lib64" ] && [ -d "$rootfs/lib64" ]; then
-cat <<EOF >> $path/config
+cat <<EOF >> $config_path/$name/config
 lxc.mount.entry=/lib64 $rootfs/lib64 none ro,bind 0 0
 lxc.mount.entry=/usr/lib64 $rootfs/usr/lib64 none ro,bind 0 0
 EOF
@@ -287,6 +287,7 @@ if [ -z "$path" ]; then
 fi
 
 rootfs=$path/rootfs
+config_path=@LXCETCPATH@
 
 install_busybox $rootfs $name
 if [ $? -ne 0 ]; then
@@ -300,7 +301,7 @@ if [ $? -ne 0 ]; then
     exit 1
 fi
 
-copy_configuration $path $rootfs $name
+copy_configuration $config_path $rootfs $name
 if [ $? -ne 0 ]; then
     echo "failed to write configuration file"
     exit 1
diff --git a/templates/lxc-debian.in b/templates/lxc-debian.in
index 75a33a4..4cc9830 100644
--- a/templates/lxc-debian.in
+++ b/templates/lxc-debian.in
@@ -184,11 +184,11 @@ install_debian()
 
 copy_configuration()
 {
-    path=$1
+    config_path=$1
     rootfs=$2
     name=$3
 
-    cat <<EOF >> $path/config
+    cat <<EOF >> $config_path/$name/config
 lxc.tty = 4
 lxc.pts = 1024
 lxc.rootfs = $rootfs
@@ -294,6 +294,7 @@ if [ "$(id -u)" != "0" ]; then
 fi
 
 rootfs=$path/rootfs
+config_path=@LXCETCPATH@
 
 install_debian $rootfs
 if [ $? -ne 0 ]; then
@@ -307,7 +308,7 @@ if [ $? -ne 0 ]; then
     exit 1
 fi
 
-copy_configuration $path $rootfs
+copy_configuration $config_path $rootfs $name
 if [ $? -ne 0 ]; then
     echo "failed write configuration file"
     exit 1
diff --git a/templates/lxc-fedora.in b/templates/lxc-fedora.in
index 81f8bc4..1df602b 100644
--- a/templates/lxc-fedora.in
+++ b/templates/lxc-fedora.in
@@ -28,7 +28,8 @@
 #Configurations
 arch=$(arch)
 cache_base=/var/cache/lxc/fedora/$arch
-default_path=/var/lib/lxc
+default_path=@LXCPATH@
+default_config_path=@LXCETCPATH@
 root_password=rooter
 lxc_network_type=veth
 lxc_network_link=virbr0
@@ -227,6 +228,7 @@ EOF
 +proc            $rootfs_path/proc         proc    nodev,noexec,nosuid 0 0
 +devpts          $rootfs_path/dev/pts      devpts defaults 0 0
 +sysfs           $rootfs_path/sys          sysfs defaults  0 0
+EOF
 
     if [ $? -ne 0 ]; then
 	echo "Failed to add configuration"
@@ -327,7 +329,7 @@ if [ "$(id -u)" != "0" ]; then
 fi
 
 rootfs_path=$path/$name/rootfs
-config_path=$default_path/$name
+config_path=$default_config_path/$name
 cache=$cache_base/$release
 
 if [ -f $config_path/config ]; then
diff --git a/templates/lxc-lenny.in b/templates/lxc-lenny.in
index 3720dce..b9bc4a2 100644
--- a/templates/lxc-lenny.in
+++ b/templates/lxc-lenny.in
@@ -174,11 +174,11 @@ install_debian()
 
 copy_configuration()
 {
-    path=$1
+    config_path=$1
     rootfs=$2
     name=$3
 
-    cat <<EOF >> $path/config
+    cat <<EOF >> $config_path/$name/config
 lxc.tty = 4
 lxc.pts = 1024
 lxc.rootfs = $rootfs
@@ -284,6 +284,7 @@ if [ "$(id -u)" != "0" ]; then
 fi
 
 rootfs=$path/rootfs
+config_path=@LXCETCPATH@
 
 install_debian $rootfs
 if [ $? -ne 0 ]; then
@@ -297,7 +298,7 @@ if [ $? -ne 0 ]; then
     exit 1
 fi
 
-copy_configuration $path $rootfs
+copy_configuration $config_path $rootfs $name
 if [ $? -ne 0 ]; then
     echo "failed write configuration file"
     exit 1
diff --git a/templates/lxc-opensuse.in b/templates/lxc-opensuse.in
index 811876a..8e90b18 100644
--- a/templates/lxc-opensuse.in
+++ b/templates/lxc-opensuse.in
@@ -228,17 +228,17 @@ install_opensuse()
 
 copy_configuration()
 {
-    path=$1
+    config_path=$1
     rootfs=$2
     name=$3
 
-    cat <<EOF >> $path/config
+    cat <<EOF >> $config_path/$name/config
 lxc.utsname = $name
 
 lxc.tty = 4
 lxc.pts = 1024
 lxc.rootfs = $rootfs
-lxc.mount  = $path/fstab
+lxc.mount  = $config_path/$name/fstab
 
 lxc.cgroup.devices.deny = a
 # /dev/null and zero
@@ -258,7 +258,7 @@ lxc.cgroup.devices.allow = c 5:2 rwm
 lxc.cgroup.devices.allow = c 254:0 rwm
 EOF
 
-    cat <<EOF > $path/fstab
+    cat <<EOF > $config_path/$name/fstab
 proc            $rootfs/proc         proc	nodev,noexec,nosuid 0 0
 sysfs           $rootfs/sys          sysfs	defaults  0 0
 EOF
@@ -343,6 +343,7 @@ if [ "$(id -u)" != "0" ]; then
 fi
 
 rootfs=$path/rootfs
+config_path=@LXCETCPATH@
 
 install_opensuse $rootfs
 if [ $? -ne 0 ]; then
@@ -356,7 +357,7 @@ if [ $? -ne 0 ]; then
     exit 1
 fi
 
-copy_configuration $path $rootfs $name
+copy_configuration $config_path $rootfs $name
 if [ $? -ne 0 ]; then
     echo "failed write configuration file"
     exit 1
diff --git a/templates/lxc-sshd.in b/templates/lxc-sshd.in
index 0e8346f..c57843b 100644
--- a/templates/lxc-sshd.in
+++ b/templates/lxc-sshd.in
@@ -92,11 +92,11 @@ EOF
 
 copy_configuration()
 {
-    path=$1
+    config_path=$1
     rootfs=$2
     name=$3
 
-cat <<EOF >> $path/config
+cat <<EOF >> $config_path/$name/config
 lxc.utsname = $name
 lxc.pts = 1024
 lxc.rootfs = $rootfs
@@ -110,7 +110,7 @@ lxc.mount.entry=@LXCTEMPLATEDIR@/lxc-sshd $rootfs/sbin/init none bind 0 0
 EOF
 
 if [ "$(uname -m)" = "x86_64" ]; then
-    cat <<EOF >> $path/config
+    cat <<EOF >> $config_path/$name/config
 lxc.mount.entry=/lib64 $rootfs/lib64 none ro,bind 0 0
 EOF
 fi
@@ -171,6 +171,7 @@ if [ -z "$path" ]; then
 fi
 
 rootfs=$path/rootfs
+config_path=@LXCETCPATH@
 
 install_sshd $rootfs
 if [ $? -ne 0 ]; then
@@ -184,7 +185,7 @@ if [ $? -ne 0 ]; then
     exit 1
 fi
 
-copy_configuration $path $rootfs $name
+copy_configuration $config_path $rootfs $name
 if [ $? -ne 0 ]; then
     echo "failed to write configuration file"
     exit 1
diff --git a/templates/lxc-ubuntu.in b/templates/lxc-ubuntu.in
index 9a41a49..f966bd8 100644
--- a/templates/lxc-ubuntu.in
+++ b/templates/lxc-ubuntu.in
@@ -162,7 +162,7 @@ install_ubuntu()
 
 copy_configuration()
 {
-    path=$1
+    config_path=$1
     rootfs=$2
     name=$3
     arch=$4
@@ -171,13 +171,13 @@ copy_configuration()
         arch="i686"
     fi
 
-    cat <<EOF >> $path/config
+    cat <<EOF >> $config_path/$name/config
 lxc.utsname = $name
 
 lxc.tty = 4
 lxc.pts = 1024
 lxc.rootfs = $rootfs
-lxc.mount  = $path/fstab
+lxc.mount  = $config_path/$name/fstab
 lxc.arch = $arch
 
 lxc.cgroup.devices.deny = a
@@ -200,7 +200,7 @@ lxc.cgroup.devices.allow = c 254:0 rwm
 lxc.cgroup.devices.allow = c 10:229 rwm
 EOF
 
-    cat <<EOF > $path/fstab
+    cat <<EOF > $config_path/$name/fstab
 proc            $rootfs/proc         proc    nodev,noexec,nosuid 0 0
 sysfs           $rootfs/sys          sysfs defaults  0 0
 EOF
@@ -468,6 +468,7 @@ if [ "$(id -u)" != "0" ]; then
 fi
 
 rootfs=$path/rootfs
+config_path=@LXCETCPATH@
 
 install_ubuntu $rootfs $release
 if [ $? -ne 0 ]; then
@@ -481,7 +482,7 @@ if [ $? -ne 0 ]; then
     exit 1
 fi
 
-copy_configuration $path $rootfs $name $arch
+copy_configuration $config_path $rootfs $name $arch
 if [ $? -ne 0 ]; then
     echo "failed write configuration file"
     exit 1
-- 
1.7.6

------------------------------------------------------------------------------
Get a FREE DOWNLOAD! and learn more about uberSVN rich system, 
user administration capabilities and model configuration. Take 
the hassle out of deploying and managing Subversion and the 
tools developers use with it. http://p.sf.net/sfu/wandisco-d2d-2
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to