@@ -1075,8 +1075,20 @@ def ticket_inventory(self, *, reservation: ABCBrokerReservation, inv: InventoryF
1075
1075
try :
1076
1076
if operation == ReservationOperation .Extend :
1077
1077
rset = reservation .get_resources ()
1078
+ duration = Term .delta (reservation .get_term ().get_end_time (), term .get_end_time ())
1078
1079
else :
1079
1080
rset = reservation .get_requested_resources ()
1081
+ duration = term .get_full_length ()
1082
+
1083
+ from fabric_cf .actor .core .container .globals import GlobalsSingleton
1084
+ if GlobalsSingleton .get ().get_quota_mgr ():
1085
+ status , error_msg = GlobalsSingleton .get ().get_quota_mgr ().enforce_quota_limits (reservation = reservation ,
1086
+ duration = duration )
1087
+ self .logger .info (f"Quota enforcement status: { status } , error: { error_msg } " )
1088
+ # TODO: enable enforcement action later
1089
+ #if not status:
1090
+ # return status, node_id_to_reservations, error_msg
1091
+
1080
1092
needed = rset .get_units ()
1081
1093
1082
1094
# for network node slivers
@@ -1115,6 +1127,11 @@ def ticket_inventory(self, *, reservation: ABCBrokerReservation, inv: InventoryF
1115
1127
if node_id_to_reservations .get (node_id , None ) is None :
1116
1128
node_id_to_reservations [node_id ] = ReservationSet ()
1117
1129
node_id_to_reservations [node_id ].add (reservation = reservation )
1130
+
1131
+ from fabric_cf .actor .core .container .globals import GlobalsSingleton
1132
+ if GlobalsSingleton .get ().get_quota_mgr ():
1133
+ GlobalsSingleton .get ().get_quota_mgr ().update_quota (reservation = reservation , duration = duration )
1134
+
1118
1135
self .logger .debug (f"Ticket Inventory returning: True { error_msg } " )
1119
1136
return True , node_id_to_reservations , error_msg
1120
1137
except Exception as e :
@@ -1204,6 +1221,13 @@ def issue_ticket(self, *, reservation: ABCBrokerReservation, units: int, rtype:
1204
1221
return reservation
1205
1222
1206
1223
def release (self , * , reservation ):
1224
+ duration = reservation .get_term ().get_remaining_length ()
1225
+ if duration > 0 :
1226
+ from fabric_cf .actor .core .container .globals import GlobalsSingleton
1227
+ if GlobalsSingleton .get ().get_quota_mgr ():
1228
+ GlobalsSingleton .get ().get_quota_mgr ().update_quota (reservation = reservation ,
1229
+ duration = duration )
1230
+
1207
1231
if isinstance (reservation , ABCBrokerReservation ):
1208
1232
self .logger .debug ("Broker reservation" )
1209
1233
super ().release (reservation = reservation )
0 commit comments