From a26aefaa2ee32af907a4a0b29dea07a5679e44de Mon Sep 17 00:00:00 2001 From: Ryan Richard Date: Mon, 20 Oct 2014 12:12:39 -0500 Subject: [PATCH] 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 --- build/common.sh | 69 --------------------------------------- build/release.sh | 2 +- cluster/rackspace/util.sh | 65 ++++++++++++++++++++++++++++++++---- 3 files changed, 59 insertions(+), 77 deletions(-) diff --git a/build/common.sh b/build/common.sh index d2df086d453..15a9189f8b6 100644 --- a/build/common.sh +++ b/build/common.sh @@ -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." -} diff --git a/build/release.sh b/build/release.sh index fc090026d42..6149ca471c0 100755 --- a/build/release.sh +++ b/build/release.sh @@ -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 diff --git a/cluster/rackspace/util.sh b/cluster/rackspace/util.sh index f814cdf7085..9035036b995 100644 --- a/cluster/rackspace/util.sh +++ b/cluster/rackspace/util.sh @@ -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.