Fix the request context in ServiceFixture
Multiple cells are not considered in ServiceFixture. So all compute nodes are registered to only one cell (cell1) database regardless of their cells. So change the ServiceFixture to use a request context for the cell where the service runs. Change-Id: I6e940518c6ec27c02c714db6c124eb88c72214ab Closes-Bug: #1759792
This commit is contained in:
parent
07d982aa1c
commit
db7f763342
@ -407,6 +407,7 @@ class TestCase(testtools.TestCase):
|
||||
CONF.set_override(k, v, group)
|
||||
|
||||
def start_service(self, name, host=None, **kwargs):
|
||||
cell = None
|
||||
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
|
||||
@ -422,7 +423,7 @@ class TestCase(testtools.TestCase):
|
||||
# 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, **kwargs))
|
||||
nova_fixtures.ServiceFixture(name, host, cell=cell, **kwargs))
|
||||
|
||||
return svc.service
|
||||
|
||||
|
@ -65,7 +65,7 @@ SESSION_CONFIGURED = False
|
||||
class ServiceFixture(fixtures.Fixture):
|
||||
"""Run a service as a test fixture."""
|
||||
|
||||
def __init__(self, name, host=None, **kwargs):
|
||||
def __init__(self, name, host=None, cell=None, **kwargs):
|
||||
name = name
|
||||
# If not otherwise specified, the host will default to the
|
||||
# name of the service. Some things like aggregates care that
|
||||
@ -73,12 +73,18 @@ class ServiceFixture(fixtures.Fixture):
|
||||
host = host or name
|
||||
kwargs.setdefault('host', host)
|
||||
kwargs.setdefault('binary', 'nova-%s' % name)
|
||||
self.cell = cell
|
||||
self.kwargs = kwargs
|
||||
|
||||
def setUp(self):
|
||||
super(ServiceFixture, self).setUp()
|
||||
self.service = service.Service.create(**self.kwargs)
|
||||
self.service.start()
|
||||
self.ctxt = context.get_admin_context()
|
||||
if self.cell:
|
||||
context.set_target_cell(self.ctxt, self.cell)
|
||||
with mock.patch('nova.context.get_admin_context',
|
||||
return_value=self.ctxt):
|
||||
self.service = service.Service.create(**self.kwargs)
|
||||
self.service.start()
|
||||
self.addCleanup(self.service.kill)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user