Migrate Rackspace upload scripts to util.sh

The functions to upload built k8s tars to Cloud Files were incorrectly
placed in build/common.sh. These have been migrated to
cluster/rackspace/util.sh
pull/6/head
Ryan Richard 2014-10-20 12:12:39 -05:00
parent 0bfb5ae772
commit a26aefaa2e
3 changed files with 59 additions and 77 deletions

View File

@ -663,72 +663,3 @@ function kube::release::gcs::copy_release_tarballs() {
gsutil ls -lh "${gcs_destination}"
}
# ---------------------------------------------------------------------------
# Rackspace Release
function kube::release::rackspace::set_vars() {
CLOUDFILES_CONTAINER="kubernetes-releases-${OS_USERNAME}"
KUBE_RACKSPACE_RELEASE_BUCKET=${CLOUDFILES_CONTAINER}
KUBE_RACKSPACE_RELEASE_PREFIX=${KUBE_RACKSPACE_RELEASE_PREFIX-devel/}
}
function kube::release::rackspace::release() {
[[ ${KUBE_RACKSPACE_UPLOAD_RELEASE-y} =~ ^[yY]$ ]] || return 0
kube::release::rackspace::set_vars
kube::release::rackspace::verify_prereqs
kube::release::rackspace::ensure_release_container
kube::release::rackspace::copy_release_tarballs
}
# Verify things are set up for uploading to Rackspace
function kube::release::rackspace::verify_prereqs() {
# Make sure swiftly is installed and available
if [[ -z "$(which gsutil)" ]]; then
echo "build/common.sh: Couldn't find swiftly in PATH. Please install swiftly:"
echo -e "\tpip install swiftly"
return 1
fi
if [[ -z "${OS_AUTH_URL-}" ]]; then
echo "build/common.sh: OS_AUTH_URL not set."
echo -e "\texport OS_AUTH_URL=https://identity.api.rackspacecloud.com/v2.0/"
return 1
fi
if [[ -z "${OS_USERNAME-}" ]]; then
echo "build/common.sh: OS_USERNAME not set."
echo -e "\texport OS_USERNAME=myusername"
return 1
fi
if [[ -z "${OS_PASSWORD-}" ]]; then
echo "build/common.sh: OS_PASSWORD not set."
echo -e "\texport OS_PASSWORD=myapikey"
return 1
fi
}
function kube::release::rackspace::ensure_release_container() {
SWIFTLY_CMD="swiftly -A ${OS_AUTH_URL} -U ${OS_USERNAME} -K ${OS_PASSWORD}"
if ! ${SWIFTLY_CMD} get ${KUBE_RACKSPACE_RELEASE_BUCKET} > /dev/null 2>&1 ; then
echo "build/common.sh: Container doesn't exist. Creating container ${KUBE_RACKSPACE_RELEASE_BUCKET}"
${SWIFTLY_CMD} put ${KUBE_RACKSPACE_RELEASE_BUCKET} > /dev/null 2>&1
fi
}
# Copy kubernetes-server-linux-amd64.tar.gz to cloud files object store
function kube::release::rackspace::copy_release_tarballs() {
echo "build/common.sh: Uploading to Cloud Files"
${SWIFTLY_CMD} put -i ${RELEASE_DIR}/kubernetes-server-linux-amd64.tar.gz \
${KUBE_RACKSPACE_RELEASE_BUCKET}/${KUBE_RACKSPACE_RELEASE_PREFIX}/kubernetes-server-linux-amd64.tar.gz > /dev/null 2>&1
echo "Release pushed."
}

View File

@ -41,4 +41,4 @@ kube::build::copy_output
kube::build::run_image
kube::release::package_tarballs
kube::release::${KUBERNETES_PROVIDER-gce}::release
kube::release::gcs::release

View File

