Merge "Support Qinling actions in Mistral"

This commit is contained in:
Zuul 2018-05-17 06:18:48 +00:00 committed by Gerrit Code Review
commit a88ff9f80a
9 changed files with 75 additions and 4 deletions

View File

@ -130,6 +130,7 @@ python-troveclient==2.2.0
python-vitrageclient==2.0.0 python-vitrageclient==2.0.0
python-zaqarclient==1.0.0 python-zaqarclient==1.0.0
python-zunclient==1.0.0 python-zunclient==1.0.0
python-qinlingclient==1.0.0
pytz==2013.6 pytz==2013.6
PyYAML==3.12 PyYAML==3.12
reno==2.5.0 reno==2.5.0

View File

@ -21,7 +21,7 @@ SUPPORTED_MODULES = [
'Nova', 'Glance', 'Keystone', 'Heat', 'Neutron', 'Cinder', 'Nova', 'Glance', 'Keystone', 'Heat', 'Neutron', 'Cinder',
'Trove', 'Ironic', 'Baremetal Introspection', 'Swift', 'SwiftService', 'Trove', 'Ironic', 'Baremetal Introspection', 'Swift', 'SwiftService',
'Zaqar', 'Barbican', 'Mistral', 'Designate', 'Magnum', 'Murano', 'Tacker', 'Zaqar', 'Barbican', 'Mistral', 'Designate', 'Magnum', 'Murano', 'Tacker',
'Aodh', 'Gnocchi', 'Glare', 'Vitrage', 'Senlin', 'Zun' 'Aodh', 'Gnocchi', 'Glare', 'Vitrage', 'Senlin', 'Zun', 'Qinling'
] ]

View File

@ -65,6 +65,7 @@ mistralclient = _try_import('mistralclient.api.v2.client')
muranoclient = _try_import('muranoclient.v1.client') muranoclient = _try_import('muranoclient.v1.client')
neutronclient = _try_import('neutronclient.v2_0.client') neutronclient = _try_import('neutronclient.v2_0.client')
novaclient = _try_import('novaclient.client') novaclient = _try_import('novaclient.client')
qinlingclient = _try_import('qinlingclient.v1.client')
senlinclient = _try_import('senlinclient.v1.client') senlinclient = _try_import('senlinclient.v1.client')
swift_client = _try_import('swiftclient.client') swift_client = _try_import('swiftclient.client')
swiftservice = _try_import('swiftclient.service') swiftservice = _try_import('swiftclient.service')
@ -974,3 +975,26 @@ class ZunAction(base.OpenStackAction):
endpoint_override="http://127.0.0.1:9517/", endpoint_override="http://127.0.0.1:9517/",
session=session session=session
) )
class QinlingAction(base.OpenStackAction):
_service_type = 'function-engine'
@classmethod
def _get_client_class(cls):
return qinlingclient.Client
def _create_client(self, context):
qinling_endpoint = self.get_service_endpoint()
session_and_auth = self.get_session_and_auth(context)
return self._get_client_class()(endpoint_override=qinling_endpoint.url,
session=session_and_auth['session'])
@classmethod
def _get_fake_client(cls):
session = keystone_utils.get_admin_session()
return cls._get_client_class()(
endpoint_override="http://127.0.0.1:7070/",
session=session
)

View File

@ -1305,5 +1305,32 @@
"services_disable": "services.disable", "services_disable": "services.disable",
"services_enable": "services.enable", "services_enable": "services.enable",
"services_list": "services.list" "services_list": "services.list"
},
"qinling": {
"_comment": "Qinling v1 actions",
"runtimes_create": "runtimes.create",
"runtimes_list": "runtimes.list",
"runtimes_get": "runtimes.get",
"runtimes_delete": "runtimes.delete",
"functions_create": "functions.create",
"functions_list": "functions.list",
"functions_get": "functions.get",
"functions_update": "functions.update",
"functions_delete": "functions.delete",
"function_executions_create": "function_executions.create",
"function_executions_list": "function_executions.list",
"function_executions_get": "function_executions.get",
"function_executions_delete": "function_executions.delete",
"function_executions_get_log": "function_executions.get_log",
"jobs_create": "jobs.create",
"jobs_list": "jobs.list",
"jobs_get": "jobs.get",
"jobs_update": "jobs.update",
"jobs_delete": "jobs.delete",
"webhooks_create": "webhooks.create",
"webhooks_list": "webhooks.list",
"webhooks_get": "webhooks.get",
"webhooks_update": "webhooks.update",
"webhooks_delete": "webhooks.delete"
} }
} }

