1
1
#!/usr/bin/env python
2
- # -*- coding: utf-8 -*-
3
2
# Copyright (c) 2024 Oracle and/or its affiliates.
4
3
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
5
4
6
5
7
6
import logging
8
7
import threading
8
+ import traceback
9
9
import urllib .parse
10
- import requests
10
+
11
+ import oci
11
12
from requests import Response
12
- from . base import TelemetryBase
13
+
13
14
from ads .config import DEBUG_TELEMETRY
14
15
16
+ from .base import TelemetryBase
15
17
16
18
logger = logging .getLogger (__name__ )
17
19
@@ -32,7 +34,7 @@ class TelemetryClient(TelemetryBase):
32
34
>>> import traceback
33
35
>>> from ads.telemetry.client import TelemetryClient
34
36
>>> 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 ")
36
38
>>> telemetry = TelemetryClient(bucket=AQUA_BUCKET, namespace=AQUA_BUCKET_NS)
37
39
>>> telemetry.record_event_async(category="aqua/service/model", action="create") # records create action
38
40
>>> telemetry.record_event_async(category="aqua/service/model/create", action="shape", detail="VM.GPU.A10.1")
@@ -69,16 +71,23 @@ def record_event(
69
71
raise ValueError ("Please specify the category and the action." )
70
72
if detail :
71
73
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
72
76
endpoint = f"{ self .service_endpoint } /n/{ self .namespace } /b/{ self .bucket } /o/telemetry/{ category } /{ action } "
73
- headers = {"User-Agent" : self ._encode_user_agent (** kwargs )}
74
77
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 } " )
78
86
return response
79
87
except Exception as e :
80
88
if DEBUG_TELEMETRY :
81
89
logger .error (f"There is an error recording telemetry: { e } " )
90
+ traceback .print_exc ()
82
91
83
92
def record_event_async (
84
93
self , category : str = None , action : str = None , detail : str = None , ** kwargs
0 commit comments