This commit is contained in:
2026-09-25 16:32:09 +03:00
parent bf932e5ef9
commit 69f056616f
33 changed files with 2074 additions and 594 deletions

View File

@@ -938,6 +938,9 @@ type InfoCompute struct {
// Zone ID
ZoneID uint64 `json:"zoneId"`
// Folder ID
FolderID uint64 `json:"folder_id"`
}
type QemuQuest struct {
@@ -1252,6 +1255,9 @@ type RecordCompute struct {
//todo
_ uint64 `json:"nodeId"`
// Folder ID
FolderID uint64 `json:"folder_id"`
}
// Detailed information about ACL Access in a compute
@@ -2272,3 +2278,376 @@ type CheckComputePlacementItem struct {
}
type CheckComputePlacementResult map[uint64]CheckComputePlacementItem
type Result struct {
// Workflow ID
WorkflowJobID string `json:"workflow_job_id"`
// Compute ID
ComputeID uint64 `json:"compute_id"`
// Status
Status string `json:"status"`
// Job ID
JobID string `json:"job_id"`
// Message
Message string `json:"message"`
}
// MigrateV2 abort record
type MigrateV2AbortRecord struct {
// Results
Results []Result `json:"results"`
}
type Origin struct {
// Type
Type string `json:"type"`
// Correlation ID
CorrelationID string `json:"correlation_id"`
}
type Observation struct {
// Updated at
UpdatedAt uint64 `json:"updated_at"`
// Agent job ID
AgentJobID string `json:"agent_job_id"`
// Attempt
Attempt uint64 `json:"attempt"`
// Operation
Operation string `json:"operation"`
}
type Memory struct {
// Sampled at
SampledAt uint64 `json:"sampled_at"`
// Percent
Percent uint64 `json:"percent"`
// Bytes per second
BytesPerSecond uint64 `json:"bytes_per_second"`
// Processed bytes
ProcessedBytes uint64 `json:"processed_bytes"`
// Remaining bytes
RemainingBytes uint64 `json:"remaining_bytes"`
}
type ProgressDisks struct {
// Scope
Scope string `json:"scope"`
// Target devs
TargetDevs []string `json:"target_devs"`
// Sampled at
SampledAt uint64 `json:"sampled_at"`
// Percent
Percent uint64 `json:"percent"`
// Bytes per second
BytesPerSecond uint64 `json:"bytes_per_second"`
// Processed bytes
ProcessedBytes uint64 `json:"processed_bytes"`
// Remaining bytes
RemainingBytes uint64 `json:"remaining_bytes"`
}
type SystemDisk struct {
// Target dev
TargetDev string `json:"target_dev"`
// Sampled at
SampledAt uint64 `json:"sampled_at"`
// Percent
Percent uint64 `json:"percent"`
// Bytes per second
BytesPerSecond uint64 `json:"bytes_per_second"`
// Processed bytes
ProcessedBytes uint64 `json:"processed_bytes"`
// Remaining bytes
RemainingBytes uint64 `json:"remaining_bytes"`
}
type Progress struct {
// Observation
Observation Observation `json:"observation"`
// Memory
Memory Memory `json:"memory"`
// Disks
Disks ProgressDisks `json:"disks"`
// System disk
SystemDisk SystemDisk `json:"system_disk"`
}
type Disk struct {
// Source disk ID
SourceDiskID uint64 `json:"source_disk_id"`
// Target disk ID
TargetDiskID uint64 `json:"target_disk_id"`
// Target dev
TargetDev string `json:"target_dev"`
// SEP ID
SEPID uint64 `json:"sep_id"`
// Pool name
PoolName string `json:"pool_name"`
// Storage policy ID
StoragePolicyID uint64 `json:"storage_policy_id"`
// State
State string `json:"state"`
}
type Cleanup struct {
// Job ID
JobID string `json:"job_id"`
// Status
Status string `json:"status"`
// Error
Error string `json:"error"`
}
type Resolution struct {
// Resolved at
ResolvedAt string `json:"resolved_at"`
// Resolved by
ResolvedBy string `json:"resolved_by"`
// RequestID
RequestId string `json:"request_id"`
// Take over cleanup
TakeOverCleanup bool `json:"take_over_cleanup"`
// Previous status
PreviousStatus string `json:"previous_status"`
// Previous cleanup required
PreviousCleanupRequired bool `json:"previous_cleanup_required"`
// Previous error
PreviousError string `json:"previous_error"`
}
type MigrateV2Item struct {
// Workflow Job ID
WorkflowJobID string `json:"workflow_job_id"`
// Mode
Mode string `json:"mode"`
// Origin
Origin Origin `json:"origin"`
// Compute ID
ComputeID uint64 `json:"compute_id"`
// Progress
Progress Progress `json:"progress"`
// Domain name
DomainName string `json:"domain_name"`
// Domain UUID
DomainUUID string `json:"domain_uuid"`
// Source node ID
SourceNodeID uint64 `json:"source_node_id"`
// Target node ID
TargetNodeID uint64 `json:"target_node_id"`
// Source tech status
SourceTechStatus string `json:"source_tech_status"`
// Status
Status string `json:"status"`
// Migration result confirmed
MigrationResultConfirmed bool `json:"migration_result_confirmed"`
// Disks
Disks []Disk `json:"disks"`
// Disk IDs not copied
DiskIDsNotCopied []uint64 `json:"disk_ids_not_copied"`
// Error
Error string `json:"error"`
// Cleanup required
CleanupRequired bool `json:"cleanup_required"`
// Cleanup
Cleanup Cleanup `json:"cleanup"`
// Resolution
Resolution Resolution `json:"resolution"`
// Created at
CreatedAt string `json:"created_at"`
// Updated at
UpdatedAt string `json:"updated_at"`
}
type ListMigrateV2 struct {
// Entry count
EntryCount uint64 `json:"entry_count"`
// Data
Data []MigrateV2Item `json:"data"`
}
type MigrateV2Record struct {
// Workflow Job ID
WorkflowJobID string `json:"workflow_job_id"`
// Mode
Mode string `json:"mode"`
// Origin
Origin Origin `json:"origin"`
// Compute ID
ComputeID uint64 `json:"compute_id"`
// Progress
Progress Progress `json:"progress"`
// Domain name
DomainName string `json:"domain_name"`
// Domain UUID
DomainUUID string `json:"domain_uuid"`
// Source node ID
SourceNodeID uint64 `json:"source_node_id"`
// Target node ID
TargetNodeID uint64 `json:"target_node_id"`
// Source tech status
SourceTechStatus string `json:"source_tech_status"`
// Status
Status string `json:"status"`
// Migration result confirmed
MigrationResultConfirmed bool `json:"migration_result_confirmed"`
// Disks
Disks []Disk `json:"disks"`
// Disk IDs not copied
DiskIDsNotCopied []uint64 `json:"disk_ids_not_copied"`
// Error
Error string `json:"error"`
// Cleanup required
CleanupRequired bool `json:"cleanup_required"`
// Cleanup
Cleanup Cleanup `json:"cleanup"`
// Resolution
Resolution Resolution `json:"resolution"`
// Created at
CreatedAt string `json:"created_at"`
// Updated at
UpdatedAt string `json:"updated_at"`
// Logs
Logs []string `json:"logs"`
}
// Migrate V2 resolve record
type MigrateV2ResolveRecord struct {
// Workflow job ID
WorkflowJobID string `json:"workflow_job_id"`
// Compute ID
ComputeID uint64 `json:"compute_id"`
// Status
Status string `json:"status"`
// Cleanup required
CleanupRequired bool `json:"cleanup_required"`
// Resolution
Resolution Resolution `json:"resolution"`
}
type MigrationReportItem struct {
// ID of the compute instance
ComputeID uint64 `json:"compute_id"`
// Per-VM action result, not workflow status
// Should be one of:
// - migrated: migration completed; the rule may still be unsatisfied
// - skipped: migration was not needed or applicable
// - not_started: submission was not attempted
// - not_completed: completion is unconfirmed; the VM may have moved
Status string `json:"status"`
// Action details, errors and final rule-placement warnings
Message string `json:"message"`
// Workflow ID for tracking, or nil if submission was not attempted.
// A non-nil ID does not confirm job acceptance
WorkflowJobID *string `json:"workflow_job_id"`
}
type MigrationReport struct {
// Rules were saved; does not confirm migration success or rule satisfaction
Applied bool `json:"applied"`
// Per-compute migration results
Migrations []MigrationReportItem `json:"migrations"`
}
type AffinityRuleAddResult struct {
// Result of the rule addition
Ok bool
// Migration report. Populated only when the request was made with Migrate=true, nil otherwise
MigrationReport *MigrationReport
}
type AntiAffinityRuleAddResult struct {
// Result of the rule addition
Ok bool
// Migration report. Populated only when the request was made with Migrate=true, nil otherwise
MigrationReport *MigrationReport
}