def list_keys(self, s: TextIO) -> None: def color_id(k: IAMKey) -> str: if not k.user_managed: color = GREY elif k.expired(): color = ERROR_RED elif not k.recently_created(): color = WARNING_YELLOW else: color = OK_GREEN return f'{color}{k.id}{ENDC}' s.write(f'{self}\n') for k in self.keys: s.write( f'{color_id(k)} \t Created: {k.created_readable} \t Expires: {k.expiration_readable}' ) matching_secrets = [ str(s) for s in self.kube_secrets if s.matches_iam_key(k) ] if len(matching_secrets) > 0: s.write(f'\t <== {" ".join(matching_secrets)}') s.write('\n')