I've configured juju to connect to my rackspace cloud account. Authentication works great but it always fails when it runs the openstack client piece that lists security groups. This is because Rackspace doesn't have security groups yet. This shouldn't be a critical failure or if it should then perhaps I could clone the openstack driver, call it a rackspace driver, and then take out security groups. I'd be happy to contribute that patch if you think it is the right way to go.
Heres the traceback:
$ juju -v bootstrap --environment rackspace
2013-05-04 00:46:30,437 DEBUG Initializing juju bootstrap runtime
2013-05-04 00:46:30,442 WARNING Verification of HTTPS certificates is disabled for this environment.
Set 'ssl-hostname-verification' to ensure secure communication.
2013-05-04 00:46:30,442 DEBUG openstack: using auth-mode 'rax' with https://identity.api.rackspacecloud.com/v2.0/
2013-05-04 00:46:30,617 DEBUG openstack: authenticated til u'2013-05-04T16:40:38.000-05:00'
2013-05-04 00:46:30,617 DEBUG openstack: GET 'https://dfw.servers.api.rackspacecloud.com/v2/<sanitized>/flavors'
2013-05-04 00:46:31,068 DEBUG openstack: 200 '{"flavors": [{"id": "2", "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/<sanitized>/flavors/2", "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/<sanitized>/flavors/2", "rel": "bookmark"}], "name": "512MB Standard Instance"}, {"id": "3", "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/<sanitized>/flavors/3", "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/<sanitized>/flavors/3", "rel": "bookmark"}], "name": "1GB Standard Instance"}, {"id": "4", "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/<sanitized>/flavors/4", "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/<sanitized>/flavors/4", "rel": "bookmark"}], "name": "2GB Standard Instance"}, {"id": "5", "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/<sanitized>/flavors/5", "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/<sanitized>/flavors/5", "rel": "bookmark"}], "name": "4GB Standard Instance"}, {"id": "6", "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/<sanitized>/flavors/6", "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/<sanitized>/flavors/6", "rel": "bookmark"}], "name": "8GB Standard Instance"}, {"id": "7", "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/<sanitized>/flavors/7", "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/<sanitized>/flavors/7", "rel": "bookmark"}], "name": "15GB Standard Instance"}, {"id": "8", "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/<sanitized>/flavors/8", "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/<sanitized>/flavors/8", "rel": "bookmark"}], "name": "30GB Standard Instance"}]}'
2013-05-04 00:46:31,070 INFO Bootstrapping environment 'rackspace' (origin: distro type: openstack)...
2013-05-04 00:46:31,070 DEBUG access object-store @ https://storage101.dfw1.clouddrive.com/v1/<sanitized>/<sanitized>/provider-state
2013-05-04 00:46:31,070 DEBUG openstack: GET 'https://storage101.dfw1.clouddrive.com/v1/<sanitized>/<sanitized>/provider-state'
2013-05-04 00:46:31,793 DEBUG openstack: 404 '<html><h1>Not Found</h1><p>The resource could not be found.</p></html>'
2013-05-04 00:46:31,794 DEBUG Verifying writable storage
2013-05-04 00:46:31,794 DEBUG access object-store @ https://storage101.dfw1.clouddrive.com/v1/<sanitized>/<sanitized>/bootstrap-verify
2013-05-04 00:46:31,794 DEBUG openstack: PUT 'https://storage101.dfw1.clouddrive.com/v1/<sanitized>/<sanitized>/bootstrap-verify'
2013-05-04 00:46:32,357 DEBUG openstack: 201 ''
2013-05-04 00:46:32,357 DEBUG Launching juju bootstrap instance.
2013-05-04 00:46:32,389 DEBUG access object-store @ https://storage101.dfw1.clouddrive.com/v1/<sanitized>/<sanitized>/juju_master_id
2013-05-04 00:46:32,392 DEBUG access compute @ https://dfw.servers.api.rackspacecloud.com/v2/<sanitized>/os-security-groups
2013-05-04 00:46:32,392 DEBUG openstack: GET 'https://dfw.servers.api.rackspacecloud.com/v2/<sanitized>/os-security-groups'
2013-05-04 00:46:32,850 DEBUG openstack: 404 '404 Not Found\n\nThe resource could not be found.\n\n '
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 397, in errback
self._startRunCallbacks(fail)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 464, in _startRunCallbacks
self._runCallbacks()
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 551, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1101, in gotResult
_inlineCallbacks(r, g, deferred)
--- <exception caught here> ---
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1043, in _inlineCallbacks
result = result.throwExceptionIntoGenerator(g)
File "/usr/lib/python2.7/dist-packages/twisted/python/failure.py", line 382, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/python2.7/dist-packages/juju/control/bootstrap.py", line 39, in command
yield provider.bootstrap(constraints)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1043, in _inlineCallbacks
result = result.throwExceptionIntoGenerator(g)
File "/usr/lib/python2.7/dist-packages/twisted/python/failure.py", line 382, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/python2.7/dist-packages/juju/providers/common/bootstrap.py", line 57, in _launch_machine
{"machine-id": "0", "constraints": self._constraints}, master=True)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1043, in _inlineCallbacks
result = result.throwExceptionIntoGenerator(g)
File "/usr/lib/python2.7/dist-packages/twisted/python/failure.py", line 382, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/python2.7/dist-packages/juju/providers/common/launch.py", line 64, in run
machines = yield self.start_machine(machine_id, zookeepers)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1043, in _inlineCallbacks
result = result.throwExceptionIntoGenerator(g)
File "/usr/lib/python2.7/dist-packages/twisted/python/failure.py", line 382, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/python2.7/dist-packages/juju/providers/openstack/launch.py", line 84, in start_machine
yield self._provider.port_manager.ensure_groups(machine_id))
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1043, in _inlineCallbacks
result = result.throwExceptionIntoGenerator(g)
File "/usr/lib/python2.7/dist-packages/twisted/python/failure.py", line 382, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/python2.7/dist-packages/juju/providers/openstack/ports.py", line 110, in ensure_groups
security_groups = yield self.nova.list_security_groups()
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 551, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/python2.7/dist-packages/juju/providers/openstack/client.py", line 325, in _json
response.code, body))
juju.errors.ProviderInteractionError: Unexpected 404: '404 Not Found\n\nThe resource could not be found.\n\n '
2013-05-04 00:46:32,857 ERROR Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 397, in errback
self._startRunCallbacks(fail)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 464, in _startRunCallbacks
self._runCallbacks()
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 551, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1101, in gotResult
_inlineCallbacks(r, g, deferred)
--- <exception caught here> ---
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1043, in _inlineCallbacks
result = result.throwExceptionIntoGenerator(g)
File "/usr/lib/python2.7/dist-packages/twisted/python/failure.py", line 382, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/python2.7/dist-packages/juju/control/bootstrap.py", line 39, in command
yield provider.bootstrap(constraints)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1043, in _inlineCallbacks
result = result.throwExceptionIntoGenerator(g)
File "/usr/lib/python2.7/dist-packages/twisted/python/failure.py", line 382, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/python2.7/dist-packages/juju/providers/common/bootstrap.py", line 57, in _launch_machine
{"machine-id": "0", "constraints": self._constraints}, master=True)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1043, in _inlineCallbacks
result = result.throwExceptionIntoGenerator(g)
File "/usr/lib/python2.7/dist-packages/twisted/python/failure.py", line 382, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/python2.7/dist-packages/juju/providers/common/launch.py", line 64, in run
machines = yield self.start_machine(machine_id, zookeepers)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1043, in _inlineCallbacks
result = result.throwExceptionIntoGenerator(g)
File "/usr/lib/python2.7/dist-packages/twisted/python/failure.py", line 382, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/python2.7/dist-packages/juju/providers/openstack/launch.py", line 84, in start_machine
yield self._provider.port_manager.ensure_groups(machine_id))
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1043, in _inlineCallbacks
result = result.throwExceptionIntoGenerator(g)
File "/usr/lib/python2.7/dist-packages/twisted/python/failure.py", line 382, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/python2.7/dist-packages/juju/providers/openstack/ports.py", line 110, in ensure_groups
security_groups = yield self.nova.list_security_groups()
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 551, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/python2.7/dist-packages/juju/providers/openstack/client.py", line 325, in _json
response.code, body))
juju.errors.ProviderInteractionError: Unexpected 404: '404 Not Found\n\nThe resource could not be found.\n\n '
2013-05-04 00:46:32,858 ERROR Unexpected 404: '404 Not Found\n\nThe resource could not be found.\n\n '