coolipy.models.common

Shared models reused across multiple coolipy resources.

  1"""Shared models reused across multiple coolipy resources."""
  2
  3from __future__ import annotations
  4
  5from datetime import datetime
  6
  7from pydantic import Field
  8
  9from coolipy.models.base import CoolipyBaseModel
 10
 11
 12class EnvironmentVariable(CoolipyBaseModel):
 13    """An environment variable as returned by the API."""
 14
 15    id: int | None = None
 16    uuid: str | None = None
 17    resourceable_type: str | None = None
 18    resourceable_id: int | None = None
 19    is_literal: bool | None = None
 20    is_multiline: bool | None = None
 21    is_preview: bool | None = None
 22    is_runtime: bool | None = None
 23    is_buildtime: bool | None = None
 24    is_shared: bool | None = None
 25    is_shown_once: bool | None = None
 26    key: str | None = None
 27    value: str | None = None
 28    real_value: str | None = None
 29    comment: str | None = None
 30    version: str | None = None
 31    created_at: datetime | None = None
 32    updated_at: datetime | None = None
 33
 34
 35class EnvironmentVariableCreate(CoolipyBaseModel):
 36    """Body for creating an environment variable."""
 37
 38    key: str | None = None
 39    value: str | None = None
 40    is_preview: bool | None = None
 41    is_literal: bool | None = None
 42    is_multiline: bool | None = None
 43    is_shown_once: bool | None = None
 44
 45
 46class EnvironmentVariableUpdate(CoolipyBaseModel):
 47    """Body for updating an environment variable."""
 48
 49    key: str | None = None
 50    value: str | None = None
 51    is_preview: bool | None = None
 52    is_literal: bool | None = None
 53    is_multiline: bool | None = None
 54    is_shown_once: bool | None = None
 55
 56
 57class BulkEnvsUpdate(CoolipyBaseModel):
 58    """Body for bulk-updating environment variables."""
 59
 60    data: list[EnvironmentVariableCreate] = Field(default_factory=list)
 61
 62
 63class ScheduledTask(CoolipyBaseModel):
 64    """A scheduled task as returned by the API."""
 65
 66    id: int | None = None
 67    uuid: str | None = None
 68    enabled: bool | None = None
 69    name: str | None = None
 70    command: str | None = None
 71    frequency: str | None = None
 72    container: str | None = None
 73    timeout: int | None = None
 74    created_at: datetime | None = None
 75    updated_at: datetime | None = None
 76
 77
 78class ScheduledTaskCreate(CoolipyBaseModel):
 79    """Body for creating a scheduled task."""
 80
 81    enabled: bool | None = None
 82    name: str | None = None
 83    command: str | None = None
 84    frequency: str | None = None
 85    container: str | None = None
 86    timeout: int | None = None
 87
 88
 89class ScheduledTaskUpdate(CoolipyBaseModel):
 90    """Body for updating a scheduled task."""
 91
 92    enabled: bool | None = None
 93    name: str | None = None
 94    command: str | None = None
 95    frequency: str | None = None
 96    container: str | None = None
 97    timeout: int | None = None
 98
 99
