cloudify-openstack-plugin
cloudify-openstack-plugin copied to clipboard
Support Identity v3
Hi!
Since the release of Openstack Havana the preferred version of Identity to use is v3. Some cloud providers have now migrated to only supporting v3 for token generation to get support for domains.
Currently the Cloudify Openstack plugin does not work with providers that require support for Identity v3.
As far as I can see, you're already using keystoneclient.v3.client, so it should basically amount to adding the correct arguments.
Would it be possible to add support for Identity v3 in this project as well?
Keystone isn't really used in the openstack plugin. There is a class for the client, but it isn't called anywhere. All of the connections are handled by the Neutron, Cinder, and Nova clients. They authenticate with Keystone on their own. Currently, I know that Nova does not support V3, and it seems that Neutron and Cinder also do not. What are the specific features that v3 offers that you want?
Upstream is migrating towards using keystoneauth
library for creating session that can be used by all of the clients (I know for sure that nova, neutron and cinder support sessions).
And as far as why using v3 is important: OpenStack Mitaka does not support v2 version anymore, so using v3 is a necessity.
Guys, is this why I can no longer do anything with Datacentred? I've tried many combinations of keystone endpoint (/, /v2, /v3) with zero success. Every time a resource goes to be provisioned I get something along these lines (using v1.4 of the plugin):
2016-11-08 16:09:44 CFY <local> [floating_ip_14ae3.create] Task failed 'neutron_plugin.floatingip.create' -> {"error": {"message": "The resource could not be found.", "code": 404, "title": "Not Found"}} [status_code=401]
Traceback (most recent call last):
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/cloudify/workflows/tasks.py", line 507, in local_task_wrapper
result = self.local_task(**self.kwargs)
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/cloudify/dispatch.py", line 577, in dispatch
return handler.handle_or_dispatch_to_subprocess_if_remote()
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/cloudify/dispatch.py", line 100, in handle_or_dispatch_to_subprocess_if_remote
return self.handle()
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/cloudify/dispatch.py", line 366, in handle
result = self.func(*self.args, **kwargs)
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/openstack_plugin_common/__init__.py", line 523, in wrapper
_re_raise(e, recoverable=False, status_code=e.status_code)
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/openstack_plugin_common/__init__.py", line 520, in wrapper
return f(*args, **kw)
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutron_plugin/floatingip.py", line 49, in create
'network', floatingip['floating_network_name'])['id']
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/openstack_plugin_common/__init__.py", line 609, in cosmo_get_named
return self.cosmo_get(obj_type_single, name=name, **kw)
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/openstack_plugin_common/__init__.py", line 612, in cosmo_get
return self._cosmo_get(obj_type_single, False, **kw)
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/openstack_plugin_common/__init__.py", line 618, in _cosmo_get
ls = list(self.cosmo_list(obj_type_single, **kw))
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/openstack_plugin_common/__init__.py", line 679, in cosmo_list
for obj in getattr(self, 'list_' + obj_type_plural)(**kw)[
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 102, in with_params
ret = self.function(instance, *args, **kwargs)
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 561, in list_networks
**_params)
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 307, in list
for r in self._pagination(collection, path, **params):
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 320, in _pagination
res = self.get(path, params=params)
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 293, in get
headers=headers, params=params)
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 270, in retry_request
headers=headers, params=params)
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 200, in do_request
content_type=self.content_type())
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutronclient/client.py", line 158, in do_request
self.authenticate_and_fetch_endpoint_url()
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutronclient/client.py", line 123, in authenticate_and_fetch_endpoint_url
self.authenticate()
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutronclient/client.py", line 237, in authenticate
self._authenticate_keystone()
File "/home/jcornutt/Desktop/Dev/Cloudify/venv-vnf/lib/python2.7/site-packages/neutronclient/client.py", line 218, in _authenticate_keystone
raise exceptions.Unauthorized(message=resp_body)
NonRecoverableError: {"error": {"message": "The resource could not be found.", "code": 404, "title": "Not Found"}} [status_code=401]
@01000101 I don't have the config file with me at the moment, but I think you can work around that by adding /v2.0 to the end of the URL (not just /v2).
That resolved issues w/ Keystone, but both Krzysztof and I are having a lot of OpenStack plugin issues now w/ Datacentred.
This looks like it was updated in version 2.0 of the plugin:
https://github.com/cloudify-cosmo/cloudify-openstack-plugin/blob/master/CHANGELOG.txt