Merge "Add Magnum actions"

This commit is contained in:
Jenkins 2016-06-09 16:07:49 +00:00 committed by Gerrit Code Review
commit 468bd83b29
5 changed files with 57 additions and 1 deletions

View File

@ -25,6 +25,7 @@ from ironicclient.v1 import client as ironicclient
from keystoneclient.auth import identity
from keystoneclient import httpclient
from keystoneclient.v3 import client as keystoneclient
from magnumclient.v1 import client as magnumclient
from mistralclient.api.v2 import client as mistralclient
from neutronclient.v2_0 import client as neutronclient
from novaclient import client as novaclient
@ -606,3 +607,28 @@ class DesignateAction(base.OpenStackAction):
@classmethod
def _get_fake_client(cls):
return cls._client_class()
class MagnumAction(base.OpenStackAction):
_client_class = magnumclient.Client
def _get_client(self):
ctx = context.ctx()
LOG.debug("Magnum action security context: %s" % ctx)
keystone_endpoint = keystone_utils.get_keystone_endpoint_v2()
auth_url = keystone_endpoint.url
magnum_url = keystone_utils.get_endpoint_for_project('magnum').url
return self._client_class(
magnum_url=magnum_url,
auth_token=ctx.auth_token,
project_id=ctx.project_id,
user_id=ctx.user_id,
auth_url=auth_url
)
@classmethod
def _get_fake_client(cls):
return cls._client_class()

View File

@ -1118,5 +1118,13 @@
"sync_domain": "sync.sync_domain",
"sync_record": "sync.sync_record",
"touch_domain": "touch.domain"
},
"magnum": {
"_comment": "It uses magnumclient.v1.",
"baymodels_create": "baymodels.create",
"baymodels_delete": "baymodels.delete",
"baymodels_get": "baymodels.get",
"baymodels_list": "baymodels.list",
"baymodels_update": "baymodels.update"
}
}

View File

@ -199,3 +199,15 @@ class OpenStackActionTest(base.BaseTestCase):
self.assertTrue(mocked().domain.get.called)
mocked().domain.get.assert_called_once_with(domain="example.com")
@mock.patch.object(actions.MagnumAction, '_get_client')
def test_magnum_action(self, mocked):
method_name = "baymodels.get"
action_class = actions.MagnumAction
action_class.client_method_name = method_name
params = {'id': '1234-abcd'}
action = action_class(**params)
action.run()
self.assertTrue(mocked().baymodels.get.called)
mocked().baymodels.get.assert_called_once_with(id="1234-abcd")

View File

@ -30,6 +30,7 @@ python-glanceclient>=2.0.0 # Apache-2.0
python-heatclient>=1.1.0 # Apache-2.0
python-keystoneclient!=1.8.0,!=2.1.0,>=1.7.0 # Apache-2.0
python-mistralclient>=2.0.0 # Apache-2.0
python-magnumclient>=2.0.0 # Apache-2.0
python-neutronclient>=4.2.0 # Apache-2.0
python-novaclient!=2.33.0,>=2.29.0 # Apache-2.0
python-swiftclient>=2.2.0 # Apache-2.0

View File

@ -31,6 +31,8 @@ from ironicclient.common import base as ironic_base
from ironicclient.v1 import client as ironicclient
from keystoneclient import base as keystone_base
from keystoneclient.v3 import client as keystoneclient
from magnumclient.common import base as magnum_base
from magnumclient.v1 import client as magnumclient
from mistralclient.api import base as mistral_base
from mistralclient.api.v2 import client as mistralclient
from novaclient import base as nova_base
@ -78,6 +80,7 @@ BASE_MISTRAL_MANAGER = mistral_base.ResourceManager
BASE_TROVE_MANAGER = trove_base.Manager
BASE_IRONIC_MANAGER = ironic_base.Manager
BASE_BARBICAN_MANAGER = barbican_base.BaseEntityManager
BASE_MAGNUM_MANAGER = magnum_base.Manager
def get_parser():
@ -181,6 +184,10 @@ def get_designate_client(**kwargs):
return designateclient.Client(1)
def get_magnum_client(**kwargs):
return magnumclient.Client()
CLIENTS = {
'nova': get_nova_client,
'heat': get_heat_client,
@ -192,7 +199,8 @@ CLIENTS = {
'ironic': get_ironic_client,
'barbican': get_barbican_client,
'mistral': get_mistral_client,
'designate': get_designate_client
'designate': get_designate_client,
'magnum': get_magnum_client,
# 'neutron': get_nova_client
# 'baremetal_introspection': ...
# 'swift': ...
@ -210,6 +218,7 @@ BASE_MANAGERS = {
'barbican': BASE_BARBICAN_MANAGER,
'mistral': BASE_MISTRAL_MANAGER,
'designate': None,
'magnum': BASE_MAGNUM_MANAGER,
# 'neutron': BASE_NOVA_MANAGER
# 'baremetal_introspection': ...
# 'swift': ...