tests: Make '_IntegratedTestBase' subclass 'PlacementInstanceHelperMixin'
Querying placement is an increasingly common requirement of good functional tests. Add the placement helper mixin into our uberclass so as many tests as possible can benefit from it. Change-Id: I969eb724b12114fde5660b855f359b40c23ccfec Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
parent
58ecd338c1
commit
c60f90cb2f
|
@ -470,6 +470,11 @@ class PlacementHelperMixin:
|
|||
'/resource_providers/%s' % rp_uuid, version='1.15',
|
||||
).body
|
||||
|
||||
def _get_provider_uuid_by_name(self, name):
|
||||
return self.placement_api.get(
|
||||
'/resource_providers?name=%s' % name,
|
||||
).body['resource_providers'][0]['uuid']
|
||||
|
||||
def _get_provider_usages(self, provider_uuid):
|
||||
return self.placement_api.get(
|
||||
'/resource_providers/%s/usages' % provider_uuid
|
||||
|
@ -955,7 +960,7 @@ class PlacementInstanceHelperMixin(InstanceHelperMixin, PlacementHelperMixin):
|
|||
self.assertEqual(expected_vcpu_usage, hypervisor['vcpus_used'])
|
||||
|
||||
|
||||
class _IntegratedTestBase(test.TestCase, InstanceHelperMixin):
|
||||
class _IntegratedTestBase(test.TestCase, PlacementInstanceHelperMixin):
|
||||
#: Whether the test requires global external locking being configured for
|
||||
#: them. New tests should set this to False.
|
||||
REQUIRES_LOCKING = True
|
||||
|
@ -988,8 +993,10 @@ class _IntegratedTestBase(test.TestCase, InstanceHelperMixin):
|
|||
nova.tests.unit.image.fake.stub_out_image_service(self)
|
||||
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
placement = self.useFixture(func_fixtures.PlacementFixture())
|
||||
self.placement_api = placement.api
|
||||
|
||||
self.neutron = self.useFixture(nova_fixtures.NeutronFixture(self))
|
||||
|
||||
fake_notifier.stub_notifier(self)
|
||||
|
@ -1051,52 +1058,9 @@ class _IntegratedTestBase(test.TestCase, InstanceHelperMixin):
|
|||
("The expected wsgi middlewares %s are not "
|
||||
"existed") % expected_middleware)
|
||||
|
||||
# TODO(sbauza): Drop this method once test classes inherit from a mixin
|
||||
def _get_provider_uuid_by_name(self, name):
|
||||
return self.placement_api.get(
|
||||
'/resource_providers?name=%s' % name).body[
|
||||
'resource_providers'][0]['uuid']
|
||||
|
||||
# TODO(sbauza): Drop this method once test classes inherit from a mixin
|
||||
def _get_all_rp_uuids_in_a_tree(self, in_tree_rp_uuid):
|
||||
rps = self.placement_api.get(
|
||||
'/resource_providers?in_tree=%s' % in_tree_rp_uuid,
|
||||
version='1.20').body['resource_providers']
|
||||
return [rp['uuid'] for rp in rps]
|
||||
|
||||
# TODO(sbauza): Drop this method once test classes inherit from a mixin
|
||||
def _get_provider_inventory(self, rp_uuid):
|
||||
return self.placement_api.get(
|
||||
'/resource_providers/%s/inventories' % rp_uuid).body['inventories']
|
||||
|
||||
# TODO(sbauza): Drop this method once test classes inherit from a mixin
|
||||
def _get_provider_usages(self, provider_uuid):
|
||||
return self.placement_api.get(
|
||||
'/resource_providers/%s/usages' % provider_uuid).body['usages']
|
||||
|
||||
# TODO(sbauza): Drop this method once test classes inherit from a mixin
|
||||
def _create_trait(self, trait):
|
||||
return self.placement_api.put('/traits/%s' % trait, {}, version='1.6')
|
||||
|
||||
# TODO(sbauza): Drop this method once test classes inherit from a mixin
|
||||
def _set_provider_traits(self, rp_uuid, traits):
|
||||
"""This will overwrite any existing traits.
|
||||
|
||||
:param rp_uuid: UUID of the resource provider to update
|
||||
:param traits: list of trait strings to set on the provider
|
||||
:returns: APIResponse object with the results
|
||||
"""
|
||||
provider = self.placement_api.get(
|
||||
'/resource_providers/%s' % rp_uuid).body
|
||||
put_traits_req = {
|
||||
'resource_provider_generation': provider['generation'],
|
||||
'traits': traits
|
||||
}
|
||||
return self.placement_api.put(
|
||||
'/resource_providers/%s/traits' % rp_uuid,
|
||||
put_traits_req, version='1.6')
|
||||
|
||||
|
||||
# TODO(stephenfin): This is almost identical to '_IntegratedTestBase' now and
|
||||
# could be removed
|
||||
class ProviderUsageBaseTestCase(test.TestCase, PlacementInstanceHelperMixin):
|
||||
"""Base test class for functional tests that check provider usage
|
||||
and consumer allocations in Placement during various operations.
|
||||
|
|
Loading…
Reference in New Issue