diff options
author | Tzu-Mainn Chen <tzumainn@redhat.com> | 2020-01-07 22:25:08 +0000 |
---|---|---|
committer | Tzu-Mainn Chen <tzumainn@redhat.com> | 2020-04-07 15:33:42 +0000 |
commit | 602a467a04a0cae3a2d65ba45bfd70eabd4c105a (patch) | |
tree | 0ea7dc920b01415d1c2588ccdfcff6b1f8c8e89e /ironic/db/sqlalchemy/api.py | |
parent | b148cabdb2cc6810b09e8bfbc500d15969c0f164 (diff) | |
download | ironic-602a467a04a0cae3a2d65ba45bfd70eabd4c105a.tar.gz |
Add node lessee field
This change adds a `lessee` field to nodes, and exposes it
to policy. It also updates the non-admin node list API
to match for both owner and lessee; and updates the
allocation conductor to match owner allocations with nodes
with the appropriate lessee.
Change-Id: Ib31b49c7143ec8fd6cb486fc24038215b197c418
Story: 2006506
Task: 37930
Diffstat (limited to 'ironic/db/sqlalchemy/api.py')
-rw-r--r-- | ironic/db/sqlalchemy/api.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ironic/db/sqlalchemy/api.py b/ironic/db/sqlalchemy/api.py index 95baf75fd..e3f62335f 100644 --- a/ironic/db/sqlalchemy/api.py +++ b/ironic/db/sqlalchemy/api.py @@ -288,7 +288,7 @@ class Connection(api.Connection): _NODE_QUERY_FIELDS = {'console_enabled', 'maintenance', 'retired', 'driver', 'resource_class', 'provision_state', 'uuid', 'id', 'fault', 'conductor_group', - 'owner'} + 'owner', 'lessee'} _NODE_IN_QUERY_FIELDS = {'%s_in' % field: field for field in ('uuid', 'provision_state')} _NODE_NON_NULL_FILTERS = {'associated': 'instance_uuid', @@ -296,7 +296,7 @@ class Connection(api.Connection): 'with_power_state': 'power_state'} _NODE_FILTERS = ({'chassis_uuid', 'reserved_by_any_of', 'provisioned_before', 'inspection_started_before', - 'description_contains'} + 'description_contains', 'project'} | _NODE_QUERY_FIELDS | set(_NODE_IN_QUERY_FIELDS) | set(_NODE_NON_NULL_FILTERS)) @@ -354,6 +354,10 @@ class Connection(api.Connection): if keyword is not None: query = query.filter( models.Node.description.like(r'%{}%'.format(keyword))) + if 'project' in filters: + project = filters['project'] + query = query.filter((models.Node.owner == project) + | (models.Node.lessee == project)) return query |