@fly.io/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/app.d.ts +181 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +212 -0
- package/dist/client.d.ts +42 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +200 -0
- package/dist/errors.d.ts +48 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +85 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/machine.d.ts +319 -0
- package/dist/machine.d.ts.map +1 -0
- package/dist/machine.js +249 -0
- package/dist/network.d.ts +45 -0
- package/dist/network.d.ts.map +1 -0
- package/dist/network.js +44 -0
- package/dist/organization.d.ts +20 -0
- package/dist/organization.d.ts.map +1 -0
- package/dist/organization.js +22 -0
- package/dist/regions.d.ts +35 -0
- package/dist/regions.d.ts.map +1 -0
- package/dist/regions.js +53 -0
- package/dist/secret.d.ts +55 -0
- package/dist/secret.d.ts.map +1 -0
- package/dist/secret.js +53 -0
- package/dist/token.d.ts +14 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +16 -0
- package/dist/types.d.ts +937 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +40 -0
- package/dist/volume.d.ts +72 -0
- package/dist/volume.d.ts.map +1 -0
- package/dist/volume.js +45 -0
- package/package.json +54 -0
- package/src/app.ts +462 -0
- package/src/client.ts +262 -0
- package/src/errors.ts +135 -0
- package/src/index.ts +141 -0
- package/src/machine.ts +644 -0
- package/src/network.ts +87 -0
- package/src/organization.ts +43 -0
- package/src/regions.ts +94 -0
- package/src/secret.ts +101 -0
- package/src/token.ts +29 -0
- package/src/types.ts +1072 -0
- package/src/volume.ts +124 -0
package/src/volume.ts
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// Volume management for Fly Machines REST API.
|
|
2
|
+
|
|
3
|
+
import { Client } from './client.ts'
|
|
4
|
+
import { CreateVolumeRequest as ApiCreateVolumeRequest, UpdateVolumeRequest as ApiUpdateVolumeRequest } from './types.ts'
|
|
5
|
+
import type { FlyResult } from './errors.ts'
|
|
6
|
+
|
|
7
|
+
export interface ListVolumesRequest {
|
|
8
|
+
app_name: string
|
|
9
|
+
/** Only return summary info about volumes (omit blocks, block size, etc) */
|
|
10
|
+
summary?: boolean
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface CreateVolumeRequest extends ApiCreateVolumeRequest {
|
|
14
|
+
app_name: string
|
|
15
|
+
name: string
|
|
16
|
+
region: string
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface VolumeResponse {
|
|
20
|
+
id: string
|
|
21
|
+
name: string
|
|
22
|
+
state: string
|
|
23
|
+
size_gb: number
|
|
24
|
+
region: string
|
|
25
|
+
zone: string
|
|
26
|
+
encrypted: boolean
|
|
27
|
+
attached_machine_id: string | null
|
|
28
|
+
attached_alloc_id: string | null
|
|
29
|
+
auto_backup_enabled: boolean
|
|
30
|
+
created_at: string
|
|
31
|
+
blocks: number
|
|
32
|
+
block_size: number
|
|
33
|
+
blocks_free: number
|
|
34
|
+
blocks_avail: number
|
|
35
|
+
bytes_total: number
|
|
36
|
+
bytes_used: number
|
|
37
|
+
fstype: string
|
|
38
|
+
host_status: 'ok' | 'unknown' | 'unreachable'
|
|
39
|
+
snapshot_retention: number
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface GetVolumeRequest {
|
|
43
|
+
app_name: string
|
|
44
|
+
volume_id: string
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export type DeleteVolumeRequest = GetVolumeRequest
|
|
48
|
+
|
|
49
|
+
export interface UpdateVolumeRequest extends GetVolumeRequest, ApiUpdateVolumeRequest {}
|
|
50
|
+
|
|
51
|
+
export interface ExtendVolumeRequest extends GetVolumeRequest {
|
|
52
|
+
size_gb: number
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface ExtendVolumeResponse {
|
|
56
|
+
needs_restart: boolean
|
|
57
|
+
volume: VolumeResponse
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export type ListSnapshotsRequest = GetVolumeRequest
|
|
61
|
+
|
|
62
|
+
export interface SnapshotResponse {
|
|
63
|
+
id: string
|
|
64
|
+
created_at: string
|
|
65
|
+
digest: string
|
|
66
|
+
retention_days: number
|
|
67
|
+
size: number
|
|
68
|
+
status: string
|
|
69
|
+
volume_size: number
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export class Volume {
|
|
73
|
+
private client: Client
|
|
74
|
+
|
|
75
|
+
constructor(client: Client) {
|
|
76
|
+
this.client = client
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
async listVolumes(payload: ListVolumesRequest): Promise<FlyResult<VolumeResponse[]>> {
|
|
80
|
+
const { app_name, summary } = payload
|
|
81
|
+
const params = new URLSearchParams()
|
|
82
|
+
if (summary !== undefined) {
|
|
83
|
+
params.set('summary', String(summary))
|
|
84
|
+
}
|
|
85
|
+
const query = params.toString()
|
|
86
|
+
const path = `apps/${app_name}/volumes${query ? `?${query}` : ''}`
|
|
87
|
+
return await this.client.restOrThrow(path)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async getVolume(payload: GetVolumeRequest): Promise<FlyResult<VolumeResponse>> {
|
|
91
|
+
const { app_name, volume_id } = payload
|
|
92
|
+
return await this.client.restOrThrow(`apps/${app_name}/volumes/${volume_id}`)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
async createVolume(payload: CreateVolumeRequest): Promise<FlyResult<VolumeResponse>> {
|
|
96
|
+
const { app_name, ...body } = payload
|
|
97
|
+
return await this.client.restOrThrow(`apps/${app_name}/volumes`, 'POST', body)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async updateVolume(payload: UpdateVolumeRequest): Promise<FlyResult<VolumeResponse>> {
|
|
101
|
+
const { app_name, volume_id, ...body } = payload
|
|
102
|
+
return await this.client.restOrThrow(`apps/${app_name}/volumes/${volume_id}`, 'PUT', body)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
async deleteVolume(payload: DeleteVolumeRequest): Promise<FlyResult<VolumeResponse>> {
|
|
106
|
+
const { app_name, volume_id } = payload
|
|
107
|
+
return await this.client.restOrThrow(`apps/${app_name}/volumes/${volume_id}`, 'DELETE')
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async extendVolume(payload: ExtendVolumeRequest): Promise<FlyResult<ExtendVolumeResponse>> {
|
|
111
|
+
const { app_name, volume_id, ...body } = payload
|
|
112
|
+
return await this.client.restOrThrow(`apps/${app_name}/volumes/${volume_id}/extend`, 'PUT', body)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
async listSnapshots(payload: ListSnapshotsRequest): Promise<FlyResult<SnapshotResponse[]>> {
|
|
116
|
+
const { app_name, volume_id } = payload
|
|
117
|
+
return await this.client.restOrThrow(`apps/${app_name}/volumes/${volume_id}/snapshots`)
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async createSnapshot(payload: GetVolumeRequest): Promise<FlyResult<SnapshotResponse>> {
|
|
121
|
+
const { app_name, volume_id } = payload
|
|
122
|
+
return await this.client.restOrThrow(`apps/${app_name}/volumes/${volume_id}/snapshots`, 'POST')
|
|
123
|
+
}
|
|
124
|
+
}
|