@ -20,16 +20,33 @@
# config-default.sh.
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
source $(dirname ${BASH_SOURCE})/${KUBE_CONFIG_FILE-"config-default.sh"}
source $KUBE_ROOT/build/common.sh
verify-prereqs() {
# Make sure that prerequisites are installed.
for x in nova; do
for x in nova swiftly; do
if [ "$(which $x)" == "" ]; then
echo "cluster/rackspace/util.sh: Can't find $x in PATH, please fix and retry."
exit 1
fi
done
if [[ -z "${OS_AUTH_URL-}" ]]; then
echo "build/common.sh: OS_AUTH_URL not set."
echo -e "\texport OS_AUTH_URL=https://identity.api.rackspacecloud.com/v2.0/"
return 1
fi
if [[ -z "${OS_USERNAME-}" ]]; then
echo "build/common.sh: OS_USERNAME not set."
echo -e "\texport OS_USERNAME=myusername"
return 1
fi
if [[ -z "${OS_PASSWORD-}" ]]; then
echo "build/common.sh: OS_PASSWORD not set."
echo -e "\texport OS_PASSWORD=myapikey"
return 1
fi
}
# Ensure that we have a password created for validating to the master. Will
@ -75,8 +92,10 @@ rax-ssh-key() {
find-release-tars() {
SERVER_BINARY_TAR="${KUBE_ROOT}/server/kubernetes-server-linux-amd64.tar.gz"
RELEASE_DIR="${KUBE_ROOT}/server/"
if [[ ! -f "$SERVER_BINARY_TAR" ]]; then
SERVER_BINARY_TAR="${KUBE_ROOT}/_output/release-tars/kubernetes-server-linux-amd64.tar.gz"
RELEASE_DIR="${KUBE_ROOT}/_output/release-tars/"
fi
if [[ ! -f "$SERVER_BINARY_TAR" ]]; then
echo "!!! Cannot find kubernetes-server-linux-amd64.tar.gz"
@ -84,19 +103,46 @@ find-release-tars() {
fi
}
# Retrieves a tempurl from cloudfiles to make the release object publicly accessible for 6 hours.
rackspace-set-vars() {
CLOUDFILES_CONTAINER="kubernetes-releases-${OS_USERNAME}"
CONTAINER_PREFIX=${CONTAINER_PREFIX-devel/}
find-release-tars
}
# Retrieves a tempurl from cloudfiles to make the release object publicly accessible temporarily.
find-object-url() {
kube::release::rackspace::set_vars
rackspace-set-vars
RELEASE=${KUBE_RACKSPACE_RELEASE_BUCKET}/${KUBE_RACKSPACE_RELEASE_PREFIX}/kubernetes-server-linux-amd64.tar.gz
KUBE_TAR=${CLOUDFILES_CONTAINER}/${CONTAINER_PREFIX}/kubernetes-server-linux-amd64.tar.gz
RELEASE_TMP_URL=$(swiftly -A ${OS_AUTH_URL} -U ${OS_USERNAME} -K ${OS_PASSWORD} tempurl GET ${RELEASE})
RELEASE_TMP_URL=$(swiftly -A ${OS_AUTH_URL} -U ${OS_USERNAME} -K ${OS_PASSWORD} tempurl GET ${KUBE_TAR})
echo "cluster/rackspace/util.sh: Object temp URL:"
echo -e "\t${RELEASE_TMP_URL}"
}
ensure_dev_container() {
SWIFTLY_CMD="swiftly -A ${OS_AUTH_URL} -U ${OS_USERNAME} -K ${OS_PASSWORD}"
if ! ${SWIFTLY_CMD} get ${CLOUDFILES_CONTAINER} > /dev/null 2>&1 ; then
echo "cluster/rackspace/util.sh: Container doesn't exist. Creating container ${KUBE_RACKSPACE_RELEASE_BUCKET}"
${SWIFTLY_CMD} put ${CLOUDFILES_CONTAINER} > /dev/null 2>&1
fi
}
# Copy kubernetes-server-linux-amd64.tar.gz to cloud files object store
copy_dev_tarballs() {
echo "cluster/rackspace/util.sh: Uploading to Cloud Files"
${SWIFTLY_CMD} put -i ${RELEASE_DIR}/kubernetes-server-linux-amd64.tar.gz \
${CLOUDFILES_CONTAINER}/${CONTAINER_PREFIX}/kubernetes-server-linux-amd64.tar.gz > /dev/null 2>&1
echo "Release pushed."
}
rax-boot-master() {
DISCOVERY_URL=$(curl https://discovery.etcd.io/new)
@ -112,7 +158,7 @@ rax-boot-master() {
$(dirname $0)/rackspace/cloud-config/master-cloud-config.yaml > $KUBE_TEMP/master-cloud-config.yaml
MASTER_BOOT_CMD="nova boot
MASTER_BOOT_CMD="nova boot \
--key-name ${SSH_KEY_NAME} \
--flavor ${KUBE_MASTER_FLAVOR} \
--image ${KUBE_IMAGE} \
@ -202,6 +248,11 @@ detect-master-nova-net() {
kube-up() {
SCRIPT_DIR=$(CDPATH="" cd $(dirname $0); pwd)
rackspace-set-vars
ensure_dev_container
copy_dev_tarballs
# Find the release to use. Generally it will be passed when doing a 'prod'
# install and will default to the release/config.sh version when doing a
# developer up.