Remove support for murano and senlin

These projects were marked inactive during 2024.1 and is being
retired in 2024.2[1][2].

Also get rid of unittest2, which is not actually required.

[1] https://review.opendev.org/c/openstack/governance/+/919358
[2] https://review.opendev.org/c/openstack/governance/+/919347

Change-Id: Ief5bbcd05379b49dc1ad2c05c2d40d15d869f40a
This commit is contained in:
Takashi Kajinami 2024-05-17 00:42:29 +09:00
parent 660dd14be5
commit 96bfc6c718
10 changed files with 9 additions and 238 deletions

View File

@ -20,8 +20,8 @@ from mistral_extra.actions.openstack.action_generator import base
SUPPORTED_MODULES = [
'Nova', 'Glance', 'Keystone', 'Heat', 'Neutron', 'Cinder',
'Trove', 'Ironic', 'Baremetal Introspection', 'Swift', 'SwiftService',
'Zaqar', 'Barbican', 'Mistral', 'Designate', 'Magnum', 'Murano', 'Tacker',
'Aodh', 'Gnocchi', 'Vitrage', 'Senlin', 'Zun', 'Manila'
'Zaqar', 'Barbican', 'Mistral', 'Designate', 'Magnum', 'Tacker',
'Aodh', 'Gnocchi', 'Vitrage', 'Zun', 'Manila'
]

View File

@ -64,12 +64,10 @@ manilaclient = _try_import('manilaclient.client')
manila_api_versions = _try_import('manilaclient.api_versions')
magnumclient = _try_import('magnumclient.v1.client')
mistralclient = _try_import('mistralclient.api.v2.client')
muranoclient = _try_import('muranoclient.v1.client')
neutronclient = _try_import('neutronclient.v2_0.client')
nova = _try_import('novaclient')
novaclient = _try_import('novaclient.client')
nova_api_versions = _try_import('novaclient.api_versions')
senlinclient = _try_import('senlinclient.v1.client')
swift_client = _try_import('swiftclient.client')
swiftservice = _try_import('swiftclient.service')
tackerclient = _try_import('tackerclient.v1_0.client')
@ -754,34 +752,6 @@ class MagnumAction(base.OpenStackAction):
return cls._get_client_class()(auth_url='X', magnum_url='X')
class MuranoAction(base.OpenStackAction):
_service_name = 'murano'
@classmethod
def _get_client_class(cls):
return muranoclient.Client
def _create_client(self, context):
LOG.debug("Murano action security context: %s", context)
keystone_endpoint = keystone_utils.get_keystone_endpoint()
murano_endpoint = self.get_service_endpoint()
return self._get_client_class()(
endpoint=murano_endpoint.url,
token=context.auth_token,
tenant=context.project_id,
region_name=murano_endpoint.region,
auth_url=keystone_endpoint.url,
insecure=context.insecure
)
@classmethod
def _get_fake_client(cls):
return cls._get_client_class()("http://127.0.0.1:8082/")
class TackerAction(base.OpenStackAction):
_service_name = 'tacker'
@ -810,57 +780,6 @@ class TackerAction(base.OpenStackAction):
return cls._get_client_class()()
class SenlinAction(base.OpenStackAction):
_service_name = 'senlin'
@classmethod
def _get_client_class(cls):
return senlinclient.Client
def _create_client(self, context):
LOG.debug("Senlin action security context: %s", context)
keystone_endpoint = keystone_utils.get_keystone_endpoint()
senlin_endpoint = self.get_service_endpoint()
if context.is_trust_scoped and keystone_utils.is_token_trust_scoped(
context.auth_token):
if context.trust_id is None:
raise Exception(
"'trust_id' must be provided in the admin context."
)
auth = ks_identity_v3.Password(
auth_url=keystone_endpoint.url,
trust_id=context.trust_id,
username=CONF.keystone_authtoken.username,
password=CONF.keystone_authtoken.password,
user_domain_name=CONF.keystone_authtoken.user_domain_name
)
else:
auth = ks_identity_v3.Token(
auth_url=keystone_endpoint.url,
token=context.auth_token,
project_id=context.project_id
)
return self._get_client_class()(
endpoint_url=senlin_endpoint.url,
session=ks_session.Session(auth=auth),
tenant_id=context.project_id,
region_name=senlin_endpoint.region,
auth_url=keystone_endpoint.url,
insecure=context.insecure
)
@classmethod
def _get_fake_client(cls):
# Senlin client changed interface a bit, let's skip __init__ altogether
class_ = cls._get_client_class()
return class_.__new__(class_)
class AodhAction(base.OpenStackAction):
_service_type = 'alarming'

