Files
xinfra/server/internal/model/delivery.go
T

121 lines
6.1 KiB
Go

package model
import "time"
const (
TaskPending = "pending"
TaskValidating = "validating"
TaskDispatching = "dispatching"
TaskRunning = "running"
TaskRegistering = "registering"
TaskFinished = "finished"
TaskRegisterFailed = "register_failed"
TaskExecutionFailed = "execution_failed"
TaskValidationFailed = "validation_failed"
TaskCanceling = "canceling"
TaskCanceled = "canceled"
)
type ResourceQuota struct {
ID uint64 `gorm:"primaryKey" json:"id"`
BusinessLineID uint64 `gorm:"not null;uniqueIndex:idx_resource_quota_scope,priority:1" json:"business_line_id"`
TargetID uint64 `gorm:"not null;uniqueIndex:idx_resource_quota_scope,priority:2" json:"target_id"`
CPUMilli int64 `gorm:"not null" json:"cpu_milli"`
MemoryMi int64 `gorm:"not null" json:"memory_mi"`
StorageGi int64 `gorm:"not null" json:"storage_gi"`
InstanceLimit int64 `gorm:"not null" json:"instance_limit"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type DeliveryTask struct {
ID string `gorm:"size:36;primaryKey" json:"id"`
BusinessLineID uint64 `gorm:"not null;index" json:"business_line_id"`
RequestedBy uint64 `gorm:"not null;index" json:"requested_by"`
TargetType string `gorm:"size:32;not null" json:"target_type"`
TargetID uint64 `gorm:"not null;index" json:"target_id"`
Namespace string `gorm:"size:63;not null;index" json:"namespace"`
InstanceName string `gorm:"size:63;not null" json:"instance_name"`
TargetHost string `gorm:"size:128" json:"target_host,omitempty"`
TargetHostIP string `gorm:"size:64" json:"target_host_ip,omitempty"`
MySQLPort int `gorm:"column:mysql_port;not null;default:3307" json:"mysql_port"`
Status string `gorm:"size:32;not null;index" json:"status"`
ImmutablePayload string `gorm:"type:json;not null" json:"immutable_payload"`
PayloadHash string `gorm:"size:64;not null" json:"payload_hash"`
IdempotencyKey string `gorm:"size:128;not null;uniqueIndex" json:"idempotency_key"`
ErrorMessage string `gorm:"type:text" json:"error_message,omitempty"`
CreatedAt time.Time `gorm:"index" json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
StartedAt *time.Time `json:"started_at,omitempty"`
FinishedAt *time.Time `json:"finished_at,omitempty"`
}
type ResourceReservation struct {
ID uint64 `gorm:"primaryKey" json:"id"`
TaskID string `gorm:"size:36;not null;uniqueIndex" json:"task_id"`
BusinessLineID uint64 `gorm:"not null;index" json:"business_line_id"`
TargetID uint64 `gorm:"not null;index" json:"target_id"`
CPUMilli int64 `gorm:"not null" json:"cpu_milli"`
MemoryMi int64 `gorm:"not null" json:"memory_mi"`
StorageGi int64 `gorm:"not null" json:"storage_gi"`
InstanceCount int64 `gorm:"not null;default:1" json:"instance_count"`
Status string `gorm:"size:32;not null;index" json:"status"`
ExpiresAt time.Time `gorm:"not null;index" json:"expires_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type ResourceUsage struct {
ID uint64 `gorm:"primaryKey" json:"id"`
TaskID string `gorm:"size:36;not null;uniqueIndex" json:"task_id"`
InstanceID uint64 `gorm:"not null;uniqueIndex" json:"instance_id"`
BusinessLineID uint64 `gorm:"not null;index" json:"business_line_id"`
TargetID uint64 `gorm:"not null;index" json:"target_id"`
CPUMilli int64 `gorm:"not null" json:"cpu_milli"`
MemoryMi int64 `gorm:"not null" json:"memory_mi"`
StorageGi int64 `gorm:"not null" json:"storage_gi"`
InstanceCount int64 `gorm:"not null;default:1" json:"instance_count"`
Status string `gorm:"size:32;not null;index" json:"status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ReleasedAt *time.Time `json:"released_at,omitempty"`
}
type MySQLInstance struct {
ID uint64 `gorm:"primaryKey" json:"id"`
TaskID string `gorm:"size:36;not null;uniqueIndex" json:"task_id"`
BusinessLineID uint64 `gorm:"not null;index" json:"business_line_id"`
TargetID uint64 `gorm:"not null;index;uniqueIndex:idx_mysql_target_name,priority:1" json:"target_id"`
Namespace string `gorm:"size:63;not null" json:"namespace"`
Name string `gorm:"size:63;not null;uniqueIndex:idx_mysql_target_name,priority:2" json:"name"`
NodeName string `gorm:"size:128" json:"node_name"`
Host string `gorm:"size:255;not null" json:"host"`
Port int `gorm:"not null;default:3306" json:"port"`
Version string `gorm:"size:32;not null" json:"version"`
Status string `gorm:"size:32;not null;index" json:"status"`
CloudDMID string `gorm:"size:128" json:"clouddm_id,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type ExecutionJob struct {
ID uint64 `gorm:"primaryKey" json:"id"`
TaskID string `gorm:"size:36;not null;uniqueIndex" json:"task_id"`
IdempotencyKey string `gorm:"size:128;not null;uniqueIndex" json:"idempotency_key"`
ExecutorJobID string `gorm:"size:128;not null;uniqueIndex" json:"executor_job_id"`
Status string `gorm:"size:32;not null;index" json:"status"`
StartedAt *time.Time `json:"started_at,omitempty"`
FinishedAt *time.Time `json:"finished_at,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type TaskEvent struct {
ID uint64 `gorm:"primaryKey" json:"id"`
TaskID string `gorm:"size:36;not null;index" json:"task_id"`
FromState string `gorm:"size:32;not null" json:"from_state"`
ToState string `gorm:"size:32;not null" json:"to_state"`
Message string `gorm:"type:text" json:"message"`
CreatedAt time.Time `gorm:"index" json:"created_at"`
}