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.
Closes-Bug: #1759792
Change-Id: I6e940518c6ec27c02c714db6c124eb88c72214ab
(cherry picked from commit 6a06fd28c2
)
This commit is contained in:
parent
fdc3d22ea7
commit
ab6f78b33b
|
@ -409,6 +409,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
|
||||
|
@ -424,7 +425,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