diff --git a/gprofiler/client.py b/gprofiler/client.py index 8c87a3bcf..6c1985701 100644 --- a/gprofiler/client.py +++ b/gprofiler/client.py @@ -109,12 +109,14 @@ class ProfilerAPIClient(BaseAPIClient): def __init__( self, + *, token: str, service_name: str, server_address: str, curlify_requests: bool, hostname: str, upload_timeout: int, + verify: bool, version: str = "v1", ): self._server_address = server_address.rstrip("/") @@ -123,10 +125,12 @@ def __init__( self._key = token self._service = service_name self._hostname = hostname + self._verify = verify super().__init__(curlify_requests) def _init_session(self) -> None: self._session: Session = requests.Session() + self._session.verify = self._verify self._session.headers.update({"GPROFILER-API-KEY": self._key, "GPROFILER-SERVICE-NAME": self._service}) # Raises on failure diff --git a/gprofiler/log.py b/gprofiler/log.py index 1fa6d11d9..736aae584 100644 --- a/gprofiler/log.py +++ b/gprofiler/log.py @@ -49,11 +49,17 @@ class RemoteLogsHandler(BatchRequestsHandler): MAX_BUFFERED_RECORDS = 100 * 1000 # max number of records to buffer locally - def __init__(self, server_address: str, auth_token: str, service_name: str) -> None: + def __init__(self, server_address: str, auth_token: str, service_name: str, verify: bool) -> None: self._service_name = service_name url = urlparse(server_address) super().__init__( - Sender(application_name="gprofiler", auth_token=auth_token, scheme=url.scheme, server_address=url.netloc) + Sender( + application_name="gprofiler", + auth_token=auth_token, + scheme=url.scheme, + server_address=url.netloc, + verify=verify, + ) ) def emit(self, record: LogRecord) -> None: diff --git a/gprofiler/main.py b/gprofiler/main.py index bb469dcd9..13fcff325 100644 --- a/gprofiler/main.py +++ b/gprofiler/main.py @@ -633,6 +633,9 @@ def parse_cmd_args() -> configargparse.Namespace: connectivity.add_argument( "--curlify-requests", help="Log cURL commands for HTTP requests (used for debugging)", action="store_true" ) + connectivity.add_argument( + "--no-verify", help="Do not verify server certificates", action="store_false", dest="verify" + ) upload_file.set_defaults(func=send_collapsed_file_only) @@ -953,7 +956,9 @@ def main() -> None: state = init_state() remote_logs_handler = ( - RemoteLogsHandler(args.api_server, args.server_token, args.service_name) if _should_send_logs(args) else None + RemoteLogsHandler(args.api_server, args.server_token, args.service_name, args.verify) + if _should_send_logs(args) + else None ) global logger logger = initial_root_logger_setup( @@ -1015,11 +1020,12 @@ def main() -> None: client_kwargs["upload_timeout"] = args.server_upload_timeout profiler_api_client = ( ProfilerAPIClient( - args.server_token, - args.service_name, - args.server_host, - args.curlify_requests, - get_hostname(), + token=args.server_token, + service_name=args.service_name, + server_address=args.server_host, + curlify_requests=args.curlify_requests, + hostname=get_hostname(), + verify=args.verify, **client_kwargs, ) if args.upload_results diff --git a/granulate-utils b/granulate-utils index 38d7add30..b9f1eb07b 160000 --- a/granulate-utils +++ b/granulate-utils @@ -1 +1 @@ -Subproject commit 38d7add30a082eab46ff6b42b428c54337c8a4e3 +Subproject commit b9f1eb07b9768342d18dfc8859d7e32210cba7c7