11#!/usr/bin/env python
2- # -*- coding: utf-8 -*-
32# Copyright (c) 2024 Oracle and/or its affiliates.
43# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
54
65
76import logging
87import threading
8+ import traceback
99import urllib .parse
10- import requests
10+
11+ import oci
1112from requests import Response
12- from . base import TelemetryBase
13+
1314from ads .config import DEBUG_TELEMETRY
1415
16+ from .base import TelemetryBase
1517
1618logger = logging .getLogger (__name__ )
1719
@@ -32,7 +34,7 @@ class TelemetryClient(TelemetryBase):
3234 >>> import traceback
3335 >>> from ads.telemetry.client import TelemetryClient
3436 >>> AQUA_BUCKET = os.environ.get("AQUA_BUCKET", "service-managed-models")
35- >>> AQUA_BUCKET_NS = os.environ.get("AQUA_BUCKET_NS", "ociodscdev ")
37+ >>> AQUA_BUCKET_NS = os.environ.get("AQUA_BUCKET_NS", "namespace ")
3638 >>> telemetry = TelemetryClient(bucket=AQUA_BUCKET, namespace=AQUA_BUCKET_NS)
3739 >>> telemetry.record_event_async(category="aqua/service/model", action="create") # records create action
3840 >>> telemetry.record_event_async(category="aqua/service/model/create", action="shape", detail="VM.GPU.A10.1")
@@ -69,16 +71,23 @@ def record_event(
6971 raise ValueError ("Please specify the category and the action." )
7072 if detail :
7173 category , action = f"{ category } /{ action } " , detail
74+ # Here `endpoint`` is for debugging purpose
75+ # For some federated/domain users, the `endpoint` may not be a valid URL
7276 endpoint = f"{ self .service_endpoint } /n/{ self .namespace } /b/{ self .bucket } /o/telemetry/{ category } /{ action } "
73- headers = {"User-Agent" : self ._encode_user_agent (** kwargs )}
7477 logger .debug (f"Sending telemetry to endpoint: { endpoint } " )
75- signer = self ._auth ["signer" ]
76- response = requests .head (endpoint , auth = signer , headers = headers )
77- logger .debug (f"Telemetry status code: { response .status_code } " )
78+
79+ self .os_client .base_client .user_agent = self ._encode_user_agent (** kwargs )
80+ response : oci .response .Response = self .os_client .head_object (
81+ namespace_name = self .namespace ,
82+ bucket_name = self .bucket ,
83+ object_name = f"telemetry/{ category } /{ action } " ,
84+ )
85+ logger .debug (f"Telemetry status: { response .status } " )
7886 return response
7987 except Exception as e :
8088 if DEBUG_TELEMETRY :
8189 logger .error (f"There is an error recording telemetry: { e } " )
90+ traceback .print_exc ()
8291
8392 def record_event_async (
8493 self , category : str = None , action : str = None , detail : str = None , ** kwargs
0 commit comments