Merge "Remove global state from the FakeDriver"

This commit is contained in:
Zuul 2019-06-27 17:50:11 +00:00 committed by Gerrit Code Review
commit 50e3e95b57
30 changed files with 27 additions and 161 deletions

View File

@ -1,7 +1,7 @@
{
"hypervisors": [
{
"hypervisor_hostname": "fake-mini",
"hypervisor_hostname": "host2",
"id": "1bb62a04-c576-402c-8147-9e89757a09e3",
"state": "up",
"status": "enabled"

View File

@ -419,6 +419,12 @@ class TestCase(testtools.TestCase):
def start_service(self, name, host=None, **kwargs):
cell = None
# if the host is None then the CONF.host remains defaulted to
# 'fake-mini' (originally done in ConfFixture)
if host is not None:
# Make sure that CONF.host is relevant to the right hostname
self.useFixture(nova_fixtures.ConfPatcher(host=host))
if name == 'compute' and self.USES_DB:
# NOTE(danms): We need to create the HostMapping first, because
# otherwise we'll fail to update the scheduler while running
@ -431,9 +437,6 @@ class TestCase(testtools.TestCase):
cell_mapping=cell)
hm.create()
self.host_mappings[hm.host] = hm
if host is not None:
# Make sure that CONF.host is relevant to the right hostname
self.useFixture(nova_fixtures.ConfPatcher(host=host))
svc = self.useFixture(
nova_fixtures.ServiceFixture(name, host, cell=cell, **kwargs))

View File

@ -1,7 +1,7 @@
{
"hypervisors": [
{
"hypervisor_hostname": "fake-mini",
"hypervisor_hostname": "host2",
"id": "%(hypervisor_id)s",
"state": "up",
"status": "enabled"

View File

@ -16,7 +16,6 @@
import mock
from nova.tests.functional.api_sample_tests import api_sample_base
from nova.virt import fake
class HypervisorsSampleJsonTests(api_sample_base.ApiSampleTestBaseV21):
@ -113,8 +112,6 @@ class HypervisorsSampleJson233Tests(api_sample_base.ApiSampleTestBaseV21):
# Start a new compute service to fake a record with hypervisor id=2
# for pagination test.
host = 'host1'
fake.set_nodes([host])
self.addCleanup(fake.restore_nodes)
self.start_service('compute', host=host)
def test_hypervisors_list(self):
@ -161,8 +158,6 @@ class HypervisorsSampleJson253Tests(HypervisorsSampleJson228Tests):
def test_hypervisors_detail(self):
# Start another compute service to get a 2nd compute for paging tests.
host = 'host2'
fake.set_nodes([host])
self.addCleanup(fake.restore_nodes)
service_2 = self.start_service('compute', host=host).service_ref
compute_node_2 = service_2.compute_node
marker = self.compute_node_1.uuid

View File

@ -20,7 +20,6 @@ from nova import exception
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_notifier
from nova.virt import fake
class FakeCinderError(object):
@ -54,8 +53,6 @@ class LiveMigrationCinderFailure(integrated_helpers._IntegratedTestBase,
# Start a second compte node (the first one was started for us by
# _IntegratedTestBase. set_nodes() is needed to avoid duplicate
# nodenames. See comments in test_bug_1702454.py.
fake.set_nodes(['host2'])
self.addCleanup(fake.restore_nodes)
self.compute2 = self.start_service('compute', host='host2')
# To get the old Cinder flow we need to hack the service version, otherwise

View File

@ -42,7 +42,6 @@ from nova.tests.unit import fake_notifier
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
from nova import utils
from nova.virt import fake
CONF = nova.conf.CONF
@ -450,8 +449,6 @@ class ProviderUsageBaseTestCase(test.TestCase, InstanceHelperMixin):
compute service (defaults to cell1)
:return: the nova compute service object
"""
fake.set_nodes([host])
self.addCleanup(fake.restore_nodes)
compute = self.start_service('compute', host=host, cell=cell_name)
self.computes[host] = compute
return compute

View File

@ -22,7 +22,6 @@ from nova.tests.functional.api import client
from nova.tests.functional.notification_sample_tests \
import notification_sample_base
from nova.tests.unit import fake_notifier
from nova.virt import fake
COMPUTE_VERSION_OLD_ATTACH_FLOW = \
compute_api.CINDER_V3_ATTACH_MIN_COMPUTE_VERSION - 1
@ -51,8 +50,6 @@ class TestInstanceNotificationSampleWithMultipleCompute(
self._wait_for_notification('instance.create.end')
self._attach_volume_to_server(server, self.cinder.SWAP_OLD_VOL)
# server will boot on the 'compute' host
fake.set_nodes(['host2'])
self.addCleanup(fake.restore_nodes)
self.compute2 = self.start_service('compute', host='host2')
actions = [

View File

@ -13,7 +13,6 @@
from nova import context
from nova import objects
from nova.tests.functional import integrated_helpers
from nova.virt import fake
class ResizeEvacuateTestCase(integrated_helpers._IntegratedTestBase,
@ -47,8 +46,6 @@ class ResizeEvacuateTestCase(integrated_helpers._IntegratedTestBase,
self._wait_for_state_change(self.api, server, 'ACTIVE')
# Start up another compute service so we can resize.
fake.set_nodes(['host2'])
self.addCleanup(fake.restore_nodes)
host2 = self.start_service('compute', host='host2')
# Now resize the server to move it to host2.

View File

@ -23,7 +23,6 @@ from nova.tests.unit import cast_as_call
from nova.tests.unit import fake_network
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class TestRetryBetweenComputeNodeBuilds(test.TestCase):
@ -66,16 +65,7 @@ class TestRetryBetweenComputeNodeBuilds(test.TestCase):
# We start two compute services because we're going to fake one
# of them to fail the build so we can trigger the retry code.
# set_nodes() is needed to have each compute service return a
# different nodename, so we get two hosts in the list of candidates
# for scheduling. Otherwise both hosts will have the same default
# nodename "fake-mini". The host passed to start_service controls the
# "host" attribute and set_nodes() sets the "nodename" attribute.
# We set_nodes() to make host and nodename the same for each compute.
fake.set_nodes(['host1'])
self.addCleanup(fake.restore_nodes)
self.start_service('compute', host='host1')
fake.set_nodes(['host2'])
self.start_service('compute', host='host2')
self.scheduler_service = self.start_service('scheduler')

View File

@ -18,7 +18,6 @@ from nova.tests.functional import integrated_helpers
from nova.tests.unit import cast_as_call
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class HostNameWeigher(weights.BaseHostWeigher):
@ -96,18 +95,8 @@ class SchedulerOnlyChecksTargetTest(test.TestCase,
self.start_service('scheduler')
# Let's now start three compute nodes as we said above.
# set_nodes() is needed to have each compute service return a
# different nodename, so we get two hosts in the list of candidates
# for scheduling. Otherwise both hosts will have the same default
# nodename "fake-mini". The host passed to start_service controls the
# "host" attribute and set_nodes() sets the "nodename" attribute.
# We set_nodes() to make host and nodename the same for each compute.
fake.set_nodes(['host1'])
self.addCleanup(fake.restore_nodes)
self.start_service('compute', host='host1')
fake.set_nodes(['host2'])
self.start_service('compute', host='host2')
fake.set_nodes(['host3'])
self.start_service('compute', host='host3')
self.useFixture(cast_as_call.CastAsCall(self))

View File

@ -19,7 +19,6 @@ from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_network
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class TestLiveMigrateOneOfConcurrentlyCreatedInstances(
@ -61,16 +60,7 @@ class TestLiveMigrateOneOfConcurrentlyCreatedInstances(
self.start_service('conductor')
self.start_service('scheduler')
# set_nodes() is needed to have each compute service return a
# different nodename, so we get two hosts in the list of candidates
# for scheduling. Otherwise both hosts will have the same default
# nodename "fake-mini". The host passed to start_service controls the
# "host" attribute and set_nodes() sets the "nodename" attribute.
# We set_nodes() to make host and nodename the same for each compute.
fake.set_nodes(['host1'])
self.addCleanup(fake.restore_nodes)
self.start_service('compute', host='host1')
fake.set_nodes(['host2'])
self.start_service('compute', host='host2')
fake_network.set_stub_network_methods(self)

View File

@ -20,7 +20,6 @@ from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class HostNameWeigher(weights.BaseHostWeigher):
@ -82,9 +81,7 @@ class TestRequestSpecRetryReschedule(test.TestCase,
self.start_service('scheduler')
# Let's now start three compute nodes as we said above.
self.addCleanup(fake.restore_nodes)
for host in ['host1', 'host2', 'host3']:
fake.set_nodes([host])
self.start_service('compute', host=host)
def _stub_resize_failure(self, failed_host):

View File

@ -18,7 +18,6 @@ from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_network
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class TestRescheduleWithServerGroup(test.TestCase,
@ -65,10 +64,7 @@ class TestRescheduleWithServerGroup(test.TestCase,
# We start two compute services because we're going to fake one raising
# RescheduledException to trigger a retry to the other compute host.
fake.set_nodes(['host1'])
self.addCleanup(fake.restore_nodes)
self.start_service('compute', host='host1')
fake.set_nodes(['host2'])
self.start_service('compute', host='host2')
self.image_id = self.api.get_images()[0]['id']

View File

@ -18,7 +18,6 @@ from nova.tests.unit import fake_network
from nova.tests.unit import fake_notifier
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class TestParallelEvacuationWithServerGroup(
@ -61,10 +60,7 @@ class TestParallelEvacuationWithServerGroup(
# We start two compute services because we need two instances with
# anti-affinity server group policy to be booted
fake.set_nodes(['host1'])
self.addCleanup(fake.restore_nodes)
self.compute1 = self.start_service('compute', host='host1')
fake.set_nodes(['host2'])
self.compute2 = self.start_service('compute', host='host2')
self.image_id = self.api.get_images()[0]['id']
@ -124,7 +120,6 @@ class TestParallelEvacuationWithServerGroup(
self.api.force_down_service('host2', 'nova-compute', True)
# start a third compute to have place for one of the instances
fake.set_nodes(['host3'])
self.compute3 = self.start_service('compute', host='host3')
# evacuate both instances

View File

@ -16,7 +16,6 @@ from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class TestResizeWithNoAllocationScheduler(
@ -63,9 +62,7 @@ class TestResizeWithNoAllocationScheduler(
self.start_service('conductor')
# Create two compute nodes/services.
self.addCleanup(fake.restore_nodes)
for host in ('host1', 'host2'):
fake.set_nodes([host])
self.start_service('compute', host=host)
scheduler_service = self.start_service('scheduler')

View File

@ -18,7 +18,6 @@ from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as image_fakes
from nova.tests.unit import policy_fixture
from nova import utils
from nova.virt import fake
CONF = config.CONF
@ -67,9 +66,7 @@ class TestBootFromVolumeIsolatedHostsFilter(
# Create two compute nodes/services so we can restrict the image
# we'll use to one of the hosts.
self.addCleanup(fake.restore_nodes)
for host in ('host1', 'host2'):
fake.set_nodes([host])
self.start_service('compute', host=host)
def test_boot_from_volume_with_isolated_image(self):

View File

@ -19,7 +19,6 @@ from nova.tests.unit import fake_network
from nova.tests.unit import fake_notifier
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class TestEvacuationWithSourceReturningDuringRebuild(
@ -63,11 +62,8 @@ class TestEvacuationWithSourceReturningDuringRebuild(
# Start two computes
self.computes = {}
fake.set_nodes(['host1'])
self.addCleanup(fake.restore_nodes)
self.computes['host1'] = self.start_service('compute', host='host1')
fake.set_nodes(['host2'])
self.computes['host2'] = self.start_service('compute', host='host2')
self.image_id = self.api.get_images()[0]['id']

View File

@ -18,7 +18,6 @@ from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class HostNameWeigher(weights.BaseHostWeigher):
@ -77,10 +76,7 @@ class AntiAffinityMultiCreateRequest(test.TestCase,
group='workarounds')
self.start_service('scheduler')
fake.set_nodes(['host1'])
self.addCleanup(fake.restore_nodes)
self.start_service('compute', host='host1')
fake.set_nodes(['host2'])
self.start_service('compute', host='host2')
def test_anti_affinity_multi_create(self):

View File

@ -17,7 +17,6 @@ from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_network
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class TestRescheduleWithVolumesAttached(
@ -55,11 +54,8 @@ class TestRescheduleWithVolumesAttached(
self.start_service('scheduler')
# Start two computes to allow the instance to be rescheduled
fake.set_nodes(['host1'])
self.addCleanup(fake.restore_nodes)
self.host1 = self.start_service('compute', host='host1')
fake.set_nodes(['host2'])
self.host2 = self.start_service('compute', host='host2')
self.image_id = self.api.get_images()[0]['id']

View File

@ -16,7 +16,6 @@ from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class ColdMigrateTargetHostThenLiveMigrateTest(
@ -60,9 +59,7 @@ class ColdMigrateTargetHostThenLiveMigrateTest(
self.start_service('conductor')
self.start_service('scheduler')
self.addCleanup(fake.restore_nodes)
for host in ('host1', 'host2'):
fake.set_nodes([host])
self.start_service('compute', host=host)
def test_cold_migrate_target_host_then_live_migrate(self):

View File

@ -23,7 +23,6 @@ from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
from nova.virt import fake
class NonPersistentFieldNotResetTest(
@ -69,9 +68,7 @@ class NonPersistentFieldNotResetTest(
self.compute = {}
self.addCleanup(fake.restore_nodes)
for host in ('host1', 'host2', 'host3'):
fake.set_nodes([host])
compute_service = self.start_service('compute', host=host)
self.compute.update({host: compute_service})

View File

@ -21,7 +21,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.virt import fake as fake_virt
class HostNameWeigher(weights.BaseHostWeigher):
@ -79,10 +78,8 @@ class MissingReqSpecInstanceGroupUUIDTestCase(
self.start_service('scheduler')
# Start two computes, one where the server will be created and another
# where we'll cold migrate it.
self.addCleanup(fake_virt.restore_nodes)
self.computes = {} # keep track of the compute services per host name
for host in ('host1', 'host2'):
fake_virt.set_nodes([host])
compute_service = self.start_service('compute', host=host)
self.computes[host] = compute_service

View File

@ -27,7 +27,6 @@ from nova.tests.functional import integrated_helpers
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
from nova import utils
from nova.virt import fake
CONF = nova.conf.CONF
@ -117,8 +116,6 @@ class AggregateRequestFiltersTest(test.TestCase,
compute service.
:return: the nova compute service object
"""
fake.set_nodes([host])
self.addCleanup(fake.restore_nodes)
compute = self.start_service('compute', host=host)
self.computes[host] = compute
return compute
@ -472,8 +469,6 @@ class TestAggregateMultiTenancyIsolationFilter(
test.TestCase, integrated_helpers.InstanceHelperMixin):
def _start_compute(self, host):
fake.set_nodes([host])
self.addCleanup(fake.restore_nodes)
self.start_service('compute', host=host)
def setUp(self):

View File

@ -18,7 +18,6 @@ from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
from nova.virt import fake
class TestAvailabilityZoneScheduling(
@ -53,8 +52,6 @@ class TestAvailabilityZoneScheduling(
def _start_host_in_zone(self, host, zone):
# Start the nova-compute service.
fake.set_nodes([host])
self.addCleanup(fake.restore_nodes)
self.start_service('compute', host=host)
# Create a host aggregate with a zone in which to put this host.
aggregate_body = {

View File

@ -144,14 +144,9 @@ class ServerGroupTestV21(ServerGroupTestBase):
# tree.
self.stub_out('nova.virt.driver.load_compute_driver',
_fake_load_compute_driver)
fake.set_nodes(['compute'])
self.addCleanup(fake.restore_nodes)
self.compute = self.start_service('compute', host='compute')
# NOTE(gibi): start a second compute host to be able to test affinity
# NOTE(sbauza): Make sure the FakeDriver returns a different nodename
# for the second compute node.
fake.set_nodes(['host2'])
self.compute2 = self.start_service('compute', host='host2')
def test_get_no_groups(self):
@ -371,7 +366,6 @@ class ServerGroupTestV21(ServerGroupTestBase):
def test_migrate_with_anti_affinity(self):
# Start additional host to test migration with anti-affinity
fake.set_nodes(['host3'])
self.start_service('compute', host='host3')
created_group = self.api.post_server_groups(self.anti_affinity)
@ -426,7 +420,6 @@ class ServerGroupTestV21(ServerGroupTestBase):
time.sleep(self._service_down_time)
# Start additional host to test evacuation
fake.set_nodes(['host3'])
self.start_service('compute', host='host3')
post = {'evacuate': {'onSharedStorage': False}}
@ -623,7 +616,6 @@ class ServerGroupTestV215(ServerGroupTestV21):
time.sleep(self._service_down_time)
# Start additional host to test evacuation
fake.set_nodes(['host3'])
compute3 = self.start_service('compute', host='host3')
post = {'evacuate': {}}
@ -906,11 +898,8 @@ class ServerGroupTestMultiCell(ServerGroupTestBase):
def setUp(self):
super(ServerGroupTestMultiCell, self).setUp()
# Start two compute services, one per cell
fake.set_nodes(['host1'])
self.addCleanup(fake.restore_nodes)
self.compute1 = self.start_service('compute', host='host1',
cell='cell1')
fake.set_nodes(['host2'])
self.compute2 = self.start_service('compute', host='host2',
cell='cell2')
# This is needed to find a server that is still booting with multiple
@ -994,9 +983,7 @@ class TestAntiAffinityLiveMigration(test.TestCase,
# Start conductor, scheduler and two computes.
self.start_service('conductor')
self.start_service('scheduler')
self.addCleanup(fake.restore_nodes)
for host in ('host1', 'host2'):
fake.set_nodes([host])
self.start_service('compute', host=host)
def test_serial_no_valid_host_then_pass_with_third_host(self):
@ -1058,7 +1045,6 @@ class TestAntiAffinityLiveMigration(test.TestCase,
# Now start up a 3rd compute service and retry the live migration which
# should work this time.
fake.set_nodes(['host3'])
self.start_service('compute', host='host3')
self.admin_api.post_server_action(server['id'], body)
server = self._wait_for_state_change(self.admin_api, server, 'ACTIVE')

View File

@ -214,9 +214,6 @@ class ServersTest(ServersTestBase):
def _test_create_server_with_error_with_retries(self):
# Create a server which will enter error state.
fake.set_nodes(['host2'])
self.addCleanup(fake.restore_nodes)
self.flags(host='host2')
self.compute2 = self.start_service('compute', host='host2')
self.computes['compute2'] = self.compute2
@ -1509,9 +1506,6 @@ class ServerRebuildTestCase(integrated_helpers._IntegratedTestBase,
default so that should filter out the host based on the image meta.
"""
fake.set_nodes(['host2'])
self.addCleanup(fake.restore_nodes)
self.flags(host='host2')
self.compute2 = self.start_service('compute', host='host2')
# We hard-code from a fake image since we can't get images
@ -4401,9 +4395,7 @@ class ServerTestV256Common(ServersTestBase):
def _setup_compute_service(self):
# Set up 3 compute services in the same cell
self.addCleanup(fake.restore_nodes)
for host in ('host1', 'host2', 'host3'):
fake.set_nodes([host])
self.start_service('compute', host=host)
def _create_server(self, target_host=None):
@ -4435,9 +4427,7 @@ class ServerTestV256MultiCellTestCase(ServerTestV256Common):
host_to_cell_mappings = {
'host1': 'cell1',
'host2': 'cell2'}
self.addCleanup(fake.restore_nodes)
for host in sorted(host_to_cell_mappings):
fake.set_nodes([host])
self.start_service('compute', host=host,
cell=host_to_cell_mappings[host])

View File

@ -153,12 +153,15 @@ class BaseTestCase(test.TestCase):
def setUp(self):
super(BaseTestCase, self).setUp()
self.flags(network_manager='nova.network.manager.FlatManager')
fake.set_nodes([NODENAME, NODENAME2])
fake_notifier.stub_notifier(self)
self.addCleanup(fake_notifier.reset)
self.compute = compute_manager.ComputeManager()
# NOTE(gibi): this is a hack to make the fake virt driver use the nodes
# needed for these tests.
self.compute.driver._set_nodes([NODENAME, NODENAME2])
# execute power syncing synchronously for testing:
self.compute._sync_power_pool = eventlet_utils.SyncPool()
@ -275,7 +278,6 @@ class BaseTestCase(test.TestCase):
instances = db.instance_get_all(ctxt)
for instance in instances:
db.instance_destroy(ctxt, instance['uuid'])
fake.restore_nodes()
super(BaseTestCase, self).tearDown()
def _fake_instance(self, updates):

View File

@ -8886,7 +8886,7 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase,
"""
instance = fake_instance.fake_instance_obj(
self.context, host=self.compute.host, vm_state=vm_states.STOPPED,
expected_attrs=['system_metadata', 'flavor'])
node='fake-node', expected_attrs=['system_metadata', 'flavor'])
migration = mock.MagicMock(spec='nova.objects.Migration')
request_spec = mock.MagicMock(spec='nova.objects.RequestSpec')
ex = exception.InstanceFaultRollback(

View File

@ -859,8 +859,8 @@ class AbstractDriverTestCase(_VirtDriverTestCase, test.TestCase):
class FakeConnectionTestCase(_VirtDriverTestCase, test.TestCase):
def setUp(self):
self.driver_module = 'nova.virt.fake.FakeDriver'
fake.set_nodes(['myhostname'])
super(FakeConnectionTestCase, self).setUp()
self.connection.init_host('myhostname')
def _check_available_resource_fields(self, host_status):
super(FakeConnectionTestCase, self)._check_available_resource_fields(

View File

@ -25,7 +25,6 @@ semantics of real hypervisor connections.
import collections
import contextlib
import copy
import time
import fixtures
@ -52,31 +51,6 @@ CONF = nova.conf.CONF
LOG = logging.getLogger(__name__)
_FAKE_NODES = None
def set_nodes(nodes):
"""Sets FakeDriver's node.list.
It has effect on the following methods:
get_available_nodes()
get_available_resource
To restore the change, call restore_nodes()
"""
global _FAKE_NODES
_FAKE_NODES = nodes
def restore_nodes():
"""Resets FakeDriver's node list modified by set_nodes().
Usually called from tearDown().
"""
global _FAKE_NODES
_FAKE_NODES = [CONF.host]
class FakeInstance(object):
def __init__(self, name, state, uuid):
@ -171,15 +145,21 @@ class FakeDriver(driver.ComputeDriver):
self._mounts = {}
self._interfaces = {}
self.active_migrations = {}
self._nodes = self._init_nodes()
def _init_nodes(self):
if not _FAKE_NODES:
set_nodes([CONF.host])
return copy.copy(_FAKE_NODES)
self._host = None
self._nodes = None
def init_host(self, host):
return
self._host = host
# NOTE(gibi): this is unnecessary complex and fragile but this is
# how many current functional sample tests expect the node name.
self._nodes = (['fake-mini'] if self._host == 'compute'
else [self._host])
def _set_nodes(self, nodes):
# NOTE(gibi): this is not part of the driver interface but used
# by our tests to customize the discovered nodes by the fake
# driver.
self._nodes = nodes
def list_instances(self):
return [self.instances[uuid].name for uuid in self.instances.keys()]