main
py 77 lines 1.25 KB
Raw
1 from datetime import datetime
2 from typing import List
3 from typing import Optional
4
5 from pydantic import BaseModel
6
7
8 class Version(BaseModel):
9 Index: int
10
11
12 class NodeSpec(BaseModel):
13 Labels: dict
14 Role: str
15 Availability: str
16
17
18 class Platform(BaseModel):
19 Architecture: str
20 OS: str
21
22
23 class Resources(BaseModel):
24 NanoCPUs: int
25 MemoryBytes: int
26
27
28 class Plugin(BaseModel):
29 Type: str
30 Name: str
31
32
33 class TLSInfo(BaseModel):
34 TrustRoot: Optional[str] = None
35 CertIssuerSubject: Optional[str] = None
36 CertIssuerPublicKey: Optional[str] = None
37
38
39 class Engine(BaseModel):
40 EngineVersion: str
41 Plugins: List[Plugin]
42 TLSInfo: Optional[TLSInfo] = None
43
44
45 class Description(BaseModel):
46 Hostname: str
47 Platform: Platform
48 Resources: Resources
49 Engine: Engine
50
51
52 class ManagerStatusResults(BaseModel):
53 Leader: bool
54 Reachability: str
55 Addr: str
56
57
58 class Status(BaseModel):
59 State: str
60 Addr: str
61
62
63 class Node(BaseModel):
64 ID: str
65 Version: Version
66 CreatedAt: datetime
67 UpdatedAt: datetime
68 Spec: NodeSpec
69 Description: Description
70 Status: Status
71 ManagerStatus: Optional[ManagerStatusResults] = None
72
73
74 class NodesResponse(BaseModel):
75 nodes: List[Node]
76 success: bool
77 message: str