gitscope
https://dev.kronoz.win/r/marzneshin.git
app/models/node.py · nightly
Source
1 e19fade Erfan 1y ago from enum import StrEnum, IntEnum
2 a47eb4c Dawsh 2y ago
3 a47eb4c Dawsh 2y ago from pydantic import ConfigDict, BaseModel, Field
4 a47eb4c Dawsh 2y ago
5 a47eb4c Dawsh 2y ago
6 e19fade Erfan 1y ago class BackendConfigFormat(IntEnum):
7 f5c168d Mardin 2y ago PLAIN = 0
8 f5c168d Mardin 2y ago JSON = 1
9 f5c168d Mardin 2y ago YAML = 2
10 f5c168d Mardin 2y ago
11 f5c168d Mardin 2y ago
12 f5c168d Mardin 2y ago class BackendConfig(BaseModel):
13 f5c168d Mardin 2y ago config: str
14 f5c168d Mardin 2y ago format: BackendConfigFormat
15 f5c168d Mardin 2y ago
16 f5c168d Mardin 2y ago
17 f5c168d Mardin 2y ago class BackendStats(BaseModel):
18 f5c168d Mardin 2y ago running: bool
19 f5c168d Mardin 2y ago
20 f5c168d Mardin 2y ago
21 f5c168d Mardin 2y ago class Backend(BaseModel):
22 f5c168d Mardin 2y ago name: str
23 f5c168d Mardin 2y ago backend_type: str
24 f5c168d Mardin 2y ago version: str | None
25 f5c168d Mardin 2y ago running: bool
26 f5c168d Mardin 2y ago
27 f5c168d Mardin 2y ago
28 e19fade Erfan 1y ago class NodeStatus(StrEnum):
29 12b255b Dawsh 2y ago healthy = "healthy"
30 12b255b Dawsh 2y ago unhealthy = "unhealthy"
31 a47eb4c Dawsh 2y ago disabled = "disabled"
32 a47eb4c Dawsh 2y ago
33 a47eb4c Dawsh 2y ago
34 e19fade Erfan 1y ago class NodeConnectionBackend(StrEnum):
35 f6a32ea Dawsh 2y ago grpcio = "grpcio"
36 f6a32ea Dawsh 2y ago grpclib = "grpclib"
37 f6a32ea Dawsh 2y ago
38 f6a32ea Dawsh 2y ago
39 a47eb4c Dawsh 2y ago class NodeSettings(BaseModel):
40 a47eb4c Dawsh 2y ago min_node_version: str = "v0.2.0"
41 a47eb4c Dawsh 2y ago certificate: str
42 a47eb4c Dawsh 2y ago
43 a47eb4c Dawsh 2y ago
44 db68a58 Dawsh 2y ago class Node(BaseModel):
45 db68a58 Dawsh 2y ago id: int | None = Field(None)
46 a47eb4c Dawsh 2y ago name: str
47 a47eb4c Dawsh 2y ago address: str
48 49457ba Dawsh 2y ago port: int = 53042
49 01cdf2e Dawsh 2y ago connection_backend: NodeConnectionBackend = Field(
50 01cdf2e Dawsh 2y ago default=NodeConnectionBackend.grpclib
51 01cdf2e Dawsh 2y ago )
52 12b255b Dawsh 2y ago usage_coefficient: float = Field(ge=0, default=1.0)
53 a47eb4c Dawsh 2y ago model_config = ConfigDict(from_attributes=True)
54 a47eb4c Dawsh 2y ago
55 12b255b Dawsh 2y ago
56 a47eb4c Dawsh 2y ago class NodeCreate(Node):
57 01cdf2e Dawsh 2y ago model_config = ConfigDict(
58 01cdf2e Dawsh 2y ago json_schema_extra={
59 01cdf2e Dawsh 2y ago "example": {
60 01cdf2e Dawsh 2y ago "name": "DE node",
61 01cdf2e Dawsh 2y ago "address": "192.168.1.1",
62 db68a58 Dawsh 2y ago "port": 53042,
63 01cdf2e Dawsh 2y ago "usage_coefficient": 1,
64 01cdf2e Dawsh 2y ago }
65 a47eb4c Dawsh 2y ago }
66 01cdf2e Dawsh 2y ago )
67 a47eb4c Dawsh 2y ago
68 a47eb4c Dawsh 2y ago
69 a47eb4c Dawsh 2y ago class NodeModify(Node):
70 db68a58 Dawsh 2y ago name: str | None = Field(None)
71 db68a58 Dawsh 2y ago address: str | None = Field(None)
72 db68a58 Dawsh 2y ago port: int | None = Field(None)
73 db68a58 Dawsh 2y ago connection_backend: NodeConnectionBackend | None = Field(None)
74 db68a58 Dawsh 2y ago status: NodeStatus | None = Field(None)
75 db68a58 Dawsh 2y ago usage_coefficient: float | None = Field(None, ge=0)
76 01cdf2e Dawsh 2y ago model_config = ConfigDict(
77 01cdf2e Dawsh 2y ago json_schema_extra={
78 01cdf2e Dawsh 2y ago "example": {
79 01cdf2e Dawsh 2y ago "name": "DE node",
80 01cdf2e Dawsh 2y ago "address": "192.168.1.1",
81 db68a58 Dawsh 2y ago "port": 53042,
82 01cdf2e Dawsh 2y ago "status": "disabled",
83 01cdf2e Dawsh 2y ago "usage_coefficient": 1.0,
84 01cdf2e Dawsh 2y ago }
85 a47eb4c Dawsh 2y ago }
86 01cdf2e Dawsh 2y ago )
87 a47eb4c Dawsh 2y ago
88 a47eb4c Dawsh 2y ago
89 a47eb4c Dawsh 2y ago class NodeResponse(Node):
90 db68a58 Dawsh 2y ago xray_version: str | None = None
91 a47eb4c Dawsh 2y ago status: NodeStatus
92 db68a58 Dawsh 2y ago message: str | None = None
93 a47eb4c Dawsh 2y ago model_config = ConfigDict(from_attributes=True)
94 db68a58 Dawsh 2y ago inbound_ids: list[int] | None = None
95 f5c168d Mardin 2y ago backends: list[Backend]
96 a47eb4c Dawsh 2y ago
97 a47eb4c Dawsh 2y ago
98 a47eb4c Dawsh 2y ago class NodeUsageResponse(BaseModel):
99 db68a58 Dawsh 2y ago node_id: int | None = None
100 a47eb4c Dawsh 2y ago node_name: str
101 a47eb4c Dawsh 2y ago uplink: int
102 a47eb4c Dawsh 2y ago downlink: int
103 a47eb4c Dawsh 2y ago
104 a47eb4c Dawsh 2y ago
105 a47eb4c Dawsh 2y ago class NodesUsageResponse(BaseModel):
106 db68a58 Dawsh 2y ago usages: list[NodeUsageResponse]