diff --git a/lib/trove b/lib/trove index f6a933ef49..6877d0f505 100644 --- a/lib/trove +++ b/lib/trove @@ -204,10 +204,21 @@ function init_trove { # Initialize the trove database $TROVE_BIN_DIR/trove-manage db_sync - # Upload the trove-guest image to glance - TROVE_GUEST_IMAGE_ID=$(upload_image $TROVE_GUEST_IMAGE_URL $TOKEN | grep ' id ' | get_field 2) + # If no guest image is specified, skip remaining setup + [ -z "$TROVE_GUEST_IMAGE_URL"] && return 0 - # Initialize appropriate datastores / datastore versions + # Find the glance id for the trove guest image + # The image is uploaded by stack.sh -- see $IMAGE_URLS handling + GUEST_IMAGE_NAME=$(basename "$TROVE_GUEST_IMAGE_URL") + GUEST_IMAGE_NAME=${GUEST_IMAGE_NAME%.*} + TROVE_GUEST_IMAGE_ID=$(glance --os-auth-token $TOKEN --os-image-url http://$GLANCE_HOSTPORT image-list | grep "${GUEST_IMAGE_NAME}" | get_field 1) + if [ -z "$TROVE_GUEST_IMAGE_ID" ]; then + # If no glance id is found, skip remaining setup + echo "Datastore ${TROVE_DATASTORE_TYPE} will not be created: guest image ${GUEST_IMAGE_NAME} not found." + return 1 + fi + + # Now that we have the guest image id, initialize appropriate datastores / datastore versions $TROVE_BIN_DIR/trove-manage datastore_update "$TROVE_DATASTORE_TYPE" "" $TROVE_BIN_DIR/trove-manage datastore_version_update "$TROVE_DATASTORE_TYPE" "$TROVE_DATASTORE_VERSION" "$TROVE_DATASTORE_TYPE" \ "$TROVE_GUEST_IMAGE_ID" "$TROVE_DATASTORE_PACKAGE" 1 diff --git a/stackrc b/stackrc index 7f13232e73..fb843666b0 100644 --- a/stackrc +++ b/stackrc @@ -386,7 +386,7 @@ fi # Trove needs a custom image for it's work if [[ "$ENABLED_SERVICES" =~ 'tr-api' ]]; then case "$VIRT_DRIVER" in - libvirt|baremetal|ironic) + libvirt|baremetal|ironic|xenapi) TROVE_GUEST_IMAGE_URL=${TROVE_GUEST_IMAGE_URL:-"http://tarballs.openstack.org/trove/images/ubuntu_mysql.qcow2/ubuntu_mysql.qcow2"} IMAGE_URLS+=",${TROVE_GUEST_IMAGE_URL}" ;;