Merge "Add Magnum actions"
This commit is contained in:
commit
468bd83b29
|
@ -25,6 +25,7 @@ from ironicclient.v1 import client as ironicclient
|
||||||
from keystoneclient.auth import identity
|
from keystoneclient.auth import identity
|
||||||
from keystoneclient import httpclient
|
from keystoneclient import httpclient
|
||||||
from keystoneclient.v3 import client as keystoneclient
|
from keystoneclient.v3 import client as keystoneclient
|
||||||
|
from magnumclient.v1 import client as magnumclient
|
||||||
from mistralclient.api.v2 import client as mistralclient
|
from mistralclient.api.v2 import client as mistralclient
|
||||||
from neutronclient.v2_0 import client as neutronclient
|
from neutronclient.v2_0 import client as neutronclient
|
||||||
from novaclient import client as novaclient
|
from novaclient import client as novaclient
|
||||||
|
@ -606,3 +607,28 @@ class DesignateAction(base.OpenStackAction):
|
||||||
@classmethod
|
@classmethod
|
||||||
def _get_fake_client(cls):
|
def _get_fake_client(cls):
|
||||||
return cls._client_class()
|
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()
|
||||||
|
|
|
@ -1118,5 +1118,13 @@
|
||||||
"sync_domain": "sync.sync_domain",
|
"sync_domain": "sync.sync_domain",
|
||||||
"sync_record": "sync.sync_record",
|
"sync_record": "sync.sync_record",
|
||||||
"touch_domain": "touch.domain"
|
"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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -199,3 +199,15 @@ class OpenStackActionTest(base.BaseTestCase):
|
||||||
|
|
||||||
self.assertTrue(mocked().domain.get.called)
|
self.assertTrue(mocked().domain.get.called)
|
||||||
mocked().domain.get.assert_called_once_with(domain="example.com")
|
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")
|
||||||
|
|
|
@ -30,6 +30,7 @@ python-glanceclient>=2.0.0 # Apache-2.0
|
||||||
python-heatclient>=1.1.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-keystoneclient!=1.8.0,!=2.1.0,>=1.7.0 # Apache-2.0
|
||||||
python-mistralclient>=2.0.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-neutronclient>=4.2.0 # Apache-2.0
|
||||||
python-novaclient!=2.33.0,>=2.29.0 # Apache-2.0
|
python-novaclient!=2.33.0,>=2.29.0 # Apache-2.0
|
||||||
python-swiftclient>=2.2.0 # Apache-2.0
|
python-swiftclient>=2.2.0 # Apache-2.0
|
||||||
|
|
|
@ -31,6 +31,8 @@ from ironicclient.common import base as ironic_base
|
||||||
from ironicclient.v1 import client as ironicclient
|
from ironicclient.v1 import client as ironicclient
|
||||||
from keystoneclient import base as keystone_base
|
from keystoneclient import base as keystone_base
|
||||||
from keystoneclient.v3 import client as keystoneclient
|
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 import base as mistral_base
|
||||||
from mistralclient.api.v2 import client as mistralclient
|
from mistralclient.api.v2 import client as mistralclient
|
||||||
from novaclient import base as nova_base
|
from novaclient import base as nova_base
|
||||||
|
@ -78,6 +80,7 @@ BASE_MISTRAL_MANAGER = mistral_base.ResourceManager
|
||||||
BASE_TROVE_MANAGER = trove_base.Manager
|
BASE_TROVE_MANAGER = trove_base.Manager
|
||||||
BASE_IRONIC_MANAGER = ironic_base.Manager
|
BASE_IRONIC_MANAGER = ironic_base.Manager
|
||||||
BASE_BARBICAN_MANAGER = barbican_base.BaseEntityManager
|
BASE_BARBICAN_MANAGER = barbican_base.BaseEntityManager
|
||||||
|
BASE_MAGNUM_MANAGER = magnum_base.Manager
|
||||||
|
|
||||||
|
|
||||||
def get_parser():
|
def get_parser():
|
||||||
|
@ -181,6 +184,10 @@ def get_designate_client(**kwargs):
|
||||||
return designateclient.Client(1)
|
return designateclient.Client(1)
|
||||||
|
|
||||||
|
|
||||||
|
def get_magnum_client(**kwargs):
|
||||||
|
return magnumclient.Client()
|
||||||
|
|
||||||
|
|
||||||
CLIENTS = {
|
CLIENTS = {
|
||||||
'nova': get_nova_client,
|
'nova': get_nova_client,
|
||||||
'heat': get_heat_client,
|
'heat': get_heat_client,
|
||||||
|
@ -192,7 +199,8 @@ CLIENTS = {
|
||||||
'ironic': get_ironic_client,
|
'ironic': get_ironic_client,
|
||||||
'barbican': get_barbican_client,
|
'barbican': get_barbican_client,
|
||||||
'mistral': get_mistral_client,
|
'mistral': get_mistral_client,
|
||||||
'designate': get_designate_client
|
'designate': get_designate_client,
|
||||||
|
'magnum': get_magnum_client,
|
||||||
# 'neutron': get_nova_client
|
# 'neutron': get_nova_client
|
||||||
# 'baremetal_introspection': ...
|
# 'baremetal_introspection': ...
|
||||||
# 'swift': ...
|
# 'swift': ...
|
||||||
|
@ -210,6 +218,7 @@ BASE_MANAGERS = {
|
||||||
'barbican': BASE_BARBICAN_MANAGER,
|
'barbican': BASE_BARBICAN_MANAGER,
|
||||||
'mistral': BASE_MISTRAL_MANAGER,
|
'mistral': BASE_MISTRAL_MANAGER,
|
||||||
'designate': None,
|
'designate': None,
|
||||||
|
'magnum': BASE_MAGNUM_MANAGER,
|
||||||
# 'neutron': BASE_NOVA_MANAGER
|
# 'neutron': BASE_NOVA_MANAGER
|
||||||
# 'baremetal_introspection': ...
|
# 'baremetal_introspection': ...
|
||||||
# 'swift': ...
|
# 'swift': ...
|
||||||
|
|
Loading…
Reference in New Issue