diff options
author | Bo Tran <botv@vccloud.vn> | 2022-06-08 15:44:05 +0700 |
---|---|---|
committer | Bo Tran <ministry.96.nd@gmail.com> | 2022-07-12 16:59:11 +0700 |
commit | 7fbed57c4ef9cbcbdb4df78e37a1f0b2a29a4120 (patch) | |
tree | 257ee347c2c2be3422d0c0567f319688627e0819 | |
parent | b36d0b23a2ec66f50ddd5b0e8fdcdd888d19994a (diff) | |
download | trove-7fbed57c4ef9cbcbdb4df78e37a1f0b2a29a4120.tar.gz |
Fix error when list database instances
When list database instances, you can't because
we doing return with wrong self.addresses in db_info
Story: #2010077
Task: #45568
Change-Id: I3275f605e03e6c74b744b29178de380ed2521425
-rw-r--r-- | trove/instance/models.py | 15 | ||||
-rw-r--r-- | trove/tests/fakes/dns.py | 7 | ||||
-rw-r--r-- | trove/tests/fakes/nova.py | 8 | ||||
-rw-r--r-- | trove/tests/unittests/cluster/test_cluster_views.py | 8 | ||||
-rw-r--r-- | trove/tests/unittests/instance/test_instance_models.py | 26 | ||||
-rw-r--r-- | trove/tests/unittests/instance/test_instance_views.py | 28 |
6 files changed, 54 insertions, 38 deletions
diff --git a/trove/instance/models.py b/trove/instance/models.py index 3e2d9854..28570445 100644 --- a/trove/instance/models.py +++ b/trove/instance/models.py @@ -266,14 +266,13 @@ class SimpleInstance(object): return None IPs = [] - for address_list in self.addresses.values(): - for addr_info in address_list: - if CONF.ip_regex and CONF.black_list_regex: - if not ip_visible(addr_info['addr'], CONF.ip_regex, - CONF.black_list_regex): - continue - - IPs.append(addr_info['addr']) + for address in self.addresses: + if CONF.ip_regex and CONF.black_list_regex: + if not ip_visible(address['address'], CONF.ip_regex, + CONF.black_list_regex): + continue + + IPs.append(address) return IPs diff --git a/trove/tests/fakes/dns.py b/trove/tests/fakes/dns.py index d65bbbd8..865ed176 100644 --- a/trove/tests/fakes/dns.py +++ b/trove/tests/fakes/dns.py @@ -78,9 +78,8 @@ class FakeDnsChecker(object): # the ability to return the IP from the API as well as a hostname, # since that lines up to the DnsEntry's content field. ip_addresses = mgmt_instance.server['addresses'] - for network_name, ip_list in ip_addresses.items(): - for ip in ip_list: - if entry.content == ip['addr']: - return + for address in ip_addresses: + if entry.content == address['address']: + return fail("Couldn't find IP address %s among these values: %s" % (entry.content, ip_addresses)) diff --git a/trove/tests/fakes/nova.py b/trove/tests/fakes/nova.py index a0779147..88df4d89 100644 --- a/trove/tests/fakes/nova.py +++ b/trove/tests/fakes/nova.py @@ -17,6 +17,7 @@ import collections import uuid import eventlet + from novaclient import exceptions as nova_exceptions from oslo_log import log as logging @@ -128,7 +129,10 @@ class FakeServer(object): @property def addresses(self): - return {"private": [{"addr": "123.123.123.123"}]} + return [{ + "address": "123.123.123.123", + 'type': 'private', + 'network': 'net-id'}] def confirm_resize(self): if self.status != "VERIFY_RESIZE": @@ -576,7 +580,7 @@ class FakeHost(object): 'status': server.status }) if (str(server.flavor_ref).startswith('http:') or - str(server.flavor_ref).startswith('https:')): + str(server.flavor_ref).startswith('https:')): flavor = FLAVORS.get_by_href(server.flavor_ref) else: flavor = FLAVORS.get(server.flavor_ref) diff --git a/trove/tests/unittests/cluster/test_cluster_views.py b/trove/tests/unittests/cluster/test_cluster_views.py index 9833da96..19fbbc43 100644 --- a/trove/tests/unittests/cluster/test_cluster_views.py +++ b/trove/tests/unittests/cluster/test_cluster_views.py @@ -83,15 +83,15 @@ class ClusterViewTest(trove_testtools.TestCase): cluster.instances.append(Mock()) cluster.instances[0].type = 'configsvr' cluster.instances[0].get_visible_ip_addresses.return_value = [ - {'type': 'private', 'address': '1.2.3.4'}] + {'type': 'private', 'address': '1.2.3.4', 'network': 'net-id'}] cluster.instances[0].datastore_version.manager = 'mongodb' cluster.instances[1].type = 'query_router' cluster.instances[1].get_visible_ip_addresses.return_value = [ - {'type': 'private', 'address': '1.2.3.4'}] + {'type': 'private', 'address': '1.2.3.4', 'network': 'net-id'}] cluster.instances[1].datastore_version.manager = 'mongodb' cluster.instances[2].type = 'member' cluster.instances[2].get_visible_ip_addresses.return_value = [ - {'type': 'private', 'address': '1.2.3.4'}] + {'type': 'private', 'address': '1.2.3.4', 'network': 'net-id'}] cluster.instances[2].datastore_version.manager = 'mongodb' def test_case(ip_to_be_published_for, @@ -128,7 +128,7 @@ class ClusterInstanceDetailViewTest(trove_testtools.TestCase): self.instance.volume_used = '3' self.instance.root_password = 'iloveyou' self.instance.get_visible_ip_addresses.return_value = [ - {'type': 'private', 'address': '1.2.3.4'}] + {'type': 'private', 'address': '1.2.3.4', 'network': 'net-id'}] self.instance.slave_of_id = None self.instance.slaves = None self.context = trove_testtools.TroveTestContext(self) diff --git a/trove/tests/unittests/instance/test_instance_models.py b/trove/tests/unittests/instance/test_instance_models.py index 96ab8726..6283a12c 100644 --- a/trove/tests/unittests/instance/test_instance_models.py +++ b/trove/tests/unittests/instance/test_instance_models.py @@ -11,9 +11,10 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import uuid + from unittest.mock import Mock from unittest.mock import patch -import uuid from trove.backup import models as backup_models from trove.common import cfg @@ -25,9 +26,9 @@ from trove.instance import models from trove.instance.models import DBInstance from trove.instance.models import DBInstanceFault from trove.instance.models import Instance -from trove.instance.models import instance_encryption_key_cache from trove.instance.models import InstanceServiceStatus from trove.instance.models import SimpleInstance +from trove.instance.models import instance_encryption_key_cache from trove.instance.service_status import ServiceStatuses from trove.instance.tasks import InstanceTasks from trove.taskmanager import api as task_api @@ -50,12 +51,17 @@ class SimpleInstanceTest(trove_testtools.TestCase): ServiceStatuses.BUILDING), ds_version=Mock(), ds=Mock(), locality='affinity') self.instance.context = self.context - db_info.addresses = { - 'private': [ - {'version': 4, 'addr': '123.123.123.123'}, - {'version': 4, 'addr': '10.123.123.123'}], - 'public': [ - {'version': 4, 'addr': '15.123.123.123'}]} + db_info.addresses = [{ + 'type': 'private', + 'address': '123.123.123.123', + 'network': 'net-id-private'}, { + 'type': 'private', + 'address': '10.123.123.123', + 'network': 'net-id-private'}, { + 'type': 'public', + 'address': '15.123.123.123', + 'network': 'net-id-public'}] + self.orig_ip_regex = CONF.ip_regex self.orig_black_list_regex = CONF.black_list_regex @@ -78,8 +84,8 @@ class SimpleInstanceTest(trove_testtools.TestCase): CONF.black_list_regex = '^10.123.123.*' ip = self.instance.get_visible_ip_addresses() self.assertEqual(2, len(ip)) - self.assertIn('123.123.123.123', ip) - self.assertIn('15.123.123.123', ip) + self.assertIn('123.123.123.123', ip[0].get('address')) + self.assertIn('15.123.123.123', ip[1].get('address')) def test_filter_ips_black_list(self): CONF.ip_regex = '.*' diff --git a/trove/tests/unittests/instance/test_instance_views.py b/trove/tests/unittests/instance/test_instance_views.py index a05affd5..d47adbe3 100644 --- a/trove/tests/unittests/instance/test_instance_views.py +++ b/trove/tests/unittests/instance/test_instance_views.py @@ -13,12 +13,12 @@ # License for the specific language governing permissions and limitations # under the License. # -from unittest.mock import MagicMock -from unittest.mock import Mock from trove.common import cfg from trove.instance.views import InstanceDetailView from trove.instance.views import InstanceView from trove.tests.unittests import trove_testtools +from unittest.mock import MagicMock +from unittest.mock import Mock CONF = cfg.CONF @@ -27,9 +27,16 @@ class InstanceViewsTest(trove_testtools.TestCase): def setUp(self): super(InstanceViewsTest, self).setUp() - self.addresses = {"private": [{"addr": "123.123.123.123"}], - "internal": [{"addr": "10.123.123.123"}], - "public": [{"addr": "15.123.123.123"}]} + self.addresses = [{ + 'type': 'private', + 'address': '123.123.123.123', + 'network': 'net-id-private'}, { + 'type': 'private', + 'address': '10.123.123.123', + 'network': 'net-id-private'}, { + 'type': 'public', + 'address': '15.123.123.123', + 'network': 'net-id-public'}] self.orig_ip_regex = CONF.ip_regex def tearDown(self): @@ -53,11 +60,12 @@ class InstanceDetailViewTest(trove_testtools.TestCase): self.instance.datastore_version.manager = 'mysql' self.instance.hostname = 'test.trove.com' self.ip = "1.2.3.4" - self.instance.addresses = {"private": [{"addr": self.ip}]} + self.instance.addresses = [ + {"address": self.ip, 'type': 'private', 'network': 'net-id'}] self.instance.volume_used = '3' self.instance.root_password = 'iloveyou' self.instance.get_visible_ip_addresses.return_value = [ - {'type': 'private', 'address': '1.2.3.4'}] + {'type': 'private', 'address': '1.2.3.4', 'network': 'net-id'}] self.instance.slave_of_id = None self.instance.slaves = [] self.instance.locality = 'affinity' @@ -139,7 +147,7 @@ class InstanceDetailViewTest(trove_testtools.TestCase): instance = MagicMock() instance.hostname = None instance.get_visible_ip_addresses.return_value = [ - {'address': '10.111.0.27', 'type': 'private'} + {'address': '10.111.0.27', 'type': 'private', 'network': 'net-id'} ] instance.access = None instance.slaves = [] @@ -150,8 +158,8 @@ class InstanceDetailViewTest(trove_testtools.TestCase): self.assertFalse(data['access']['is_public']) instance.get_visible_ip_addresses.return_value = [ - {'address': '10.111.0.27', 'type': 'private'}, - {'address': '172.30.5.107', 'type': 'public'} + {'address': '10.111.0.27', 'type': 'private', 'network': 'net-id'}, + {'address': '172.30.5.107', 'type': 'public', 'network': 'net-id'} ] view = InstanceDetailView(instance, self.req) |