Merge "Fix gnocchi create resource error when missing flavor"

This commit is contained in:
Zuul 2021-02-11 21:10:48 +00:00 committed by Gerrit Code Review
commit 52f198390e
2 changed files with 31 additions and 2 deletions

View File

@ -128,9 +128,10 @@ class InstanceDiscovery(plugin_base.DiscoveryBase):
@cachetools.cachedmethod(operator.attrgetter('_flavor_cache'))
def get_flavor_id(self, name):
try:
return self.nova_cli.nova_client.flavors.find(name=name).id
return self.nova_cli.nova_client.flavors.find(
name=name, is_public=None).id
except exceptions.NotFound:
return None
return name
@libvirt_utils.retry_on_disconnect
def discover_libvirt_polling(self, manager, param=None):

View File

@ -17,6 +17,8 @@ from unittest import mock
import fixtures
import testtools
from novaclient import exceptions
try:
import libvirt
except ImportError:
@ -297,3 +299,29 @@ class TestDiscovery(base.BaseTestCase):
dsc = discovery.InstanceDiscovery(self.CONF)
resources = dsc.discover(mock.MagicMock())
self.assertEqual(0, len(resources))
def test_get_flavor_id(self):
self.CONF.set_override("instance_discovery_method",
"libvirt_metadata",
group="compute")
self.client.nova_client = mock.MagicMock()
self.client.nova_client.flavors = mock.MagicMock()
fake_flavor = mock.MagicMock()
fake_flavor.id = 'fake_id'
self.client.nova_client.flavors.find = mock.MagicMock(
return_value=fake_flavor)
dsc = discovery.InstanceDiscovery(self.CONF)
flavor_name = 'fake_name'
ret_flavor_id = dsc.get_flavor_id(flavor_name)
self.assertEqual('fake_id', ret_flavor_id)
# test raise NotFound exception
self.client.nova_client.flavors.find = mock.MagicMock(
side_effect=exceptions.NotFound(404))
dsc = discovery.InstanceDiscovery(self.CONF)
ret_flavor_id = dsc.get_flavor_id(flavor_name)
self.assertEqual(flavor_name, ret_flavor_id)