@@ -314,9 +314,9 @@ def user(self):
314314 output += f' (alias: { alias } )'
315315 self .print (output , ignore_silent = True )
316316
317- def list_secrets (self ):
317+ def list_secrets (self , search_text : Optional [ str ] = None ):
318318 self .login ()
319- self .print (self .b .my_secrets .list (), ignore_silent = True )
319+ self .print (self .b .my_secrets .list (search = search_text ), ignore_silent = True )
320320
321321 def list_approvals (self ):
322322 self .login ()
@@ -338,14 +338,34 @@ def list_approvals(self):
338338 approvals .reverse ()
339339 self .print (approvals , ignore_silent = True )
340340
341- def list_resources (self ):
341+ def list_requests (self ):
342+ self .login ()
343+ requests = []
344+ for request in self .b .my_requests .list ():
345+ request .pop ('resource' , None )
346+ request .pop ('consumer' , None )
347+ request .pop ('timeToApprove' , None )
348+ request .pop ('validFor' , None )
349+ request .pop ('action' , None )
350+ request .pop ('approvers' , None )
351+ request .pop ('expirationTimeApproval' , None )
352+ request .pop ('updatedAt' , None )
353+ request .pop ('actionBy' , None )
354+ request .pop ('validForInDays' , None )
355+ requests .append (request )
356+
357+ requests = sorted (requests , key = lambda x : x ['createdAt' ])
358+ requests .reverse ()
359+ self .print (requests , ignore_silent = True )
360+
361+ def list_resources (self , search_text : Optional [str ] = None ):
342362 self .login ()
343363 found_resource_names = []
344364 resources = []
345- if resource_limit : = int (self .config .my_resources_retrieval_limit ):
346- profiles = self .b .my_resources .list (size = resource_limit )[ 'data' ]
347- else :
348- profiles = self . b . my_resources . list_profiles ()
365+ resource_limit = int (self .config .my_resources_retrieval_limit )
366+ profiles = self .b .my_resources .list (search_text = search_text , size = resource_limit )
367+ if resource_limit :
368+ profiles = profiles [ 'data' ]
349369 for item in profiles :
350370 name = item ['resourceName' ]
351371 if name not in found_resource_names :
@@ -360,9 +380,14 @@ def list_resources(self):
360380 found_resource_names .append (name )
361381 self .print (resources , ignore_silent = True )
362382
363- def list_profiles (self , checked_out : bool = False , profile_type : Optional [str ] = None ):
383+ def list_profiles (
384+ self ,
385+ checked_out : bool = False ,
386+ profile_type : Optional [str ] = None ,
387+ search_text : Optional [str ] = None ,
388+ ):
364389 self .login ()
365- self ._set_available_profiles (profile_type = profile_type )
390+ self ._set_available_profiles (profile_type = profile_type , search_text = search_text )
366391 data = []
367392 checked_out_profiles = {}
368393 if checked_out : # only make this call if we have to
@@ -390,7 +415,7 @@ def list_profiles(self, checked_out: bool = False, profile_type: Optional[str] =
390415 'Application' : profile ['app_name' ] or 'Resources' ,
391416 'Environment' : profile ['env_name' ],
392417 'Profile' : profile ['profile_name' ],
393- 'Description' : profile ['profile_description' ] or 'Resource' ,
418+ 'Description' : profile ['profile_description' ] if profile [ 'app_name' ] else 'Resource' ,
394419 'Type' : profile ['app_type' ],
395420 }
396421
@@ -427,9 +452,9 @@ def list_profiles(self, checked_out: bool = False, profile_type: Optional[str] =
427452 if self .output_format == 'list-profiles' :
428453 self .output_format = 'list'
429454
430- def list_applications (self ):
455+ def list_applications (self , search_text : Optional [ str ] = None ):
431456 self .login ()
432- self ._set_available_profiles ()
457+ self ._set_available_profiles (profile_type = 'my-access' , search_text = search_text )
433458 keys = ['app_name' , 'app_type' , 'app_description' ]
434459 apps = []
435460 for profile in self .available_profiles :
@@ -440,14 +465,14 @@ def list_applications(self):
440465 row = {
441466 'Application' : app ['app_name' ],
442467 'Type' : app ['app_type' ],
443- 'Description' : app ['app_description' ],
468+ 'Description' : app ['app_description' ] or '' ,
444469 }
445470 data .append (row )
446471 self .print (data , ignore_silent = True )
447472
448- def list_environments (self ):
473+ def list_environments (self , search_text : Optional [ str ] = None ):
449474 self .login ()
450- self ._set_available_profiles ()
475+ self ._set_available_profiles (profile_type = 'my-access' , search_text = search_text )
451476 envs = []
452477 keys = ['app_name' , 'app_type' , 'env_name' , 'env_description' ]
453478 for profile in self .available_profiles :
@@ -459,37 +484,27 @@ def list_environments(self):
459484 row = {
460485 'Application' : env ['app_name' ],
461486 'Environment' : env ['env_name' ],
462- 'Description' : env ['env_description' ],
487+ 'Description' : env ['env_description' ] or '' ,
463488 'Type' : env ['app_type' ],
464489 }
465490 data .append (row )
466491 self .print (data , ignore_silent = True )
467492
468- # temporary fix till the new API is updated to return `sessionAttributes`
469- def _get_missing_session_attributes (self , app_id : str , profile_id : str ) -> dict :
470- if not self .listed_profiles :
471- self .listed_profiles = self .b .my_access .list_profiles ()
472- return next (
473- (
474- profile ['sessionAttributes' ]
475- for app in self .listed_profiles
476- if app ['appContainerId' ] == app_id
477- for profile in app .get ('profiles' , [])
478- if profile ['profileId' ] == profile_id
479- ),
480- [],
481- )
482-
483- def _set_available_profiles (self , from_cache_command = False , profile_type : Optional [str ] = None ):
493+ def _set_available_profiles (
494+ self ,
495+ from_cache_command = False ,
496+ profile_type : Optional [str ] = None ,
497+ search_text : Optional [str ] = None ,
498+ ):
484499 if not self .available_profiles :
485500 data = []
486501 if not profile_type or profile_type == 'my-access' :
487502 self .listed_profiles = None
488503 access_limit = int (self .config .my_access_retrieval_limit )
489504 increase = 0
490- while (access_data := self .b .my_access .list (size = access_limit + increase ))['count' ] > len (
491- access_data [ 'accesses' ]
492- ) and len ({a ['papId' ] for a in access_data ['accesses' ]}) < access_limit :
505+ while (access_data := self .b .my_access .list (search_text = search_text , size = access_limit + increase ))[
506+ 'count'
507+ ] > len ( access_data [ 'accesses' ] ) and len ({a ['papId' ] for a in access_data ['accesses' ]}) < access_limit :
493508 increase += max (25 , round (access_data ['count' ] * 0.25 ))
494509 apps = {a ['appContainerId' ]: a for a in access_data .get ('apps' , [])}
495510 envs = {e ['environmentId' ]: e for e in access_data .get ('environments' , [])}
@@ -518,18 +533,15 @@ def _set_available_profiles(self, from_cache_command=False, profile_type: Option
518533 'profile_description' : profile ['papDescription' ],
519534 'profile_id' : profile_id ,
520535 'profile_name' : profile ['papName' ],
521- 'session_attributes' : profile .get (
522- 'sessionAttributes' , self ._get_missing_session_attributes (app_id , profile_id )
523- ),
536+ 'session_attributes' : profile ['sessionAttributes' ],
524537 }
525538 if row not in access_output :
526539 access_output .append (row )
527540 data += access_output [:access_limit ] if access_limit else access_output
528541 if self .b .feature_flags .get ('server-access' ) and (not profile_type or profile_type == 'my-resources' ):
529- if not (resource_limit := int (self .config .my_resources_retrieval_limit )):
530- profiles = self .b .my_resources .list_profiles ()
531- else :
532- profiles = self .b .my_resources .list (size = resource_limit )
542+ resource_limit = int (self .config .my_resources_retrieval_limit )
543+ profiles = self .b .my_resources .list (search_text = search_text , size = resource_limit )
544+ if resource_limit :
533545 profiles = profiles ['data' ]
534546 for item in profiles :
535547 row = {
0 commit comments