100class ScheduledTaskExecution(CoolipyBaseModel):
101    """An execution of a scheduled task."""
102
103    uuid: str | None = None
104    status: str | None = None
105    message: str | None = None
106    retry_count: int | None = None
107    duration: float | None = None
108    started_at: datetime | None = None
109    finished_at: datetime | None = None
110    created_at: datetime | None = None
111    updated_at: datetime | None = None
112
113
114class Destination(CoolipyBaseModel):
115    """A Docker network destination attached to a server."""
116
117    uuid: str | None = None
118    name: str | None = None
119    network: str | None = None
120    type: str | None = None
121    server_uuid: str | None = None
122    created_at: datetime | None = None
123    updated_at: datetime | None = None
124
125
126class DestinationCreate(CoolipyBaseModel):
127    """Body for creating a destination."""
128
129    name: str | None = None
130    network: str | None = None
131    type: str | None = None
132
133
134class Tag(CoolipyBaseModel):
135    """A tag attached to a resource."""
136
137    uuid: str | None = None
138    name: str | None = None
139    created_at: datetime | None = None
140    updated_at: datetime | None = None
141
142
143class TagCreate(CoolipyBaseModel):
144    """Body for creating a global tag."""
145
146    name: str | None = None
147
148
149class TagUpdate(CoolipyBaseModel):
150    """Body for updating a global tag."""
151
152    name: str | None = None
153
154
155class Logs(CoolipyBaseModel):
156    """Log output returned by a logs endpoint."""
157
158    logs: str | None = None
159
160
161class MessageResponse(CoolipyBaseModel):
162    """A response carrying a single ``message``."""
163
164    message: str | None = None
165
166
167class UUIDResponse(CoolipyBaseModel):
168    """A response carrying a single ``uuid``."""
169
170    uuid: str | None = None
171
172
173class DeploymentQueuedResponse(CoolipyBaseModel):
174    """A response indicating a deployment was queued."""
175
176    message: str | None = None
177    deployment_uuid: str | None = None
178
179
180class StorageCreate(CoolipyBaseModel):
181    """Body for creating a persistent or file storage."""
182
183    type: str | None = None
184    name: str | None = None
185    mount_path: str | None = None
186    host_path: str | None = None
187    content: str | None = None
188    is_directory: bool | None = None
189    fs_path: str | None = None
190
191
192class StorageUpdate(CoolipyBaseModel):
193    """Body for updating a persistent or file storage."""
194
195    uuid: str | None = None
196    id: int | None = None
197    type: str | None = None
198    is_preview_suffix_enabled: bool | None = None
199    name: str | None = None
200    mount_path: str | None = None
201    host_path: str | None = None
202    content: str | None = None
203
204
205class TagsCreate(CoolipyBaseModel):
206    """Body for adding one or more tags to a resource."""
207
208    tag_name: str | None = None
209    tag_names: list[str] | None = None
210
211
212class VolumeBackupScheduleRequest(CoolipyBaseModel):
213    """Body for scheduling volume backups."""
214
215    frequency: str | None = None
216    enabled: bool | None = None
217    save_s3: bool | None = None
218    disable_local_backup: bool | None = None
219    stop_during_backup: bool | None = None
220    s3_storage_uuid: str | None = None
221    retention_amount_locally: int | None = None
222    retention_days_locally: int | None = None
223    retention_max_storage_locally: float | None = None
224    retention_amount_s3: int | None = None
225    retention_days_s3: int | None = None
226    retention_max_storage_s3: float | None = None
227    timeout: int | None = None
228
229
230class VolumeBackupScheduleResponse(CoolipyBaseModel):
231    """A scheduled volume backup as returned by the API."""
232
233    uuid: str | None = None
234    message: str | None = None
235    storage_uuid: str | None = None
236    storage_type: str | None = None
237    frequency: str | None = None
238    enabled: bool | None = None
239    save_s3: bool | None = None
240    disable_local_backup: bool | None = None
241    stop_during_backup: bool | None = None
242    s3_storage_uuid: str | None = None
243    retention_amount_locally: int | None = None
244    retention_days_locally: int | None = None
245    retention_max_storage_locally: float | None = None
246    retention_amount_s3: int | None = None
247    retention_days_s3: int | None = None
248    retention_max_storage_s3: float | None = None
249    timeout: int | None = None
class EnvironmentVariable(coolipy.models.base.CoolipyBaseModel):
13class EnvironmentVariable(CoolipyBaseModel):
14    """An environment variable as returned by the API."""
15
16    id: int | None = None
17    uuid: str | None = None
18    resourceable_type: str | None = None
19    resourceable_id: int | None = None
20    is_literal: bool | None = None
21    is_multiline: bool | None = None
22    is_preview: bool | None = None
23    is_runtime: bool | None = None
24    is_buildtime: bool | None = None
25    is_shared: bool | None = None
26    is_shown_once: bool | None = None
27    key: str | None = None
28    value: str | None = None
29    real_value: str | None = None
30    comment: str | None = None
31    version: str | None = None
32    created_at: datetime | None = None
33    updated_at: datetime | None = None

