dataops-sdk 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. dataops_sdk-0.3.0/PKG-INFO +25 -0
  2. dataops_sdk-0.3.0/pyproject.toml +49 -0
  3. dataops_sdk-0.3.0/setup.cfg +4 -0
  4. dataops_sdk-0.3.0/src/dataops_sdk/__init__.py +84 -0
  5. dataops_sdk-0.3.0/src/dataops_sdk/constants.py +6 -0
  6. dataops_sdk-0.3.0/src/dataops_sdk/exceptions.py +31 -0
  7. dataops_sdk-0.3.0/src/dataops_sdk/runner/__init__.py +46 -0
  8. dataops_sdk-0.3.0/src/dataops_sdk/runner/datasource_factory.py +83 -0
  9. dataops_sdk-0.3.0/src/dataops_sdk/runner/schemas/nacos/__init__.py +5 -0
  10. dataops_sdk-0.3.0/src/dataops_sdk/runner/schemas/nacos/config.py +40 -0
  11. dataops_sdk-0.3.0/src/dataops_sdk/runner/schemas/nacos/constants.py +235 -0
  12. dataops_sdk-0.3.0/src/dataops_sdk/runner/schemas/nacos/instance.py +103 -0
  13. dataops_sdk-0.3.0/src/dataops_sdk/runner/schemas/nacos/nacos_exception.py +44 -0
  14. dataops_sdk-0.3.0/src/dataops_sdk/runner/schemas/nacos/naming_param.py +62 -0
  15. dataops_sdk-0.3.0/src/dataops_sdk/runner/schemas/nacos/naming_request.py +84 -0
  16. dataops_sdk-0.3.0/src/dataops_sdk/runner/schemas/nacos/naming_response.py +50 -0
  17. dataops_sdk-0.3.0/src/dataops_sdk/runner/schemas/nacos/preserved_metadata_key.py +10 -0
  18. dataops_sdk-0.3.0/src/dataops_sdk/runner/schemas/nacos/service.py +119 -0
  19. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/__init__.py +42 -0
  20. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/common.py +209 -0
  21. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/dbConn_base.py +256 -0
  22. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/dbConn_sync.py +485 -0
  23. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/duckdb_manager.py +203 -0
  24. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/file_transfer_base.py +307 -0
  25. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/ftp_file_transfer.py +242 -0
  26. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/log.py +50 -0
  27. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/nacos.py +96 -0
  28. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/neo4j_sync.py +236 -0
  29. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/queue_base.py +224 -0
  30. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/queue_kafka.py +150 -0
  31. dataops_sdk-0.3.0/src/dataops_sdk/runner/utils/sftp_file_transfer.py +243 -0
  32. dataops_sdk-0.3.0/src/dataops_sdk/schemas/__init__.py +32 -0
  33. dataops_sdk-0.3.0/src/dataops_sdk/schemas/alarm.py +38 -0
  34. dataops_sdk-0.3.0/src/dataops_sdk/schemas/api.py +37 -0
  35. dataops_sdk-0.3.0/src/dataops_sdk/schemas/data_table.py +437 -0
  36. dataops_sdk-0.3.0/src/dataops_sdk/schemas/datasource.py +26 -0
  37. dataops_sdk-0.3.0/src/dataops_sdk/schemas/dict_.py +13 -0
  38. dataops_sdk-0.3.0/src/dataops_sdk/schemas/enums.py +120 -0
  39. dataops_sdk-0.3.0/src/dataops_sdk/schemas/group.py +40 -0
  40. dataops_sdk-0.3.0/src/dataops_sdk/schemas/hazard.py +151 -0
  41. dataops_sdk-0.3.0/src/dataops_sdk/schemas/meta.py +175 -0
  42. dataops_sdk-0.3.0/src/dataops_sdk/schemas/query.py +175 -0
  43. dataops_sdk-0.3.0/src/dataops_sdk/schemas/report.py +22 -0
  44. dataops_sdk-0.3.0/src/dataops_sdk/schemas/skill.py +70 -0
  45. dataops_sdk-0.3.0/src/dataops_sdk/schemas/table.py +65 -0
  46. dataops_sdk-0.3.0/src/dataops_sdk/schemas/user.py +52 -0
  47. dataops_sdk-0.3.0/src/dataops_sdk/schemas/widget.py +651 -0
  48. dataops_sdk-0.3.0/src/dataops_sdk/schemas/workflow.py +63 -0
  49. dataops_sdk-0.3.0/src/dataops_sdk/services/__init__.py +110 -0
  50. dataops_sdk-0.3.0/src/dataops_sdk/services/alarm.py +324 -0
  51. dataops_sdk-0.3.0/src/dataops_sdk/services/api.py +28 -0
  52. dataops_sdk-0.3.0/src/dataops_sdk/services/auth.py +120 -0
  53. dataops_sdk-0.3.0/src/dataops_sdk/services/data_table.py +485 -0
  54. dataops_sdk-0.3.0/src/dataops_sdk/services/dataset.py +127 -0
  55. dataops_sdk-0.3.0/src/dataops_sdk/services/datasource.py +57 -0
  56. dataops_sdk-0.3.0/src/dataops_sdk/services/dict_.py +69 -0
  57. dataops_sdk-0.3.0/src/dataops_sdk/services/hazard.py +260 -0
  58. dataops_sdk-0.3.0/src/dataops_sdk/services/meta.py +523 -0
  59. dataops_sdk-0.3.0/src/dataops_sdk/services/metrics.py +42 -0
  60. dataops_sdk-0.3.0/src/dataops_sdk/services/ref.py +66 -0
  61. dataops_sdk-0.3.0/src/dataops_sdk/services/report.py +36 -0
  62. dataops_sdk-0.3.0/src/dataops_sdk/services/skill.py +276 -0
  63. dataops_sdk-0.3.0/src/dataops_sdk/services/table.py +340 -0
  64. dataops_sdk-0.3.0/src/dataops_sdk/services/widget.py +143 -0
  65. dataops_sdk-0.3.0/src/dataops_sdk/services/workflow.py +102 -0
  66. dataops_sdk-0.3.0/src/dataops_sdk/session.py +292 -0
  67. dataops_sdk-0.3.0/src/dataops_sdk/tiptap/__init__.py +30 -0
  68. dataops_sdk-0.3.0/src/dataops_sdk/tiptap/builder.py +75 -0
  69. dataops_sdk-0.3.0/src/dataops_sdk/tiptap/constants.py +133 -0
  70. dataops_sdk-0.3.0/src/dataops_sdk/tiptap/markdown_parser.py +294 -0
  71. dataops_sdk-0.3.0/src/dataops_sdk/tiptap/models.py +43 -0
  72. dataops_sdk-0.3.0/src/dataops_sdk/tiptap/parse_utils.py +889 -0
  73. dataops_sdk-0.3.0/src/dataops_sdk/tiptap/render_utils.py +846 -0
  74. dataops_sdk-0.3.0/src/dataops_sdk/tiptap/renderers.py +51 -0
  75. dataops_sdk-0.3.0/src/dataops_sdk/tiptap/tool.py +629 -0
  76. dataops_sdk-0.3.0/src/dataops_sdk/utils/__init__.py +15 -0
  77. dataops_sdk-0.3.0/src/dataops_sdk/utils/common.py +211 -0
  78. dataops_sdk-0.3.0/src/dataops_sdk/utils/utils.py +120 -0
  79. dataops_sdk-0.3.0/src/dataops_sdk.egg-info/PKG-INFO +25 -0
  80. dataops_sdk-0.3.0/src/dataops_sdk.egg-info/SOURCES.txt +85 -0
  81. dataops_sdk-0.3.0/src/dataops_sdk.egg-info/dependency_links.txt +1 -0
  82. dataops_sdk-0.3.0/src/dataops_sdk.egg-info/requires.txt +22 -0
  83. dataops_sdk-0.3.0/src/dataops_sdk.egg-info/top_level.txt +1 -0
  84. dataops_sdk-0.3.0/tests/test_constants.py +30 -0
  85. dataops_sdk-0.3.0/tests/test_exceptions.py +91 -0
  86. dataops_sdk-0.3.0/tests/test_session.py +466 -0
  87. dataops_sdk-0.3.0/tests/test_utils.py +317 -0
