This commit is contained in:
56
internal/models/zfs.go
Normal file
56
internal/models/zfs.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
// Pool represents a ZFS pool
|
||||
type Pool struct {
|
||||
Name string `json:"name"`
|
||||
Status string `json:"status"` // ONLINE, DEGRADED, FAULTED, etc.
|
||||
Size uint64 `json:"size"` // bytes
|
||||
Allocated uint64 `json:"allocated"`
|
||||
Free uint64 `json:"free"`
|
||||
Health string `json:"health"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// Dataset represents a ZFS filesystem
|
||||
type Dataset struct {
|
||||
Name string `json:"name"`
|
||||
Pool string `json:"pool"`
|
||||
Type string `json:"type"` // filesystem, volume
|
||||
Size uint64 `json:"size"`
|
||||
Used uint64 `json:"used"`
|
||||
Available uint64 `json:"available"`
|
||||
Mountpoint string `json:"mountpoint"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// ZVOL represents a ZFS block device
|
||||
type ZVOL struct {
|
||||
Name string `json:"name"`
|
||||
Pool string `json:"pool"`
|
||||
Size uint64 `json:"size"` // bytes
|
||||
Used uint64 `json:"used"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// Snapshot represents a ZFS snapshot
|
||||
type Snapshot struct {
|
||||
Name string `json:"name"`
|
||||
Dataset string `json:"dataset"`
|
||||
Size uint64 `json:"size"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// SnapshotPolicy defines automated snapshot rules
|
||||
type SnapshotPolicy struct {
|
||||
Dataset string `json:"dataset"`
|
||||
Frequent int `json:"frequent"` // keep N frequent snapshots
|
||||
Hourly int `json:"hourly"` // keep N hourly snapshots
|
||||
Daily int `json:"daily"` // keep N daily snapshots
|
||||
Weekly int `json:"weekly"` // keep N weekly snapshots
|
||||
Monthly int `json:"monthly"` // keep N monthly snapshots
|
||||
Yearly int `json:"yearly"` // keep N yearly snapshots
|
||||
Autosnap bool `json:"autosnap"` // enable/disable
|
||||
Autoprune bool `json:"autoprune"` // enable/disable
|
||||
}
|
||||
Reference in New Issue
Block a user