Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1""" 

2Models for Docker API requests and responses 

3""" 

4 

5from typing import List, Optional 

6 

7from pydantic import BaseModel, Field 

8 

9 

10class PruneRequest(BaseModel): 

11 """Model for prune request""" 

12 containers: Optional[bool] = Field( 

13 False, description="Delete stopped containers") 

14 images: Optional[bool] = Field(False, description="Delete unused images") 

15 volumes: Optional[bool] = Field(False, description="Delete unused volumes") 

16 networks: Optional[bool] = Field( 

17 False, description="Delete unused networks") 

18 build_cache: Optional[bool] = Field( 

19 False, description="Delete the builder cache") 

20 all: Optional[bool] = Field( 

21 False, description="Delete stopped containers, unused images, unused volumes,\ 

22 unused networks and the builder cache") 

23 

24 

25class ContainersDeleted(BaseModel): 

26 """Model for pruned containers in prune response""" 

27 containers_deleted: list[str] = Field( 

28 None, alias="ContainersDeleted", description="Containers deleted") 

29 space_reclaimed: int = Field( 

30 None, alias="SpaceReclaimed", description="Space reclaimed") 

31 

32 

33class ImagesDeleted(BaseModel): 

34 """Model for pruned images in prune response""" 

35 images_deleted: list[str] = Field( 

36 None, alias="ImagesDeleted", description="Images deleted") 

37 space_reclaimed: int = Field( 

38 None, alias="SpaceReclaimed", description="Space reclaimed") 

39 

40 

41class NetworksDeleted(BaseModel): 

42 """Model for pruned networks in prune response""" 

43 networks_deleted: list[str] = Field( 

44 None, alias="NetworksDeleted", description="Networks deleted") 

45 

46 

47class VolumesDeleted(BaseModel): 

48 """Model for pruned volumes in prune response""" 

49 volumes_deleted: list[str] = Field( 

50 None, alias="VolumesDeleted", description="Volumes deleted") 

51 

52 

53class BuildCachesDeleted(BaseModel): 

54 """Model for pruned build caches in prune response""" 

55 caches_deleted: list[str] = Field( 

56 None, alias="CachesDeleted", description="Caches deleted") 

57 space_reclaimed: int = Field( 

58 None, alias="SpaceReclaimed", description="Space reclaimed") 

59 

60 

61class PruneResponse(BaseModel): 

62 """Model for prune response""" 

63 containers: Optional[ContainersDeleted] = None 

64 images: Optional[ImagesDeleted] = None 

65 networks: Optional[NetworksDeleted] = None 

66 volumes: Optional[VolumesDeleted] = None 

67 build_cache: Optional[BuildCachesDeleted] = None 

68 

69 

70class ContainerDetails(BaseModel): 

71 """Model for container details""" 

72 id: str = Field(..., description="Container ID") 

73 name: str = Field(..., description="Container name") 

74 status: str = Field(..., description="Container status") 

75 image: List[str] = Field(None, description="Image name") 

76 ports: dict[str, List[dict[str, str]]] = Field( 

77 None, description="Container ports") 

78 created: str = Field(..., description="Container creation time") 

79 

80 

81class DeleteRequest(BaseModel): 

82 """Model for delete request""" 

83 container_id: str = Field(..., description="Container ID") 

84 force: bool = Field(False, description="Force delete") 

85 v: bool = Field(False, description="Remove volumes") 

86 

87 

88class ImageTagRequest(BaseModel): 

89 """Model for image tag request""" 

90 image_id: str = Field(..., description="Image ID") 

91 tag: str = Field(..., description="Image tag") 

92 

93 

94class LogsResponse(BaseModel): 

95 """Model for logs response""" 

96 container_id: str = Field(..., description="Container ID") 

97 logs: str = Field(..., description="Logs")