Skip to content

Commit 846ae79

Browse files
author
liuhuiqi.7
committed
feat(ark e2e): add get endpoint cert by ak/sk
Change-Id: I82722c49b1f4684f6a9a6d70e56c7e7ac66ef0c8
1 parent 8dabd4f commit 846ae79

File tree

1 file changed

+37
-24
lines changed

1 file changed

+37
-24
lines changed

volcenginesdkarkruntime/_client.py

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ def __init__(
8787

8888
self._default_stream_cls = Stream
8989
self._sts_token_manager: StsTokenManager | None = None
90-
self._certificate_manager: Dict[str, key_agreement_client] | None = None
90+
self._certificate_manager: E2ECertificateManager | None = None
9191

9292
self.chat = resources.Chat(self)
9393
self.bot_chat = resources.BotChat(self)
@@ -103,32 +103,11 @@ def _get_endpoint_sts_token(self, endpoint_id: str):
103103
return self._sts_token_manager.get(endpoint_id)
104104

105105
def _get_endpoint_certificate(self, endpoint_id: str) -> key_agreement_client:
106-
seed_pem = """-----BEGIN CERTIFICATE-----
107-
MIICxjCCAm2gAwIBAgIUG8YxEzdBJnYjBEYSc1j2diJ8/uMwCgYIKoZIzj0EAwIw
108-
gYQxITAfBgNVBAMMGE1hYVMgU0RLIFN1YiBDQSBFQ0MgUDI1NjEbMBkGA1UECgwS
109-
Vm9sY2FubyBFbmdpbmUgQXJrMREwDwYDVQQLDAhTZWN1cml0eTELMAkGA1UEBhMC
110-
Q04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0JlaWppbmcwHhcNMjQwMTAz
111-
MDY1MjM4WhcNMjkwMTAzMDY1MjM4WjCBgjELMAkGA1UEBhMCQ04xEDAOBgNVBAgT
112-
B0JlaWppbmcxEDAOBgNVBAcTB0JlaWppbmcxGzAZBgNVBAoTElZvbGNhbm8gRW5n
113-
aW5lIEFyazERMA8GA1UECxMIU2VjdXJpdHkxHzAdBgNVBAMTFk1hYVMgQ3J5cHRv
114-
IFNESyBPbmxpbmUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATD7RyZC51FCwuK
115-
xYKh2ZCwIvbNDvQfosUk3gKc0B/+euemDWDAaVazuBOm8okHsSmUrsEudeksRruG
116-
LTGu1lBxo4G8MIG5MA4GA1UdDwEB/wQEAwIDiDBYBgNVHR8EUTBPME2gS6BJhkdo
117-
dHRwOi8vY3JsLnZvbGNjYS5jb20vdm9sYzE/c249NURCNEUwNDNFRjQ3MEY3RDBB
118-
REU0RDIyMTNBNTU1NTEzMjEyOEM3MzA4BggrBgEFBQcBAQQsMCowKAYIKwYBBQUH
119-
MAGGHGh0dHA6Ly9vY3NwLnZvbGNjYS5jb20vdm9sYzEwEwYDVR0lBAwwCgYIKwYB
120-
BQUHAwEwCgYIKoZIzj0EAwIDRwAwRAIgFSel9WBkyPmpdG6YzReb7ShCVKq3scT3
121-
9T2mfBgooPkCIHpRalKvIJX5S9oSyTf6iQiUcwzfUHd47Ew+PUV7O6aq
122-
-----END CERTIFICATE-----"""
123106
if self._certificate_manager is None:
124-
self._certificate_manager = {}
125-
if endpoint_id not in self._certificate_manager:
126107
if self.ak is None or self.sk is None:
127108
raise ArkAPIError("must set ak and sk before get endpoint token.")
128-
self._certificate_manager[endpoint_id] = key_agreement_client(
129-
certificate_pem_string=seed_pem
130-
)
131-
return self._certificate_manager[endpoint_id]
109+
self._certificate_manager = E2ECertificateManager(self.ak, self.sk, self.region)
110+
return self._certificate_manager.get(endpoint_id)
132111

133112
def _get_bot_sts_token(self, bot_id: str):
134113
if self._sts_token_manager is None:
@@ -302,3 +281,37 @@ def _load_api_key(self, ep: str, duration_seconds: int,
302281
)
303282

304283
return resp.api_key, resp.expired_time
284+
285+
class E2ECertificateManager(object):
286+
def __init__(self, ak: str, sk: str, region: str):
287+
self._certificate_manager: Dict[str, key_agreement_client] = {}
288+
289+
import volcenginesdkcore
290+
291+
configuration = volcenginesdkcore.Configuration()
292+
configuration.ak = ak
293+
configuration.sk = sk
294+
configuration.region = region
295+
configuration.schema = "https"
296+
297+
volcenginesdkcore.Configuration.set_default(configuration)
298+
self.api_instance = volcenginesdkark.ARKApi()
299+
300+
def _load_api_key(self, ep: str) -> str:
301+
get_endpoint_certificate_request = volcenginesdkark.GetEndpointCertificateRequest(
302+
id=ep
303+
)
304+
try:
305+
resp: volcenginesdkark.GetEndpointCertificateResponse = self.api_instance.get_endpoint_certificate(get_endpoint_certificate_request)
306+
except ApiException as e:
307+
print("Exception when calling api: %s\n" % e)
308+
309+
return resp.pca_instance_certificate
310+
311+
def get(self, ep: str) -> str:
312+
if ep not in self._certificate_manager:
313+
cert_pem = self._load_api_key(ep)
314+
self._certificate_manager[ep] = key_agreement_client(
315+
certificate_pem_string=cert_pem
316+
)
317+
return self._certificate_manager[ep]

0 commit comments

Comments
 (0)