summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/db/utils.py
diff options
context:
space:
mode:
authorDmitry Tantsur <divius.inside@gmail.com>2018-12-10 16:50:42 +0100
committerDmitry Tantsur <divius.inside@gmail.com>2019-01-07 12:51:10 +0100
commita4717d9958c5b434ab01afaca095e018db5aaa7d (patch)
treed6c1d4bb5019549570c344d787e2083ba74f9a44 /ironic/tests/unit/db/utils.py
parentc10ee94b92174ce78073afc2eacb300fa649736f (diff)
downloadironic-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.py30
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)