diff options
author | Dmitry Tantsur <divius.inside@gmail.com> | 2018-12-10 16:50:42 +0100 |
---|---|---|
committer | Dmitry Tantsur <divius.inside@gmail.com> | 2019-01-07 12:51:10 +0100 |
commit | a4717d9958c5b434ab01afaca095e018db5aaa7d (patch) | |
tree | d6c1d4bb5019549570c344d787e2083ba74f9a44 /ironic/tests/unit/db/utils.py | |
parent | c10ee94b92174ce78073afc2eacb300fa649736f (diff) | |
download | ironic-a4717d9958c5b434ab01afaca095e018db5aaa7d.tar.gz |
Allocation API: database and RPC
This change adds the database models and API, as well as RPC objects
for the allocation API. Also the node database API is extended with
query by power state and list of UUIDs.
There is one discrepancy from the initially approved spec: since we
do not have to separately update traits in an allocation, the planned
allocation_traits table was replaced by a simple field.
Change-Id: I6af132e2bfa6e4f7b93bd20f22a668790a22a30e
Story: #2004341
Task: #28367
Diffstat (limited to 'ironic/tests/unit/db/utils.py')
-rw-r--r-- | ironic/tests/unit/db/utils.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/ironic/tests/unit/db/utils.py b/ironic/tests/unit/db/utils.py index a0bc1fb38..f3f838000 100644 --- a/ironic/tests/unit/db/utils.py +++ b/ironic/tests/unit/db/utils.py @@ -16,10 +16,12 @@ from oslo_utils import timeutils +from oslo_utils import uuidutils from ironic.common import states from ironic.db import api as db_api from ironic.drivers import base as drivers_base +from ironic.objects import allocation from ironic.objects import bios from ironic.objects import chassis from ironic.objects import conductor @@ -219,6 +221,7 @@ def get_test_node(**kw): 'protected_reason': kw.get('protected_reason', None), 'conductor': kw.get('conductor'), 'owner': kw.get('owner', None), + 'allocation_id': kw.get('allocation_id'), } for iface in drivers_base.ALL_INTERFACES: @@ -588,3 +591,30 @@ def get_test_bios_setting_setting_list(): {'name': 'hyperthread', 'value': 'enabled'}, {'name': 'numlock', 'value': 'off'} ] + + +def get_test_allocation(**kw): + return { + 'candidate_nodes': kw.get('candidate_nodes', []), + 'conductor_affinity': kw.get('conductor_affinity'), + 'created_at': kw.get('created_at'), + 'extra': kw.get('extra', {}), + 'id': kw.get('id', 42), + 'last_error': kw.get('last_error'), + 'name': kw.get('name'), + 'node_id': kw.get('node_id'), + 'resource_class': kw.get('resource_class', 'baremetal'), + 'state': kw.get('state', 'allocating'), + 'traits': kw.get('traits', []), + 'updated_at': kw.get('updated_at'), + 'uuid': kw.get('uuid', uuidutils.generate_uuid()), + 'version': kw.get('version', allocation.Allocation.VERSION), + } + + +def create_test_allocation(**kw): + allocation = get_test_allocation(**kw) + if 'id' not in kw: + del allocation['id'] + dbapi = db_api.get_instance() + return dbapi.create_allocation(allocation) |