From 73d9549f3ea616ce4ad3c0c2c0c8272c0db689b4 Mon Sep 17 00:00:00 2001 From: "Jimmy.Ye" Date: Fri, 3 Mar 2017 19:58:09 +0800 Subject: [PATCH] fix function tacker_check_and_download_cirros() error (1) change openstack_image_create fail Warning to ERROR (2) merge create cirros and create openwrt to one function (3) no use shell cmd let Change-Id: I195990841d3b2a271d338f6c940a1dc383508a74 Closes-Bug: #1669736 --- devstack/lib/tacker | 67 +++++++++++++++++++++++++-------------------- devstack/plugin.sh | 6 ++-- 2 files changed, 39 insertions(+), 34 deletions(-) diff --git a/devstack/lib/tacker b/devstack/lib/tacker index 6ab24fc08..3725ac12d 100644 --- a/devstack/lib/tacker +++ b/devstack/lib/tacker @@ -317,46 +317,53 @@ function tacker_horizon_install { sudo cp $DEST/tacker-horizon/tacker_horizon/enabled/* $DEST/horizon/openstack_dashboard/enabled/ restart_apache_server } -function tacker_check_and_download_cirros { - local image_url image_fname - image_url=http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img - cirros_fname=`basename "$image_url"` - image_name=`openstack image list | grep "${cirros_fname%.*}" | awk '{print $4}'` - if [[ $image_name == "" ]]; then - if [[ ! -f $FILES/$image_fname || "$(stat -c "%s" $FILES/$image_fname)" = "0" ]]; then - { - wget --progress=dot:giga -c $image_url -O $FILES/$image_fname \ - && openstack_image_create $FILES/$image_fname ${cirros_fname%.*} - } - fi - fi -} function openstack_image_create { image=$1 disk_format=raw container_format=bare image_name=$2 - openstack --os-cloud=devstack-admin image create $image_name --public --container-format=$container_format --disk-format $disk_format < <(zcat --force "${image}") - openstack image show OpenWRT -f value -c id + openstack --os-cloud=devstack-admin image create $image_name --public --container-format=$container_format --disk-format $disk_format --file ${image} + openstack image show $image_name -f value -c id } -function tacker_create_openwrt_image { - local image_url=https://downloads.openwrt.org/chaos_calmer/15.05/x86/kvm_guest/openwrt-15.05-x86-kvm_guest-combined-ext4.img.gz - local image image_fname image_name - image_fname=`basename "$image_url"` +function tacker_check_and_download_images { + local image_url + image_url[0]='http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img' + image_url[1]='https://downloads.openwrt.org/chaos_calmer/15.05/x86/kvm_guest/openwrt-15.05-x86-kvm_guest-combined-ext4.img.gz' - if [[ $image_url != file* ]]; then - if [[ ! -f $FILES/$image_fname || "$(stat -c "%s" $FILES/$image_fname)" = "0" ]]; then - { - wget --progress=dot:giga -c $image_url -O $FILES/$image_fname \ - && openstack_image_create $FILES/$image_fname OpenWRT - }||{ - rm -rf $FILES/$image_fname - echo "WARNING: openwrt image create for $image_fname failed" - } + local image_fname image_name glance_name gz_pattern + local length=${#image_url[@]} + local index=0 + while [ $index -lt $length ] + do + image_fname=`basename "${image_url[$index]}"` + glance_name=${image_fname%.*} + if [[ $glance_name =~ 'openwrt' ]]; then + glance_name='OpenWRT' fi - fi + image_name=`openstack image list | grep "$glance_name" | awk '{print $4}'` + if [[ $image_name == "" ]]; then + if [[ ! -f $FILES/$image_fname || "$(stat -c "%s" $FILES/$image_fname)" = "0" ]]; then + { + wget --progress=dot:giga -c ${image_url[$index]} -O $FILES/$image_fname + gz_pattern="\.gz$" + if [[ $image_fname =~ $gz_pattern ]]; then + new_image_fname=${image_fname%.*} + gunzip -c $FILES/$image_fname > $FILES/$new_image_fname + image_fname=$new_image_fname + fi + openstack_image_create $FILES/$image_fname $glance_name + }||{ + echo "ERROR: tacker image create for $image_fname failed" + image_fname=$image_fname"*" + sudo rm -rf $FILES/$image_fname + exit 1 + } + fi + fi + index=$(($index+1)) + done } function tacker_create_initial_network { diff --git a/devstack/plugin.sh b/devstack/plugin.sh index 7d94b5900..c989d8562 100644 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -34,10 +34,8 @@ if is_service_enabled tacker; then modify_heat_flavor_policy_rule echo_summary "Setup initial tacker network" tacker_create_initial_network - echo_summary "Upload OpenWrt image" - tacker_create_openwrt_image - echo_summary "Check existence of cirros==3.5" - tacker_check_and_download_cirros + echo_summary "Check and download images for tacker initial" + tacker_check_and_download_images echo_summary "Registering default VIM" tacker_register_default_vim fi