An environment variable as returned by the API.

id: int | None = None
uuid: str | None = None
resourceable_type: str | None = None
resourceable_id: int | None = None
is_literal: bool | None = None
is_multiline: bool | None = None
is_preview: bool | None = None
is_runtime: bool | None = None
is_buildtime: bool | None = None
is_shared: bool | None = None
is_shown_once: bool | None = None
key: str | None = None
value: str | None = None
real_value: str | None = None
comment: str | None = None
version: str | None = None
created_at: datetime.datetime | None = None
updated_at: datetime.datetime | None = None
class EnvironmentVariableCreate(coolipy.models.base.CoolipyBaseModel):
36class EnvironmentVariableCreate(CoolipyBaseModel):
37    """Body for creating an environment variable."""
38
39    key: str | None = None
40    value: str | None = None
41    is_preview: bool | None = None
42    is_literal: bool | None = None
43    is_multiline: bool | None = None
44    is_shown_once: bool | None = None

Body for creating an environment variable.

key: str | None = None
value: str | None = None
is_preview: bool | None = None
is_literal: bool | None = None
is_multiline: bool | None = None
is_shown_once: bool | None = None
class EnvironmentVariableUpdate(coolipy.models.base.CoolipyBaseModel):
47class EnvironmentVariableUpdate(CoolipyBaseModel):
48    """Body for updating an environment variable."""
49
50    key: str | None = None
51    value: str | None = None
52    is_preview: bool | None = None
53    is_literal: bool | None = None
54    is_multiline: bool | None = None
55    is_shown_once: bool | None = None

Body for updating an environment variable.

key: str | None = None
value: str | None = None
is_preview: bool | None = None
is_literal: bool | None = None
is_multiline: bool | None = None
is_shown_once: bool | None = None
class BulkEnvsUpdate(coolipy.models.base.CoolipyBaseModel):
58class BulkEnvsUpdate(CoolipyBaseModel):
59    """Body for bulk-updating environment variables."""
60
61    data: list[EnvironmentVariableCreate] = Field(default_factory=list)

Body for bulk-updating environment variables.

data: list[EnvironmentVariableCreate] = PydanticUndefined
class ScheduledTask(coolipy.models.base.CoolipyBaseModel):
64class ScheduledTask(CoolipyBaseModel):
65    """A scheduled task as returned by the API."""
66
67    id: int | None = None
68    uuid: str | None = None
69    enabled: bool | None = None
70    name: str | None = None
71    command: str | None = None
72    frequency: str | None = None
73    container: str | None = None
74    timeout: int | None = None
75    created_at: datetime | None = None
76    updated_at: datetime | None = None

A scheduled task as returned by the API.

id: int | None = None
uuid: str | None = None
enabled: bool | None = None
name: str | None = None
command: str | None = None
frequency: str | None = None
container: str | None = None
timeout: int | None = None
created_at: datetime.datetime | None = None
updated_at: datetime.datetime | None = None
class ScheduledTaskCreate(coolipy.models.base.CoolipyBaseModel):
79class ScheduledTaskCreate(CoolipyBaseModel):
80    """Body for creating a scheduled task."""
81
82    enabled: bool | None = None
83    name: str | None = None
84    command: str | None = None
85    frequency: str | None = None
86    container: str | None = None
87    timeout: int | None = None

Body for creating a scheduled task.

enabled: bool | None = None
name: str | None = None
command: str | None = None
frequency: str | None = None
container: str | None = None
timeout: int | None = None
class ScheduledTaskUpdate(coolipy.models.base.CoolipyBaseModel):
90class ScheduledTaskUpdate(CoolipyBaseModel):
91    """Body for updating a scheduled task."""
92
93    enabled: bool | None = None
94    name: str | None = None
95    command: str | None = None
96    frequency: str | None = None
97    container: str | None = None
98    timeout: int | None = None

Body for updating a scheduled task.

