sahara/devstack/upgrade/resources.sh

244 lines
6.2 KiB
Bash
Executable File

#!/bin/bash
set -o errexit
. $GRENADE_DIR/grenaderc
. $GRENADE_DIR/functions
. $TOP_DIR/openrc admin admin
set -o xtrace
SAHARA_USER=sahara_grenade
SAHARA_PROJECT=sahara_grenade
SAHARA_PASS=pass
SAHARA_KEY=sahara_key
SAHARA_KEY_FILE=$SAVE_DIR/sahara_key.pem
PUBLIC_NETWORK_NAME=${PUBLIC_NETWORK_NAME:-public}
# cirros image is not appropriate for cluster creation
SAHARA_IMAGE_NAME=${SAHARA_IMAGE_NAME:-fedora-heat-test-image}
SAHARA_IMAGE_USER=${SAHARA_IMAGE_USER:-fedora}
# custom flavor parameters
SAHARA_FLAVOR_NAME=${SAHARA_FLAVOR_NAME:-sahara_flavor}
SAHARA_FLAVOR_RAM=${SAHARA_FLAVOR_RAM:-1024}
SAHARA_FLAVOR_DISK=${SAHARA_FLAVOR_DISK:-10}
NG_TEMPLATE_NAME=ng-template-grenade
CLUSTER_TEMPLATE_NAME=cluster-template-grenade
CLUSTER_NAME=cluster-grenade
function sahara_set_user {
# set ourselves to the created sahara user
OS_TENANT_NAME=$SAHARA_PROJECT
OS_PROJECT_NAME=$SAHARA_PROJECT
OS_USERNAME=$SAHARA_USER
OS_PASSWORD=$SAHARA_PASS
}
function create_tenant {
# create a tenant for the server
eval $(openstack project create -f shell -c id $SAHARA_PROJECT)
if [[ -z "$id" ]]; then
die $LINENO "Didn't create $SAHARA_PROJECT project"
fi
resource_save sahara project_id $id
}
function create_user {
local project_id=$id
eval $(openstack user create $SAHARA_USER \
--project $project_id \
--password $SAHARA_PASS \
-f shell -c id)
if [[ -z "$id" ]]; then
die $LINENO "Didn't create $SAHARA_USER user"
fi
resource_save sahara user_id $id
# Workaround for bug: https://bugs.launchpad.net/keystone/+bug/1662911
openstack role add member --user $id --project $project_id
}
function create_keypair {
# create key pair for access
openstack keypair create $SAHARA_KEY > $SAHARA_KEY_FILE
chmod 600 $SAHARA_KEY_FILE
}
function create_flavor {
eval $(openstack flavor create -f shell -c id \
--ram $SAHARA_FLAVOR_RAM \
--disk $SAHARA_FLAVOR_DISK \
$SAHARA_FLAVOR_NAME)
resource_save sahara flavor_id $id
}
function register_image {
eval $(openstack image show \
-f shell -c id $SAHARA_IMAGE_NAME)
resource_save sahara image_id $id
openstack dataprocessing image register $id --username $SAHARA_IMAGE_USER
openstack dataprocessing image tags set $id --tags fake 0.1
}
function create_node_group_template {
eval $(openstack network show -f shell -c id $PUBLIC_NETWORK_NAME)
local public_net_id=$id
local flavor_id=$(resource_get sahara flavor_id)
openstack dataprocessing node group template create \
--name $NG_TEMPLATE_NAME \
--flavor $flavor_id \
--plugin fake \
--plugin-version 0.1 \
--processes jobtracker namenode tasktracker datanode \
--floating-ip-pool $public_net_id \
--auto-security-group
}
function create_cluster_template {
openstack dataprocessing cluster template create \
--name $CLUSTER_TEMPLATE_NAME \
--node-groups $NG_TEMPLATE_NAME:1
}
function create_cluster {
local net_id=$(resource_get network net_id)
local image_id=$(resource_get sahara image_id)
if [[ -n "$net_id" ]]; then
eval $(openstack dataprocessing cluster create \
--name $CLUSTER_NAME \
--cluster-template $CLUSTER_TEMPLATE_NAME \
--image $image_id \
--user-keypair $SAHARA_KEY \
--neutron-network $net_id \
-f shell -c id)
else
eval $(openstack dataprocessing cluster create \
--name $CLUSTER_NAME \
--cluster-template $CLUSTER_TEMPLATE_NAME \
--image $image_id \
--user-keypair $SAHARA_KEY \
-f shell -c id)
fi
resource_save sahara cluster_id $id
}
function wait_active_state {
# wait until cluster moves to active state
local timeleft=1000
while [[ $timeleft -gt 0 ]]; do
eval $(openstack dataprocessing cluster show -f shell \
-c Status $CLUSTER_NAME)
if [[ "$status" != "Active" ]]; then
if [[ "$status" == "Error" ]]; then
die $LINENO "Cluster is in Error state"
fi
echo "Cluster is still not in Active state"
sleep 10
timeleft=$((timeleft - 10))
if [[ $timeleft == 0 ]]; then
die $LINENO "Cluster hasn't moved to Active state \
during 1000 seconds"
fi
else
break
fi
done
}
function check_active {
# check that cluster is in Active state
eval $(openstack dataprocessing cluster show -f shell \
-c Status $CLUSTER_NAME)
if [[ "$status" != "Active" ]]; then
die $LINENO "Cluster is not in Active state anymore"
fi
echo "Sahara verification: SUCCESS"
}
function create {
create_tenant
create_user
create_flavor
register_image
sahara_set_user
create_keypair
create_node_group_template
create_cluster_template
create_cluster
wait_active_state
}
function verify {
:
}
function verify_noapi {
:
}
function destroy {
sahara_set_user
set +o errexit
# delete cluster
check_active
openstack dataprocessing cluster delete $CLUSTER_NAME --wait
set -o errexit
# delete cluster template
openstack dataprocessing cluster template delete $CLUSTER_TEMPLATE_NAME
# delete node group template
openstack dataprocessing node group template delete $NG_TEMPLATE_NAME
source_quiet $TOP_DIR/openrc admin admin
# unregister image
local image_id=$(resource_get sahara image_id)
openstack dataprocessing image unregister $image_id
# delete flavor
openstack flavor delete $SAHARA_FLAVOR_NAME
# delete user and project
local user_id=$(resource_get sahara user_id)
local project_id=$(resource_get sahara project_id)
openstack user delete $user_id
openstack project delete $project_id
}
# Dispatcher
case $1 in
"create")
create
;;
"verify_noapi")
verify_noapi
;;
"verify")
verify
;;
"destroy")
destroy
;;
"force_destroy")
set +o errexit
destroy
;;
esac