From 24c75202ba13c1a8bff3ce3267e2b8762f9f61e2 Mon Sep 17 00:00:00 2001 From: Yong Zheng Date: Wed, 5 Mar 2025 00:12:09 -0600 Subject: [PATCH 1/2] Add proxy option for CLI --- regtests/client/python/cli/constants.py | 1 + regtests/client/python/cli/options/parser.py | 1 + regtests/client/python/cli/polaris_cli.py | 21 +++++++++++--------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/regtests/client/python/cli/constants.py b/regtests/client/python/cli/constants.py index 1fae549d2..c29174a09 100644 --- a/regtests/client/python/cli/constants.py +++ b/regtests/client/python/cli/constants.py @@ -136,6 +136,7 @@ class Arguments: LOCATION = 'location' REGION = 'region' PROFILE = 'profile' + PROXY = 'proxy' class Hints: diff --git a/regtests/client/python/cli/options/parser.py b/regtests/client/python/cli/options/parser.py index 9b91e5615..641309680 100644 --- a/regtests/client/python/cli/options/parser.py +++ b/regtests/client/python/cli/options/parser.py @@ -44,6 +44,7 @@ class Parser(object): Argument(Arguments.CLIENT_SECRET, str, hint='client secret for token-based authentication'), Argument(Arguments.ACCESS_TOKEN, str, hint='access token for token-based authentication'), Argument(Arguments.PROFILE, str, hint='profile for token-based authentication'), + Argument(Arguments.PROXY, str, hint='proxy URL'), ] @staticmethod diff --git a/regtests/client/python/cli/polaris_cli.py b/regtests/client/python/cli/polaris_cli.py index 2cc2f4e21..2fdd82f35 100644 --- a/regtests/client/python/cli/polaris_cli.py +++ b/regtests/client/python/cli/polaris_cli.py @@ -144,20 +144,23 @@ def _get_client_builder(options): polaris_catalog_url = f'http://{host}:{port}/api/catalog/v1' builder = None + config = Configuration(host=polaris_management_url) + if options.proxy: + config.proxy = options.proxy if has_access_token: - builder = lambda: ApiClient( - Configuration(host=polaris_management_url, access_token=options.access_token), - ) + config.access_token = options.access_token + builder = lambda: ApiClient(config) elif has_client_secret: - builder = lambda: ApiClient( - Configuration(host=polaris_management_url, username=client_id, password=client_secret), - ) + config.username = client_id + config.password = client_secret + builder = lambda: ApiClient(config) if not has_access_token and not PolarisCli.DIRECT_AUTHENTICATION_ENABLED: token = PolarisCli._get_token(builder(), polaris_catalog_url, client_id, client_secret) - builder = lambda: ApiClient( - Configuration(host=polaris_management_url, access_token=token), - ) + config.username = None + config.password = None + config.access_token = token + builder = lambda: ApiClient(config) return builder From 59997e06410ea05495eabcc1b7ec2f0c52f0c940 Mon Sep 17 00:00:00 2001 From: Yong Date: Wed, 5 Mar 2025 23:26:10 -0600 Subject: [PATCH 2/2] Refactor --- regtests/client/python/cli/polaris_cli.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/regtests/client/python/cli/polaris_cli.py b/regtests/client/python/cli/polaris_cli.py index 2fdd82f35..a19daed81 100644 --- a/regtests/client/python/cli/polaris_cli.py +++ b/regtests/client/python/cli/polaris_cli.py @@ -143,25 +143,21 @@ def _get_client_builder(options): polaris_management_url = f'http://{host}:{port}/api/management/v1' polaris_catalog_url = f'http://{host}:{port}/api/catalog/v1' - builder = None - config = Configuration(host=polaris_management_url) - if options.proxy: - config.proxy = options.proxy + config = Configuration(host=polaris_management_url) + config.proxy = options.proxy if has_access_token: config.access_token = options.access_token - builder = lambda: ApiClient(config) elif has_client_secret: config.username = client_id config.password = client_secret - builder = lambda: ApiClient(config) if not has_access_token and not PolarisCli.DIRECT_AUTHENTICATION_ENABLED: - token = PolarisCli._get_token(builder(), polaris_catalog_url, client_id, client_secret) + token = PolarisCli._get_token(ApiClient(config), polaris_catalog_url, client_id, client_secret) config.username = None config.password = None config.access_token = token - builder = lambda: ApiClient(config) - return builder + + return lambda: ApiClient(config) if __name__ == '__main__':