Added murano actions

Change-Id: I80e971e54cf165396fd6f96d6c1a19d9c17e4dac
Implements: blueprint mistral-murano-actions
This commit is contained in:
hardik 2016-06-13 19:21:53 +05:30
parent 4314ea9ef7
commit 10fa24731d
5 changed files with 99 additions and 0 deletions

View File

@ -27,6 +27,7 @@ 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 muranoclient.v1 import client as muranoclient
from neutronclient.v2_0 import client as neutronclient
from novaclient import client as novaclient
from oslo_config import cfg
@ -632,3 +633,27 @@ class MagnumAction(base.OpenStackAction):
@classmethod
def _get_fake_client(cls):
return cls._client_class()
class MuranoAction(base.OpenStackAction):
_client_class = muranoclient.Client
def _get_client(self):
ctx = context.ctx()
LOG.debug("Murano action security context: %s" % ctx)
keystone_endpoint = keystone_utils.get_keystone_endpoint_v2()
murano_endpoint = keystone_utils.get_endpoint_for_project('murano')
return self._client_class(
endpoint=murano_endpoint.url,
token=ctx.auth_token,
tenant=ctx.project_id,
region_name=murano_endpoint.region,
auth_url=keystone_endpoint.url
)
@classmethod
def _get_fake_client(cls):
return cls._client_class()

View File

@ -1131,5 +1131,55 @@
"bays_get": "bays.get",
"bays_list": "bays.list",
"bays_update": "bays.update"
},
"murano":{
"_comment": "It uses muranoclient.v1.",
"categories_add": "categories.add",
"categories_delete": "categories.delete",
"categories_get": "categories.get",
"categories_list": "categories.list",
"deployments_list": "deployments.list",
"deployments_reports": "deployments.reports",
"env_templates_clone": "env_templates.clone",
"env_templates_create": "env_templates.create",
"env_templates_create_app": "env_templates.create_app",
"env_templates_create_env": "env_templates.create_env",
"env_templates_delete": "env_templates.delete",
"env_templates_delete_app": "env_templates.delete_app",
"env_templates_get": "env_templates.get",
"env_templates_list": "env_templates.list",
"env_templates_update": "env_templates.update",
"environments_create": "environments.create",
"environments_delete": "environments.delete",
"environments_find": "environments.find",
"environments_findall": "environments.findall",
"environments_get": "environments.get",
"environments_last_status": "environments.last_status",
"environments_list": "environments.list",
"environments_update": "environments.update",
"instance_statistics_get": "instance_statistics.get",
"instance_statistics_get_aggregated": "instance_statistics.get_aggregated",
"packages_categories": "packages.categories",
"packages_create": "packages.create",
"packages_delete": "packages.delete",
"packages_download": "packages.download",
"packages_filter": "packages.filter",
"packages_get": "packages.get",
"packages_get_logo": "packages.get_logo",
"packages_get_supplier_logo": "packages.get_supplier_logo",
"packages_get_ui": "packages.get_ui",
"packages_list": "packages.list",
"packages_toggle_active": "packages.toggle_active",
"packages_toggle_public": "packages.toggle_public",
"packages_update": "packages.update",
"request_statistics_list": "request_statistics.list",
"services_delete": "services.delete",
"services_get": "services.get",
"services_list": "services.list",
"services_post": "services.post",
"sessions_configure": "sessions.configure",
"sessions_delete": "sessions.delete",
"sessions_deploy": "sessions.deploy",
"sessions_get": "sessions.get"
}
}

View File

@ -211,3 +211,17 @@ class OpenStackActionTest(base.BaseTestCase):
self.assertTrue(mocked().baymodels.get.called)
mocked().baymodels.get.assert_called_once_with(id="1234-abcd")
@mock.patch.object(actions.MuranoAction, '_get_client')
def test_murano_action(self, mocked):
method_name = "categories.get"
action_class = actions.MuranoAction
action_class.client_method_name = method_name
params = {'category_id': '1234-abcd'}
action = action_class(**params)
action.run()
self.assertTrue(mocked().categories.get.called)
mocked().categories.get.assert_called_once_with(
category_id="1234-abcd"
)

View File

@ -31,6 +31,7 @@ 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-muranoclient>=0.8.2 # 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

@ -35,6 +35,8 @@ 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 muranoclient.common import base as murano_base
from muranoclient.v1 import client as muranoclient
from novaclient import base as nova_base
from novaclient import client as novaclient
from troveclient import base as trove_base
@ -81,6 +83,7 @@ BASE_TROVE_MANAGER = trove_base.Manager
BASE_IRONIC_MANAGER = ironic_base.Manager
BASE_BARBICAN_MANAGER = barbican_base.BaseEntityManager
BASE_MAGNUM_MANAGER = magnum_base.Manager
BASE_MURANO_MANAGER = murano_base.Manager
def get_parser():
@ -188,6 +191,10 @@ def get_magnum_client(**kwargs):
return magnumclient.Client()
def get_murano_client(**kwargs):
return muranoclient.Client('')
CLIENTS = {
'nova': get_nova_client,
'heat': get_heat_client,
@ -201,6 +208,7 @@ CLIENTS = {
'mistral': get_mistral_client,
'designate': get_designate_client,
'magnum': get_magnum_client,
'murano': get_murano_client,
# 'neutron': get_nova_client
# 'baremetal_introspection': ...
# 'swift': ...
@ -219,6 +227,7 @@ BASE_MANAGERS = {
'mistral': BASE_MISTRAL_MANAGER,
'designate': None,
'magnum': BASE_MAGNUM_MANAGER,
'murano': BASE_MURANO_MANAGER,
# 'neutron': BASE_NOVA_MANAGER
# 'baremetal_introspection': ...
# 'swift': ...