@@ -147,6 +147,11 @@ def get_pool_usage(self) -> BlueprintFactoryResponse:
147147 async def _get (req : Request , user : base_models .APIUser , resource_pool_id : int ) -> HTTPResponse :
148148 start_date = self ._extract_date (req , "start_date" )
149149 end_date = self ._extract_date (req , "end_date" )
150+ user_id = req .args .get ("user_id" )
151+ user_id = str (user_id ) if user_id else user .id
152+ if user_id != user .id and (user .access_token is None or not user .is_admin ):
153+ raise errors .ForbiddenError (message = "You do not have the required permissions for this operation." )
154+
150155 result : model .ResourcePoolUsage | None = None
151156 if start_date :
152157 result = await self .rr_svc .get_for_date (resource_pool_id , user .id or "" , start_date , end_date )
@@ -174,42 +179,3 @@ async def _get(req: Request, user: base_models.APIUser, resource_pool_id: int) -
174179 raise errors .MissingResourceError ()
175180
176181 return "/resource_pools/<resource_pool_id>/usage" , ["GET" ], _get
177-
178- def get_admin_pool_usage (self ) -> BlueprintFactoryResponse :
179- """Get usage of a pool."""
180-
181- @authenticate (self .authenticator )
182- @only_admins
183- @validate_db_ids
184- async def _get (req : Request , user : base_models .APIUser , resource_pool_id : int ) -> HTTPResponse :
185- start_date = self ._extract_date (req , "start_date" )
186- end_date = self ._extract_date (req , "end_date" )
187- user_id = req .args .get ("user_id" )
188- uid = str (user_id ) if user_id else user .id or ""
189- result : model .ResourcePoolUsage | None = None
190- if start_date :
191- result = await self .rr_svc .get_for_date (resource_pool_id , uid , start_date , end_date )
192- else :
193- result = await self .rr_svc .get_running_week (resource_pool_id , uid )
194- if result :
195- output = apispec .ResourcePoolUsage (
196- total_usage = apispec .ResourceUsageSummary (
197- runtime = result .total_usage .runtime_hours , cost = result .total_usage .cost .value
198- ),
199- pool_limits = apispec .ResourcePoolLimits (
200- pool_id = result .pool_limits .pool_id ,
201- total_limit = result .pool_limits .total_limit .value ,
202- user_limit = result .pool_limits .user_limit .value ,
203- ),
204- user_usage = apispec .ResourceUsageSummary (
205- runtime = result .user_usage .runtime_hours , cost = result .user_usage .cost .value
206- ),
207- )
208- return validated_json (
209- apispec .ResourcePoolUsage ,
210- output ,
211- )
212- else :
213- raise errors .MissingResourceError ()
214-
215- return "/resource_pools/<resource_pool_id>/admin_usage" , ["GET" ], _get
0 commit comments