Add util to generate resource request group UUID
Add a new utility function that can be used to generate a stable UUID for a resource request group. Related-Bug: #1922237 See-Also: https://review.opendev.org/785236 Change-Id: Ic3718defd74c2165077bb5a942e46474d3582cf5
This commit is contained in:
parent
272bb88a86
commit
794fc7032e
|
@ -111,6 +111,18 @@ def device_resource_provider_uuid(namespace, host, device, separator=':'):
|
|||
return six_uuid5(namespace=namespace, name=name)
|
||||
|
||||
|
||||
def resource_request_group_uuid(namespace, qos_rules, separator=':'):
|
||||
"""Generate a stable UUID for a resource request group.
|
||||
|
||||
:param namespace: A UUID object identifying a port.
|
||||
:param qos_rules: A list of QoS rules contributing to the group.
|
||||
:param separator: A string used in assembling a name for uuid5(). Optional.
|
||||
:returns: A unique and stable UUID identifying a resource request group.
|
||||
"""
|
||||
name = separator.join([rule.id for rule in qos_rules])
|
||||
return six_uuid5(namespace=namespace, name=name)
|
||||
|
||||
|
||||
def _parse_rp_rate(rate_str):
|
||||
"""Parse the config string value to an non-negative integer.
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from unittest import mock
|
||||
import uuid
|
||||
|
||||
from neutron_lib.placement import utils as place_utils
|
||||
|
@ -73,6 +74,18 @@ class TestPlacementUtils(base.BaseTestCase):
|
|||
except Exception:
|
||||
self.fail('could not generate device resource provider uuid')
|
||||
|
||||
def test_resource_request_group_uuid(self):
|
||||
try:
|
||||
# assertNotRaises
|
||||
place_utils.resource_request_group_uuid(
|
||||
namespace=self._uuid_ns,
|
||||
qos_rules=[
|
||||
mock.MagicMock(id='fake_id_0'),
|
||||
mock.MagicMock(id='fake_id_1')
|
||||
])
|
||||
except Exception:
|
||||
self.fail('could not generate resource request group uuid')
|
||||
|
||||
def test_agent_resource_provider_uuid_stable(self):
|
||||
uuid_a = place_utils.agent_resource_provider_uuid(
|
||||
namespace=self._uuid_ns,
|
||||
|
@ -93,6 +106,23 @@ class TestPlacementUtils(base.BaseTestCase):
|
|||
device='some-device')
|
||||
self.assertEqual(uuid_a, uuid_b)
|
||||
|
||||
def test_resource_request_group_uuid_stable(self):
|
||||
uuid_a = place_utils.resource_request_group_uuid(
|
||||
namespace=self._uuid_ns,
|
||||
qos_rules=[
|
||||
mock.MagicMock(id='fake_id_0'),
|
||||
mock.MagicMock(id='fake_id_1')
|
||||
]
|
||||
)
|
||||
uuid_b = place_utils.resource_request_group_uuid(
|
||||
namespace=self._uuid_ns,
|
||||
qos_rules=[
|
||||
mock.MagicMock(id='fake_id_0'),
|
||||
mock.MagicMock(id='fake_id_1')
|
||||
]
|
||||
)
|
||||
self.assertEqual(uuid_a, uuid_b)
|
||||
|
||||
def test_parse_rp_bandwidths(self):
|
||||
self.assertEqual(
|
||||
{},
|
||||
|
|
Loading…
Reference in New Issue