Sharding: More detailed test plan

After looking at options for testing this in detail, we've figured out a
way to ensure we're filtering nodes properly in nova-compute without
adding more load to our test cases in the form of additional full
deployments.

The proposed change would have us validate the nodes are not appearing
in placement, using a similar method we currently use in devstack to
ensure that nodes at setup time are being seen by nova.

blueprint ironic-shards

Change-Id: I16768e88fd4034d752df1533f9f1395e30184467
This commit is contained in:
Jay Faulkner 2024-02-09 12:23:43 -08:00
parent f0ffcb6ddf
commit 2f9c534574
1 changed files with 17 additions and 3 deletions

View File

@ -404,9 +404,23 @@ Testing
We need some functional tests for the nova-manage command to ensure
all of the safety guards work as expected.
We need to ensure a tempest test exists which has multiple shards, with
only one shard containing valid, functional Ironic nodes. Then, ensure
that only the valid nodes are scheduled to.
We need to ensure a tempest test exists which ensures that a nova-compute
configured to shard will only add nodes to placement that are configured with
the proper shard.
To do this, we will add a devstack config to configure nova-compute with
a shard_key, and ensure Ironic nodes are created with that node.shard value.
When that configuration is enabled, a scenario test will perform this flow:
* Test creates fake-hardware test nodes with different shard values than the
one configured in nova-compute, including at least one with a shard None.
* Test also creates one fake-hardware test node with the shard value
configured in nova-compute.
* Test then polls placement, waiting for the recently-created test node in the
correct shard to appear.
* Test now polls placement, ensuring none of nodes with invalid or None shard
keys appear in placement.
* Test will repeat polling looking for invalid nodes for a configurable time,
if none are found when that time has fully elapsed, the test has passed.
Documentation Impact
====================