diff --git a/src/a01/auth.py b/src/a01/auth.py index 299d047..11b8767 100644 --- a/src/a01/auth.py +++ b/src/a01/auth.py @@ -57,6 +57,10 @@ class AuthSettings(object): def user_id(self) -> str: return self._get_token_value('userId') + @property + def service_principal_id(self) -> str: + return self._get_token_value('_clientId') + @property def refresh_token(self) -> str: return self._get_token_value('refreshToken') @@ -213,3 +217,10 @@ def get_user_id() -> str: except AuthenticationError: print('You need to login. Usage: a01 login.') sys.exit(1) + +def get_service_principal_id() -> str: + try: + return AuthSettings().service_principal_id + except AuthenticationError: + print('You need to login. Usage: a01 login.') + sys.exit(1) diff --git a/src/a01/runs.py b/src/a01/runs.py index 0b5df0f..7e02ea4 100644 --- a/src/a01/runs.py +++ b/src/a01/runs.py @@ -24,7 +24,7 @@ import a01.models from a01.common import get_logger, A01Config, COMMON_IMAGE_PULL_SECRET from a01.cli import cmd, arg from a01.communication import session -from a01.auth import get_user_id +from a01.auth import get_user_id, get_service_principal_id from a01.output import output_in_table logger = get_logger(__name__) # pylint: disable=invalid-name @@ -107,6 +107,8 @@ def create_run(image: str, from_failures: str = None, live: bool = False, parall remark: str = '', email: bool = False, secret: str = None, mode: str = None, reset_run: str = None) -> None: remark = remark or '' + creator = get_user_id() if email else get_service_principal_id() + try: if not reset_run: run_model = a01.models.Run(name=f'Azure CLI Test @ {image}', @@ -124,7 +126,7 @@ def create_run(image: str, from_failures: str = None, live: bool = False, parall 'a01.reserved.fromrunfailure': from_failures, }, details={ - 'a01.reserved.creator': get_user_id(), + 'a01.reserved.creator': creator, 'a01.reserved.client': 'A01 CLI' })