# Find the other rc files
RC_DIR=$(cd $(dirname "$BASH_SOURCE") && pwd)

# Specify which services to launch.  These generally correspond to
# screen tabs. If you like to add other services that are not enabled
# by default you can append them in your ENABLED_SERVICES variable in
# your localrc. For example for swift you can just add this in your
# localrc to add it with the other services:
# ENABLED_SERVICES="$ENABLED_SERVICES,swift"
ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,mysql,rabbit

# compute service
NOVA_REPO=https://github.com/openstack/nova.git
NOVA_BRANCH=master

# storage service
SWIFT_REPO=https://github.com/openstack/swift.git
SWIFT_BRANCH=master

# image catalog service
GLANCE_REPO=https://github.com/openstack/glance.git
GLANCE_BRANCH=master

# python glance client library
GLANCECLIENT_REPO=https://github.com/openstack/python-glanceclient
GLANCECLIENT_BRANCH=master

# unified auth system (manages accounts/tokens)
KEYSTONE_REPO=https://github.com/openstack/keystone.git
KEYSTONE_BRANCH=master

# a websockets/html5 or flash powered VNC console for vm instances
NOVNC_REPO=https://github.com/cloudbuilders/noVNC.git
NOVNC_BRANCH=master

# django powered web control panel for openstack
HORIZON_REPO=https://github.com/openstack/horizon.git
HORIZON_BRANCH=master

# python client library to nova that horizon (and others) use
NOVACLIENT_REPO=https://github.com/openstack/python-novaclient.git
NOVACLIENT_BRANCH=master

# python keystone client library to nova that horizon uses
KEYSTONECLIENT_REPO=https://github.com/openstack/python-keystoneclient
KEYSTONECLIENT_BRANCH=master

# quantum service
QUANTUM_REPO=https://github.com/openstack/quantum
QUANTUM_BRANCH=master

# quantum client
QUANTUM_CLIENT_REPO=https://github.com/openstack/python-quantumclient
QUANTUM_CLIENT_BRANCH=master

# Tempest test suite
TEMPEST_REPO=https://github.com/openstack/tempest.git
TEMPEST_BRANCH=master

# melange service
MELANGE_REPO=https://github.com/openstack/melange.git
MELANGE_BRANCH=master

# python melange client library
MELANGECLIENT_REPO=https://github.com/openstack/python-melangeclient.git
MELANGECLIENT_BRANCH=master

# Specify a comma-separated list of uec images to download and install into glance.
# supported urls here are:
#  * "uec-style" images:
#     If the file ends in .tar.gz, uncompress the tarball and and select the first
#     .img file inside it as the image.  If present, use "*-vmlinuz*" as the kernel
#     and "*-initrd*" as the ramdisk
#     example: http://cloud-images.ubuntu.com/releases/oneiric/release/ubuntu-11.10-server-cloudimg-amd64.tar.gz
#  * disk image (*.img,*.img.gz)
#    if file ends in .img, then it will be uploaded and registered as a to
#    glance as a disk image.  If it ends in .gz, it is uncompressed first.
#    example:
#      http://cloud-images.ubuntu.com/releases/oneiric/release/ubuntu-11.10-server-cloudimg-armel-disk1.img
#      http://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-rootfs.img.gz
#IMAGE_URLS="http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-11.2_2.6.35-15_1.tar.gz" # old ttylinux-uec image
#IMAGE_URLS="http://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img" # cirros full disk image
case "$LIBVIRT_TYPE" in
    lxc) # the cirros root disk in the uec tarball is empty, so it will not work for lxc
        IMAGE_URLS="http://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-rootfs.img.gz";;
    *)  # otherwise, use the uec style image (with kernel, ramdisk, disk)
        IMAGE_URLS="http://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-uec.tar.gz";;
esac

# allow local overrides of env variables
if [ -f $RC_DIR/localrc ]; then
    source $RC_DIR/localrc
fi
