|
6 | 6 | import hashlib |
7 | 7 | import threading |
8 | 8 | import random |
| 9 | +import time |
9 | 10 |
|
10 | 11 | from volcengine.ApiInfo import ApiInfo |
11 | 12 | from volcengine.Credentials import Credentials |
|
14 | 15 | from volcengine.base.Service import Service |
15 | 16 | from volcengine.tls.tls_requests import * |
16 | 17 | from volcengine.tls.tls_responses import * |
| 18 | +from volcengine.tls.tls_requests import DescribeETLTaskRequest |
| 19 | +from volcengine.tls.tls_responses import DescribeETLTaskResponse |
| 20 | +from volcengine.tls.tls_responses import ModifyTraceInstanceResponse |
17 | 21 | from volcengine.tls.tls_exception import TLSException |
| 22 | +from volcengine.tls.const import DELETE_TRACE_INSTANCE, DESCRIBE_TRACE_INSTANCE |
18 | 23 | from volcengine.tls.util import get_logger |
19 | 24 |
|
20 | 25 | API_INFO = { |
|
47 | 52 | CREATE_DOWNLOAD_TASK: ApiInfo(HTTP_POST, CREATE_DOWNLOAD_TASK, {}, {}, {}), |
48 | 53 | DESCRIBE_DOWNLOAD_TASKS: ApiInfo(HTTP_GET, DESCRIBE_DOWNLOAD_TASKS, {}, {}, {}), |
49 | 54 | DESCRIBE_DOWNLOAD_URL: ApiInfo(HTTP_GET, DESCRIBE_DOWNLOAD_URL, {}, {}, {}), |
| 55 | + CANCEL_DOWNLOAD_TASK: ApiInfo(HTTP_POST, CANCEL_DOWNLOAD_TASK, {}, {}, {}), |
50 | 56 | # APIs of shards. |
51 | 57 | DESCRIBE_SHARDS: ApiInfo(HTTP_GET, DESCRIBE_SHARDS, {}, {}, {}), |
| 58 | + MANUAL_SHARD_SPLIT: ApiInfo(HTTP_POST, MANUAL_SHARD_SPLIT, {}, {}, {}), |
52 | 59 | # APIs of host groups. |
53 | 60 | CREATE_HOST_GROUP: ApiInfo(HTTP_POST, CREATE_HOST_GROUP, {}, {}, {}), |
54 | 61 | DELETE_HOST_GROUP: ApiInfo(HTTP_DELETE, DELETE_HOST_GROUP, {}, {}, {}), |
|
98 | 105 | DELETE_IMPORT_TASK: ApiInfo(HTTP_DELETE, DELETE_IMPORT_TASK, {}, {}, {}), |
99 | 106 | MODIFY_IMPORT_TASK: ApiInfo(HTTP_PUT, MODIFY_IMPORT_TASK, {}, {}, {}), |
100 | 107 | DESCRIBE_IMPORT_TASKS: ApiInfo(HTTP_GET, DESCRIBE_IMPORT_TASKS, {}, {}, {}), |
101 | | - DESCRIBE_IMPORT_TASK: ApiInfo(HTTP_GET, DESCRIBE_IMPORT_TASK, {}, {}, {}), |
102 | | - # APIs of shipper. |
103 | | - CREATE_SHIPPER: ApiInfo(HTTP_POST, CREATE_SHIPPER, {}, {}, {}), |
104 | | - DELETE_SHIPPER: ApiInfo(HTTP_DELETE, DELETE_SHIPPER, {}, {}, {}), |
105 | | - MODIFY_SHIPPER: ApiInfo(HTTP_PUT, MODIFY_SHIPPER, {}, {}, {}), |
106 | 108 | DESCRIBE_SHIPPERS: ApiInfo(HTTP_GET, DESCRIBE_SHIPPERS, {}, {}, {}), |
107 | | - DESCRIBE_SHIPPER: ApiInfo(HTTP_GET, DESCRIBE_SHIPPER, {}, {}, {}) |
| 109 | + DESCRIBE_SHIPPER: ApiInfo(HTTP_GET, DESCRIBE_SHIPPER, {}, {}, {}), |
| 110 | + DESCRIBE_ETL_TASK: ApiInfo(HTTP_GET, DESCRIBE_ETL_TASK, {}, {}, {}), |
| 111 | + # APIs of account. |
| 112 | + ACTIVE_TLS_ACCOUNT: ApiInfo(HTTP_POST, ACTIVE_TLS_ACCOUNT, {}, {}, {}), |
| 113 | + # APIs of trace instance. |
| 114 | + CREATE_TRACE_INSTANCE: ApiInfo(HTTP_POST, CREATE_TRACE_INSTANCE, {}, {}, {}), |
| 115 | + DELETE_TRACE_INSTANCE: ApiInfo(HTTP_DELETE, DELETE_TRACE_INSTANCE, {}, {}, {}), |
| 116 | + MODIFY_TRACE_INSTANCE: ApiInfo(HTTP_PUT, MODIFY_TRACE_INSTANCE, {}, {}, {}), |
| 117 | + DESCRIBE_TRACE_INSTANCE: ApiInfo(HTTP_GET, DESCRIBE_TRACE_INSTANCE, {}, {}, {}), |
| 118 | + DESCRIBE_TRACE_INSTANCES: ApiInfo(HTTP_GET, DESCRIBE_TRACE_INSTANCES, {}, {}, {}), |
| 119 | + # APIs of account status. |
| 120 | + GET_ACCOUNT_STATUS: ApiInfo(HTTP_GET, GET_ACCOUNT_STATUS, {}, {}, {}) |
108 | 121 | } |
109 | 122 |
|
110 | 123 | HEADER_API_VERSION = "x-tls-apiversion" |
@@ -383,19 +396,29 @@ def put_logs(self, put_logs_request: PutLogsRequest) -> PutLogsResponse: |
383 | 396 |
|
384 | 397 | def put_logs_v2(self, request: PutLogsV2Request) -> PutLogsResponse: |
385 | 398 | log_group_list = LogGroupList() |
386 | | - log_group = log_group_list.log_groups.add() |
| 399 | + log_group = log_group_list.log_groups.add() # pylint: disable=no-member |
387 | 400 | if request.logs.source is not None: |
388 | 401 | log_group.source = request.logs.source |
389 | 402 | if request.logs.filename is not None: |
390 | 403 | log_group.filename = request.logs.filename |
| 404 | + # 添加日志组标签 |
| 405 | + if request.logs.log_tags: |
| 406 | + for key, value in request.logs.log_tags.items(): |
| 407 | + log_tag = log_group.log_tags.add() |
| 408 | + log_tag.key = str(key) |
| 409 | + log_tag.value = str(value) |
391 | 410 | for v in request.logs.logs: |
392 | 411 | new_log = log_group.logs.add() |
393 | 412 | new_log.time = v.time |
| 413 | + # 设置纳秒级时间戳(如果提供) |
| 414 | + if v.time_ns is not None: |
| 415 | + new_log.TimeNs = v.time_ns |
394 | 416 | for key in v.log_dict.keys(): |
395 | 417 | log_content = new_log.contents.add() |
396 | 418 | log_content.key = str(key) |
397 | 419 | log_content.value = str(v.log_dict[key]) |
398 | | - put_logs_request = PutLogsRequest(request.topic_id, log_group_list, request.hash_key, request.compression) |
| 420 | + put_logs_request = PutLogsRequest(request.topic_id, log_group_list, |
| 421 | + request.hash_key, request.compression, request.content_md5) |
399 | 422 | return self.put_logs(put_logs_request) |
400 | 423 |
|
401 | 424 | def describe_cursor(self, describe_cursor_request: DescribeCursorRequest) -> DescribeCursorResponse: |
@@ -503,6 +526,13 @@ def describe_shards(self, describe_shards_request: DescribeShardsRequest) -> Des |
503 | 526 |
|
504 | 527 | return DescribeShardsResponse(response) |
505 | 528 |
|
| 529 | + def manual_shard_split(self, manual_shard_split_request: ManualShardSplitRequest) -> ManualShardSplitResponse: |
| 530 | + if manual_shard_split_request.check_validation() is False: |
| 531 | + raise TLSException(error_code="InvalidArgument", error_message="Invalid request, please check it") |
| 532 | + response = self.__request(api=MANUAL_SHARD_SPLIT, body=manual_shard_split_request.get_api_input()) |
| 533 | + |
| 534 | + return ManualShardSplitResponse(response) |
| 535 | + |
506 | 536 | def create_host_group(self, create_host_group_request: CreateHostGroupRequest) -> CreateHostGroupResponse: |
507 | 537 | if create_host_group_request.check_validation() is False: |
508 | 538 | raise TLSException(error_code="InvalidArgument", error_message="Invalid request, please check it") |
@@ -834,6 +864,72 @@ def describe_shipper(self, describe_shipper_request: DescribeShipperRequest) -> |
834 | 864 | response = self.__request(api=DESCRIBE_SHIPPER, params=describe_shipper_request.get_api_input()) |
835 | 865 | return DescribeShipperResponse(response) |
836 | 866 |
|
| 867 | + def describe_etl_task(self, describe_etl_task_request: DescribeETLTaskRequest) -> DescribeETLTaskResponse: |
| 868 | + if describe_etl_task_request.check_validation() is False: |
| 869 | + raise TLSException(error_code="InvalidArgument", error_message="Invalid request, please check it") |
| 870 | + response = self.__request(api=DESCRIBE_ETL_TASK, params=describe_etl_task_request.get_api_input()) |
| 871 | + return DescribeETLTaskResponse(response) |
| 872 | + |
| 873 | + def create_trace_instance(self, create_trace_instance_request: CreateTraceInstanceRequest) -> CreateTraceInstanceResponse: |
| 874 | + if create_trace_instance_request.check_validation() is False: |
| 875 | + raise TLSException(error_code="InvalidArgument", error_message="Invalid request, please check it") |
| 876 | + response = self.__request(api=CREATE_TRACE_INSTANCE, body=create_trace_instance_request.get_api_input()) |
| 877 | + return CreateTraceInstanceResponse(response) |
| 878 | + |
| 879 | + def delete_trace_instance(self, delete_trace_instance_request: DeleteTraceInstanceRequest) -> DeleteTraceInstanceResponse: |
| 880 | + if delete_trace_instance_request.check_validation() is False: |
| 881 | + raise TLSException(error_code="InvalidArgument", error_message="Invalid request, please check it") |
| 882 | + response = self.__request(api=DELETE_TRACE_INSTANCE, body=delete_trace_instance_request.get_api_input()) |
| 883 | + return DeleteTraceInstanceResponse(response) |
| 884 | + |
| 885 | + def describe_trace_instance(self, describe_trace_instance_request: DescribeTraceInstanceRequest) -> DescribeTraceInstanceResponse: |
| 886 | + if describe_trace_instance_request.check_validation() is False: |
| 887 | + raise TLSException(error_code="InvalidArgument", error_message="Invalid request, please check it") |
| 888 | + response = self.__request(api=DESCRIBE_TRACE_INSTANCE, |
| 889 | + params=describe_trace_instance_request.get_api_input()) |
| 890 | + return DescribeTraceInstanceResponse(response) |
| 891 | + |
| 892 | + def describe_trace_instances(self, describe_trace_instances_request: DescribeTraceInstancesRequest) -> DescribeTraceInstancesResponse: |
| 893 | + if describe_trace_instances_request.check_validation() is False: |
| 894 | + raise TLSException(error_code="InvalidArgument", error_message="Invalid request, please check it") |
| 895 | + response = self.__request(api=DESCRIBE_TRACE_INSTANCES, |
| 896 | + params=describe_trace_instances_request.get_api_input()) |
| 897 | + return DescribeTraceInstancesResponse(response) |
| 898 | + |
| 899 | + def active_tls_account(self) -> ActiveTlsAccountResponse: |
| 900 | + """\ |
| 901 | + 激活TLS账户 |
| 902 | + :return: ActiveTlsAccountResponse |
| 903 | + :rtype: ActiveTlsAccountResponse |
| 904 | + """ |
| 905 | + response = self.__request(api=ACTIVE_TLS_ACCOUNT, body={}) |
| 906 | + return ActiveTlsAccountResponse(response) |
| 907 | + |
837 | 908 | def describe_shippers(self, describe_shippers_request: DescribeShippersRequest) -> DescribeShippersResponse: |
838 | 909 | response = self.__request(api=DESCRIBE_SHIPPERS, params=describe_shippers_request.get_api_input()) |
839 | 910 | return DescribeShippersResponse(response) |
| 911 | + |
| 912 | + def cancel_download_task(self, cancel_download_task_request) -> 'CancelDownloadTaskResponse': |
| 913 | + if not cancel_download_task_request.check_validation(): |
| 914 | + raise TLSException(error_code="InvalidArgument", error_message="Invalid request, please check it") |
| 915 | + response = self.__request(api=CANCEL_DOWNLOAD_TASK, body=cancel_download_task_request.get_api_input()) |
| 916 | + return CancelDownloadTaskResponse(response) |
| 917 | + |
| 918 | + def modify_trace_instance(self, modify_trace_instance_request: ModifyTraceInstanceRequest) -> ModifyTraceInstanceResponse: |
| 919 | + """修改 Trace 实例 |
| 920 | +
|
| 921 | + :param modify_trace_instance_request: 修改请求 |
| 922 | + :type modify_trace_instance_request: ModifyTraceInstanceRequest |
| 923 | + :return: 修改结果 |
| 924 | + :rtype: ModifyTraceInstanceResponse |
| 925 | + """ |
| 926 | + if not modify_trace_instance_request.check_validation(): |
| 927 | + raise TLSException(error_code="InvalidArgument", error_message="Invalid request, please check it") |
| 928 | + response = self.__request(api=MODIFY_TRACE_INSTANCE, body=modify_trace_instance_request.get_api_input()) |
| 929 | + return ModifyTraceInstanceResponse(response) |
| 930 | + |
| 931 | + def get_account_status(self, get_account_status_request: GetAccountStatusRequest) -> GetAccountStatusResponse: |
| 932 | + if get_account_status_request.check_validation() is False: |
| 933 | + raise TLSException(error_code="InvalidArgument", error_message="Invalid request, please check it") |
| 934 | + response = self.__request(api=GET_ACCOUNT_STATUS, params=get_account_status_request.get_api_input()) |
| 935 | + return GetAccountStatusResponse(response) |
0 commit comments