alpha repo init
This commit is contained in:
58
internal/models/vtl.go
Normal file
58
internal/models/vtl.go
Normal file
@@ -0,0 +1,58 @@
|
||||
package models
|
||||
|
||||
// VTLDrive represents a virtual tape drive
|
||||
type VTLDrive struct {
|
||||
ID int `json:"id"` // Drive ID (e.g., 11, 12, 13, 14 for library 10)
|
||||
LibraryID int `json:"library_id"` // Library ID (tens digit)
|
||||
SlotID int `json:"slot_id"` // Slot ID (ones digit)
|
||||
Vendor string `json:"vendor"` // Drive vendor (e.g., "IBM")
|
||||
Product string `json:"product"` // Drive product (e.g., "ULT3580-TD5")
|
||||
Type string `json:"type"` // Tape type (e.g., "LTO-5", "LTO-6")
|
||||
Device string `json:"device"` // Device path (e.g., "/dev/st0")
|
||||
Status string `json:"status"` // "online", "offline", "error"
|
||||
MediaLoaded bool `json:"media_loaded"` // Whether tape is loaded
|
||||
Barcode string `json:"barcode"` // Barcode of loaded tape (if any)
|
||||
}
|
||||
|
||||
// VTLMediaChanger represents a virtual media changer
|
||||
type VTLMediaChanger struct {
|
||||
ID int `json:"id"` // Changer ID
|
||||
LibraryID int `json:"library_id"` // Library ID
|
||||
Device string `json:"device"` // Device path (e.g., "/dev/sg0")
|
||||
Status string `json:"status"` // "online", "offline", "error"
|
||||
Slots int `json:"slots"` // Number of slots
|
||||
Drives int `json:"drives"` // Number of drives
|
||||
}
|
||||
|
||||
// VTLTape represents a virtual tape cartridge
|
||||
type VTLTape struct {
|
||||
Barcode string `json:"barcode"` // Tape barcode
|
||||
LibraryID int `json:"library_id"` // Library ID
|
||||
SlotID int `json:"slot_id"` // Slot ID (0 = not in library)
|
||||
DriveID int `json:"drive_id"` // Drive ID if loaded (-1 if not loaded)
|
||||
Type string `json:"type"` // Tape type (e.g., "LTO-5")
|
||||
Size uint64 `json:"size"` // Tape capacity in bytes
|
||||
Used uint64 `json:"used"` // Used space in bytes
|
||||
Status string `json:"status"` // "available", "in_use", "error"
|
||||
}
|
||||
|
||||
// VTLConfig represents mhvtl configuration
|
||||
type VTLConfig struct {
|
||||
Enabled bool `json:"enabled"` // Whether VTL is enabled
|
||||
LibraryID int `json:"library_id"` // Default library ID
|
||||
Drives []VTLDrive `json:"drives"` // List of drives
|
||||
Changer *VTLMediaChanger `json:"changer"` // Media changer
|
||||
Tapes []VTLTape `json:"tapes"` // List of tapes
|
||||
ConfigPath string `json:"config_path"` // Path to mhvtl config
|
||||
StoragePath string `json:"storage_path"` // Path to tape storage
|
||||
}
|
||||
|
||||
// VTLStatus represents overall VTL system status
|
||||
type VTLStatus struct {
|
||||
ServiceRunning bool `json:"service_running"` // Whether mhvtl service is running
|
||||
DrivesOnline int `json:"drives_online"` // Number of online drives
|
||||
DrivesTotal int `json:"drives_total"` // Total number of drives
|
||||
TapesTotal int `json:"tapes_total"` // Total number of tapes
|
||||
TapesAvailable int `json:"tapes_available"` // Number of available tapes
|
||||
LastError string `json:"last_error"` // Last error message (if any)
|
||||
}
|
||||
Reference in New Issue
Block a user