@@ -0,0 +1,25 @@
1
+ Metadata-Version: 2.4
2
+ Name: dataops-sdk
3
+ Version: 0.3.0
4
+ Summary: Python SDK for the DataOps platform.
5
+ Requires-Python: >=3.11
6
+ Requires-Dist: pydantic<3,>=2
7
+ Requires-Dist: pydantic-core
8
+ Requires-Dist: pydantic-settings>=2.14.2
9
+ Requires-Dist: httpx2>=2.5.0
10
+ Requires-Dist: jinja2>=3.1.6
11
+ Requires-Dist: markdown-it-py<4,>=3
12
+ Requires-Dist: cryptography>=49.0.0
13
+ Provides-Extra: runner
14
+ Requires-Dist: paramiko>4; extra == "runner"
15
+ Requires-Dist: pandas; extra == "runner"
16
+ Requires-Dist: sqlalchemy; extra == "runner"
17
+ Requires-Dist: pymysql; extra == "runner"
18
+ Requires-Dist: doris-python>=1.0.3; extra == "runner"
19
+ Requires-Dist: oracledb~=4.0.1; extra == "runner"
20
+ Requires-Dist: neo4j; extra == "runner"
21
+ Requires-Dist: kafka-python>3; extra == "runner"
22
+ Provides-Extra: dev
23
+ Requires-Dist: pytest; extra == "dev"
24
+ Requires-Dist: pytest-mock; extra == "dev"
25
+ Requires-Dist: ruff; extra == "dev"
@@ -0,0 +1,49 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "dataops-sdk"
7
+ dynamic = ["version"]
8
+ description = "Python SDK for the DataOps platform."
9
+ requires-python = ">=3.11"
10
+ dependencies = [
11
+ "pydantic>=2,<3",
12
+ "pydantic-core",
13
+ "pydantic-settings>=2.14.2",
14
+ "httpx2>=2.5.0",
15
+ "jinja2>=3.1.6",
16
+ "markdown-it-py>=3,<4",
17
+ "cryptography>=49.0.0",
18
+ ]
19
+
20
+ [project.optional-dependencies]
21
+ runner = [
22
+ # 文件传输
23
+ "paramiko>4",
24
+ # 数据分析
25
+ "pandas",
26
+ # 关系数据库
27
+ "sqlalchemy",
28
+ "pymysql",
29
+ "doris-python>=1.0.3",
30
+ "oracledb~=4.0.1",
31
+ # 图数据库
32
+ "neo4j",
33
+ # 队列驱动
34
+ "kafka-python>3",
35
+ ]
36
+ dev = ["pytest", "pytest-mock", "ruff"]
37
+
38
+ [tool.setuptools]
39
+ package-dir = {"" = "src"}
40
+ include-package-data = true
41
+
42
+ [tool.setuptools.dynamic]
43
+ version = {attr = "dataops_sdk.__version__"}
44
+
45
+ [tool.setuptools.packages.find]
46
+ where = ["src"]
47
+
48
+ [tool.setuptools.package-data]
49
+ dataops_sdk = ["py.typed"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,84 @@
1
+ from . import runner, schemas, utils
2
+ from .services import ( # noqa: F401
3
+ release_list_create,
4
+ release_list_get_by_code,
5
+ release_list_get_by_name,
6
+ release_list_list,
7
+ release_list_page,
8
+ release_list_total,
9
+ release_list_update,
10
+ release_ref_list,
11
+ release_ref_list_by_ref,
12
+ service_clear_hazard_history_records,
13
+ service_count_alarm_action,
14
+ service_count_alarm_rule_matches,
15
+ service_count_alarm_rules,
16
+ service_count_alarm_specs,
17
+ service_count_table_by_code,
18
+ service_count_table_by_name,
19
+ service_count_widget_by_code,
20
+ service_create_data_table,
21
+ service_create_data_table_record,
22
+ service_delete_data_table_record_by_id,
23
+ service_delete_data_table_record_by_id_list,
24
+ service_exec_sql_by_datasource,
25
+ service_find_alarm_table_data,
26
+ service_find_meta_by_codes,
27
+ service_get_alarm_rule_enums,
28
+ service_get_alarm_table_columns,
29
+ service_get_api_by_code,
30
+ service_get_api_by_name,
31
+ service_get_current_application,
32
+ service_get_data_table_by_code,
33
+ service_get_data_table_by_name,
34
+ service_get_data_table_data_by_code,
35
+ service_get_data_table_data_by_name,
36
+ service_get_data_table_record_by_id,
37
+ service_get_data_table_reference_list,
38
+ service_get_data_table_total,
39
+ service_get_dataset_data_by_code,
40
+ service_get_dataset_detail_by_code,
41
+ service_get_datasource_by_name,
42
+ service_get_datasource_config_by_application_id,
43
+ service_get_dict_detail_by_code,
44
+ service_get_dict_detail_by_name,
45
+ service_get_hazard_task_log_records,
46
+ service_get_hazard_task_logs,
47
+ service_get_main_datasource_config_by_application,
48
+ service_get_metrics,
49
+ service_get_rel_table_columns,
50
+ service_get_report,
51
+ service_get_table_data_by_code,
52
+ service_get_table_data_by_name,
53
+ service_get_table_detail_by_code,
54
+ service_get_table_detail_by_name,
55
+ service_get_widget_data_by_code,
56
+ service_get_widget_detail_by_code,
57
+ service_get_workflow_by_code,
58
+ service_get_workflow_by_name,
59
+ service_list_alarm_rule_matches,
60
+ service_list_alarm_rules,
61
+ service_list_alarm_specs,
62
+ service_list_applications,
63
+ service_list_datasets,
64
+ service_list_dicts,
65
+ service_list_hazard_history_records,
66
+ service_list_hazard_records,
67
+ service_list_metrics,
68
+ service_list_reports,
69
+ service_list_tables,
70
+ service_list_widgets,
71
+ service_list_workflows,
72
+ service_login,
73
+ service_logout,
74
+ service_ref_backward,
75
+ service_ref_forward,
76
+ service_set_application,
77
+ service_start_workflow,
78
+ service_start_workflow_async,
79
+ service_trigger_hazard_task,
80
+ service_update_data_table_record_by_id,
81
+ service_update_data_table_record_by_id_list,
82
+ )
83
+
84
+ __version__ = "0.3.0"
@@ -0,0 +1,6 @@
1
+ from typing import Final
2
+
3
+ USER_INFO_FILE: Final[str] = "user_info.json"
4
+ APPLICATION_FILE: Final[str] = "application.json"
5
+
6
+ DEFAULT_SECRET_KEY: Final[str] = "e0XxEhkWSJcA6Aps"
@@ -0,0 +1,31 @@
1
+ class DataOpsError(Exception):
2
+ """DataOps API 错误基类。"""
3
+
4
+ def __init__(self, message: str, status_code: int | None = None):
5
+ self.message = message
6
+ self.status_code = status_code
7
+ super().__init__(message)
8
+
9
+
10
+ class NotFoundError(DataOpsError):
11
+ """资源未找到。"""
12
+
13
+ pass
14
+
15
+
16
+ class AuthenticationError(DataOpsError):
17
+ """认证失败异常。"""
18
+
19
+ pass
20
+
21
+
22
+ class FailedToCreateError(DataOpsError):
23
+ """创建失败异常。"""
24
+
25
+ pass
26
+
27
+
28
+ class FailedToUpdateError(DataOpsError):
29
+ """更新失败异常。"""
30
+
31
+ pass
@@ -0,0 +1,46 @@
1
+ """Runner 包 - 独立的脚本执行工具集。
2
+
3
+ 提供脚本执行所需的数据库连接、DuckDB 管理、Neo4j 连接等工具。
4
+ 可作为独立模块被导入使用。
5
+
6
+ Modules:
7
+ schemas: Nacos 配置数据模型
8
+ utils: 通用工具(数据库连接、加密、日志等)
9
+
10
+ Example:
11
+ >>> from runner.utils import DatabaseConn, DuckDBManager
12
+ """
13
+
14
+ from .datasource_factory import get_datasource_instent
15
+ from .schemas.nacos import NacosSettings
16
+ from .utils import (
17
+ DatabaseConn,
18
+ FTPFileTransfer,
19
+ KafkaQueue,
20
+ Neo4jConn,
21
+ SFTPFileTransfer,
22
+ decrypt_body,
23
+ encrypt_body,
24
+ generate_uuid,
25
+ get_service_instance,
26
+ getLogger,
27
+ parse_args,
28
+ print_json,
29
+ )
30
+
31
+ __all__ = [
32
+ "DatabaseConn",
33
+ "FTPFileTransfer",
34
+ "KafkaQueue",
35
+ "SFTPFileTransfer",
36
+ "Neo4jConn",
37
+ "decrypt_body",
38
+ "encrypt_body",
39
+ "getLogger",
40
+ "print_json",
41
+ "generate_uuid",
42
+ "parse_args",
43
+ "NacosSettings",
44
+ "get_service_instance",
45
+ "get_datasource_instent",
46
+ ]
@@ -0,0 +1,83 @@
1
+ """
2
+ 数据源实例工厂模块。
3
+
4
+ 根据数据源元数据动态创建对应的连接实例(数据库或消息队列)。
5
+ """
6
+
7
+ from dataops_sdk.services.datasource import service_get_datasource_by_name
8
+
9
+
10
+ def get_datasource_instent(datasource: str, log_sql: bool | None = None):
11
+ """
12
+ 根据数据源名称获取对应的连接实例。
13
+
14
+ 通过数据源名称从平台查询元数据,根据数据源的 category(数据库/消息队列)
15
+ 和 type(具体类型)动态创建并返回相应的连接实例。
16
+
17
+ Args:
18
+ datasource: 数据源名称,用于从平台查询数据源元数据。
19
+ log_sql: 是否记录 SQL 执行日志,传递给数据库连接实例。
20
+
21
+ Returns:
22
+ DatabaseConn: 通用数据库连接实例(MySQL、PostgreSQL 等)。
23
+ Neo4jConn: Neo4j 图数据库连接实例。
24
+ KafkaQueue: Kafka 消息队列连接实例。
25
+
26
+ Raises:
27
+ NotImplementedError: 当数据源类型未被支持时抛出。
28
+
29
+ Note:
30
+ 当前支持的 category:
31
+ - database: 关系型/图数据库(Neo4j、MySQL、PostgreSQL 等)
32
+ - queue: 消息队列(Kafka)
33
+ """
34
+ # 从平台查询数据源元数据
35
+ meta = service_get_datasource_by_name(datasource)
36
+
37
+ # 根据数据源类别分发处理
38
+ if meta.data.category == "queue":
39
+ # 消息队列类型处理
40
+ if meta.data.type == "kafka":
41
+ # Kafka 连接需要 bootstrap_servers
42
+ assert meta.data.bootstrap_servers, "bootstrap_servers is required, but not provided"
43
+ from dataops_sdk.runner import KafkaQueue
44
+
45
+ return KafkaQueue(meta.data.bootstrap_servers)
46
+ else:
47
+ raise NotImplementedError(f"Queue type {meta.data.type} is not supported")
48
+
49
+ elif meta.data.category == "database":
50
+ # 数据库类型处理,验证必要的连接参数
51
+ assert meta.data.ip, "host is required, but not provided"
52
+ assert meta.data.port, "port is required, but not provided"
53
+ assert meta.data.username, "user is required, but not provided"
54
+ assert meta.data.password, "password is required, but not provided"
55
+ assert meta.data.database, "database is required, but not provided"
56
+
57
+ if meta.data.type == "neo4j":
58
+ # Neo4j 图数据库使用专用连接类
59
+ from dataops_sdk.runner import Neo4jConn
60
+
61
+ return Neo4jConn(
62
+ host=meta.data.ip,
63
+ port=meta.data.port,
64
+ user=meta.data.username,
65
+ password=meta.data.password,
66
+ db=meta.data.database,
67
+ log_sql=log_sql,
68
+ name=meta.title,
69
+ )
70
+ else:
71
+ # 通用数据库连接,支持 MySQL、PostgreSQL 等
72
+ from dataops_sdk.runner import DatabaseConn
73
+
74
+ return DatabaseConn(
75
+ host=meta.data.ip,
76
+ port=meta.data.port,
77
+ user=meta.data.username,
78
+ password=meta.data.password,
79
+ db=meta.data.database,
80
+ db_type=meta.data.type,
81
+ log_sql=log_sql,
82
+ name=meta.title,
83
+ )
@@ -0,0 +1,5 @@
1
+ from .config import NacosSettings
2
+ from .instance import Instance
3
+ from .service import Service
4
+
5
+ __all__ = ["Service", "Instance", "NacosSettings"]
@@ -0,0 +1,40 @@
1
+ """Nacos 配置模块。
2
+
3
+ 定义 Nacos 相关的配置数据模型,与主应用中的 Settings 类似,
4
+ 但用于 runner 子包独立运行时。
5
+
6
+ Classes:
7
+ NacosSettings: Nacos 配置类
8
+
9
+ Example:
10
+ >>> from runner.schemas.nacos import NacosSettings
11
+ >>> config = NacosSettings()
12
+ """
13
+
14
+ from typing import Annotated
15
+
16
+ from pydantic import Field
17
+ from pydantic_settings import BaseSettings, SettingsConfigDict
18
+
19
+
20
+ class NacosSettings(BaseSettings):
21
+ """Nacos 配置类。
22
+
23
+ 从 .env 文件和环境变量加载配置。配置项包括后端监听、
24
+ 子系统连接和 Nacos 服务发现参数。
25
+
26
+ Attributes:
27
+ nacos_addrs: NACOS服务地址
28
+ nacos_user: NACOS用户名
29
+ nacos_password: NACOS密码
30
+ nacos_discovery_namespace: NACOS服务发现命名空间
31
+ nacos_group_name: NACOS服务发现组名
32
+ """
33
+
34
+ nacos_addrs: Annotated[str, Field(description="NACOS服务地址")]
35
+ nacos_user: Annotated[str, Field(description="NACOS用户名")]
36
+ nacos_password: Annotated[str, Field(description="NACOS密码")]
37
+ nacos_discovery_namespace: Annotated[str, Field(description="NACOS服务发现命名空间")]
38
+ nacos_group_name: Annotated[str, Field(description="NACOS服务发现组名")] = "DEFAULT_GROUP"
39
+
40
+ model_config = SettingsConfigDict(extra="ignore")
@@ -0,0 +1,235 @@
1
+ class Constants:
2
+ NAMING_MODULE = "naming"
3
+
4
+ CONFIG_MODULE = "config"
5
+
6
+ AI_MODULE = "ai"
7
+
8
+ LABEL_SOURCE = "source"
9
+
10
+ LABEL_SOURCE_SDK = "sdk"
11
+
12
+ LABEL_SOURCE_CLUSTER = "cluster"
13
+
14
+ LABEL_MODULE = "module"
15
+
16
+ CLIENT_VERSION = "Nacos-Python-Client:v3.2.0"
17
+
18
+ DATA_IN_BODY_VERSION = 204
19
+
20
+ DEFAULT_GROUP = "DEFAULT_GROUP"
21
+
22
+ WEB_CONTEXT = "/nacos"
23
+
24
+ APPNAME = "AppName"
25
+
26
+ UNKNOWN_APP = "UnknownApp"
27
+
28
+ DEFAULT_DOMAINNAME = "commonconfig.config-host.taobao.com"
29
+
30
+ DAILY_DOMAINNAME = "commonconfig.taobao.net"
31
+
32
+ NULL = ""
33
+
34
+ DATAID = "dataId"
35
+
36
+ GROUP = "group"
37
+
38
+ DEFAULT_HEARTBEAT_INTERVAL = 5
39
+
40
+ LAST_MODIFIED = "Last-Modified"
41
+
42
+ ACCEPT_ENCODING = "Accept-Encoding"
43
+
44
+ CONTENT_ENCODING = "Content-Encoding"
45
+
46
+ PROBE_MODIFY_REQUEST = "Listening-Configs"
47
+
48
+ PROBE_MODIFY_RESPONSE = "Probe-Modify-Response"
49
+
50
+ PROBE_MODIFY_RESPONSE_NEW = "Probe-Modify-Response-New"
51
+
52
+ USE_ZIP = "true"
53
+
54
+ CONTENT_MD5 = "Content-MD5"
55
+
56
+ CONFIG_VERSION = "Config-Version"
57
+
58
+ CONFIG_TYPE = "Config-Type"
59
+
60
+ ENCRYPTED_DATA_KEY = "Encrypted-Data-Key"
61
+
62
+ IF_MODIFIED_SINCE = "If-Modified-Since"
63
+
64
+ SPACING_INTERVAL = "client-spacing-interval"
65
+
66
+ BASE_PATH = "/v1/cs"
67
+
68
+ SERVICE_BASE_PATH = "/v1/ns"
69
+
70
+ CONFIG_CONTROLLER_PATH = BASE_PATH + "/configs"
71
+
72
+ TOKEN = "token"
73
+
74
+ ACCESS_TOKEN = "accessToken"
75
+
76
+ TOKEN_TTL = "tokenTtl"
77
+
78
+ GLOBAL_ADMIN = "globalAdmin"
79
+
80
+ USERNAME = "username"
81
+
82
+ TOKEN_REFRESH_WINDOW = "tokenRefreshWindow"
83
+
84
+ # second.
85
+ ASYNC_UPDATE_ADDRESS_INTERVAL = 300
86
+
87
+ # second.
88
+ POLLING_INTERVAL_TIME = 15
89
+
90
+ # millisecond.
91
+ ONCE_TIMEOUT = 2000
92
+
93
+ # millisecond.
94
+ SO_TIMEOUT = 60000
95
+
96
+ # millisecond.
97
+ CONFIG_LONG_POLL_TIMEOUT = 30000
98
+
99
+ # millisecond.
100
+ MIN_CONFIG_LONG_POLL_TIMEOUT = 10000
101
+
102
+ # millisecond.
103
+ CONFIG_RETRY_TIME = 2000
104
+
105
+ # Maximum number of retries.
106
+ MAX_RETRY = 3
107
+
108
+ # millisecond.
109
+ RECV_WAIT_TIMEOUT = ONCE_TIMEOUT * 5
110
+
111
+ ENCODE = "UTF-8"
112
+
113
+ MAP_FILE = "map-file.js"
114
+
115
+ FLOW_CONTROL_THRESHOLD = 20
116
+
117
+ FLOW_CONTROL_SLOT = 10
118
+
119
+ FLOW_CONTROL_INTERVAL = 1000
120
+
121
+ DEFAULT_PROTECT_THRESHOLD = 0.0
122
+
123
+ LINE_SEPARATOR = chr(1)
124
+
125
+ WORD_SEPARATOR = chr(2)
126
+
127
+ LONGPOLLING_LINE_SEPARATOR = "\r\n"
128
+
129
+ CLIENT_APPNAME_HEADER = "Client-AppName"
130
+
131
+ APP_NAME_HEADER = "AppName"
132
+
133
+ CLIENT_REQUEST_TS_HEADER = "Client-RequestTS"
134
+
135
+ CLIENT_REQUEST_TOKEN_HEADER = "Client-RequestToken"
136
+
137
+ ATOMIC_MAX_SIZE = 1000
138
+
139
+ NAMING_INSTANCE_ID_SPLITTER = "#"
140
+
141
+ NAMING_INSTANCE_ID_SEG_COUNT = 4
142
+
143
+ NAMING_HTTP_HEADER_SPLITTER = "\\|"
144
+
145
+ DEFAULT_CLUSTER_NAME = "DEFAULT"
146
+
147
+ DEFAULT_HEART_BEAT_TIMEOUT = 15000
148
+
149
+ DEFAULT_IP_DELETE_TIMEOUT = 30000
150
+
151
+ DEFAULT_HEART_BEAT_INTERVAL = 5000
152
+
153
+ DEFAULT_NAMESPACE_ID = ""
154
+
155
+ NAMING_DEFAULT_NAMESPACE_ID = "public"
156
+
157
+ DEFAULT_USE_CLOUD_NAMESPACE_PARSING = True
158
+
159
+ WRITE_REDIRECT_CODE = 307
160
+
161
+ RESPONSE_SUCCESS_CODE = 200
162
+
163
+ REQUEST_DOMAIN_RETRY_TIME = 3
164
+
165
+ SERVICE_INFO_SPLITER = "@@"
166
+
167
+ CONFIG_INFO_SPLITER = "@@"
168
+
169
+ SERVICE_INFO_SPLIT_COUNT = 2
170
+
171
+ NULL_STRING = "null"
172
+
173
+ NUMBER_PATTERN = "^\\d+$"
174
+
175
+ ANY_PATTERN = ".*"
176
+
177
+ DEFAULT_INSTANCE_ID_GENERATOR = "simple"
178
+
179
+ SNOWFLAKE_INSTANCE_ID_GENERATOR = "snowflake"
180
+
181
+ HTTP_PREFIX = "http"
182
+
183
+ ALL_PATTERN = "*"
184
+
185
+ COLON = ":"
186
+
187
+ LINE_BREAK = "\n"
188
+
189
+ POUND = "#"
190
+
191
+ VIPSERVER_TAG = "Vipserver-Tag"
192
+
193
+ AMORY_TAG = "Amory-Tag"
194
+
195
+ LOCATION_TAG = "Location-Tag"
196
+
197
+ CHARSET_KEY = "charset"
198
+
199
+ EX_CONFIG_INFO = "exConfigInfo"
200
+
201
+ GROUP_NAME_KEY = "groupName"
202
+
203
+ SERVICE_NAME_KEY = "serviceName"
204
+
205
+ CIPHER_PRE_FIX = "cipher-"
206
+
207
+ DEFAULT_PORT = 8848
208
+
209
+ GRPC_MAX_RECEIVE_MESSAGE_LENGTH = 100 * 1024 * 1024
210
+
211
+ GRPC_KEEPALIVE_TIME_MILLS = 60 * 1000
212
+
213
+ GRPC_INITIAL_WINDOW_SIZE = 10 * 1024 * 1024
214
+
215
+ GRPC_INITIAL_CONN_WINDOW_SIZE = 10 * 1024 * 1024
216
+
217
+ KEEP_ALIVE_TIME_MILLS = 5000
218
+
219
+ INTERNAL_TIME_MILLS = 3000
220
+
221
+ DEFAULT_GRPC_TIMEOUT_MILLS = 3000
222
+
223
+ GRPC_CAPABILITY_NEGOTIATION_TIMEOUT = 5000
224
+
225
+ GRPC_PORT_OFFSET = 1000 # gRPC port = HTTP port + offset
226
+
227
+ DEFAULT_TIMEOUT_MILLS = 10000
228
+
229
+ PER_TASK_CONFIG_SIZE = 3000
230
+
231
+ MSE_KMS_V1_DEFAULT_KEY_ID = "alias/acs/mse"
232
+
233
+ KMS_AES_128_ALGORITHM_NAME = "AES_128"
234
+
235
+ KMS_AES_256_ALGORITHM_NAME = "AES_256"