cloudify-openstack-plugin icon indicating copy to clipboard operation
cloudify-openstack-plugin copied to clipboard

Support Identity v3

Open stenstad opened this issue 9 years ago • 6 comments

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?

stenstad avatar Feb 15 '16 16:02 stenstad

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?

EarthmanT avatar Feb 23 '16 15:02 EarthmanT

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.

tadeboro avatar Aug 14 '16 14:08 tadeboro

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 avatar Nov 08 '16 21:11 01000101

@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).

geokala avatar Nov 08 '16 21:11 geokala

That resolved issues w/ Keystone, but both Krzysztof and I are having a lot of OpenStack plugin issues now w/ Datacentred.

01000101 avatar Nov 09 '16 16:11 01000101

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

fifieldt avatar Jan 15 '18 14:01 fifieldt