View File

@ -1084,55 +1084,6 @@
"certificates_rotate_ca": "certificates.rotate_ca",
"mservices_list": "mservices.list"
},
"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_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"
},
"tacker":{
"_comment": "It uses tackerclient.v1_0.",
"list_extensions": "list_extensions",
@ -1169,57 +1120,6 @@
"list_vims": "list_vims",
"show_vim": "show_vim"
},
"senlin":{
"_comment": "It uses senlinclient.v1_0.",
"profile_types": "profile_types",
"get_profile_type": "get_profile_type",
"profiles": "profiles",
"create_profile": "create_profile",
"get_profile": "get_profile",
"update_profile": "update_profile",
"delete_profile": "delete_profile",
"validate_profile": "validate_profile",
"policy_types": "policy_types",
"get_policy_type": "get_policy_type",
"policies": "policies",
"create_policy": "create_policy",
"get_policy": "get_policy",
"update_policy": "update_policy",
"delete_policy": "delete_policy",
"validate_policy": "validate_policy",
"clusters": "clusters",
"create_cluster": "create_cluster",
"get_cluster": "get_cluster",
"update_cluster": "update_cluster",
"delete_cluster": "delete_cluster",
"cluster_add_nodes": "cluster_add_nodes",
"cluster_del_nodes": "cluster_del_nodes",
"cluster_resize": "cluster_resize",
"cluster_scale_out": "cluster_scale_out",
"cluster_scale_in": "cluster_scale_in",
"cluster_policies": "cluster_policies",
"get_cluster_policy": "get_cluster_policy",
"cluster_attach_policy": "cluster_attach_policy",
"cluster_detach_policy": "cluster_detach_policy",
"cluster_update_policy": "cluster_update_policy",
"check_cluster": "check_cluster",
"recover_cluster": "recover_cluster",
"nodes": "nodes",
"create_node": "create_node",
"get_node": "get_node",
"update_node": "update_node",
"delete_node": "delete_node",
"check_node": "check_node",
"recover_node": "recover_node",
"receivers": "receivers",
"create_receiver": "create_receiver",
"get_receiver": "get_receiver",
"delete_receiver": "delete_receiver",
"events": "events",
"get_event": "get_event",
"actions": "actions",
"get_action": "get_action"
},
"vitrage": {
"_comment": "It uses vitrageclient.v1.",
"alarm_list": "alarm.list",

View File

@ -39,8 +39,7 @@ openstack_actions_opts = [
cfg.ListOpt(
'modules-support-region',
default=['nova', 'glance', 'heat', 'neutron', 'cinder',
'trove', 'ironic', 'designate', 'murano', 'tacker', 'senlin',
'aodh', 'gnocchi'],
'trove', 'ironic', 'designate', 'tacker', 'aodh', 'gnocchi'],
help='List of module names that support region in actions.'
),
cfg.StrOpt(

View File

@ -53,16 +53,14 @@ MODULE_MAPPING = {
'designate': ['designate.quotas_list', actions.DesignateAction],
'manila': ['manila.shares_list', actions.ManilaAction],
'magnum': ['magnum.mservices_list', actions.MagnumAction],
'murano': ['murano.deployments_list', actions.MuranoAction],
'tacker': ['tacker.list_vims', actions.TackerAction],
'senlin': ['senlin.get_profile', actions.SenlinAction],
'aodh': ['aodh.alarm_list', actions.AodhAction],
'gnocchi': ['gnocchi.metric_list', actions.GnocchiAction],
'vitrage': ['vitrage.alarm_get', actions.VitrageAction],
'zun': ['zun.containers_list', actions.ZunAction]
}
EXTRA_MODULES = ['neutron', 'swift', 'zaqar', 'tacker', 'senlin']
EXTRA_MODULES = ['neutron', 'swift', 'zaqar', 'tacker']
CONF = cfg.CONF

View File

@ -254,21 +254,6 @@ class OpenStackActionTest(base.BaseTestCase):
self.assertTrue(mocked().domain.get.called)
mocked().domain.get.assert_called_once_with(domain="example.com")
@mock.patch.object(actions.MuranoAction, '_get_client')
def test_murano_action(self, mocked):
mock_ctx = mock.Mock()
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(mock_ctx)
self.assertTrue(mocked().categories.get.called)
mocked().categories.get.assert_called_once_with(
category_id="1234-abcd"
)
@mock.patch.object(actions.TackerAction, '_get_client')
def test_tacker_action(self, mocked):
mock_ctx = mock.Mock()
@ -284,21 +269,6 @@ class OpenStackActionTest(base.BaseTestCase):
vim_id="1234-abcd"
)
@mock.patch.object(actions.SenlinAction, '_get_client')
def test_senlin_action(self, mocked):
mock_ctx = mock.Mock()
action_class = actions.SenlinAction
action_class.client_method_name = "get_cluster"
action = action_class(cluster_id='1234-abcd')
action.run(mock_ctx)
self.assertTrue(mocked().get_cluster.called)
mocked().get_cluster.assert_called_once_with(
cluster_id="1234-abcd"
)
@mock.patch.object(actions.AodhAction, '_get_client')
def test_aodh_action(self, mocked):
mock_ctx = mock.Mock()

View File

@ -0,0 +1,5 @@
---
upgrade:
- |
Support for Murano and Senlin was removed, because these two projects were
retired.

View File

@ -2,10 +2,6 @@
# date but we do not test them so no guarantee of having them all correct. If
# you find any incorrect lower bounds, let us know or propose a fix.
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
pbr!=2.1.0,>=2.0.0 # Apache-2.0
Babel!=2.4.0,>=2.3.4 # BSD
oslo.log>=3.36.0 # Apache-2.0
@ -22,10 +18,8 @@ python-keystoneclient>=3.8.0 # Apache-2.0
python-mistralclient!=3.2.0,>=3.1.0 # Apache-2.0
python-manilaclient>=1.23.0 # Apache-2.0
python-magnumclient>=2.15.0 # Apache-2.0
python-muranoclient>=1.3.0 # Apache-2.0
python-neutronclient>=6.7.0 # Apache-2.0
python-novaclient>=9.1.0 # Apache-2.0
python-senlinclient>=1.11.0 # Apache-2.0
python-swiftclient>=3.2.0 # Apache-2.0
python-tackerclient>=0.8.0 # Apache-2.0
python-troveclient>=2.2.0 # Apache-2.0

View File

@ -1,12 +1,7 @@
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
hacking>=3.0.1 # Apache-2.0
coverage>=6.4.3 # Apache-2.0
doc8>=0.6.0 # Apache-2.0
oslotest>=3.2.0 # Apache-2.0
stestr>=2.0.0 # Apache-2.0
unittest2>=1.1.0 # BSD
requests-mock>=1.2.0 # Apache-2.0
fixtures>=3.0.0 # Apache-2.0/BSD

View File

@ -52,8 +52,6 @@ from manilaclient import base as manila_base
from manilaclient.v2 import client as manilaclient
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
@ -103,7 +101,6 @@ BASE_IRONIC_MANAGER = ironic_base.Manager
BASE_BARBICAN_MANAGER = barbican_base.BaseEntityManager
BASE_MANILA_MANAGER = manila_base.Manager
BASE_MAGNUM_MANAGER = magnum_base.Manager
BASE_MURANO_MANAGER = murano_base.Manager
BASE_AODH_MANAGER = aodh_base.Manager
BASE_GNOCCHI_MANAGER = gnocchi_base.Manager
@ -206,10 +203,6 @@ def get_magnum_client(**kwargs):
return magnumclient.Client()
def get_murano_client(**kwargs):
return muranoclient.Client('')
def get_aodh_client(**kwargs):
return aodhclient.Client('')
@ -237,7 +230,6 @@ CLIENTS = {
'mistral': get_mistral_client,
'designate': get_designate_client,
'magnum': get_magnum_client,
'murano': get_murano_client,
'aodh': get_aodh_client,
'gnocchi': get_gnocchi_client,
'manila': get_manila_client,
@ -258,7 +250,6 @@ BASE_MANAGERS = {
'mistral': BASE_MISTRAL_MANAGER,
'designate': None,
'magnum': BASE_MAGNUM_MANAGER,
'murano': BASE_MURANO_MANAGER,
'aodh': BASE_AODH_MANAGER,
'gnocchi': BASE_GNOCCHI_MANAGER,
'manila': BASE_MANILA_MANAGER,