Merge "Remove network dependency of server resource" into stable/pike

This commit is contained in:
Jenkins 2017-09-03 08:15:24 +00:00 committed by Gerrit Code Review
commit 2dba4bd544
3 changed files with 5 additions and 49 deletions

View File

@ -39,8 +39,7 @@ class NetworkProtectablePlugin(protectable_plugin.ProtectablePlugin):
return self._SUPPORT_RESOURCE_TYPE
def get_parent_resource_types(self):
return (constants.SERVER_RESOURCE_TYPE,
constants.PROJECT_RESOURCE_TYPE)
return (constants.PROJECT_RESOURCE_TYPE)
def _get_network_id(self):
"""Set network_id as project_id
@ -91,40 +90,6 @@ class NetworkProtectablePlugin(protectable_plugin.ProtectablePlugin):
name="Network Topology")
return None
def _get_dependent_resources_by_server(self,
context,
parent_resource):
try:
# get metadata about network from neutron
net_client = self._neutron_client(context)
network_infos = net_client.list_networks().get('networks')
neutron_networks = {network["id"] for network in network_infos}
# get interface info from server
nova_networks = set()
serverid = parent_resource.id
nova_client = ClientFactory.create_client("nova", context)
interface_list = nova_client.servers.interface_list(serverid)
# check net_id in interface
for iface in interface_list:
net_id = iface.net_id
if net_id not in nova_networks:
nova_networks.add(net_id)
# get the exsited networks
valid_networks = nova_networks.intersection(neutron_networks)
if valid_networks:
return [resource.Resource(type=self._SUPPORT_RESOURCE_TYPE,
id=self._get_network_id(),
name="Network Topology")]
return []
except Exception as e:
LOG.exception("List all interfaces from nova failed.")
raise exception.ListProtectableResourceFailed(
type=self._SUPPORT_RESOURCE_TYPE,
reason=six.text_type(e))
def _get_dependent_resources_by_project(self,
context,
parent_resource):
@ -148,12 +113,5 @@ class NetworkProtectablePlugin(protectable_plugin.ProtectablePlugin):
reason=six.text_type(e))
def get_dependent_resources(self, context, parent_resource):
if parent_resource.type == constants.SERVER_RESOURCE_TYPE:
return self._get_dependent_resources_by_server(context,
parent_resource)
if parent_resource.type == constants.PROJECT_RESOURCE_TYPE:
return self._get_dependent_resources_by_project(context,
parent_resource)
return []
return self._get_dependent_resources_by_project(
context, parent_resource)

View File

@ -111,8 +111,7 @@ class NetworkProtectablePluginTest(base.TestCase):
def test_get_parent_resource_type(self):
plugin = NetworkProtectablePlugin(self._context)
self.assertItemsEqual(plugin.get_parent_resource_types(),
(constants.SERVER_RESOURCE_TYPE,
constants.PROJECT_RESOURCE_TYPE))
(constants.PROJECT_RESOURCE_TYPE))
@mock.patch.object(client.Client, 'list_networks')
def test_list_resources(self, mock_client_list_networks):

View File

@ -66,8 +66,7 @@ class ProtectionServiceTest(base.TestCase):
result = self.pro_manager.show_protectable_type(None,
"OS::Nova::Server")
self.assertEqual("OS::Nova::Server", result["name"])
self.assertEqual({"OS::Cinder::Volume", "OS::Glance::Image",
"OS::Neutron::Network"},
self.assertEqual({"OS::Cinder::Volume", "OS::Glance::Image"},
set(result["dependent_types"]))
@mock.patch.object(protectable_registry.ProtectableRegistry,