30
30
import oc .od .desktop
31
31
import oc .od .services
32
32
import oc .od .tracking
33
+
34
+ # type need for garbage collector
33
35
from kubernetes .client .models .v1_pod_list import V1PodList
34
36
from kubernetes .client .rest import ApiException
35
37
@@ -203,37 +205,65 @@ def runwebhook( c, messageinfo=None ):
203
205
def remove_desktop_byname ( desktop_name :str ):
204
206
myOrchestrator = selectOrchestrator ()
205
207
(authinfo , userinfo ) = myOrchestrator .find_userinfo_authinfo_by_desktop_name ( name = desktop_name )
208
+ if not isinstance ( authinfo , AuthInfo ) or not isinstance ( userinfo , AuthUser ) :
209
+ raise ODError ( status = 404 , message = 'desktop not found' )
206
210
return removedesktop ( authinfo , userinfo )
207
211
208
- def stop_container_byname ( desktop_name :str , container ) :
212
+ def stop_container_byname ( desktop_name :str , container : str ) -> bool :
209
213
myOrchestrator = selectOrchestrator ()
210
214
(authinfo , userinfo ) = myOrchestrator .find_userinfo_authinfo_by_desktop_name ( name = desktop_name )
211
- return myOrchestrator .stopContainerApp ( authinfo , userinfo , container )
215
+ if not isinstance ( authinfo , AuthInfo ) or not isinstance ( userinfo , AuthUser ) :
216
+ raise ODError ( status = 404 , message = 'desktop not found' )
217
+ return myOrchestrator .stopContainerApp ( authinfo , userinfo , desktop_name , container )
212
218
213
219
def list_container_byname ( desktop_name :str ):
214
220
myOrchestrator = selectOrchestrator ()
215
- (authinfo , userinfo ) = myOrchestrator .find_userinfo_authinfo_by_desktop_name ( name = desktop_name )
216
- return myOrchestrator .listContainerApp (authinfo , userinfo )
221
+ (authinfo , userinfo , myDesktop ) = myOrchestrator .find_userinfo_authinfo_desktop_by_desktop_name ( name = desktop_name )
222
+ if not isinstance ( myDesktop , oc .od .desktop .ODDesktop ) :
223
+ raise ODError ( status = 404 , message = 'desktop not found' )
224
+ if not isinstance ( authinfo , AuthInfo ) or not isinstance ( userinfo , AuthUser ) :
225
+ raise ODError ( status = 404 , message = 'desktop not found' )
226
+ return myOrchestrator .listContainerApps (authinfo , userinfo , myDesktop , services .apps )
217
227
218
228
def describe_desktop_byname ( desktop_name :str ):
219
229
myOrchestrator = selectOrchestrator ()
220
- pod = myOrchestrator .describe_desktop_byname ( desktop_name )
221
- return pod
230
+ myPod = myOrchestrator .describe_desktop_byname ( desktop_name )
231
+ if not isinstance ( myPod , dict ):
232
+ raise ODError ( status = 404 , message = 'desktop not found' )
233
+ return myPod
222
234
223
235
def describe_container_byname ( desktop_name :str , container_id :str ):
224
236
myOrchestrator = selectOrchestrator ()
225
237
container = myOrchestrator .describe_container ( desktop_name , container_id )
226
238
return container
227
239
228
- def remove_container_byname (desktop_name : str , container_id :str ):
240
+ def remove_container_byname (desktop_name :str , container :str ):
229
241
myOrchestrator = selectOrchestrator ()
230
242
(authinfo , userinfo ) = myOrchestrator .find_userinfo_authinfo_by_desktop_name ( name = desktop_name )
231
- return myOrchestrator .removeContainerApp (authinfo ,userinfo ,container_id = container_id )
243
+ if not isinstance ( authinfo , AuthInfo ) or not isinstance ( userinfo , AuthUser ) :
244
+ raise ODError ( status = 404 , message = 'desktop not found' )
245
+ return myOrchestrator .removeContainerApp (authinfo ,userinfo ,desktop_name ,container )
246
+
247
+ def get_pod_resources_usage (desktop_name :str , pod_name :str ):
248
+ myOrchestrator = selectOrchestrator ()
249
+ (authinfo , userinfo ) = myOrchestrator .find_userinfo_authinfo_by_desktop_name ( name = desktop_name )
250
+ if not isinstance ( authinfo , AuthInfo ) or not isinstance ( userinfo , AuthUser ) :
251
+ raise ODError ( status = 404 , message = 'desktop not found' )
252
+ return myOrchestrator .get_pod_resources_usage (authinfo ,userinfo ,pod_name = pod_name )
253
+
254
+ def get_container_resources_usage (desktop_name :str , container_name :str ):
255
+ myOrchestrator = selectOrchestrator ()
256
+ (authinfo , userinfo ) = myOrchestrator .find_userinfo_authinfo_by_desktop_name ( name = desktop_name )
257
+ if not isinstance ( authinfo , AuthInfo ) or not isinstance ( userinfo , AuthUser ) :
258
+ raise ODError ( status = 404 , message = 'desktop not found' )
259
+ return myOrchestrator .get_container_resources_usage ( authinfo , userinfo , container_name = container_name )
232
260
233
261
def get_desktop_resources_usage (desktop_name :str ):
234
262
myOrchestrator = selectOrchestrator ()
235
263
(authinfo , userinfo ) = myOrchestrator .find_userinfo_authinfo_by_desktop_name ( name = desktop_name )
236
- return myOrchestrator .getdesktop_resources_usage (authinfo ,userinfo )
264
+ if not isinstance ( authinfo , AuthInfo ) or not isinstance ( userinfo , AuthUser ) :
265
+ raise ODError ( status = 404 , message = 'desktop not found' )
266
+ return myOrchestrator .getdesktop_resources_usage (authinfo ,userinfo )
237
267
238
268
239
269
def fakednsquery ( userid ):
@@ -378,7 +408,7 @@ def finddesktop( authinfo, userinfo ):
378
408
return myDesktop
379
409
380
410
381
- def prepareressources ( authinfo , userinfo ):
411
+ def prepareressources ( authinfo : AuthInfo , userinfo : AuthUser ):
382
412
"""prepareressources for user from authinfo
383
413
call Orchestrator.prepareressources
384
414
@@ -390,7 +420,7 @@ def prepareressources( authinfo, userinfo ):
390
420
myOrchestrator .prepareressources ( authinfo = authinfo , userinfo = userinfo )
391
421
392
422
393
- def stopContainerApp (auth , user , podname , containerid ):
423
+ def stopContainerApp (authinfo : AuthInfo , userinfo : AuthUser , podname : str , containerid : str ):
394
424
"""stop container application if the container belongs to the user
395
425
Args:
396
426
authinfo (AuthInfo): authentification data
@@ -406,15 +436,15 @@ def stopContainerApp(auth, user, podname, containerid):
406
436
logger .info ('stopcontainer' )
407
437
# new Orchestrator Object
408
438
myOrchestrator = selectOrchestrator ()
409
- myDesktop = myOrchestrator .findDesktopByUser ( auth , user )
439
+ myDesktop = myOrchestrator .findDesktopByUser ( authinfo , userinfo )
410
440
if not isinstance ( myDesktop , oc .od .desktop .ODDesktop ):
411
441
raise ODError (status = 404 ,message = 'stopcontainer::findDesktopByUser not found' )
412
442
413
- if not myOrchestrator .isPodBelongToUser ( auth , user , podname ):
414
- services .fail2ban .fail_login ( user .userid )
443
+ if not myOrchestrator .isPodBelongToUser ( authinfo , userinfo , podname ):
444
+ services .fail2ban .fail_login ( userinfo .userid )
415
445
raise ODError ( status = 401 , message = 'stopcontainer::invalid user' )
416
446
417
- result = myOrchestrator .stopContainerApp ( auth , user , podname , containerid )
447
+ result = myOrchestrator .stopContainerApp ( authinfo , userinfo , podname , containerid )
418
448
return result
419
449
420
450
@@ -468,7 +498,7 @@ def getldifsecretuserinfo( authinfo, userinfo ):
468
498
secretuserinfo = myOrchestrator .getldifsecretuserinfo ( authinfo , userinfo )
469
499
return secretuserinfo
470
500
471
- def listContainerApp (authinfo , userinfo ):
501
+ def listContainerApps (authinfo , userinfo ):
472
502
# new Orchestrator Object
473
503
myOrchestrator = selectOrchestrator ()
474
504
myDesktop = myOrchestrator .findDesktopByUser ( authinfo , userinfo )
0 commit comments