Setup OpenStack at OVH
----------------------
-It is cheaper than EnterCloudSuite but does not provide volumes (as
-of August 2015) and is therefore unfit to run teuthology tests that
-require disks attached to the instance. Each instance has a public IP
-by default.
+Each instance has a public IP by default.
* `create an account <https://www.ovh.com/fr/support/new_nic.xml>`_
* get $HOME/openrc.sh from `the horizon dashboard <https://horizon.cloud.ovh.net/project/access_and_security/?tab=access_security_tabs__api_access_tab>`_
+Setup OpenStack at Rackspace
+----------------------------
+
+There is no support for security groups. To workaround that
+limitation, the setup instructions must be run from an instance that
+is within the Rackspace OpenStack cluster already so it has permission
+to communicate with the instances it creates.
+
+* `create an account <https://www.rackspace.com/cloud/servers>`_
+* make sure your environment contains the requires OS_* variables for
+ ``openstack server list`` to run.
+
Setup
-----
and return its IP address.
"""
if not self.cluster_exists():
- self.create_security_group()
+ if self.provider != 'rackspace':
+ self.create_security_group()
self.create_cluster()
instance_id = self.get_instance_id(self.args.name)
return self.get_floating_ip_or_ip(instance_id)
if 'OS_AUTH_URL' not in os.environ:
raise Exception('no OS_AUTH_URL environment variable')
providers = (('cloud.ovh.net', 'ovh'),
- ('entercloudsuite.com', 'entercloudsuite'))
+ ('entercloudsuite.com', 'entercloudsuite'),
+ ('rackspacecloud.com', 'rackspace'))
self.provider = None
for (pattern, provider) in providers:
if pattern in os.environ['OS_AUTH_URL']:
and wait for it to come up.
"""
user_data = self.get_user_data()
+ if self.provider == 'rackspace':
+ security_group = ''
+ else:
+ security_group = " --security-group teuthology"
instance = misc.sh(
"openstack server create " +
" --image '" + self.image('ubuntu', '14.04') + "' " +
" " + self.net() +
" --key-name " + self.args.key_name +
" --user-data " + user_data +
- " --security-group teuthology" +
+ security_group +
" --wait " + self.args.name +
" -f json")
instance_id = self.get_value(json.loads(instance), 'id')