View File

@ -56,7 +56,8 @@ MODULE_MAPPING = {
'gnocchi': ['gnocchi.metric_list', actions.GnocchiAction], 'gnocchi': ['gnocchi.metric_list', actions.GnocchiAction],
'glare': ['glare.artifacts_list', actions.GlareAction], 'glare': ['glare.artifacts_list', actions.GlareAction],
'vitrage': ['vitrage.alarm_get', actions.VitrageAction], 'vitrage': ['vitrage.alarm_get', actions.VitrageAction],
'zun': ['zun.containers_list', actions.ZunAction] 'zun': ['zun.containers_list', actions.ZunAction],
'qinling': ['qinling.runtimes_list', actions.QinlingAction]
} }
EXTRA_MODULES = ['neutron', 'swift', 'zaqar', 'tacker', 'senlin'] EXTRA_MODULES = ['neutron', 'swift', 'zaqar', 'tacker', 'senlin']

View File

@ -374,3 +374,16 @@ class OpenStackActionTest(base.BaseTestCase):
mocked().containers.get.assert_called_once_with( mocked().containers.get.assert_called_once_with(
container_id="1234-abcd" container_id="1234-abcd"
) )
@mock.patch.object(actions.QinlingAction, '_get_client')
def test_qinling_action(self, mocked):
mock_ctx = mock.Mock()
method_name = "runtimes.get"
action_class = actions.QinlingAction
action_class.client_method_name = method_name
params = {'id': '1234-abcd'}
action = action_class(**params)
action.run(mock_ctx)
self.assertTrue(mocked().runtimes.get.called)
mocked().runtimes.get.assert_called_once_with(id="1234-abcd")

View File

@ -0,0 +1,4 @@
---
features:
- |
Add Mistral actions for Openstack Qinling, the function management service.

View File

@ -13,7 +13,7 @@ Jinja2>=2.10 # BSD License (3 clause)
jsonschema<3.0.0,>=2.6.0 # MIT jsonschema<3.0.0,>=2.6.0 # MIT
keystonemiddleware>=4.17.0 # Apache-2.0 keystonemiddleware>=4.17.0 # Apache-2.0
mistral-lib>=0.4.0 # Apache-2.0 mistral-lib>=0.4.0 # Apache-2.0
networkx<2.0,>=1.10 # BSD networkx>=1.10 # BSD
oslo.concurrency>=3.26.0 # Apache-2.0 oslo.concurrency>=3.26.0 # Apache-2.0
oslo.config>=5.2.0 # Apache-2.0 oslo.config>=5.2.0 # Apache-2.0
oslo.context>=2.20.0 # Apache-2.0 oslo.context>=2.20.0 # Apache-2.0
@ -51,6 +51,7 @@ python-ironic-inspector-client>=1.5.0 # Apache-2.0
python-vitrageclient>=2.0.0 # Apache-2.0 python-vitrageclient>=2.0.0 # Apache-2.0
python-zaqarclient>=1.0.0 # Apache-2.0 python-zaqarclient>=1.0.0 # Apache-2.0
python-zunclient>=1.0.0 # Apache-2.0 python-zunclient>=1.0.0 # Apache-2.0
python-qinlingclient>=1.0.0 # Apache-2.0
PyJWT>=1.0.1 # MIT PyJWT>=1.0.1 # MIT
PyYAML>=3.12 # MIT PyYAML>=3.12 # MIT
requests>=2.14.2 # Apache-2.0 requests>=2.14.2 # Apache-2.0

View File

@ -10,7 +10,7 @@ fixtures>=3.0.0 # Apache-2.0/BSD
keystonemiddleware>=4.17.0 # Apache-2.0 keystonemiddleware>=4.17.0 # Apache-2.0
mistral-lib>=0.4.0 # Apache-2.0 mistral-lib>=0.4.0 # Apache-2.0
mock>=2.0.0 # BSD mock>=2.0.0 # BSD
networkx<2.0,>=1.10 # BSD networkx>=1.10 # BSD
nose>=1.3.7 # LGPL nose>=1.3.7 # LGPL
oslotest>=3.2.0 # Apache-2.0 oslotest>=3.2.0 # Apache-2.0
oslo.db>=4.27.0 # Apache-2.0 oslo.db>=4.27.0 # Apache-2.0