-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathcompute.py
More file actions
45 lines (35 loc) · 1.15 KB
/
compute.py
File metadata and controls
45 lines (35 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from pydantic import BaseModel, ConfigDict, Field
class Server(BaseModel):
class Flavor(BaseModel):
id: str | None = Field(default=None, exclude=True)
name: str | None = Field(
default=None,
validation_alias="original_name",
)
model_config = ConfigDict(validate_by_name=True)
class Image(BaseModel):
id: str | None = Field(default=None)
class IPAddress(BaseModel):
addr: str
version: int
type: str = Field(validation_alias="OS-EXT-IPS:type")
model_config = ConfigDict(validate_by_name=True)
class SecurityGroup(BaseModel):
name: str
id: str
name: str
status: str | None = None
flavor: Flavor | None = None
image: Image | None = None
addresses: dict[str, list[IPAddress]] | None = None
key_name: str | None = None
security_groups: list[SecurityGroup] | None = None
class Flavor(BaseModel):
id: str
name: str
vcpus: int
ram: int
disk: int
swap: int | None = None
is_public: bool = Field(validation_alias="os-flavor-access:is_public")
model_config = ConfigDict(validate_by_name=True)