Perry Myers
2008-Nov-19 23:32 UTC
[Ovirt-devel] [PATCH release] Specify package format on get-ovirt-appliance command
User can specify environment variable PKG_FMT to be either tar, tar.gz or tar.bz2 Also, DISK_FMT can be used to specify format for disk images to be either qcow2 or raw Signed-off-by: Perry Myers <pmyers at redhat.com> --- ovirt.mk | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ovirt.mk b/ovirt.mk index a516e04..5c6c396 100644 --- a/ovirt.mk +++ b/ovirt.mk @@ -9,6 +9,8 @@ OVIRT_BRANCH ?= next OVIRT_URL ?= http://ovirt.org/repos/ovirt THINCRUST_URL ?= http://www.thincrust.net/repo FEDORA_MIRROR ?= http://mirrors.fedoraproject.org/mirrorlist +PKG_FMT ?= tar.bz2 +DISK_FMT ?= qcow2 SUBDIRS ?= release server node node-image recipe docs appliance @@ -86,8 +88,8 @@ update-host: ovirt-node-selinux ovirt-node-image update-app: update-host - sudo get-ovirt-appliance -l appliance - sudo create-ovirt-appliance + sudo get-ovirt-appliance -l appliance -p $(PKG_FMT) -f $(DISK_FMT) + sudo create-ovirt-appliance -f $(DISK_FMT) tar-src: @mkdir -p $(OVIRT_CACHE_DIR) -- 1.6.0.3
Perry Myers
2008-Nov-19 23:32 UTC
[Ovirt-devel] [PATCH appliance] Support for multiple package formats for the appliance packaging
PKG_FMT environment variable allows: tar, tar.gz and tar.bz2 Default is tar.bz2 get-ovirt-appliance allows -p to specify package format, default is tar.bz2 Developers will want to use .tar since it makes builds quicker. But tar.bz2 decreases appliance size for download by about 2/3s Support for multiple disk image formats: raw, qcow2 DISK_FMT environment variable specifies this for Makefile, -f parameter for get-ovirt-appliance and create-ovirt-appliance NOTE: use of raw for DISK_FMT is not reccommend at the present time since appliance-tools (due to python restriction) do not support tarfile with --sparse option. Signed-off-by: Perry Myers <pmyers at redhat.com> --- .gitignore | 3 ++- Makefile.am | 6 +++--- create-ovirt-appliance | 6 ++++-- get-ovirt-appliance | 25 ++++++++++++++++++++----- ovirt-appliance-functions | 14 ++++++++++++-- 5 files changed, 41 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index f6f68fa..7a8fd8f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,10 +11,11 @@ config.status configure install-sh missing -ovirt-appliance-*-*.tar +ovirt-appliance-*-*.tar* ovirt-appliance-*-*.tar.sha1sum ovirt-appliance-*.tar.gz ovirt-appliance.spec ovirt-authorized_keys repos.ks stamp-h1 +tmp diff --git a/Makefile.am b/Makefile.am index adace7c..6bcb0bf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -19,7 +19,7 @@ OVIRT_CACHE_DIR ?= $(HOME)/ovirt-cache OVIRT_LOCAL_REPO ?= file://$(OVIRT_CACHE_DIR)/ovirt OVIRT_URL ?= http://ovirt.org/repos/ovirt THINCRUST_URL ?= http://thincrust.org/repo -PKG_FMT = tar +PKG_FMT ?= tar.bz2 DISK_FMT ?= qcow2 SUM ?= sha1sum APP_RAM ?= 768 @@ -43,8 +43,8 @@ EXTRA_DIST = \ $(PACKAGE).spec.in DISTCLEANFILES = $(PACKAGE)-$(VERSION).tar.gz \ - $(NVR).$(PKG_FMT) \ - $(NVR).$(PKG_FMT).$(SUM) \ + $(NVR).* \ + $(NVR).*.$(SUM) \ repos.ks ovirt-authorized_keys # For Release: 0..., set _ovirt_dev=1 so that we get extra_release.GIT- diff --git a/create-ovirt-appliance b/create-ovirt-appliance index b31bc21..860aaf9 100755 --- a/create-ovirt-appliance +++ b/create-ovirt-appliance @@ -22,21 +22,23 @@ usage() { case $# in 1) warn "$1"; try_h; exit 1;; esac cat <<EOF -Usage: $ME [-d image_dir] [-n name] [-c] +Usage: $ME [-d image_dir] [-n name] [-c] [-f disk_fmt] -d: directory to place virtual disk (default: $IMGDIR_DEFAULT) -n: appliance name (default: $NAME_DEFAULT) -c: open console when appliance is started + -f: disk image format for appliance (default: DISK_FMT_DEFAULT) -h: display this help and exit EOF } err=0 help=0 console=0 -while getopts :d:n:ch c; do +while getopts :d:n:cf:h c; do case $c in d) imgdir=$OPTARG;; n) name=$OPTARG;; c) console=1;; + f) DISK_FMT=$OPTARG;; h) help=1;; '?') err=1; warn "invalid option: \`-$OPTARG'";; :) err=1; warn "missing argument to \`-$OPTARG' option";; diff --git a/get-ovirt-appliance b/get-ovirt-appliance index 88b4a49..46fc614 100755 --- a/get-ovirt-appliance +++ b/get-ovirt-appliance @@ -23,22 +23,26 @@ usage() { case $# in 1) warn "$1"; try_h; exit 1;; esac cat <<EOF -Usage: $ME [-d image_dir] [-n name] [-l appliance location] +Usage: $ME [-d image_dir] [-n name] [-l appliance location] [-p pkg_fmt] [-f disk_fmt] -d: directory to place virtual disk (default: $IMGDIR_DEFAULT) -n: appliance name (default: $NAME_DEFAULT) -l: directory or url to get appliance archive and checksum files (default: $OVIRT_URL) this can either be http:// url or relative/absolute path + -p: package format for appliance (default: $PKG_FMT_DEFAULT) + -f: disk image format for appliance (default: DISK_FMT_DEFAULT) -h: display this help and exit EOF } err=0 help=0 app_loc=$OVIRT_URL -while getopts :d:n:l:h c; do +while getopts :d:n:l:p:f:h c; do case $c in d) imgdir=$OPTARG;; n) name=$OPTARG;; l) app_loc=$OPTARG;; + p) PKG_FMT=$OPTARG;; + f) DISK_FMT=$OPTARG;; h) help=1;; '?') err=1; warn "invalid option: \`-$OPTARG'";; :) err=1; warn "missing argument to \`-$OPTARG' option";; @@ -86,9 +90,20 @@ mkdir -p $imgdir appdisk=$name/$name-sda.$DISK_FMT datadisk=$name/$name-sdb.$DISK_FMT -# This is the only bit of PKG_FMT that is hardcoded. If we really want to support -# multiple formats for distribution we should have a case statement here -tar -xvf $app_loc/$pkgfile -C $imgdir +case $PKG_FMT in + tar.bz2) + tar -jSxvf $app_loc/$pkgfile -C $imgdir + ;; + tar.gz) + tar -zSxvf $app_loc/$pkgfile -C $imgdir + ;; + tar) + tar -xSvf $app_loc/$pkgfile -C $imgdir + ;; + *) + die "$PKG_FMT is unsupported" + ;; +esac test ! -r $imgdir/$appdisk && die "Disk image not found at $imgdir/$appdisk" test ! -r $imgdir/$datadisk && die "Disk image not found at $imgdir/$datadisk" diff --git a/ovirt-appliance-functions b/ovirt-appliance-functions index de28caa..a4eef52 100644 --- a/ovirt-appliance-functions +++ b/ovirt-appliance-functions @@ -32,10 +32,12 @@ BRIDGENAME=ovirtbr0 NETWORK=192.168.50.0 NETMASK=255.255.255.0 -PKG_FMT=tar +PKG_FMT_DEFAULT=tar.bz2 +PKG_FMT=$PKG_FMT_DEFAULT SUM=sha1sum -DISK_FMT=qcow2 +DISK_FMT_DEFAULT=qcow2 +DISK_FMT=$DISK_FMT_DEFAULT OVIRT_URL=http://ovirt.org/download NODE_DISK_FMT=qcow2 @@ -52,6 +54,13 @@ do_checks() { die "Must run as root" fi + test "$PKG_FMT" = "tar" -o "$PKG_FMT" = "tar.gz" \ + -o "$PKG_FMT" = "tar.bz2" \ + || die "$PKG_FMT is not a supported package format" + + test "$DISK_FMT" = "qcow2" -o "$DISK_FMT" = "raw" \ + || die "$DISK_FMT is not a supported disk format" + # now make sure the packages we need are installed if [ -e /etc/redhat-release ]; then # We rely on RPM deps for this in Red Hat/Fedora systems @@ -178,6 +187,7 @@ verify_sum() { test ! -f $sumfile && { echo "$sumfile not found" ; return 1 ; } test ! -f $pkgfile && { echo "$pkgfile not found" ; return 1 ; } + echo "performing checksum of $pkgfile" local actual_sum=$($SUM $pkgfile | awk '{print $1}') local expect_sum=$(awk '{print $1}' $sumfile) -- 1.6.0.3