~ubuntu-branches/ubuntu/quantal/lxc/quantal-201205292108

« back to all changes in this revision

Viewing changes to .pc/0024-lxc-create-and-clone-fixes.patch/src/lxc/lxc-create.in

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn
  • Date: 2012-04-26 15:18:35 UTC
  • mfrom: (3.1.41 sid)
  • Revision ID: package-import@ubuntu.com-20120426151835-3vz6kb4m90gb26js
Tags: 0.8.0~rc1-4ubuntu1
* Merge from unstable.  Remaining changes:
  - control:
    - update maintainer
    - Build-Depends: add dh-apparmor and libapparmor-dev
    - lxc Depends: add bridge-utils, dnsmasq-base, iptables, rsync
    - lxc Recommends: add cgroup-lite | cgroup-bin, openssl
    - lxc Suggests: add btrfs-tools, lvm2, qemu-user-static
    - lxc Conflicts: remove (cgroup-bin)
  - Add lxc-start-ephemeral and lxc-wait to debian/local
  - apparmor:
    - add lxc.apparmor, lxc-containers.apparmor,
      lxc-default.apparmor, and new lxc.apparmor.in
  - add debian/lxc.conf (default container creation config file)
  - debian/lxc.install.in:
    * add lxc-start-ephemeral
    * add debian/lxc.conf
    * skip lxc-debconf*
    * skip lxc-ls (Use upstream's)
  - debian/lxc*.install.in: use '*', not @DEB_HOST_MULTIARCH@
  - Use our own completely different lxc.postinst and lxc.postrm
  - remove lxc.templates
  - debian/rules:
    * add DEB_DH_INSTALLINIT_ARGS = --upstart-only
    * don't do debconf stuff
    * add debian/*.apparmor.in to files processed under
      override_dh_auto_clean
    * don't comment out ubuntu or busybox templates
    * do apparmor stuff and install our own lxc-wait under override_dh_install
    * install our upstart scripts in override_dh_installinit
  - add lxc.default, lxc.lxc-net.upstart, lxc.upstart under
    debian/

* patches kept:
  - 0013-lxc-create-use-default-config.patch (needed manual rebase)
  - 0030-ubuntu-template-fail.patch
  - 0031-ubuntu-template-resolvconf.patch
  - 0044-lxc-destroy-rm-autos
  - debian/patches/0045-fix-other-templates
  - debian/patches/0046-lxc-clone-change-hwaddr
  - debian/patches/0047-bindhome-check-shell
  - debian/patches/0049-ubuntu-template-sudo-and-cleanup
  - debian/patches/0050-clone-lvm-sizes
  - debian/patches/0052-ubuntu-bind-user-conflict
  - debian/patches/0053-lxc-start-pin-rootfs
  - debian/patches/0054-ubuntu-debug
  - debian/patches/0055-ubuntu-handle-badgrp
  - debian/patches/0056-dont-watch-utmp
  - debian/patches/0057-update-manpages
  - debian/patches/0058-fixup-ubuntu-cloud
  - debian/patches/0059-reenable-daily-cloudimg
  - debian/patches/0060-lxc-shutdown
  - debian/patches/0061-lxc-start-apparmor
  - debian/patches/0062-templates-relative-paths
  - debian/patches/0063-check-apparmor-enabled
  - debian/patches/0064-apparmor-mount-proc
  - debian/patches/0065-fix-bindhome-relpath
  - debian/patches/0066-confile-typo
  - debian/patches/0067-templates-lxc-profile
  - debian/patches/0068-fix-lxc-config-layout 
  - debian/patches/0069-ubuntu-cloud-fix
  - debian/patches/0070-templates-rmdir-dev-shm
  - debian/patches/0071-ubuntu-cloud-fix-image-extraction
  - debian/patches/0072-lxc-shutdown-help
  - debian/patches/0073-lxc-destroy-waits-before-destroy
  - mark all patches which have been forwarded as such, refresh all
* 0074-lxc-execute-find-init: lxc-init had moved.  Introduce a function in
  lxc-execute to go find it.  Otherwise lxc-execute for any older releases
  will fail.
* 0075-lxc-ls-bash: lxc-ls needs bash, not sh
* add debian/lxc.apparmor.in so DEB_HOST_MULTIARCH can be expanded
* 0076-fix-sprintfs:  - check return values for all sprintfs and snprintfs
  which could overflow (LP: #988918)
* 0077-execute-without-rootfs: let lxc-execute succeed with no rootfs
  (LP: #981955)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/bin/bash
2
 
 
3
 
#
4
 
# lxc: linux Container library
5
 
 
6
 
# Authors:
7
 
# Daniel Lezcano <daniel.lezcano@free.fr>
8
 
 
9
 
# This library is free software; you can redistribute it and/or
10
 
# modify it under the terms of the GNU Lesser General Public
11
 
# License as published by the Free Software Foundation; either
12
 
# version 2.1 of the License, or (at your option) any later version.
13
 
 
14
 
# This library is distributed in the hope that it will be useful,
15
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17
 
# Lesser General Public License for more details.
18
 
 
19
 
# You should have received a copy of the GNU Lesser General Public
20
 
# License along with this library; if not, write to the Free Software
21
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
 
 
23
 
usage() {
24
 
    echo "usage: lxc-create -n <name> [-f configuration] [-t template] [-h] -- [template_options]"
25
 
}
26
 
 
27
 
help() {
28
 
    usage
29
 
    echo
30
 
    echo "creates a lxc system object."
31
 
    echo
32
 
    echo "Options:"
33
 
    echo "name         : name of the container"
34
 
    echo "configuration: lxc configuration"
35
 
    echo "template     : lxc-template is an accessible template script"
36
 
    if [ -z $lxc_template ]; then
37
 
        echo "for template-specific help, specify a template, for instance:"
38
 
        echo "lxc-create -t ubuntu -h"
39
 
        exit 0
40
 
    fi
41
 
    type ${templatedir}/lxc-$lxc_template >/dev/null
42
 
    echo
43
 
    echo "template-specific help follows: (these options follow '--')"
44
 
    if [ $? -eq 0 ]; then
45
 
        ${templatedir}/lxc-$lxc_template -h
46
 
    fi
47
 
}
48
 
 
49
 
shortoptions='hn:f:t:'
50
 
longoptions='help,name:,config:,template:'
51
 
lxc_path=@LXCPATH@
52
 
bindir=@BINDIR@
53
 
templatedir=@LXCTEMPLATEDIR@
54
 
 
55
 
getopt=$(getopt -o $shortoptions --longoptions  $longoptions -- "$@")
56
 
if [ $? != 0 ]; then
57
 
    usage
58
 
    exit 1;
59
 
fi
60
 
 
61
 
eval set -- "$getopt"
62
 
 
63
 
while true; do
64
 
        case "$1" in
65
 
            -h|--help)
66
 
                help
67
 
                exit 1
68
 
                ;;
69
 
            -n|--name)
70
 
                shift
71
 
                lxc_name=$1
72
 
                shift
73
 
                ;;
74
 
            -f|--config)
75
 
                shift
76
 
                lxc_config=$1
77
 
                shift
78
 
                ;;
79
 
            -t|--template)
80
 
                shift
81
 
                lxc_template=$1
82
 
                shift
83
 
                ;;
84
 
            --)
85
 
                shift
86
 
                break;;
87
 
            *)
88
 
                echo $1
89
 
                usage
90
 
                exit 1
91
 
                ;;
92
 
        esac
93
 
done
94
 
 
95
 
if [ -z "$lxc_path" ]; then
96
 
    echo "no configuration path defined !"
97
 
    exit 1
98
 
fi
99
 
 
100
 
if [ ! -r $lxc_path ]; then
101
 
    echo "configuration path '$lxc_path' not found"
102
 
    exit 1
103
 
fi
104
 
 
105
 
if [ -z "$lxc_name" ]; then
106
 
    echo "no container name specified"
107
 
    usage
108
 
    exit 1
109
 
fi
110
 
 
111
 
if [ "$(id -u)" != "0" ]; then
112
 
   echo "This command has to be run as root"
113
 
   exit 1
114
 
fi
115
 
 
116
 
if [ -d "$lxc_path/$lxc_name" ]; then
117
 
    echo "'$lxc_name' already exists"
118
 
    exit 1
119
 
fi
120
 
 
121
 
trap "${bindir}/lxc-destroy -n $lxc_name; echo aborted; exit 1" SIGHUP SIGINT SIGTERM
122
 
 
123
 
mkdir -p $lxc_path/$lxc_name
124
 
 
125
 
if [ -z "$lxc_config" ]; then
126
 
    echo
127
 
    echo "No config file specified, using the default config"
128
 
    lxc_config="/etc/lxc/lxc.conf"
129
 
fi
130
 
 
131
 
if [ ! -r "$lxc_config" ]; then
132
 
    echo "'$lxc_config' configuration file not found"
133
 
    exit 1
134
 
fi
135
 
 
136
 
cp $lxc_config $lxc_path/$lxc_name/config
137
 
 
138
 
if [ ! -z $lxc_template ]; then
139
 
 
140
 
    type ${templatedir}/lxc-$lxc_template >/dev/null
141
 
    if [ $? -ne 0 ]; then
142
 
        echo "unknown template '$lxc_template'"
143
 
        ${bindir}/lxc-destroy -n $lxc_name
144
 
        exit 1
145
 
    fi
146
 
 
147
 
    ${templatedir}/lxc-$lxc_template --path=$lxc_path/$lxc_name --name=$lxc_name $*
148
 
    if [ $? -ne 0 ]; then
149
 
        echo "failed to execute template '$lxc_template'"
150
 
        ${bindir}/lxc-destroy -n $lxc_name
151
 
        exit 1
152
 
    fi
153
 
 
154
 
    echo "'$lxc_template' template installed"
155
 
fi
156
 
 
157
 
echo "'$lxc_name' created"