Skip to content

Commit 2012cce

Browse files
committed
Add "usage" information to host allocation tied to instance res
If a host allocation is tied to an instance reservation, we need to include "usage" information to indicate how much of the host is allocated. Otherwise, we have no idea what proportion of the host is reserved.
1 parent 3eb6c14 commit 2012cce

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

blazar/db/api.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,10 @@ def instance_reservation_get(instance_reservation_id):
305305
return IMPL.instance_reservation_get(instance_reservation_id)
306306

307307

308+
def instance_reservation_get_by_reservation_id(reservation_id, session=None):
309+
return IMPL.instance_reservation_get_by_reservation_id(reservation_id, session=session)
310+
311+
308312
def instance_reservation_update(instance_reservation_id,
309313
instance_reservation_values):
310314
"""Update instance reservation."""

blazar/db/sqlalchemy/api.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,13 @@ def instance_reservation_get(instance_reservation_id, session=None):
595595
return query.filter_by(id=instance_reservation_id).first()
596596

597597

598+
def instance_reservation_get_by_reservation_id(reservation_id, session=None):
599+
if not session:
600+
session = get_session()
601+
query = model_query(models.InstanceReservations, session)
602+
return query.filter_by(reservation_id=reservation_id).first()
603+
604+
598605
def instance_reservation_update(instance_reservation_id, values):
599606
session = get_session()
600607

blazar/plugins/oshosts/host_plugin.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,20 @@ def list_allocations(self, query, detail=False):
601601
hosts_allocations = self.query_host_allocations(hosts_id_list,
602602
**options)
603603
self.add_extra_allocation_info(hosts_allocations)
604+
inst_res_map = {}
605+
for allocation_list in hosts_allocations.values():
606+
for allocation in allocation_list:
607+
# This is allocation id :()
608+
if not inst_res_map.get(allocation["id"]):
609+
inst_res_map[allocation["id"]] = db_api.instance_reservation_get_by_reservation_id(allocation["id"])
610+
inst_res = inst_res_map[allocation["id"]]
611+
# inst_res will be None if the allocation is not from a flavor/instance reservation
612+
if inst_res:
613+
data = {}
614+
data["vcpus"] = inst_res.vcpus
615+
data["memory_mb"] = inst_res.memory_mb
616+
data["disk_gb"] = inst_res.disk_gb
617+
allocation["usage"] = data
604618
return [{"resource_id": host, "reservations": allocs}
605619
for host, allocs in hosts_allocations.items()]
606620

0 commit comments

Comments
 (0)