gitscope
https://dev.kronoz.win/r/marzneshin.git
app/models/node.py · v0.3.0-alpha5
Source
1 a47eb4c Dawsh 2y ago from enum import Enum
2 a47eb4c Dawsh 2y ago from typing import List, Optional
3 a47eb4c Dawsh 2y ago
4 a47eb4c Dawsh 2y ago from pydantic import ConfigDict, BaseModel, Field
5 a47eb4c Dawsh 2y ago
6 a47eb4c Dawsh 2y ago
7 a47eb4c Dawsh 2y ago class NodeStatus(str, Enum):
8 12b255b Dawsh 2y ago healthy = "healthy"
9 12b255b Dawsh 2y ago unhealthy = "unhealthy"
10 a47eb4c Dawsh 2y ago disabled = "disabled"
11 a47eb4c Dawsh 2y ago
12 a47eb4c Dawsh 2y ago
13 f6a32ea Dawsh 2y ago class NodeConnectionBackend(str, Enum):
14 f6a32ea Dawsh 2y ago grpcio = "grpcio"
15 f6a32ea Dawsh 2y ago grpclib = "grpclib"
16 f6a32ea Dawsh 2y ago
17 f6a32ea Dawsh 2y ago
18 a47eb4c Dawsh 2y ago class NodeSettings(BaseModel):
19 a47eb4c Dawsh 2y ago min_node_version: str = "v0.2.0"
20 a47eb4c Dawsh 2y ago certificate: str
21 a47eb4c Dawsh 2y ago
22 a47eb4c Dawsh 2y ago
23 a47eb4c Dawsh 2y ago class NodeBase(BaseModel):
24 12b255b Dawsh 2y ago id: Optional[int] = Field(None)
25 a47eb4c Dawsh 2y ago name: str
26 a47eb4c Dawsh 2y ago address: str
27 a47eb4c Dawsh 2y ago port: int = 62050
28 01cdf2e Dawsh 2y ago connection_backend: NodeConnectionBackend = Field(
29 01cdf2e Dawsh 2y ago default=NodeConnectionBackend.grpclib
30 01cdf2e Dawsh 2y ago )
31 12b255b Dawsh 2y ago usage_coefficient: float = Field(ge=0, default=1.0)
32 a47eb4c Dawsh 2y ago model_config = ConfigDict(from_attributes=True)
33 a47eb4c Dawsh 2y ago
34 12b255b Dawsh 2y ago
35 a47eb4c Dawsh 2y ago from app.models.proxy import InboundBase
36 a47eb4c Dawsh 2y ago
37 12b255b Dawsh 2y ago
38 a47eb4c Dawsh 2y ago class Node(NodeBase):
39 a47eb4c Dawsh 2y ago inbounds: Optional[List[InboundBase]] = None
40 a47eb4c Dawsh 2y ago
41 a47eb4c Dawsh 2y ago
42 a47eb4c Dawsh 2y ago class NodeCreate(Node):
43 01cdf2e Dawsh 2y ago model_config = ConfigDict(
44 01cdf2e Dawsh 2y ago json_schema_extra={
45 01cdf2e Dawsh 2y ago "example": {
46 01cdf2e Dawsh 2y ago "name": "DE node",
47 01cdf2e Dawsh 2y ago "address": "192.168.1.1",
48 01cdf2e Dawsh 2y ago "port": 62050,
49 01cdf2e Dawsh 2y ago "usage_coefficient": 1,
50 01cdf2e Dawsh 2y ago }
51 a47eb4c Dawsh 2y ago }
52 01cdf2e Dawsh 2y ago )
53 a47eb4c Dawsh 2y ago
54 a47eb4c Dawsh 2y ago
55 a47eb4c Dawsh 2y ago class NodeModify(Node):
56 12b255b Dawsh 2y ago name: Optional[str] = Field(None)
57 12b255b Dawsh 2y ago address: Optional[str] = Field(None)
58 12b255b Dawsh 2y ago port: Optional[int] = Field(None)
59 f6a32ea Dawsh 2y ago connection_backend: Optional[NodeConnectionBackend] = Field(None)
60 12b255b Dawsh 2y ago status: Optional[NodeStatus] = Field(None)
61 12b255b Dawsh 2y ago usage_coefficient: Optional[float] = Field(None)
62 01cdf2e Dawsh 2y ago model_config = ConfigDict(
63 01cdf2e Dawsh 2y ago json_schema_extra={
64 01cdf2e Dawsh 2y ago "example": {
65 01cdf2e Dawsh 2y ago "name": "DE node",
66 01cdf2e Dawsh 2y ago "address": "192.168.1.1",
67 01cdf2e Dawsh 2y ago "port": 62050,
68 01cdf2e Dawsh 2y ago "api_port": 62051,
69 01cdf2e Dawsh 2y ago "status": "disabled",
70 01cdf2e Dawsh 2y ago "usage_coefficient": 1.0,
71 01cdf2e Dawsh 2y ago }
72 a47eb4c Dawsh 2y ago }
73 01cdf2e Dawsh 2y ago )
74 a47eb4c Dawsh 2y ago
75 a47eb4c Dawsh 2y ago
76 a47eb4c Dawsh 2y ago class NodeResponse(Node):
77 a47eb4c Dawsh 2y ago xray_version: Optional[str] = None
78 a47eb4c Dawsh 2y ago status: NodeStatus
79 a47eb4c Dawsh 2y ago message: Optional[str] = None
80 a47eb4c Dawsh 2y ago model_config = ConfigDict(from_attributes=True)
81 a47eb4c Dawsh 2y ago
82 a47eb4c Dawsh 2y ago
83 a47eb4c Dawsh 2y ago class NodeUsageResponse(BaseModel):
84 a47eb4c Dawsh 2y ago node_id: Optional[int] = None
85 a47eb4c Dawsh 2y ago node_name: str
86 a47eb4c Dawsh 2y ago uplink: int
87 a47eb4c Dawsh 2y ago downlink: int
88 a47eb4c Dawsh 2y ago
89 a47eb4c Dawsh 2y ago
90 a47eb4c Dawsh 2y ago class NodesUsageResponse(BaseModel):
91 a47eb4c Dawsh 2y ago usages: List[NodeUsageResponse]