]> git.proxmox.com Git - mirror_lxc.git/commitdiff
copy the configuration file in the conf repo
authorDaniel Lezcano <dlezcano@fr.ibm.com>
Thu, 28 May 2009 10:10:50 +0000 (12:10 +0200)
committerDaniel Lezcano <dlezcano@fr.ibm.com>
Thu, 28 May 2009 10:10:50 +0000 (12:10 +0200)
When creating the container, copy the configuration file to the
configuration tree.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
src/lxc/lxc_create.c
src/lxc/lxc_destroy.c

index d6a3a9ba5a2b58870e5df3d1511c08a7afac5266..110d682747eacf093bef2b1bd00efab0c1df42b1 100644 (file)
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
+#define _GNU_SOURCE
 #include <stdio.h>
 #include <libgen.h>
 #include <unistd.h>
+#include <stdlib.h>
 #include <sys/param.h>
 #include <sys/utsname.h>
 #include <sys/types.h>
@@ -67,7 +69,20 @@ Options :\n\
 
 static int copy_config_file(const char *name, const char *file)
 {
-       return 0;
+       char *src;
+       int ret;
+
+       if (!asprintf(&src, LXCPATH "/%s/config", name)) {
+               ERROR("failed to allocate memory");
+               return -1;
+       }
+
+       ret = lxc_copy_file(file, src);
+       if (ret)
+               ERROR("failed to copy '%s' to '%s'", file, src);
+       free(src);
+
+       return ret;
 }
 
 int main(int argc, char *argv[])
@@ -96,12 +111,14 @@ int main(int argc, char *argv[])
                return -1;
        }
 
-       if (copy_config_file(my_args.name, my_args.rcfile)) {
+       if (my_args.rcfile && copy_config_file(my_args.name, my_args.rcfile)) {
                ERROR("failed to copy the configuration file");
                lxc_destroy(my_args.name);
                return -1;
        }
 
+       INFO("'%s' created", my_args.name);
+
        return 0;
 }
 
index 6c1cf3b8b5d19d3f8c14bf67a9c3ae45b5482164..7aef61687af63b4cf1ba1f6c859d8ff7c6fcac09 100644 (file)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 #include <stdio.h>
+#include <errno.h>
 #include <unistd.h>
 #include <sys/types.h>
 
 #include <lxc/lxc.h>
 #include "arguments.h"
 
+lxc_log_define(lxc_destroy, lxc);
+
 static const struct option my_longopts[] = {
        LXC_COMMON_OPTIONS
 };
@@ -45,6 +48,24 @@ Options :\n\
        .checker  = NULL,
 };
 
+static int remove_config_file(const char *name)
+{
+       char path[MAXPATHLEN];
+
+       snprintf(path, MAXPATHLEN, LXCPATH "/%s/config", name);
+
+       /* config file does not exists */
+       if (access(path, F_OK))
+               return 0;
+
+       if (unlink(path)) {
+               ERROR("failed to unlink '%s'", path);
+               return -1;
+       }
+
+       return 0;
+}
+
 int main(int argc, char *argv[])
 {
        if (lxc_arguments_parse(&my_args, argc, argv))
@@ -54,6 +75,16 @@ int main(int argc, char *argv[])
                         my_args.progname, my_args.quiet))
                return -1;
 
-       return lxc_destroy(my_args.name);
+       if (remove_config_file(my_args.name))
+               WARN("failed to remove the configuration file");
+
+       if (lxc_destroy(my_args.name)) {
+               ERROR("failed to destroy the container");
+               return -1;
+       }
+
+       INFO("'%s' destroyed", my_args.name);
+
+       return 0;
 }