enabled: bool | None = None
name: str | None = None
command: str | None = None
frequency: str | None = None
container: str | None = None
timeout: int | None = None
class ScheduledTaskExecution(coolipy.models.base.CoolipyBaseModel):
101class ScheduledTaskExecution(CoolipyBaseModel):
102    """An execution of a scheduled task."""
103
104    uuid: str | None = None
105    status: str | None = None
106    message: str | None = None
107    retry_count: int | None = None
108    duration: float | None = None
109    started_at: datetime | None = None
110    finished_at: datetime | None = None
111    created_at: datetime | None = None
112    updated_at: datetime | None = None

An execution of a scheduled task.

uuid: str | None = None
status: str | None = None
message: str | None = None
retry_count: int | None = None
duration: float | None = None
started_at: datetime.datetime | None = None
finished_at: datetime.datetime | None = None
created_at: datetime.datetime | None = None
updated_at: datetime.datetime | None = None
class Destination(coolipy.models.base.CoolipyBaseModel):
115class Destination(CoolipyBaseModel):
116    """A Docker network destination attached to a server."""
117
118    uuid: str | None = None
119    name: str | None = None
120    network: str | None = None
121    type: str | None = None
122    server_uuid: str | None = None
123    created_at: datetime | None = None
124    updated_at: datetime | None = None

A Docker network destination attached to a server.

uuid: str | None = None
name: str | None = None
network: str | None = None
type: str | None = None
server_uuid: str | None = None
created_at: datetime.datetime | None = None
updated_at: datetime.datetime | None = None
class DestinationCreate(coolipy.models.base.CoolipyBaseModel):
127class DestinationCreate(CoolipyBaseModel):
128    """Body for creating a destination."""
129
130    name: str | None = None
131    network: str | None = None
132    type: str | None = None

Body for creating a destination.

name: str | None = None
network: str | None = None
type: str | None = None
class Tag(coolipy.models.base.CoolipyBaseModel):
135class Tag(CoolipyBaseModel):
136    """A tag attached to a resource."""
137
138    uuid: str | None = None
139    name: str | None = None
140    created_at: datetime | None = None
141    updated_at: datetime | None = None

A tag attached to a resource.

uuid: str | None = None
name: str | None = None
created_at: datetime.datetime | None = None
updated_at: datetime.datetime | None = None
class TagCreate(coolipy.models.base.CoolipyBaseModel):
144class TagCreate(CoolipyBaseModel):
145    """Body for creating a global tag."""
146
147    name: str | None = None

Body for creating a global tag.

name: str | None = None
class TagUpdate(coolipy.models.base.CoolipyBaseModel):
150class TagUpdate(CoolipyBaseModel):
151    """Body for updating a global tag."""
152
153    name: str | None = None

Body for updating a global tag.

name: str | None = None
class Logs(coolipy.models.base.CoolipyBaseModel):
156class Logs(CoolipyBaseModel):
157    """Log output returned by a logs endpoint."""
158
159    logs: str | None = None

Log output returned by a logs endpoint.

logs: str | None = None
class MessageResponse(coolipy.models.base.CoolipyBaseModel):
162class MessageResponse(CoolipyBaseModel):
163    """A response carrying a single ``message``."""
164
165    message: str | None = None

A response carrying a single message.

message: str | None = None
class UUIDResponse(coolipy.models.base.CoolipyBaseModel):
168class UUIDResponse(CoolipyBaseModel):
169    """A response carrying a single ``uuid``."""
170
171    uuid: str | None = None

A response carrying a single uuid.

uuid: str | None = None
class DeploymentQueuedResponse(coolipy.models.base.CoolipyBaseModel):
174class DeploymentQueuedResponse(CoolipyBaseModel):
175    """A response indicating a deployment was queued."""
176
177    message: str | None = None
178    deployment_uuid: str | None = None

A response indicating a deployment was queued.

message: str | None = None
deployment_uuid: str | None = None
class StorageCreate(coolipy.models.base.CoolipyBaseModel):
181class StorageCreate(CoolipyBaseModel):
182    """Body for creating a persistent or file storage."""
183
184    type: str | None = None
185    name: str | None = None
186    mount_path: str | None = None
187    host_path: str | None = None
188    content: str | None = None
189    is_directory: bool | None = None
190    fs_path: str | None = None

