Merge "devstack-heat: refactor and improve"

This commit is contained in:
Jenkins 2017-06-14 14:34:43 +00:00 committed by Gerrit Code Review
commit 5a884b4b4d
2 changed files with 104 additions and 63 deletions

View File

@ -1,39 +1,17 @@
#!/bin/bash
function sub_stack() {
local latest_commit
local deployment=${1:-master_}
local tmpdir
CURR_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [[ "${deployment}" == "master_" ]]; then
if [[ "$DEVSTACK_HEAT_GH_TOKEN" == "" ]]; then
set -e
echo "Didn't find a Github token in ENV var DEVSTACK_HEAT_GH_TOKEN. Falling back to cloning repo..."
tmpdir=$(mktemp -d)
git clone https://github.com/openstack/kuryr-kubernetes "${tmpdir}/kuryr-kubernetes"
pushd "${tmpdir}/kuryr-kubernetes"
latest_commit=$(git rev-parse HEAD)
popd
rm -fr "${tmpdir}"
set +e
else
latest_commit=$(curl -s -H "Authorization: token $DEVSTACK_HEAT_GH_TOKEN" https://api.github.com/repos/openstack/kuryr-kubernetes/commits/master | jq -r '.sha')
fi
if [[ "$latest_commit" == "null" ]]; then
echo "Couldn't get a valid master commit"
exit 1
fi
deployment="${deployment}${latest_commit}"
else
deployment="gerrit_${deployment}"
fi
# shellcheck disable=SC1091
# shellcheck source=lib/devstack-heat
source "${CURR_DIR}/lib/devstack-heat"
function sub_stack() {
local deployment=${1:-master_}
deployment=$(_generate_deployment_name "${deployment}")
# create stack
read -p "Deploying the stack ${deployment}[y/N]?" -n 1 -r
echo
if [[ ! "$REPLY" =~ ^[Yy]$ ]]; then
exit 1
fi
_confirm_or_exit "Deploying the stack ${deployment}"
echo "Starting..."
openstack stack create -e hot/parameters.yml -t hot/devstack_heat_template.yml "$deployment"
@ -46,59 +24,34 @@ function sub_unstack()
local deployment
deployment=${1:-master_}
if [[ "${deployment}" == "master_" ]]; then
echo "You must put the whole stack name for unstacking"
(>&2 echo "You must put the whole stack name for unstacking")
exit 1
fi
openstack stack delete "$deployment"
_confirm_or_exit "Deleting the stack ${deployment}"
openstack stack delete "$deployment"
}
function sub_show() {
local deployment
deployment=${1:-master_}
if [[ "${deployment}" == "master_" ]]; then
echo "You must put the whole stack name for showing the stack resources"
(>&2 echo "You must put the whole stack name for showing the stack")
exit 1
fi
_wait_for_after_in_progress "${1:-master_}"
echo "VM subnet: $(openstack stack output show "${deployment}" vm_subnet -f json | jq -r '.output_value')"
echo "Nodes FIPs: $(openstack stack output show "${deployment}" node_fips -f json | jq -r '.output_value' | jq -r '.[]?' | xargs echo)"
printf "\n"
}
function sub_getkey() {
local deployment
deployment=${1:-master_}
if [[ "${deployment}" == "master_" ]]; then
echo "You must put the whole stack name for getting the key"
exit 1
fi
openstack stack output show "${deployment}" master_key_priv -f json | jq -r '.output_value'
}
function sub_ssh() {
local deployment
local key
local fip
deployment=${1:-master_}
if [[ "${deployment}" == "master_" ]]; then
echo "You must put the whole stack name for getting the key"
exit 1
fi
key="${deployment}.pem"
fip=$(openstack stack output show "${deployment}" node_fips -f json | jq -r '.output_value' | jq -r '.[]?' | xargs echo)
sub_getkey "${deployment}" > "${key}"
chmod 0600 "${key}"
ssh -i "${deployment}.pem" -o "StrictHostKeyChecking no" "stack@${fip}"
exit $?
}
function sub_help() {
local myname
myname=$(basename "$0")
printf "Usage: %s <subcommand> [options]\n" "$myname"
printf "Subcommands:\n"
printf " stack gerrit_change_number Create Heat stack\n"

View File

@ -0,0 +1,88 @@
#!/bin/bash
function sub_getkey() {
local deployment
deployment=${1:-master_}
if [[ "${deployment}" == "master_" ]]; then
(>&2 echo "You must put the whole stack name for getting the key")
exit 1
fi
openstack stack output show "${deployment}" master_key_priv -f json | jq -r '.output_value'
}
function _wait_for_after_in_progress() {
local deployment
local status
deployment="$1"
while true; do
status=$(openstack stack show "${deployment}" -c stack_status -f value)
if [[ ! "$status" =~ IN_PROGRESS$ ]]; then
break
fi
done
}
function sub_ssh() {
local deployment
local key
local fip
deployment=${1:-master_}
if [[ "${deployment}" == "master_" ]]; then
(>&2 echo "You must put the whole stack name for logging into the node")
exit 1
fi
key="${deployment}.pem"
fip=$(openstack stack output show "${deployment}" node_fips -f json | jq -r '.output_value' | jq -r '.[]?' | xargs echo)
sub_getkey "${deployment}" > "${key}"
chmod 0600 "${key}"
# shellcheck disable=SC2029
ssh -i "${deployment}.pem" -o "StrictHostKeyChecking no" "stack@${fip}"
exit $?
}
function _generate_deployment_name() {
local latest_commit
local deployment=${1:-master_}
local tmpdir
if [[ "${deployment}" == "master_" ]]; then
if [[ "$DEVSTACK_HEAT_GH_TOKEN" == "" ]]; then
set -e
(>&2 echo "Didn't find a Github token in ENV var DEVSTACK_HEAT_GH_TOKEN. Falling back to cloning repo...")
tmpdir=$(mktemp -d)
git clone https://git.openstack.org/openstack/kuryr-kubernetes "${tmpdir}/kuryr-kubernetes" > /dev/null
pushd "${tmpdir}/kuryr-kubernetes" > /dev/null
latest_commit=$(git rev-parse HEAD)
popd > /dev/null
rm -fr "${tmpdir}"
set +e
else
latest_commit=$(curl -s -H "Authorization: token $DEVSTACK_HEAT_GH_TOKEN" https://api.github.com/repos/openstack/kuryr-kubernetes/commits/master | jq -r '.sha')
fi
if [[ "$latest_commit" == "null" ]]; then
(>&2 echo "Couldn't get a valid master commit")
exit 1
fi
deployment="${deployment}${latest_commit}"
else
deployment="gerrit_${deployment}"
fi
echo "${deployment}"
}
function _confirm_or_exit() {
local question
question="$1"
read -p "${question}[y/N]?" -n 1 -r
echo
if [[ ! "$REPLY" =~ ^[Yy]$ ]]; then
exit 1
fi
}