@@ -144,53 +144,19 @@ def get_pool_usage(self) -> BlueprintFactoryResponse:
144144
145145 @authenticate (self .authenticator )
146146 @validate_db_ids
147- async def _get (req : Request , user : base_models .APIUser , resource_pool_id : int ) -> HTTPResponse :
148- start_date = self ._extract_date (req , "start_date" )
149- end_date = self ._extract_date (req , "end_date" )
150- result : model .ResourcePoolUsage | None = None
151- if start_date :
152- result = await self .rr_svc .get_for_date (resource_pool_id , user .id or "" , start_date , end_date )
153- else :
154- result = await self .rr_svc .get_running_week (resource_pool_id , user .id or "" )
155- if result :
156- output = apispec .ResourcePoolUsage (
157- total_usage = apispec .ResourceUsageSummary (
158- runtime = result .total_usage .runtime_hours , cost = result .total_usage .cost .value
159- ),
160- pool_limits = apispec .ResourcePoolLimits (
161- pool_id = result .pool_limits .pool_id ,
162- total_limit = result .pool_limits .total_limit .value ,
163- user_limit = result .pool_limits .user_limit .value ,
164- ),
165- user_usage = apispec .ResourceUsageSummary (
166- runtime = result .user_usage .runtime_hours , cost = result .user_usage .cost .value
167- ),
168- )
169- return validated_json (
170- apispec .ResourcePoolUsage ,
171- output ,
172- )
173- else :
174- raise errors .MissingResourceError ()
175-
176- 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
184147 async def _get (req : Request , user : base_models .APIUser , resource_pool_id : int ) -> HTTPResponse :
185148 start_date = self ._extract_date (req , "start_date" )
186149 end_date = self ._extract_date (req , "end_date" )
187150 user_id = req .args .get ("user_id" )
188- uid = str (user_id ) if user_id else user .id or ""
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+
189155 result : model .ResourcePoolUsage | None = None
190156 if start_date :
191- result = await self .rr_svc .get_for_date (resource_pool_id , uid , start_date , end_date )
157+ result = await self .rr_svc .get_for_date (resource_pool_id , user_id or "" , start_date , end_date )
192158 else :
193- result = await self .rr_svc .get_running_week (resource_pool_id , uid )
159+ result = await self .rr_svc .get_running_week (resource_pool_id , user_id or "" )
194160 if result :
195161 output = apispec .ResourcePoolUsage (
196162 total_usage = apispec .ResourceUsageSummary (
@@ -212,4 +178,4 @@ async def _get(req: Request, user: base_models.APIUser, resource_pool_id: int) -
212178 else :
213179 raise errors .MissingResourceError ()
214180
215- return "/resource_pools/<resource_pool_id>/admin_usage " , ["GET" ], _get
181+ return "/resource_pools/<resource_pool_id>/usage " , ["GET" ], _get
0 commit comments