Body for creating a persistent or file storage.

type: str | None = None
name: str | None = None
mount_path: str | None = None
host_path: str | None = None
content: str | None = None
is_directory: bool | None = None
fs_path: str | None = None
class StorageUpdate(coolipy.models.base.CoolipyBaseModel):
193class StorageUpdate(CoolipyBaseModel):
194    """Body for updating a persistent or file storage."""
195
196    uuid: str | None = None
197    id: int | None = None
198    type: str | None = None
199    is_preview_suffix_enabled: bool | None = None
200    name: str | None = None
201    mount_path: str | None = None
202    host_path: str | None = None
203    content: str | None = None

Body for updating a persistent or file storage.

uuid: str | None = None
id: int | None = None
type: str | None = None
is_preview_suffix_enabled: bool | None = None
name: str | None = None
mount_path: str | None = None
host_path: str | None = None
content: str | None = None
class TagsCreate(coolipy.models.base.CoolipyBaseModel):
206class TagsCreate(CoolipyBaseModel):
207    """Body for adding one or more tags to a resource."""
208
209    tag_name: str | None = None
210    tag_names: list[str] | None = None

Body for adding one or more tags to a resource.

tag_name: str | None = None
tag_names: list[str] | None = None
class VolumeBackupScheduleRequest(coolipy.models.base.CoolipyBaseModel):
213class VolumeBackupScheduleRequest(CoolipyBaseModel):
214    """Body for scheduling volume backups."""
215
216    frequency: str | None = None
217    enabled: bool | None = None
218    save_s3: bool | None = None
219    disable_local_backup: bool | None = None
220    stop_during_backup: bool | None = None
221    s3_storage_uuid: str | None = None
222    retention_amount_locally: int | None = None
223    retention_days_locally: int | None = None
224    retention_max_storage_locally: float | None = None
225    retention_amount_s3: int | None = None
226    retention_days_s3: int | None = None
227    retention_max_storage_s3: float | None = None
228    timeout: int | None = None

Body for scheduling volume backups.

frequency: str | None = None
enabled: bool | None = None
save_s3: bool | None = None
disable_local_backup: bool | None = None
stop_during_backup: bool | None = None
s3_storage_uuid: str | None = None
retention_amount_locally: int | None = None
retention_days_locally: int | None = None
retention_max_storage_locally: float | None = None
retention_amount_s3: int | None = None
retention_days_s3: int | None = None
retention_max_storage_s3: float | None = None
timeout: int | None = None
class VolumeBackupScheduleResponse(coolipy.models.base.CoolipyBaseModel):
231class VolumeBackupScheduleResponse(CoolipyBaseModel):
232    """A scheduled volume backup as returned by the API."""
233
234    uuid: str | None = None
235    message: str | None = None
236    storage_uuid: str | None = None
237    storage_type: str | None = None
238    frequency: str | None = None
239    enabled: bool | None = None
240    save_s3: bool | None = None
241    disable_local_backup: bool | None = None
242    stop_during_backup: bool | None = None
243    s3_storage_uuid: str | None = None
244    retention_amount_locally: int | None = None
245    retention_days_locally: int | None = None
246    retention_max_storage_locally: float | None = None
247    retention_amount_s3: int | None = None
248    retention_days_s3: int | None = None
249    retention_max_storage_s3: float | None = None
250    timeout: int | None = None

A scheduled volume backup as returned by the API.

uuid: str | None = None
message: str | None = None
storage_uuid: str | None = None
storage_type: str | None = None
frequency: str | None = None
enabled: bool | None = None
save_s3: bool | None = None
disable_local_backup: bool | None = None
stop_during_backup: bool | None = None
s3_storage_uuid: str | None = None
retention_amount_locally: int | None = None
retention_days_locally: int | None = None
retention_max_storage_locally: float | None = None
retention_amount_s3: int | None = None
retention_days_s3: int | None = None
retention_max_storage_s3: float | None = None
timeout: int | None = None