~serge-hallyn/ubuntu/quantal/lxc/lxc-fixapi

« back to all changes in this revision

Viewing changes to 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
 
1
#!/bin/sh
2
2
 
3
3
#
4
4
# lxc: linux Container library
21
21
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
22
 
23
23
usage() {
24
 
    echo "usage: lxc-create -n <name> [-f configuration] [-t template] [-h] -- [template_options]"
25
24
    echo "usage: lxc-create -n <name> [-f configuration] [-t template] [-h] [fsopts] -- [template_options]"
26
25
    echo "   fsopts: -B none"
27
26
    echo "   fsopts: -B lvm [--lvname lvname] [--vgname vgname] [--fstype fstype] [--fssize fssize]"
32
31
#    echo "   fsopts: -B qemu-nbd [--type qed|qcow2|raw] [--fstype fstype] [--fssize fssize] # Qemu qed disk format"
33
32
}
34
33
 
35
 
 
36
34
help() {
37
35
    usage
38
36
    echo
50
48
    echo "                container-name by default"
51
49
    echo "vgname       : [for -lvm] name of vg in which to create lv, 'lxc' by default"
52
50
    echo "fstype       : name of filesystem to create, ext4 by default"
53
 
    echo "fssize       : size of filesystem to create, 1G by default"
 
51
    echo "fssize       : size of filesystem to create, 500M by default"
 
52
    echo
54
53
    if [ -z $lxc_template ]; then
55
54
        echo "for template-specific help, specify a template, for instance:"
56
 
        echo "lxc-create -t ubuntu -h"
 
55
        echo "lxc-create -t debconf -h"
57
56
        exit 0
58
57
    fi
59
58
    type ${templatedir}/lxc-$lxc_template >/dev/null
66
65
 
67
66
shortoptions='hn:f:t:B:'
68
67
longoptions='help,name:,config:,template:,backingstore:,fstype:,lvname:,vgname:,fssize:'
 
68
localstatedir=@LOCALSTATEDIR@
69
69
lxc_path=@LXCPATH@
70
70
bindir=@BINDIR@
 
71
libdir=@LIBDIR@
71
72
templatedir=@LXCTEMPLATEDIR@
72
73
backingstore=_unset
73
74
fstype=ext4
74
 
fssize=1G
 
75
fssize=500M
75
76
vgname=lxc
76
77
 
77
78
getopt=$(getopt -o $shortoptions --longoptions  $longoptions -- "$@")
144
145
    exit 1
145
146
fi
146
147
 
147
 
if [ ! -r $lxc_path ]; then
148
 
    echo "configuration path '$lxc_path' not found"
149
 
    exit 1
150
 
fi
151
 
 
152
148
if [ -z "$lxc_name" ]; then
153
149
    echo "no container name specified"
154
150
    usage
167
163
case "$backingstore" in
168
164
    lvm|none|btrfs|_unset) :;;
169
165
    *) echo "'$backingstore' is not known ('none', 'lvm', 'btrfs')"
170
 
       usage
171
 
       exit 1
172
 
       ;;
 
166
        usage
 
167
        exit 1
 
168
        ;;
173
169
esac
174
170
 
175
171
if [ -d "$lxc_path/$lxc_name" ]; then
180
176
rootfs="$lxc_path/$lxc_name/rootfs"
181
177
 
182
178
if [ "$backingstore" = "_unset" -o "$backingstore" = "btrfs" ]; then
183
 
    # if no backing store was given, then see if btrfs would work
 
179
# if no backing store was given, then see if btrfs would work
184
180
    if which btrfs >/dev/null 2>&1 &&
185
181
        btrfs filesystem df "$lxc_path/" >/dev/null 2>&1; then
186
182
        backingstore="btrfs"
238
234
    exit 1
239
235
}
240
236
 
241
 
trap cleanup SIGHUP SIGINT SIGTERM
 
237
trap cleanup HUP INT TERM
242
238
 
243
239
mkdir -p $lxc_path/$lxc_name
244
240
 
256
252
cp $lxc_config $lxc_path/$lxc_name/config
257
253
 
258
254
# Create the fs as needed
259
 
[ -d "$rootfs" ] || mkdir "$rootfs"
260
255
if [ $backingstore = "lvm" ]; then
 
256
    [ -d "$rootfs" ] || mkdir $rootfs
261
257
    lvcreate -L $fssize -n $lvname $vgname || exit 1
262
258
    udevadm settle
263
259
    mkfs -t $fstype $rootdev || exit 1
264
260
    mount -t $fstype $rootdev $rootfs
265
261
fi
266
262
 
267
 
 
268
263
if [ ! -z $lxc_template ]; then
269
264
 
270
265
    type ${templatedir}/lxc-$lxc_template >/dev/null
286
281
    echo "Unmounting LVM"
287
282
    umount $rootfs
288
283
 
289
 
    # TODO: make the templates set this right from the start
 
284
    # TODO: make the templates set this right from the start?
290
285
    sed -i '/lxc.rootfs/d' $lxc_path/$lxc_name/config
291
286
    echo "lxc.rootfs = $rootdev" >> $lxc_path/$lxc_name/config
292
287
fi
293
288
 
294
 
 
295
289
echo "'$lxc_name' created"